滴滴客户端一面面经-记录下第一次100min的面试
因为是在牛客上投的滴滴,就没有第一时间写面经,怕有不好影响,周一面的,面试官说三天没消息就是凉了,我算着时间差不多估计是凉了就来记录下100min的一面。
面了二十来家了,此前没有超过一个小时的,看了别人的面经,也是一面30min左右,二面45min左右这样,我以为我被问了100min还挺稳的,面试官最后也在问我后续的规划和实习情况。
害面试官人还挺好的,一些问题我一下子没想起来,也会提示我一下,然后有些我答错了也会提示我,但是我还是坚持自己没改,然后和面试官说我的想法。
简单来说就是从项目到安卓到java问,没有问os,计网这些其他的,问了一嘴Kotlin,我说我只是做demo时候用过Kotlin代码,用的不多也就没有问了。
自我介绍
AOSP看的是哪一块的内容(因为我自我介绍里提到了手头做的一个安卓项目,提到我阅读AOSP),我回答了AlarmManager那块的,然后把我的项目也具体讲了一下,提到这个Batch机制等等。
Handler机制
Handler死循环为什么没有ANR
Handler延迟触发是怎么实现的(我说我不是很确定,然后拿Alarm的消息队列的机制来类比,就猜对了。)
讲讲Message和消息队列
Binder是怎么实现的
Activity生命周期
ActivityA启动后启动ActivityB的生命周期(问的很细,问了每个状态下的A和B可不可见等等这些)
Activity启动模式
Restart和正常的启动的区别
MVC,MVP,MVVM
常见的布局(我漏了一个约束布局,但是这块确实不熟)
约束布局有了解过吗?(我说不太清楚)
如果一个页面,给定两个textview去平分这个页面,要怎么通过布局实现?(我确实是不熟,就说我不太确定要怎么通过布局实现)
那不用布局要怎么实现(我说可以用view的绘制来实现)
讲讲view的绘制(这里就讲了绘制的那三步,重点讲了下layout)
view的大小怎么确定?(宽是window的一半)
自定义view有了解过吗?
手动实现自定义view需要哪些方法?
还了解view的什么?(我就讲了activity-window-decorview-view这些,还有具体过程)
在resume状态能正确获取到view的宽高吗?
事件分发机制(提了一些具体事件)
内存泄漏
安卓的差不多大的方面的问题就这些了,一些小的也记不太清了,基本都答上来了,有的实在不会面试官就没有继续往深了问,然后问java的内容,java这块就忘得更多了。
OOP三大特征
Java访问权限以及这些访问权限的区别,排序
抽象类和类的区别
抽象类和接口的区别
StringBuilder和StringBuffer区别
谈谈try catch
谈谈static和final
四种引用方式
谈谈HashMap和LinkedHashMap
ArrayList的数据结构实现
wait和sleep的区别
实在是想不起来还问了啥了。。。不过java确实问的没有安卓多,可能因为我java也确实答得不太好。
然后是一个手撸算法,两个栈实现一个队列。
我一直以来都是拿两个栈来回倒,AC了各路题目,然后写出来面试官说效率肯定不行,让我想怎么做。
但是我之前AC了我就不会看题解了所以就不知道答案是啥样的,我就改进了一点,不用每次pop都倒,直到下次push时候再倒。
结果说还是不行,我就硬是在想。
当然最后还是做出来了,一个栈拿来push,一个栈拿来pop,判断非空的时候把push栈push到pop栈里。
其实是面java时候就有点开始紧张了,好几个我会的点没回答好。
估计凉了,不过体验还挺好的。当是给我这两周速通安卓java的一个全面体检了。。