面试总结

最近因为一直很忙,从4月份到10月份一直在准备校招,面过了部分的大厂,积累了很多的经验,直到现在我才抽出一点时间来发布这篇文章。

面试这些大厂,我最大的感受就是他们对基础要求的很高,对专业深度也有非常高的标准,这我已经强调很多遍给大家了,今天我就不讲这些空话,我告诉你大厂到底面我们一些什么。

百度春招面试

春招我遇到的百度面试官是一个工作两年的研究生,做多媒体开发,上来就先聊聊简历,先营造一个轻松的氛围,然后再一一问他准备好的问题,他问我最拿手的项目是什么,又问我它突出的一个点,这个因人而异,要面试BAT,必须有一个自己精心准备,很突出的项目才行,我们罗列在简历里面一些技术要点,比如MVP+Retrofit+RxJava,面试官肯定会问它的好处,演示过程中会针对一些UI问它控件的源码和优化,我们既然项目里用到了RecyclerView,ListView,就要对它的原理理解的很清楚才行,百度会问一个屏幕,有3行图片数据,有几个数量级的view和viewHolder,对应关系上是什么,复用的是什么viewHolder,这个我没有答上来,项目里用到了缓存,问我DiskLruCache源码和内部实现机制,如果我们研读了Glide源码写在了简历上面,他就肯定会抽出一些具体的细节来提问,比如Glide是如何实现圆角图片的,既然研读了源码那么你具体应用在了项目哪些地方。接下来问他准备的问题了。

1.解释一下多态是怎么实现的,然后写下面的函数

class TestA{

public static void test(){

System.out.println("A");

}

}

class TestB extends TestA{

public  static void test(){

System.out.println("B");

}

}

public class Sample6 {

public static void main(String[] args) {

// TODO Auto-generated method stub

TestA a=new TestB();//b

a.test();

TestB b=(TestB)a;

b.test();

}

}


不加static会输出什么

2.一个ArrayList有10个数据,现在往里面插入一个数据,详细描述内部机制

3.讲一讲HashMap LinkedList内部机制,并且手写Hashmap的几种遍历代码,currenthashmap为什么能保证线程同步

4.双向链表的插入,写关键代码

5.求文件夹层次,给我提供方法,使用递归实现,应用场景是文件的递归删除

然后我主动提出View的渲染三大流程,他提到了measure,measureSpec的size问题,然后问一个布局的源码,LinearLayout,里面有wrap_content的TextView,LinearLayout的宽度是怎么确定的。讲述一下measure和layout的过程(我给恒志说过这个问题)

6.不同进程如何实现通讯,我说用AIDL和Binder,问二者的区别

7.问在一个线程里面回调的执行顺序,不同线程同时执行一个方法,如果加了同步还好,如果加了volidate会不会顺序输出想要的结果,基本就考察Java多线程的问题了

7.最后一个问题,写一个音乐播放器,activity一个按钮是播放,一个按钮是暂停,后台业务在服务里面,如何实现,我说可以用服务,ServiceConnection,或者使用广播,二者的区别上是什么。

秋招百度面试

一面问有没有自己App.自己看一看它的效果。不同的是他问我自定义View体现在项目的那里,以及动画的知识,问我项目用到了什么设计模式,我回答的还可以,接下来面试官问他准备的问题了。

1。简单阐述安卓四大组件,我基本回答上来了,旁边那些视频面试的也是同样问这些东西。

2.手写问单例模式,我写的是静态内部类单例和双重检验锁单例。

3.和春招一样,问到Java让我写一个LRU算法出来,针对项目让我写一个生产者消费者模型,就这样一面结束

二面也是问的项目,不同的是项目里面网络用到的比较多,OkHttp源码里是如何实现连接池复用的,缓存关系是怎样的,项目里用到的Retrofit,它是如何封装的OkHttp,接下来问Binder实现原理,我简单描述了它的内部执行流程,再细节一些就不会了,下面问View的事件分发机制,针对ListView来提问,当我们点击一个item,事件是如何传递的,写出代码对下面的Java死锁情况并且解锁,这个我写了20分钟勉强通过了。

