个人背景
本科,软件工程专业,有一段暑期实习(美团)和几个安卓项目。
之前也断断续续面试了几家,有内推有自己投简历的,提前批投递了字节头条,挂在了终面,正式批又投了抖音,三面过了后没多久就收到HR面,已拿到Offer。

一面(~45min)
1. 介绍项目,讲述一下实习的工作内容和感想(~10min)
2. 什么是内存泄漏,Android里有哪些内存泄漏的场景,原因是什么
3. JVM的GC过程,GC的算法都有哪些
4. 进程和线程的概念,Android里怎样实现多线程?(Thread Handler AsyncTask IntentService等等)
5. Handler的原理和使用
6. Handler是怎么和线程绑定的(Looper),为什么Looper.loop()要设计成死循环
7. Java的几种内部类,区别是什么
8. Activity的生命周期和启动模式
9. 写题:二叉树的右视图(层序遍历即可)
一面比较短,问的问题也比较基础,大概30分钟后开始二面
二面(~1h30min)
1. 自我介绍
2. 介绍项目,为什么要自学安卓(~5min)
3. Android如何实现多进程,应用场景是什么(答的不好)
4. Android的IPC机制(Binder)是否了解(答的也不好)
5. 如何用两个队列(FIFO)实现栈(FILO)
6. HashMap和HashTable区别,HashMap原理和实现,hash()的算法
7. 如果自己设计hash算***怎么设计,为什么?
8. String的hashCode()和Object的hashCode()
9. 虚拟内存和物理内存的概念和关系,内存分页的调度算法
10. 怎么实现LRU缓存
11. 可以自己写一个java.lang.Object类吗,系统会加载哪一个
12. Java里泛型的实现
13. 了解常见排序算法吗,手写一下快排
14. Java里加锁的方式,synchornized关键字的原理,悲观锁和乐观锁都有哪些实现
15. 死锁的条件和解决方法,讲讲银行家算法
16. TCP的三次握手四次挥手,为什么要四次挥手
17. TCP的流量控制算法(滑动窗口),拥塞控制算法
18. 怎么解决用户高频点击打开新Activity导致的多实例问题(Activity启动模式)
19. 怎么判断两个无环单链表是否相交
20. 反问 二面问题量非常的大,,但并没有特别难以回答的问题,认真准备的话大部分都能答出来。面试官也非常友好,给了很多引导和提示。 因为三面面试官的时间问题,约了两天后的三面
三面(~45min)
1. 自我介绍
2. 介绍一下实习做的工作,是自己完成的吗,遇到什么困难,成果怎么样
3. RecyclerView怎么实现的item缓存,跟ListView有什么区别(因为项目用到了所以被问了)
4. 设计题:微信的联系人列表功能
(1)设计添加联系人的API(从可能的方式,数据形式,接口参数方面回答)
(2)怎么实现联系人列表的UI
(3)怎么实现A-Z首字母的快速定位功能
6. 是自学的Android吗,为什么选择这个方向,有没有什么经验给同样想自学的学弟学妹
7. 是哪里人,为什么想到上海来就业
8. 反问
三面的问题不多,不过因为多数问题没有标准答案,难度其实高于一二面
HR面(~40min)
- 1. 自我介绍2. 毕业时间3. 是否考研4. 高考志愿5. 专业人数6. 专业排名7. 有无实习8. 大学生活9. 学 生会哪个部门10. 参加什么社团11. 参加什么比赛12. 获得什么奖13. 有无团体赛经历14. 参赛时间15. 项目背景16. 项目分工17. 是否项目组长18. 项目用什么编程语言写的19. 自己选的编程语言还是老师给选的20. 团队分工是你安排的还是各自认领的21. 团队内产生分歧怎么办22. 做项目过程中对你来说最大的挑战是什么23. 大学中让你最有成就感的事情24. 班里担任什么职务25. 参加比赛和项目,收获了什么26. 有发表论文吗27. 平时的兴趣爱好28. 老家是哪里的29. 意向工作地点30. 职业规划31. 目前主要在干什么32. 还投递了哪些公司33. 对行业有什么倾向34. 如何看待互联网行业的工作强度35. 家里人对工作和考研有什么看法36. 遍地都是研究生,不考研会有遗憾吗37. 工作后还会去考研吗38. 自制力高吗39. 喜欢玩什么游戏40. 什么时候可以去实习41. 大四上学期有几门课42. 什么时候开学43. 预期的薪资是多少44. 擅长什么编程语言45. 有什么优缺点46. 是不是很宅
最后
面了几场,也总结出来一些人生经验
1、简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。
2、简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!
3、做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。
大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。
4、选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!
5、面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。
6、另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。
现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤......
所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音绝对是一个加分项!
7、最重要的是心态!心态!心态!重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。
希望大家都能找到合适自己满意的工作!fighting!
文末附上准备面试一直翻阅的资料,内容包含:Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容
这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。
分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。也是希望可以帮助到大家提升进阶
如果你有需要的话,可以私信我【面试】我发给你
喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~
