秋招正式批投递了百度Android开发岗。近期给安排了南京地区的现场面试,面试几乎是全程手撕各类问题,而且面试问题都比较发散。简单罗列一下面试涉及的问题。
一面
一面问的问题大多是开放性问题,主要是看个人思路吧。
- 手撕依赖关系树扫描算法(期间提了不重复扫描、优化时间复杂度等要求)
- 简述如何实现未知长度的数组翻转?
- 简述内存泄漏,你处理过哪些内存泄漏?
- 以100ms/张的间隔时间播放100张图片,且每张图片需要400ms进行加载,如何设计?
- 如何在无序数组中快速找到最小值(手撕二分查找算法)
- 简述Android中的ANR,以及为什么会出现ANR?
- 简述Handler消息机制(深挖内部实现原理)
二面
- 手撕一个有序数组的二分查找算法
- 列举一个你在实际项目中所进行的性能优化(深挖具体细节)。
- 简述单例模式的实现方式,且单例模式有什么优缺点?
- 简述Java的异常处理机制
- 多线程间如何进行信息通信?
- 多线程如何保证线程安全?
- 简述线程池
- 简述HashMap实现机制,如何解决HashMap的线程安全问题?
- TCP和UDP的区别,分别有哪些应用场景?
- 简述七层网络模型
- 简述Android点击事件的分发机制
- 画一个BLE APP的功能架构图
三面
三面相当于是综面和HR面和在一起了,主要问题也是分两个模块。
业务类问题:
- 手绘Class间依赖关系图
- 聊聊如何处理并发编程
- 手撕消费者模型代码,主要线程安全、队列等情况。
- 简述Android系统的类加载机制
- Activity的生命周期通过什么机制来通知?
HR类问题:
- 聊聊个人的职业规划
- 你最大的优点是什么?
- 你有哪些方面待改进?
- 简述你大学所做的事情
- 说说你大学里最遗憾的事情
- 如果你和舍友产生了矛盾,如何处理?