三面更侧重的是计算机网络和数据结构,我感觉面试官态度并不好,看我简历问了问学历,感觉就很不屑的感觉,首先问计网分哪几层,各自的协议是什么,具体是干什么的,TCP报文格式是什么样子的,问是如何实现流量控制的,书上之前都看过的,基本都没问题,问我www.baidu.com发生了什么,然后问我服务器怎么解析JSON的,接下来问数据结构,直接手写快排,分析它的时间复杂度,如何进行优化,这一部分我回答的有些勉强,毕竟数据结构我准备不充分,最后进行开放性问题,对百度有什么想了解的。后来hr告诉我等消息,面试通过,不过后续我也在没有联系。

首先百度更侧重的是Java基础,《Java 编程思想》《Java I/O》《Java并发编程实战》等书籍都是我们现在以及未来的必修课,对手写Java代码能力要求较高,对设计模式我们要很熟练写出来,知道它的应用场景,其次就是百度像滴滴一样,很看重我们的技术深度,既要会用,也要了解它的源码机制,我们要对学过的知识灵活的掌握。  手写代码如果我们不会就不会,不要硬着头皮写,越写思路越混乱,这样反而不断的给自己减分。

阿里面试

阿里的面试很短,就半个小时,直接电话面试,阿里和百度一样问项目,我项目里面用到了RxJava,RxJava如何定义一个Subscriber,还有就是RxJava+Retrofit如何结合使用,在代码上面的体现,还有就是线程池为什么用,用到newcachethreadpool怎么开启线程池,怎么得到线程池里的某个线程,还有就是让我陈述一下Handler源码,为什么会造成内存泄露,而单例模式释放掉单例类还是释放掉对象,如果释放掉单例类怎么办,如果不同的activity都持有这个单例对象怎么办,如何去管理它,内存泄露和内存溢出的区别,这是两码事,还有事件分发机制的流程,然后举一个具体的场景,一个Viewgroup嵌套一个Viewgroup,再嵌套一个View,当使用ACTION_DOWN的时候,怎么调用每个的onTouchEvent函数,堆和栈的区别,还有对activity比较深的理解,还有就是匿名内部类,静态内部类为什么不会内存泄露,内部机制是什么,WEEX说要问我,这里我回答的不是很好,毕竟源码我了解的不多,最后问的OkHttp的内部机制,秋招阿里面试在项目里问了自己有没有自己打造的框架,描述Handler机制,有哪些场景,还有Activity和Service如何绑定,通讯,try{}catch{}里面如何防止内存泄漏,最后是wait sleep哪个能释放同步锁,CPU时间片,跟他聊了聊LuaView,他说这个更多在iOS和C++实现比较多,电话面试还是效果很差。

阿里校招时间比较早,能去阿里的都是精英中的精英了,其实阿里更侧重技术的深度细节,对我们源码阅读能力要求很高,技术深度就是体现在我们对知识记忆的精准度,记得越准确,我们才能谈得上技术深度,其次,我们要对简历里面写的东西负责,既然写了一定会问。

腾讯面试

一面

腾讯一面是我经历的第一个面试,也是我遇到的所有面试官里对我帮助最大的面试官了,他上来先做自我介绍,然后有针对的问我问题,我给他吹了一波Lua Weex,自己也就了解一些皮毛,把自己懂的冰山一角给他说了下,然后他问我,推理出快排的时间复杂度,手写双重校验锁的单例,windows有5G程序,怎么跑起来,死锁的必要条件,怎么避免死锁,TCP怎么解决大数据传输,对activity的理解,堆和栈的区别,项目里面遇到的问题,提供一种解决方案统计出市内红绿灯的个数,给一个字符串怎么求出我想要的子串来,平时我看的2本书对我启发很大的点是什么,然后就是自我评价,我再问他问题。

二面

