Preface

本文是移动组黄果普的滴滴面经。已offer。


简介

因为看到了长航拿到了百度offer,就决定也随便投一投。在牛客和实习僧上找了一些招19届的公司,准备了一周,面了滴滴、百度、搜狐和知乎,最后拿了滴滴的offer,其他的没给面试的机会。


百度(挂、30min)

0.介绍项目
1.讲讲MVP、MVC
2.多线程下的单例模式(两种实现方式)
3.如何避免过度绘制(设置背景为null)
4.如何降低view树等级
5.Rxjava了解多少
6.AsyncTask源码
7.Handler消息机制
8.事件分发机制
9.对我的评价:知识掌握的比较全面,不要在意看多少源码(这句有问题,要多看源码)

由于是外卖部门,已被饿了么收购,也没抱什么幻想。


搜狐(挂、40+min)

0.如何避免过度绘制(答的不全面,只知道删除背景)
1.AsyncTask源码
2.项目
3.事件分发机制
4.MVP MVVM
5.Java内存模型(定义多线程和堆之间的工作方式,当时回答成了Java运行时数据区,网上有很多博客误导大众)
6.消息机制
7.自定义view?
8.CoordinatorLayout
9.Glide源码(没看过)
10.查找数组中相同的数并输出下标(当时想的先取出一个数然后遍历数组,时间复杂度较高)

我们招研究生,不怎么招19届的,然后开始分析我的不足,由于面试官看的旧版本源码和我说的不一致,然后就以为我看的别人博客的总结,对我产生误解。


知乎(挂、30+min)

0.矿大浏览器发给他
1.X5WebView的坑(不清楚,忘完了)
2.ConstraintLayout?(不知道,但知道CoordinatorLayout,然后将这个详细解释了一下)
3.知道CoordinatorLayout的子View中behavior是干嘛的吗?(和toolbar交互)
4.Rxjava熟悉吗?(不熟悉)
5.retrofit注解有哪些?(Get Post Put Delete Streaming)
6.Http协议和TCP协议有什么区别(问到这感觉已经凉了,对不起计网老师)
7.Http报文的组成(又凉了)
8.简历上的BRVAH是什么?BaseRecyclerViewHolderAdapter
9.Fragment生命周期?onAttach干嘛的?
10.RecyclerView和ListView的区别
11.学过什么新技术?AndFix热修复

知乎注重开发的能力,对底层原理不怎么要求,由于忘了Http挂的理所当然


滴滴一面(offer、47min)

0.过度绘制是什么?
1.怎么降低view树等级?
2.Handler消息机制
3.项目
4.开始写代码:二分搜索(递归、非递归)、插入排序 (大约 30min)

一面比较简单,主要是写了一些代码,都忘了

滴滴二面(41min)

0.项目介绍,为什么某项目没做完?(没人写后台)
1.butterknife原理(不清楚,猜测是反射),对性能有什么影响?
2.过度绘制怎么解决?(解决背景,设置activity背景为null)
3.view树等级怎么降低?(RelativeLayout代替LinearLayout,,但是RL更消耗CPU)
4.为什么RelativeLayout更消耗CPU?(猜测是布局的复杂程度)
5.问了一下view、viewgroup的绘制过程
6.Service的两种启动方式(start、bind)
7.多个Activity启动一个Service会有多少实例?(不清楚,猜测一个,根据同时使用start和bind方法只启动一个猜的)
8.service不调用unBind会怎么样?内存泄漏
9.滑动冲突处理?给了一个实际例子让我解决
10.Volley源码?
11.烧一炷A香1个小时,B香半个小时,求烧出45分钟?想了几分钟没想出来,最后面试官问我思路,我说找出15分钟,然后就说这是附加题,他们会考虑我的,以为自己要挂了,说了一句”我真的挺想去的”。

面试完,试验已经开始1个小时了,走在路上感觉service那边答得稀里糊涂、最后一题也没答好,应该要挂。(其实一面面试官很想让我过去,感觉辜负了他的期望)到教室后给他发”我大概是挂了“,他说没有,已经在准备给你offer了,谢天谢地!二面很注重实际应用,难度较大。


滴滴三面(0min)

本来三轮面试,直接跳过了


后记

面试真的好累,感觉在那边拿到正式录用offer就不找工作了。真的很感谢滴滴的组长给我机会,主要是幸运才能拿到offer。



未经授权,禁止转载