链家Android面经
楼主Android开发岗位,早上到了先做了5道算法题,大致是从数组里找出所有和为n的两个数。二叉树的最低公共祖先点。数组里有多少个子数组满足所有元素之和大于乘积。根据ip找城市,一个城市对应多个ip。用代码实现编辑器的undo和redo。
一面(40min)
先就笔试的5道题讲了下,没做出来的讲了下思路。
1、类加载的过程,每一步具体怎么实现的,问的很细。又讲到android中的dex分包技术以及应用于热更新。
2、jvm和dvm的区别,在jvm中一个程序崩溃有可能导致系统崩溃吗?dvm中呢? ps:这里不是很懂,猜的。。
3、解释网络ip协议、tcp、udp、http、https、socket,以及之间的区别
4、handler机制,并不是让讲简单的流程,要结合源码讲是每一步怎么实现的,以及sendMessage和post(new Runnable)这两种方式的底层实现的区别在哪?
5、同步synchronized的用法,主要问了底层实现,比如线程尝试去获取monitor所有权,有个队列配合工作,具体是怎么工作的?等等。
6、Android中的IPC方式,binder的底层原理(这里讲的比较深入),和管道通信的区别。
7、用过哪些设计模式,具体的应用场景以及为什么选用这种设计模式?
面试官看着很年轻,是个大牛,很厉害。
二面(15min)
一面完快中午了,于是等了一个午饭的时间下午才开始二面,结果二面简直了,15min就结束了!!!
上来问了个两个题
1:求两个单链表的交点?
2:求一个单链表中是否存在环? 数组中根据下标索引查询的复杂度为什么是O(1)?(没想过啊,不太明白意识)
然后就开始了10min的“HR面”,我差点以为对面坐的是hr,一个技术问题没有,聊人生。
至此,秋招第一次面试,卒!