二面上总监面,全都问的项目,里面涉及到了设计模式的简单工厂模式,让我简单描述一下它是如何实现的,又让我演示了一下伴你同行,我阐述了开发的时候遇到的问题,我演示了一下图片拍照上传,也给自己加了不少分,我在万象街这个项目提到了懒加载,他让我关注的不是懒加载,而是有什么解决方案,往深里面去学习浏览器机制去解决这个问题, 我没有一个研究深的点去研究,进而应用到项目里面中去,VSYNC机制都是程序员必备的技能,包括视图渲染都是,所以要我深入Linux层去学习,而不是停留在会用的基础上,对于你项目里,你阐述了你的解决方案,优点在哪里,缺点在哪里,网上看一些别人的方案,哪些方案你是没有的,你是如何借鉴过来解决的。源码也是一样,你研读了别人的源码,你有没有亲自实践过,你的方案和别人的设计有什么缺点,这都是一些优化的点子。


腾讯面试对操作系统,计算机网络,数据结构要求非常高,这些基础没有的话一定会遇到瓶颈而无法突破它, 学习不要停留在表面上,要理解它的原理, 二面面试官让我有一个深入的点,并且得有些成果出来应用到项目里面,关注点不在技术表面上,而要怎么解决技术问题, 腾讯一面带给我的就是不要答非所问, 要我学会思考面试官的问题再说,而不是一股脑把自己会的说出来,要知道面试官想要什么。

一些小公司的面试

其实大家每一次面试都可以录音的,或者你记性好自己回答的情况都清楚,要改进的地方也都了然于胸,因为篇幅有限,这里只给大家罗列一家小公司面经,大家可以过来练练手。

小厂面试

我分享一下DailyCast吧,其实小厂的offer都很容易拿的,都很侧重项目,一面面试官问了我activity的理解(跟腾讯面试官一样),问MVVM,activity启动模式各自的意义,单播和多播的区别,静态注册和动态注册的区别,静态注册可以在app未启动时候接收到广播,在AndroidManifites.xml里如何转换成代码执行起来的,怎么确认接收这条广播,本地广播怎么用,binder传递对象具体怎么实现,service如何去启动,怎么动态控制service执行,IntentService和service区别,让写了一个双重检验锁,恶汉式单例模式,然后又说这个也会有1/1000的几率可能导致不会是个单例模式,不过有一种就是使用静态内部类实现单例模式,App启动以后会单一形成啥之类的,就100%保证了单例模式,然后问AIDL如何实现的通讯,databinding

二面的面试官是北大研究生,学习安卓一年,根据我简历写的源码一个一个问,首先问到了LruCache,原理说了一下,然后说对于大量数据来讲就有性能问题了,在算法上,查找到了加上,如果没有就要回到链表头加上它,所以有一种改进方案就是引用计数,View绘制里面在onDraw里进行绘制的,UI只能在原有的线程中绘制,不一定原有线程是主线程,glide如何实现圆角图片,怎么让它去支持https,对于fresco来讲和glide的区别,优缺点,什么算法情况下listview优于recyclerview,回收复用是在recycle上面的,A->B->C,而B是singleTask,C启动B,如何实现传值,这就讲到了onNewIntent,它和intent区别,在原理上是在ActivityThread里实现的,而不去走onCreate路线,并且framework紧紧围绕binder去实现。fragment使用场景,viewpager或者fragmentArray实现的才需要定义onActivityResult,而对于单一的fragment,系统就知道哪个fragment,就不需要再指定了,service启动原理,如果控制音乐播放需要传递intent来给service通信吗,最后给了我一些建议,从statusbarbackground actionbar contentview negavationview 有一个整体了理解,常用控件,viewpager listview recyclerview一定要读源码, 把开源库都读灵活了,picascoo,fresco各自优缺点,适用于什么场景,一定要有大量的实践,通过binder就有了handler一系列的东西,问的很深,所以部分我回答的不是很好,虽然拿到了offer,可还是有不少东西要补的。

对于小厂来讲,对数据结构,计算机网络等基础也是有要求的,不过不会像大公司那样要求太高,小厂侧重我们的技术能力,如果我们想进这些公司,也是有好处的,如果单纯为了锻炼自己,希望大家从中找到自己的不足,offer只是一个结果,切忌骄傲!

