作者:李同学

前言

本人是2020年毕业于大工软院,刚开始工作是在TPLINK做Android开发。因一直有者一个大厂的梦,在得知要大厂在社招时,我决心裸辞掉了TPLINK的工作,开启我的社招面试之旅。

下面是我在滴滴的面经分享

2020届毕业生的社招之旅,一举斩获滴滴Android开发岗OFFER_移动开发

面试过程(省略了自己介绍):

2020届毕业生的社招之旅,一举斩获滴滴Android开发岗OFFER_编程语言_02

一面(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。

经验和教训:

面试开头的自我介绍最好能够简单说明自己强项,好引导面试官多考你擅长的领域;当然简历也务必需要好好整理,至少让面试官有针对性地进行考察。

面试前的准备

在面试前我进行了一系列的准备,最主要的还是刷面试题和翻阅。我发现在这次面试中问道的许多问题,翻阅过的资料里面都有记录到这些技术的解析,正是这样让我在面试过程回答的比较顺利。