想想还是有必要记录下这次失败的面试经历,过段时间回头看或许会有点收获
一面
- 自我介绍
- 软、弱引用
- HashMap原理
- 扩容机制(reSize)
- 线程安全(HashTable、ConcurrentHashMap)
- Handler内存泄漏,如何解决
- View绘制流程
- View事件分发机制
- ACTION_DOWN
- ACTION_UP
- ACTION_MOVE
- ACTION_CANCEL
- onSaveInstanceState调用时机
- 图片加框框架缓存
- 如何让静态方法和非静态方法共享同一把锁
- 扑克洗牌算法(随机数Random)
- 首先想到List存储
- 然后要求不使用额外空间
- 二叉树层序遍历
二面
- 自我介绍
- 组件化实现
- 线程间同步方式
- synchronized和volatile
- lock
- wait/notify
- ReentrantLock
- ThreadLocal
- Activity A启动Activity B生命周期(AMS)
- 列表卡顿原因,如何优化
- 线程池实现原理
- 进程方法调用(Binder)
- Activity启动流程
- HTTPS
- 类锁和对象锁
- 找出字符串的最长不重复子串
三面
- 自我介绍
- 手写JSON解析器
- Synchronized实现原理
- Lock实现原理
- Synchronized和Lock效率对比
- Fragment生命周期
- RecyclerView优化
- Parcelable
- 与Serilizable对比
- invalidate和requestLayout
- OKHTTP安全优化
- HTTPS
- HostNameVerifier
- SSLSocketFactory
总结
- 自我介绍可以提前准备好,包括基本信息(毕业时间、院校),最近工作经历,如果经历较多,选最近两家即可
- 面试过程中有个别知识点不清楚很正常,不要怀疑自己能力,面试结束后好好梳理一下就好了
- 如果想增加Offer概率,除了面试题外,最有能展示给面试官1-2个亮点(开源项目|博客|技术深度|广度等)
- 面试中最好不要有猜答案的表现,比如‘好像’‘是吧’这样的回答,对于有些不太清楚的直接说不太清楚就好了
- 另外,面试过程中和面试官的沟通表达同样很重要
最终挂在三面了,整个面试流程一面没啥压力,二面时状态不太好,很多原理回答得很模糊,感觉挂了,然后又收到了三面的通知,三面感觉回答得一般,最终在三面挂掉了