滴滴面试

一面非常轻松,自我介绍,问了我网络端的开发,问了HTTP的报文格式,简单介绍一下HTTP,还有平时使用的设计模式,问了一个算法题,比如abAcDefGH输出abcefADGH,先输出小写,最后输出大写,我刚开始用栈实现,最后面试官告诉我排序都学过哪些,我自然就想到了快排,最后在提示下做出来了,问了动画有哪些,我不了解太多,给他聊了virual APK,我说这是我研究四大组件的一个钥匙,想借这个机会学一学知识,我也是知道了一些皮毛,跟他聊了一些,问了我activity四种启动模式,Android如何实现的进程通讯,一面相对来说我发挥的非常好,也是面试官没有像接下来的面试官问的这么细。

二面面试官问的特别细,比如Handler无参构造函数如何初始化Looper的,OkHttp为何使用双向队列,优点在哪里,RecyclerView如何实现的视图复用机制,如果有成百上千的数据显示,如何显示给视图的,对于View的绘制有过哪些实战,在onDraw方法里面我们要注意哪些问题,(其实是尽量不要new出大量的对象,否则OOM),Virtual APK你到底看了哪些东西,源码不是很多,应该能认真读完啊,Linearlayout源码有没有读过,如何理解weight,如果设置了weight="0.5",横向布局,剩余的view weight="1",怎么个显示比例的(后来我详细研读了源码,这的确是一个注意的点),GC垃圾回收机制原理,子线程更新UI的方式,activity启动模式,包括生命周期,问singleinstance底层实现机制,AsyncTask原理实现,我是如何实现的视图优化,在项目里面我是如何进行网络优化的,既然读过OkHttp源码,OK,出一个场景,如果我Post一个图片,要对图片压缩,并且判断图片是否屏幕旋转,如何使用OkHttp拦截器进行设置。

滴滴面试二面的难度非常大,像阿里一样,对源码细节要求较高, 万事都要讲究它的原理,要知其所以然,不要停留在表面上, 除了多看源码,多读没有好的方式,要多写代码,不要总是看一些博客, 举个例子,对于看过OkHttp的肯定很快反应到发送数据到服务器都发生了什么流程,这些要非常熟练才行,对于ListView RecyclerView,加载10个图片快速滑动屏幕,分析卡顿情况,CPU占用率,一点一点分析它的性能区别,这才是正确的学习方法,基础好,有深度, 做了这么多项目,同样的人,人家就会要一个对底层了解点的工程师。

美团面试

一面

美团面试官果然是很nice的,一面主要问基础,项目用到了ListView,问了ListView优化,我后来知道了,convertview viewholder是两个优化的点,项目我说的也差不多,他说面试分三部分,第一部分是数据结构,第二部分是Android基础,第三部分是计算机网络,然后让我写冒泡排序,后来问一趟冒泡有啥特点,推出时间复杂度,还有代码优化,最后我回答的也差不多,问了个二叉树的三种遍历,安卓问了一些基础,我记不太清了,计网问了ip分哪几种地址,最后问Android studio里面settings.gradle build.gradle里面具体是干嘛的,就这样一面结束,很轻松。

二面

刚开始问安卓基础,Activity生命周期,开启一个新的activity生命周期为什么这样我就不知道了,问四种启动模式,还有onnewintent,服务广播简单问了问,我还回答了view的绘制相关问题,VSYNC垂直同步我回答的不错,美团黄牛计划里面也是使用的双缓冲,安卓深的点我直接把OkHttp源码详细讲解了一遍,玩的都是套路,然后就问数据结构,问了一个哈夫曼编码,然后问了判断是否是一个循环链表,最后问了树的遍历,二面还是通过了。

三面

面试官是一个前端工程师,各自的专业领域没有任何交叉的机会,刚开始给我出了一个动态规划的问题,给一个股票的走势图,每天都在波动,选择一天买进,选择一天卖出,让收益最大,下一个问树的深度遍历,用C或者Java写出来,下面针对简历上的点问了一些,又问我观察者模式原理,问了未来的职业规划,让等hr面试,不过大家都没有HR面试,所谓终面结束挂掉。

