Android 菜鸡手撕 523 页 PDF 高级面试题,成功“挤掉,android 编程基础班
Https 的原理?Tcp 和 Udp 的区别?Http 的报文结构?cookie 是用来干嘛的?有哪些响应码,分别都代表什么意思?有自己实现过 Socket 协议吗?
多线程
Sleep()和 wait()的区别?Java 有哪些线程池?他们的区别是什么?线程池工作流程是怎样的?线程池实现原理是怎样的?Cache 线程池有哪些弊端?多线程间的通信方式?synchronize 关键字怎么用的?还知道哪些同步的方式?Thread 直接调用 run 方法会怎么样?start 方法作用是什么?volatile 关键字的作用是什么?怎么安全停止一个线程任务?原理是什么?线程池里有类似机制吗?
数据结构
HashMap 和 HashTable 的区别?和 ConcurrentHashMap 区别?和 LinkedHashMap 区别?内部实现原理?LRUCache 的原理?ArrayList 和 LinkedList 区别?为什么 ArrayList 不是线程安全的?数据库的索引用的什么数据结构?
虚拟机
垃圾回收机制?有哪些对象可以作为 GC roots?跟 Art、Dalvik 对比 Java 内存模型?类加载机制?双亲委托模型?
其它
用过哪些设计模式?DCL 单例模式为什么要两次判空?Android 里源码或者你用过的开源库都用到了什么设计模式?— final 关键字的作用?静态内部类和内部类的区别?值传递类问题 Kotlin 为什么能和 Java 混编
Android 题
你有什么亮点?项目中遇到过什么难题或者坑,怎么解决的?做过哪些性能优化?是怎么评测和具体优化的 Activity 的冷启动流程?AMS 的作用?怎么分析内存泄漏?View 的事件分发机制?滑动冲突怎么解决?自定义 View 的原理和流程?Handler 原理?(一般会花式扩展)有哪些多进程通信方式?Binder 机制?Android 的生命周期和启动模式相关?你项目中用到哪些开源库?说说其实现原理?(OKhttp、RxJava、Retroit 重点,如果有用到的话)Android 的打包流程?apk 里有哪些东西?签名算法的原理?了解哪些插件化技术?LinearLayout 的布局流程?对 Mvp 的理解?Android 怎么做保活?
算法
排序相关的(快排,分析不同排序区别,时间复杂度等)字符串、数组相关的(滑动窗口、双指针)链表(反转链表)递归、斐波那契数列(爬楼梯)动态规划
所有的大厂的面试题,我都打包整理好了,需要的 Android 程序员**私信我【面试】**我分享给你。或者直接点击下面链接领取[Android 学习 PDF+架构视频+面试文档+源码笔记](
)
答题技巧
分析考点
技术面是一场技术面试官对候选人的综合评估
先从面试官角度来分析,在面试过程中的对候选人一些考查点吧。知己知彼百战不殆,面试过程中逆向思考一波,有助于我们怎么应对技术面。
候选人人设是否跟简历一致
主要看候选人是否坦诚真实,这个会直接影响能不能通过。候选人上的项目经验和技能点应该尽可能与候选人匹配,比如说,候选人说做了 XX 项目,但是问起是怎么实现的,却答不上来,或者说熟悉 xx 技能点,却只会调用常用的 api,对其源码细节一点都不熟悉,那多半是不给过的。如果候选人要吹牛 B,能拿出能圆上吹牛 B 的实力,也是可行的。比如说某某模块其实是你同事做的,但是你也完全理解了,可以应答如流,面试官是不会计较的。
技术的扎实程度和项目经验匹配程度
**
考查包括对技术的理解和解决问题的能力**,包含一些细节,运用的场景,实现的原理等等,目的是为了测试候选人技术水平上限。答得越清晰,越深入,对细节掌握越牢靠越好,不一定需要全部答出答完美才能拿到 offer,但这些题回答的效果最能影响到 offer 能谈多少钱。小厂偏重于技能、项目经验匹配度,大厂偏重于基础、原理。小公司,面试官通常希望候选人尽快上手,就希望候选人有类似竞品或者功能开发经验的候选人,所以也可以从这些方面做准备。大公司呢,可能会提出一些场景来考查候选人怎么设计,这就要求候选人功底深厚,逻辑严谨了。上面的题集我没写答案,因为我觉得很多题本就没有标准答案,也没有必要背题的“标准答案”,优秀的回答,应该是形成自己的理解输出的,说的有理有据就行。
候选人亮点、优势
一般是作为候选人的加分项,或者是面试官为了更快的打开话题,了解候选人的优势,并测测候选人的优势到底屌到什么程度。这个问题回答好了,候选人甚至能翻盘。
沟通能力
在一线搬砖过的应该都懂,每天正正经经写代码的时间通常不到一半,还得花不少时间跟产品撕,跟后台撕,跟 UI 撕等等。所以沟通协调能力也是很重要的,候选人需要理解面试官出题意图,表达要逻辑清晰。最好是候选人能跟面试官建立起讨论技术的氛围。这方面很容易被多数候选人忽略,但其实挺重要的,面试官也许不能直接决定要你,但是一般可以直接决定淘汰你,候选人要不卑不亢,保持谦逊。候选人技术再屌,态度傲慢的话,也是很容易翻车的,但也不能太怂,显得没有技术底气,所以最好是和谐的讨论氛围。
评论