一面(1hour):
1、自我介绍
2、项目介绍,技术点相关。
3、C++和Java区别,GC
C++不熟,只能说内存管理相关的问题,所以就问到了GC。然后说分代收集算法。老年代担保、元数据区从JVM移到了本地内存这些。
4、线程相关,Runnable和Thread的区别。
Thread类是实现了Runnable接口,平时使用起来可以使用start方法调用。线程池基本传Runnable对象,平时也是线程池用的多,所以具体相关不太熟。
5、线程池
6、synchronized,volatile
7、继承相关,多重继承和接口
8、网络编程
9、UPD,TCP区别
10、最大的优点
11、最大的缺点
12、算法,二叉树中序遍历,真是早起毁一天,竟然没撕出来,我真想给自己两耳光。不过面试官给我总结的很好,说要利用栈的特性,先进后出,所以要保证左子树先进根结点再进,这么思考之后就顺利了很多。
二面(40mins):
1、介绍一下项目
2、Android四大组件,详细讲一下。
3、Launcher启动APP的全过程。
icon存入口Activity信息
AMS通知Launcher去pause。
Launcher通知AMS已经pause
AMS检查进程是否已经启动,如果不启动则启动进程。并且调用ActivityThread的main方法。
启动之后通知AMS已经启动
然后AMS将入口Activity信息传递给APP。
APP启动对应入口Activity,并且创建对应上下文并且调用Activity的onCreate方法。
4、进程间通信,AIDL,Binder。扯了一会说进程间通信平时怎么做的,就说了一下AIDL相关的Demo实现什么的。说到了自己程序里面有拉起微信的这个功能(