网易内推(android)拿offer
学校BBS上师兄发网易内推,凑下热闹投了一发
一面:电话面
大概25分钟,感觉面试官气场很足,主要关注了其中一个 个人开源项目
1、自我介绍
2、说说你做的这个项目
当时谈到使用到了开源框架xtuil中的dbxutil和httptuil,然后让分析这俩个模块源码;其中详细问了httputil实现原理(主要是线程池,封装的是httpclient)
使用到了slidingmenu_library开源控件,让分析这个开源框架的源码;
tips:项目中使用到的开源框架一定要了解个大概,给出一个比较不错的学习连接http://a.codekk.com/
3、说说你做过最复杂的控件
有点不好说,扯到开机动画,追问如何实现,然后又追问了animation 和animator的区别
干净利索没有太多的废话,直接就说“好,面试结束”直接就挂电话了 。同学问我面的咋样,我都直接说跪了没戏
二面:杭州网易现场面 (当然报销来回动车路费)
面了将近1小时15分钟吧
过了一个星期接到hr电话说一面过了,需要现场面,去杭州面试确实艰苦,14个小时动车到杭州已经是半夜11点了,找个小旅馆睡下,下午俩点去面试
面试官不关注我app项目,直接抛出大问题,慢慢讨论
1、说说推送
扯到长连接,心跳包,直接被面试官打断,这个我们都知道,说说保持一个长连接很简单,为什么长连接会带来很多麻烦,还提示从耗电量,微信分析
(这个问题后来做了总结,确实是个好问题可以参考我的这篇博客http://blog.csdn.net/xsf50717/article/details/48519135)
2、从协议栈角度分析一下推送的过程
看了我LTE协议栈项目(本人通信专业)问的,感觉有点不搭边
3、项目使用开源框架的源码分析讨论
主要还是集中在httputil源码实现、讨论了线程池设计,阻塞队列;
由于httputil封装了httpclient,然后让比较 httpclient和httpurlclient区别;
扯到了http协议,问了http与https区别,(当时我在分析直接被打断,“这个我们都知道,简介概括”,然后我我直接说https=http+ssl+加密算法);
加密算法是对称还是非对称的,,商量秘钥的过程是对称还是非对称
3、android消息处理机制
handler+loop分析;
loop线程与普通线程区别;
asynctask源码分析(这里有个线程池几个关键参数5,128,使用的阻塞队列,补充讲了asynctask缺陷)
如何改进asynctask造成的内存泄露的问题,从而延伸到 jvm虚拟机四种引用
4、说说androi 使用卡顿是什么造成的,给出优化
主要回答了ui overdraw避免,<include>标签,<viewstub>标签,<merge>标签使用, hierarchy viewer 工具的使用;
面试官追问:再从底层分析;(其实就是 16ms和60fps的追求了)
再结合GPU操作分析一下UI过程;
然后说到了大图加载问题,提到UIL框架,让分析内部源码(我主要从uil的缓存策略和线程池机制分析)
5、忽然扯到并发,让分析concurrenthashmap,答了分段锁仍不满意,要求再分析一下size操作是如何做的
6、材料设计
从listview优化谈到recyclerview,深入分析一下recyclerview特点
然后引申到瀑布流如何实现,不使用recyclerview如何实现瀑布流
7、属性动画
8、touch事件分发机制
9、android开机过程(主要讨论了zygote)
10、让你设计一个游戏人物,如何设计
主要讲了抽象类+接口+mvc和mvp模式
原文出自我的csdn博客 http://blog.csdn.net/xsf50717 欢迎交流