作者:李同学
前言
本人是2020年毕业于大工软院,刚开始工作是在TPLINK做Android开发。因一直有者一个大厂的梦,在得知要大厂在社招时,我决心裸辞掉了TPLINK的工作,开启我的社招面试之旅。
下面是我在滴滴的面经分享
面试过程(省略了自己介绍):
一面(1小时20分钟)
1.介绍项目(介绍了2个实习+1个项目,主要问了都有什么收获以及技术难点)
2.了解android里的Map么(ArrayMap和SparseArray)
3.了解java的·四种引用类型吗(弱引用一定是在内存不够的时候就会回收么?)
4.讲一讲android中的跨进程方式,并讲一讲AIDL,讲下AIDL的原理(偏原理的东西而不是使用)
5.讲一讲输入一个地址会使用哪些协议,怎么知道的ip地址
6.讲一讲DNS的原理
7.讲一讲TCP里的三次握手
8.遇到过多并发的情况下么,讲下Syncornized的原理,
9.了解线程池么,讲一讲原理,讲一讲其中有哪些参数?对应不同的任务,我该如何去设置这个核心线程数?
10.讲一下不同的锁,syncornized是重入锁么?
11.滑动冲突了解么,知道怎么解决么,给你一个实际的例子,你来讲下该如何去解决这个滑动冲突
12.了解双亲委派模型么,他们的好处有什么,android常用的类加载器你知道么,有什么区别?
13.listView能实现9宫格么
14.聊聊GC吧
15.聊聊HashMap的put吧,为什么 1.8 要树化,什么时候会树化,什么条件下是树化,什么时候会调用resize方法扩容,resize什么原理,如果哈希冲突很多的话会扩容么?
16.给定一个元素,插入到数组中固定的位置
17.了解Glide么
18.Gson的怎么使用,内部使用的是什么原理
19.SP有什么缺点,如果现在让你考虑存储,你会选择怎么去存储呢?
20.ArrayList和LinkedList的区别
二面(1小时)
1.写单例模式
2.顺序的数组,插入一个元素(二分)
3.Fragment的生命周期
4、讲一下消息机制,怎么实现一个线程只有一个Looper
5.讲一下Service的启动方式,有什么区别
6.了解Binder么?
7.聊聊实习中做的东西,提出一些问题,并解答这些问题
8.聊一个实际场景,activity的生命周期是如何调用的
9.对第一份工作有什么期许
10.聊聊RN有关的,有一个怎么样的认识,知道RN有什么不好的地方么?
三面(30分钟)
1.聊聊重载
2.聊聊OkHttp
3.api 和 implement的区别
4.用两个队列实现栈,需要线程安全么(赛码网是什么鬼,看不到我写的代码说的思路)
5.聊聊syncronized
6.观察者模式
7.handler机制,如何保证主线程不阻塞
8.跨线程与跨进程
总结
在这次面试中面试官没有为难我,问的进步都是常见性的问题,同时面试官也对我的未来技术发展提出了很多建议。我和面试官还对flutter的前景做了一些探讨,和经验丰富的前辈对话总能学到很多东西,非常感谢面试官,也特别的庆幸拿到了OFFER。
经验和教训:
面试开头的自我介绍最好能够简单说明自己强项,好引导面试官多考你擅长的领域;当然简历也务必需要好好整理,至少让面试官有针对性地进行考察。
面试前的准备
在面试前我进行了一系列的准备,最主要的还是刷面试题和翻阅《Android核心知识点笔记》。我发现在这次面试中问道的许多问题,《Android核心知识点笔记》里面都有记录到这些技术的解析,正是这样让我在面试过程回答的比较顺利。
因平台对文章篇幅长度有限制,在此就不能把《Android核心知识点笔记》的全部内容展现出来了,在此我用图片形式展现一下,大家如有需要进行参考学习可以简信回复我【666】或者点击【Github地址】查看获取方式。
需要完整版参考学习,请点击【Github地址】查看获取方式。