美团和腾讯非常像,对基础要求非常高,三面全都问数据结构,其中穿插一些项目的东西,如果公司给一个方案,自己能不能有一个解决思路,如果我们连基础都不扎实,很难给出一种解决的方式方法,美团更侧重人的发展潜力,对技术深度要求没有阿里滴滴那么高。

爱奇艺面试

一面

一面其实就像聊天一样,很轻松,也是通过了,没有让写代码,一面我有很多的问题问了面试官,先说开始吧,上来就是先介绍我的项目,针对项目问了一些问题,一个关键的点就是我图片压缩是如何压缩的,是分辨率压缩,还是宽高的压缩,最后其实是分辨率的压缩,1M的图片他给我详细讲了为什么在ARGB4444占用4M,而ARGB8888占了8M的内存,RGB到底是什么意思,Handler源码简单聊了聊,而ThreadLocal为什么线程共享我就不清楚了,也类似于HashMap为什么线程不安全,Glide的优点有哪些,对于Android-ImageLoader,对于动态化我们聊了聊各自的看法,爱奇艺的动态化是安卓原生的,这样效果会更好一些,走一些插件化的东西,而不是XML,而不是RN,WEEX之类的,项目问的很轻松,最后是我问他问题,爱奇艺流畅度部分是依赖于P2P技术的,还有就是分布式服务器,对一些电视剧进行毫秒级的推送至手机里面,爱奇艺技术不开源,都是组内进行的研究,也是分层架构,就这样一面告诉我通过。

二面

二面是总监面,上来就是总监面我计算机网络,等一些基础,数据链路层有哪些协议,问七层里面TCP如何实现流量控制的,滑动窗口如何实现约定,TCP报文里有哪些,我回答的都还不错,服务器与服务器之间如何实现通讯,四次挥手如果客户端不发送FIN报文会怎么样,服务器如何减少没有用的连接,其实大厂都要有发展潜力的,这都是衡量指标,接下来问了数据结构,同样像之前面试,都是套路,快速排序,用代码去实现,按照自己心里想的直接写就OK,这些都不是问题,然后问我设计模式都有哪些,建造者模式的优点有什么,这个让我有点蒙,什么是观察者模式,还有我们聊了SurfaceFlinger图像渲染的东西,问我Griphtic Buffer在哪里,具体怎么渲染的,我就记不清楚了。

爱奇艺很看重数据结构,没有哪家大厂不看重这门课的,其次是计算机网络,计算机是一门实践科学,任何内容光靠死记硬背是不行的,知识广度都是由基础决定的,根据一个点可以联想到很多的知识内容,知识深度由我们对技术的记忆的准确度来衡量,对越深的东西记得越准确,对里面内部机制非常熟悉才行。

大厂就分析到这里,大家肯定深刻体会到基础知识的重要性,针对之前大三学习规划那篇文章,大家也应该清楚知道后面我们的努力方向,其实大家还可以看到面试是有套路的,比如手写快排频率非常大,紧接着就是推出时间复杂度,代码优化,用到那个技术不出意外会问源码读过没有,项目用到什么设计模式,它的优点是什么,大家都可以通过面试总结就规律来,自然就知道面试官想要什么答案了。

写在最后,我们去面试,更多的是找到自己的不足,增长见识,找到真正适合自己的公司最重要,如果我们和面试官聊天很紧张,认为家公司很难,你去了就告诉他,哥们,我来这里是改变招聘历史的,英雄不论出处,No matter where you come from,在面试之前,我们针对自己的简历要清楚面试官会问一些什么东西,以上一些面经大家可以参考一下,比如简历写了OkHttp RxJava Glide肯定会问源码的,设计优点,对我们简历的项目,我们要提前准备好如何给面试官讲解清楚,带着面试官一步一步走到我们的舒适区,再一一展示我们的强项。项目不要多,好好准备一个就够了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容