Android 工程师跳槽经验分享,资深大牛带你了解源码
java 方面
基本知识点 集合类的区别和适用场景 1 次 java 静态内部类和非静态内部类的区别 内存分配 创建过程 内存泄漏问题? 如何保证线程安全??多次 (面试必问) 哪几种加锁方式(最好扯到 monitor) 乐观锁和悲观锁 (适用场景) 锁的适用场景 线程池的概念 构成 适用场景 为什么要用线程池(扯到线程分配资源的过程,和进程分配资源过程的区别)
内核方面(面试必问) GC 垃圾回收机制?n 次 GC 是怎么找要清除的对象的? java 的四种引用和适用场景 GC 内核清理用什么算法? 新生代复制清理,老生代标记整理 拓展:老生代标记整理如何有效的整理内存碎片? java 内存结构? n 次 java 的内存是怎么分布的 java 类的加载机制 java 对象的加载机制 常量池 string 对象的生成 Integer 的缓存机制
计算机网络
网络层级结构以及对应的协议
TCP TCP?三次握手(第一次和第三次如果没收到回应会怎样?) TCP 四次挥手 拥塞控制没考过?
HTTP HTTP 报文,http 各版本的区别,https
IP 为啥不将 mac 作为 ip 地址 ping 实现原理 ttl 生存字段
ARP 描述过程,广播单播
操作系统
线程和进程区别(资源分配上是怎样的)
进程通信
内存空间分配
死锁 产生死锁的条件(详细举例) 避免死锁的方法
设计模式
一般是自己说了解哪些模式,一定要说明适用场景
单例模式 懒汉式 饿汉式 线程安全,双重锁
观察者模式
适配器模式
外观模式
android 方面(一般是根据项目问)
android 的进程通信
service 服务
handlerThread
handler 运行机制 1 次
recyclerView 缓存机制 1 次
view 的重绘
项目方面
fragment 和 activity 交互
webview 的使用 安全问题? 和 js 互相调用
断点续传 描述过程 文件读写,怎么保证不冲突
asynctask 内存泄漏 为什么泄漏 解决方法 调试工具是什么
MFCC 流程 录音环节(快手问了一大堆细节,还让写伪代码)
MVP
recyclerView 和 listview 区别 缓存机制 item 太多会内存泄漏吗
最后
其实 Android 开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。
网上学习 Android 的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
评论