一面感觉还不错,二面凉的很安详(凉在第3题上)。
一面:1小时10分钟(8.6)
1、自我介绍
2、项目介绍
3、框架原理,源码(Glide,EventBus,缓存、线程池)
4、两数相加
5、进程间通信(进程是隔离的,怎么共享对象,设计),线程间通信
6、线程安全(volatile、synchronized,指令重排)
7、OSI七层模型
8、https(原理、过程、证书)、http
9、敲下回车键,浏览器发生什么(dns、三次握手、解析展示)
10、寻找文件中出现最多的单词(字典树、map)(设计)
11、设计模式(单例模式和代理模式)
12、LruCache的设计与实现(O(1))
13、二分查找的时间复杂度是什么,怎么算的(log2(n))
14、Android抓包原理
二面50分钟(8.11)
1、项目介绍,以及设计
2、重构代码
以下代码存在哪些不易测试点,如何重构?
public class MyClass { public void writeUserName(int id) { String userName = App.getDatabaseManager().getUserDatabase().getUserName(id); try (FileWriter writer = new FileWriter("user.txt")) { writer.write(userName); } } }
3、补全代码
请补全这个函数String getInfo(int errCode),输入错误码返回错误信息,比如: 错误代码1,用户名错误; 错误代码2,密码错误; 错误代码10-100,数据库错误; 错误代码200-1000,文件找不到错误。 要求这个函数要使修改错误码和错误信息时尽可能少修改代码(代码可维护)
这里有老哥解答:https://blog.csdn.net/csdnsevenn/article/details/104980519
全部评论
(2) 回帖