Android面试的一些总结

入多灾多难的2020,受疫情影响我们公司走到了破产的边缘,老板通知大家投简历找新工作吧。其实这一天早有预料,只是没想到会这么快,正值疫情期间工作真的很不好找。没办法,先把面试题刷一下吧。下面是我面试过程中遇到的面试题,总结一下,大家共勉。

1、你知道的Android的保活方法有哪些?

先大致说一下Android的几种进程的优先级,由高到低依次为:前台进程,可见进程,服务进程,后台进程,空进程。

要想程序保活就得想办法提高进程的优先级,其次是进程被kill之后要能够唤醒进程。

进程有一个具体的数值来标示他的优先级oom_adj。数值越低进程优先级越高,该值存放在proc/PID/oom_adj文件中,直接adb shell进入该文件查看就行oom_adj=0是前台进程。

<1> 在通知栏发送通知提高进程的优先级

<2> 监听一些系统广播来启动程序,例如开机、网络变化、电量变化、锁屏、解锁等

<3>双进程方式,例如使用aidl方式两个进程相互监听

<4>在桌面启动一个一像素的activity

<5>提高service为前台进程service.startForeground()设置为前台进程可以将oom_adj的值从4降到1。需要注意的是在Android4.3之后这个方法会强制弹出通知栏,解决方法是再启动一个service和推送共用一个通知栏,然后stop这个service使得通知栏消失。但是Android7.1之后Google修复了这个bug,目前没有办法解决这个问题。

2、Android中的多线程方式有哪些?

<1>thread方式

<2>intentService  内部维护了一个handlerthread启动一个工作线程,耗时操作在工作线程中进行,在onhandleIntent方法中进行,任务完成自动关闭。

<3>asynctask

<4>threadPool

3、service启动方式

startService() 生命周期方法oncreate onStartCommandondestroy  结束直接调用stop方法

bindService  生命周期方法 oncreate onbind   ondestroy  结束需要调用unbind方法

4、Android IPC方式

IPC:inter-process-communication 跨进程通讯。

<1>使用intent传值

<2>使用文件

<3>使用aidl

<4>socket

<5>messenger+handler

5、java的引用类型有几种,分别有什么特点

java的引用类型有四种

<1>强引用  直接赋值的形式引用,不置空就不会回收

<2>软引用  内存不够时会回收内存

<3>弱引用  垃圾回收执行时会被回收

<4>虚引用  不能直接通过虚引用调用引用对象,配合队列来使用,对象被回收,虚引用会添加到队列

6、怎么结束一个线程,线程池怎么结束线程

thread线程结束我知道的有三种方式 1、线程执行完之后就自动结束了 2、使用变量控制  3、调用interrupt方法

线程池结束某个线程方式  执行线程时调用submit方式提交会返回一个future  future可以调用future.cancel方法结束线程

也可以调用threadpool.shutdow()或者threadpool.shutdownNow(),前一个方法会等待所有的线程结束之后就结束了,不会创建新的线程了,第二种会直接结束线程。

7、Android中的handler原理

handler机制:主要有四个部分组成,handler  looper  message  messagequeue,handler可以向messagequeue中添加消息,looper轮询消息队列交给handler处理,handler调用handlemessage方法处理消息。

8、TCP的通讯机制

tcp三次握手和四次挥手

9、自定义view需要重写哪些方法

自定义view需要重写ondraw方法,自定义viewgroup需要重写onmesure和onlayout方法

10、scrollby和scrollto有什么区别

scrollto(x,y)直接滚动到x y坐标,scrollby(x,y)是以当前坐标为原点滚动x,y距离

11、hashmap的原理

hashmap有两部分组成,数组和链表,数组存放key,链表存放value,查找时通过key的hashcode计算value的位置,添加数据时会计算key的hash值,如果已经存在该hash值比较key值是否相同,相同就替换value值,不同就把key新的key,value放到链表中,以这种方法来解决hash冲突问题。

你可能感兴趣的:(android)