前言
本人是湖北普通一本学历,机电专业,18年转行做的andorid开发。作为一个野生程序员,成长历程比较坎坷,开始靠培训机构或者个人自学,初级时就能入职互联网开发,非常困难,初级入职阶段,就能淘汰一大批培训机构的同学,很幸运自己能实现转变,很感激帮助我的同学和第一家时经理收留信任。靠着自己2年多的不断的学习和积累,从一个小白白成长为一个合格工具人,还完成个人薪资翻倍的跳槽。
在第二家公司,也慢慢的技术视野和深度的扩展,能从容应对开发和各种问题。由于公司没有涨薪制度,所以就有了跳槽的计划准备,没想到,这一准备,就是2年时间,靠着总结和积累,跳槽就水到渠成,没有多少运气加成,全是踩坑过河。
所以,对科班人来说,我就是最笨的成长。虽然初期的成长慢了些,但是我有我的坚韧性格,成长多远,多半靠自己,多多灌输自己点励志鸡汤,多多学习别人的长处,多虚心请教别人的心得和学习习惯,成长也是很快的。今年也顺利拿到了百度的offer,附上面经整理!
一面
一面问的问题大多是开放性问题,主要是看个人思路吧。
1.手撕依赖关系树扫描算法(期间提了不重复扫描、优化时间复杂度等要求)
2.简述如何实现未知长度的数组翻转?
3.简述内存泄漏,你处理过哪些内存泄漏?
4.以100ms/张的间隔时间播放100张图片,且每张图片需要400ms进行加载,如何设计?
5.如何在无序数组中快速找到最小值(手撕二分查找算法)
6.简述Android中的ANR,以及为什么会出现ANR?
7.简述Handler消息机制(深挖内部实现原理)
二面
1.手撕一个有序数组的二分查找算法
2.列举一个你在实际项目中所进行的性能优化(深挖具体细节)。
3.简述单例模式的实现方式,且单例模式有什么优缺点?
4.简述Java的异常处理机制
5.多线程间如何进行信息通信?
6.多线程如何保证线程安全?
7.简述线程池
8.简述HashMap实现机制,如何解决HashMap的线程安全问题?
9.TCP和UDP的区别,分别有哪些应用场景?
10.简述七层网络模型
11.简述Android点击事件的分发机制
12.画一个BLE APP的功能架构图
三面
三面相当于是综面和HR面和在一起了,主要问题也是分两个模块。
业务类问题:
1.手绘Class间依赖关系图
2.聊聊如何处理并发编程
3.手撕消费者模型代码,主要线程安全、队列等情况。
4.简述Android系统的类加载机制
5.Activity的生命周期通过什么机制来通知?
HR类问题:
1.聊聊个人的职业规划
2.你最大的优点是什么?
3.你有哪些方面待改进?
4.简述你大学所做的事情
5.说说你大学里最遗憾的事情
如果你和舍友产生了矛盾,如何处理?
Android面试题和答案已按照规范已整理完成,
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要《Android面试大厂必考174题》完整文档的可以加微信 即可免费领取!