阿里/百度/网易/美团/小米/快手面经工做经验

人生困难重重,在漫长而艰辛的前行路上,坚持不懈、脚踏实地的“低头拉车”当然重要。但认清形势、找准目标的“抬头看路”也很关键,甚至决定着你可否达到成功彼岸。只寻求远方的梦想,而不付出当下的努力,那是迷梦;只知道埋头苦干,而不认清方向,那是徒劳。java


先简单说说我最近的面试经历吧。面试的公司不少,大部分最后都能获得使人满意的结果,我将这些体会记录下来,面了这么多公司,若是不留下什么,那岂不是太浪费了。对于我来讲,这也是一次自我检查,在此次面试中总结经验,认清本身,同时但愿这些对即将换工做或者打算看看其余机会的你有一些帮助。android


如下的部分有具体的面试经历,也有本身的一些总结面试必备技能和本身的一些感想。面试



为什么离开华为算法


来华为的主要缘由是:增加本身的见识,很好的发展本身。很好的发展本身,就须要一个平台,一般这个平台是大公司才能提供,大公司会有一套完整的机制来培养你,让你有更多的选择,能够选择本身喜欢作的事情。因此我建议刚毕业的同窗,最好仍是选择大公司,哪怕之后要跳槽,大公司也是很是好的跳板。在华为的这一年,最大的收获并非技术上的成长,而是本身的见识和思考问题的能力。虽然有不少人不满华为,公司大了,确定不可避免会出现不少问题,可是整体来讲华为仍是一个很是了不得的企业。数据库


离开华为的主要缘由是:个人职业规划与华为给个人规划不相符,还有就是流程化的东西太繁琐,本身有一些不适应,因此选择离开了华为。很是感谢我高总(直接领导)和邦邦(师傅),在华为的这一年中给予我很是多的帮助,在我跟领导沟通离开的想法时,领导开诚布公的跟我聊了不少,最终我仍是下定决定要离开华为,领导建议我先去面试一些公司,等找到合适的再走,裸辞的话社保和心态上都会有一些问题,这样的领导真是没话说了,在华为不少领导都是不放人的,不少都把员工的下一家拖黄了才放人。在这一年得到的成绩:设计模式

1. 北京研究所第一届Hackathon 二等奖api

2. 转正绩效是A数组

3. 年终绩效 B+,得到明日之星缓存


准    备微信

640?wx_fmt=jpeg

其实我很早就开始准备了,准确来讲也不算准备,只是一直在总结Android相关方面的知识,由于在华为虽然工做有时候比较多,可是仍是有大把时间能够本身学习一些感兴趣的方向。从过完年回来,我就有计划的复习和总结了一些知识。


  • 看过的书籍,这里并非泛泛的读一遍,而是详细理解了大多数内容,通俗一点就是能够用本身的话将相应的知识解读出来。《Android开发艺术探索》(这本书真心不错,我反复读了四、5遍)、《Android群英传》(比较接近开发使用,由于作过一些应用开发,读起来仍是比较简单的,读了2遍)、《深刻理解Java虚拟机》(也是一部神做,可让你清晰的理解JVM,读了2遍,理解的不是很透彻)、《剑指offer》(感受面试中碰到的算法,80%都能找到相应的题目,保证全部的题均可以手写出来就行)。4个月精读了以上书籍,还有其余的都是简单了解,这里就不列举了,读完这些书,应该可让你上一个层次吧(妈妈不再用担忧我面试啦…)。


  • 刷题,主要是LeetCode(大概刷了300道题左右,天天3-6道,坚持下来,须要多复习,由于不少题过一段时间会忘记),还有看过一些牛课网。


  • 看别人的面试经验,主要在网上,这里我列举两个比较好的。 

    • Android客户端面试题集锦

    • Android阿里面试题锦集


投递简历


一份好的简历是很是有必要的,须要突出你的重点和闪光点,具体怎么写简历能够参考


CodeKK说简历


有了一份好简历,接下来就是投递简历,通常是:拉钩+BOSS直聘+内推,从我此次面试机会来看,三者比例是2:2:1,也可能我工做经验还不到一年,内推滴滴、阿里和腾讯直接就把个人简历刷掉了,可是内推也是具体到某个部门,若是被刷掉也不要灰心,如今大公司基本上各个部门都有本身的hr,能够在拉头和BOSS上多投递一些,万一其余部门看中你呢?


面试通过

这里我仅仅记录一些问过的题目(能记住的),答案我就不写出来,基本上均可以在网上找到相应的答案。


做业盒子

时间有点久,不少问题记得不太清,大概有如下内容。


一面


 1. Android一些优化方案

 2. 什么是过渡绘制,如何防止过渡绘制

 2. 事件分发机制

 3. ListView的优化

 4. Binder机制

 5. 在多进程中,Application会启动几回

 6. 单例模式,双锁原理,volatile原理,静态内部类实现单例的原理。


二面


二面面试官是leader?反正应该不是作Android的,Android的相关知识问的也很少,大可能是项目上的东西。


 1. Java多线程,synchronized

 2. 聊项目,都具体作了什么。

 3. Binder机制


三面


应该是leader吧,主要了解一些我的的状况,以及一些项目,最后问了指望的薪资,而后当场就给了offer。


毕竟1年多没有面试了,第一场面试仍是给我了很大的自信,也知道如今本身大概能要多少工资是合适的,因此同窗们准备跳槽的时候,最好先面几家小公司,盒子仍是一个很不错的公司,总体的办公环境挺好的,如今也处于盈利状态,在教育类的app中也排的上名次。



快手

快手就在五道口地铁站出口不远地方,能看到很显眼的LOGO,看上去很霸气的样子,可是当我进入到快手前台的时候,连一个标示符都没有, 一度觉得本身走进了假快手,好吧,我是来面试,这些都不重要,接下来接待的人员把我领进了一个小屋里,等待面试的开始。


一面


面试官是一个很fashion的人,是从小米核心部门过来的,是Android小组的领导。


1. 问了关于数据库的一些问题,SQLite的相关操做,没办法,我在华为惟一一个作的和java相关的项目,可是不太擅长数据库。

 2. 网络相关的问题,网络的五层模型,又问了TCP和UDP,还有Android相关的长链接,这里问的比较深。

 3. 开始Android先关的知识,Handler机制,Acticity的生命周期以及四种启动模式,各自特色,Service的两种启动模式生命周期,若是同时使用两种启动模式是否能够,顺势讲到Binder,何时能够获得控件的大小,最后写了一道链表反转的算法题


第一面这就算过关了等待二面。


二面


 1. 问了项目相关的问题,这部分根据本身的项目经验,因为你们的经验都不一样,这里我就不详细说了。

 2. 设定一个场景,怎么去实现相应的功能,由于快手这个部门想作社交,所以这里是问我是如何实现微信的联系人页面(包括与服务端有什么样的交互)

 3. 最后也是一个算法,写出全部数组的子序列


二面面试官是这个组的leader,跟我讲了如今这个组的发展状况和快手如今的状况,因为快手成长很快,因此不能仅仅依靠一个APP,还须要在其余方面进行一些尝试,而这个组的任务就是在一些方面作一些尝试,大概就是这个样子。

 
二面也顺利经过,接下来就是HR面了,这时候正好是12点,他们要去吃饭,不过快手是提供午饭和晚餐的,第一个面试官带给我一份饭,还不错,后来HR跟我说,如今只是过渡时期,后面午饭和晚餐会改为自助餐的形式。


三面


HR上来很亲切,问了我一些面试的状况,难不难之类的,而后又聊了聊我大学和研究生状况,我只想说我“too simple , too naive “,大概了解我后,只跟我聊个人不足,以此来压低我指望的薪水。说了一下薪资指望,加了微信,让我回去等待,说发offer大概是2周时间,由于须要走各类审批流程,让我不要着急。


快手是一个很年轻的公司,技术仍是须要必定的积累,但愿不要像小咖秀同样昙花一现。


美团外卖


一面

简历上写的项目问了一遍,而后开始问知识点。


 1. volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,Last-Modify的做用等。

 2. fragment的生命周期

 3. service一些知识

 4. 事件分发机制

 5. Binder实现机制,Stub类中asInterface函数做用,BnBinder和BpBinder区别。

 6. gradle中buildToolsVersion和TargetSdkVersion的区别是什么

 7. 手机适配一些方案

 8. hashmap的实现原理

 9. 静态方法是否能被重写


这些大概聊了1个半小时,开始的时候还有些紧张,慢慢聊开了,就好多了,面试官的语速有点快,总是须要面试官重复一遍,我也不经意间语速也变快了,不过能看出来面试官仍是很厉害的。


二面


 1. 3次握手和4次挥手的缘由,以及为何须要这样作。

 2. 数据结构,搜索二叉树的一些特性,平衡二叉树。

 3. hashmap是如何解决hash冲突的

 4. 进程与线程区别

 5. 写了一个二分查找和单例模式

 6. http中的同步和异步

 7. 聊了一些项目上作的东西,问了问职业规划


因为二面面试官不是作Android,原本面试个人人临时开会去了,因此这一轮面试没怎么问android相关知识,不过二面面试官一直是微笑,因此这一轮很轻松,更像是一块儿讨论问题。 


面试完已是下午4:30了,因为面试当天是星期五,而周五美团的会议比较多,因此等了会,二面面试官说三面面试官在开会,面试另约时间,我仍是说此次一次面试完吧,这一等就等了2个半小时,期间hr跟我说三面面试官是个大牛。


三面


1. 我认为Android作的优秀的几个地方,而后又根据我说的问了问比较深刻问题。

 2. Android是如何进行资源管理的。

 3. java比较重要的几个特性

 4. 网络五层结构,每一层协议,因为我网络不是很好,还问了一些其余的问题(例如MAC地址和ip地址的区别等)。

 5. 为何离开原来公司,以及职业规划,而后由于面试完大概就晚上8点了,就先让我回去,下周让hr跟我联系,我想这是应该经过面试了吧。


美团技术仍是很厉害的,从面试官的水平就能够看出来,尤为是外卖核心部门,办公环境是不错,可是感受就是有点乱,不知道是否是由于今天面试的人不少,基本上一直有不少人来回走动,有一些嘈杂。


小米TV


一面


多是由于一面是个人学长,因此没有问我不少技术的问题,聊了聊我作的向项目,而后聊了一会OpenGL、GLSurfaceView和Shader,主要聊了OpenGL绘制方法,还有一些Binder相关知识,感受很是轻松,还想着若是面试都这么轻松就行了,而后就直接下一面了。


二面


二面面试官看上去很斯文,可是仍是一个对技术精益求精的人,问的问题都很细,具体问题的顺序挤不太清楚了,大概问了下面几个问题。


 1. 单例,快排,回型打印二维数组

 2. 写一个死锁,死锁是怎样产生的,怎样防止死锁

 3. Acticity启动模式有几种,分别表明什么意思

 4. 聊项目都作了些什么


三面

leader是一个颇有亲和力的人,上来就跟我说前面技术已经问的差很少了,这里就不询问我详细的技术了,就出了一道算法题,须要说出时间和空间复杂度,以及有没有更优解。


1. 字符串反转,讨论复杂度。

2. 聊经历和项目


HR面


HR面问问题都是一个模板刻出来,都是例行公事的询问,bulabula……而后就算完成面试。 


从总体来讲,TV更须要一个测试开发,可是我仍是想作开发,暂时不想作测试,因此我估计TV是不会给我offer了,虽说了过几天会正式给我发offer,最后也无法。


小米TV在一个独立的小院子里,环境仍是不错的,总体的发展也能够,毕竟是小米生态中重要的一个部分。


网易


网易大楼是在百度大楼的旁边,感受仍是不错的,来的稍微有点早,在前台等了20分钟左右的样子,面试官就带我去面试了。


笔试


具体的内容记不太清楚了,大概有如下几个类型,都仍是比较基本的。 
选择题、程序输出题、四道算法、简答


 1. 给定一个int型 n,输出1~n的字符串例如 n = 4 输出“1 2 3 4”

 2. 输出全部的笛卡尔积组合

 3. 单例模式

 4. 最长上升子序列


都不是很难,基本上都能做出来。


一面


一面面试官是资深的Android开发工程师,的确水平很高。全部的问题问的都很详细,不少细节,面试官都能清晰的说出来,的确水平很高。 


属于按部就班的问题方式,从简单的知识入手,逐渐深刻,直到你回答不出来并且问的都是你自认为很擅长的知识点,可见面试官的功力有多深厚,深深的佩服。 


我下面大概说一些问题,可是到最后总能问到很深刻的地方。


 1. 对刚才作的题,一些错的地方作了讨论,主要是类的加载和内部类方面的知识,尤为一些深刻到JVM层的知识的确本身有一些不足,不过大部分都仍是能答出来。

 2. 双亲委托机制,类的五个加载过程。

 3. java类加载器的加载流程。

 4. Binder机制,从java到framework再到kenral层,面试官问的都很详细,遇到不会的也都会跟我解释。

 5. Serializable和Parcelable的区别。

 6. View的绘制流程,详细到framework代码,讨论到不肯定的地方,立马打开电脑和我一块儿看源码。

 7. 事件分发机制。

 8. 经常使用设计模式,使用静态内部类实现单例的原理是什么。

 9. 线程同步,CopyOnWriteArrayList怎样实现。

 10. Volley源码,EventBus源码。


面试完后就到12点了,讨论了1个半小时,跟我说我这关过了基本上就没问题了,面试官仍是一个很幽默的人,带我去网易食堂吃了顿饭,的确这里的饭特别好吃,回来后,休息了一会,就开始Leader面了


二面


Leader面,我还觉得至少要3轮技术面呢,没想到直接就到leader面试了,后来才知道第一轮面试的结果仍是很重要的,一面面试官是很是资深的工程师,只要经过一面了基本就没问题了。


 1. 项目介绍,聊一些项目上的问题

 2. 下拉listview的实现,须要注意的地方和优化的地方(不是lsitview的优化,是下拉的优化)。

 3. Android上一些优化方案

 4. 介绍了一下如今作的项目,大致说明了如今所用到的技术。


整体感受网易的氛围仍是很是好的,技术实力很是雄厚,leader技术能力也很强,而且一面面试官告诉我,leader有时候还会本身写一些代码,通常到了leader不多有写代码的了。


hr面


同样的流程,各类谈,说面试官对我评价很是高,但愿我能来之类的话,而后就算面试结束了。


小米


这是第二次面试消息,此次是小米的核心部门,MUI部门,主要作阅读类app,据说发展仍是很不错的,为何要面试两次小米呢,由于以前内推太小米,一周都没有消息,我就在网上投了简历,等面试了小米TV,这边又叫我去面试。到了小米前台,前台没人,我问保安,保安让我打HR电话,结果HR也不接电话,就这样等了半个多小时,HR终于回过来电话,打电话让面试官把我接上去了,一面面试官还觉得我不来了。


一面


 1. 聊项目,GLSufaceView,OpengGL,Shader相关一些知识,在项目中作的优化

 2. gc是根据什么来回收一个对象的,引用计数和gc root分别怎么实现。

 3. 怎样会产生内存泄露,举一个具体的例子,使用什么检查内存泄露

 4. 自定义View的绘制流程

 5. 给出二叉树和一个值,找出全部和为这个值的路径;{1,3}{3,6}{3,4}{6,8}区间去重,最少去掉几个集合,可让这个集合没有交集。


二面


 1. 什么是ANR,Activity、BroadcastReceiver、Service对ANR时间限制分别是多少,怎么处理ANR,除了系统生成trace.txt文件,怎么在程序中检测ANR。写出伪代码。

 2. 编解码一些知识,I帧,B帧,P帧区别。

 3. Android一些优化方案。

 4. 算法 n/m,怎么判断得数是无限循环小数。


三面


三面面试官看上去很年轻,人也特别幽默,不过技术仍是没得说。 


1. 介绍项目。 
2. 事件分发机制。 
3. 算法,将一个字符串转换成int型数字,考虑 错误输入,溢出,正负值等一些条件,考细心。 
4. 给出一个搜索二叉树,输出一个排序好的双向链表。


四面


原本觉得是HR面,结果不是,应该leader面,上来就说技术就不面了,介绍本身的项目中以为作的最好的几个部分,大概说了下,接下来就是问了为何离开原来公司,为何选择小米 bulabula…..面完以后,说今天太晚了(晚上快8点了),hr已经走了,下周让hr跟你电话联系吧,把我送到楼下。


第二周小米就发来了面试经过的消息,具体谈了一些薪资待遇问题。


百度


一面

一面面试官的思惟很是跳跃,常常我说到一半的问题,忽然询问其余相关问题,而后回答完再继续以前的说下去,有些许不适应这个节奏。顺序可能不太对。


  1. 类的加载过程,Person person = new Person();为例进行说明。

  2. JVM相关知识,GC机制。

  3. 类的加载器,双亲机制,Android的类加载器。

  4. Android中进程的级别,以及各自的区别。

  5. 插件化原理。

  6. 集合框架,list,map,set都有哪些具体的实现类,区别都是什么。

  7. concurrentHashmap原理,原子类。

  8. volatile原理。

  9. Binder机制。

  10. View的绘制流程,事件传递机制,Handler异步消息机制。

  11. Interger中的128(-128~127),这里考的是常量池的概念,这个没回答上来。

  12. 线程池的相关知识。

  13. Handler机制,HandlerThread实现等等。

  14. LRUCache算法是怎样实现的。


二面


二面面试官看上去挺面善的,因此气氛就不那么紧张了,说实话来百度仍是有点小小的紧张的。


  1. 说了说项目中相关的知识。

  2. 聊了聊以前作过的项目。

  3. 内存泄露,怎样查找,怎么产生的内存泄露。

  4. 怎样计算一张图片的大小,加载bitmap过程(怎样保证不产生内存溢出),二级缓存,LRUCache算法。

  5. 简单介绍一下java中的泛型,泛型擦除以及相关的概念。

  6. Android优化相关的只是,布局优化、内存优化等等。

  7. SQL相关的知识优化的方案,这里我直接说不太了解,就过了。

  8. 算法题,m * n的矩阵,能造成几个正方形(2 * 2能造成1个正方形,2 * 3 2个,3 * 3 6个)


三面

由于每次面试都是有记录的,因此三面面试官问题的技术问题就不那么细节了,大致以讨论的方式跟我聊,大致聊了如下几个方面,固然越深刻,面试官对你的评价就越高


 1. 项目相关。

 2. Android优化.。

 3. 插件化相关技术,热修补技术是怎样实现的,和插件化有什么区别。


其余的都记不太清楚了,整体来讲聊的仍是不错的,原本觉得百度会有不少算法题,结果只出了一道(侥幸。。。),原本还要有leader面,三面面试官仍是很是好的,跟我说他们几个技术以为我仍是不错的,就看leader了,结果leader有事,出去了,不知道何时回来,就约当周的下班时间过去就好,而后面试官亲自把我送到了门口,跟我聊了不少,挺不错的。


四面

四面是经理面,感受经理已经不作技术了,技术基本上没有询问,大致问了一下项目,以及本身在项目中都作了一些什么,聊了聊其余的话题,就完事了,而后就让我回去了。


大老远的跑过来,就谈了不到半个小时,好吧,谁让人家是百度呢,回去等hr电话吧。

 
过了几天,hr联系我谈薪资待遇等,又让我跑了一趟,面试这么多家,最累的一次,谁让百度是牛*呢,一顿说,bulabula…… 


感受近几年百度发展的不是很好,一直在走下坡路,不知道是否是在憋大招,不少百度人都出来了,不过百度毕竟是百度,仍是很厉害的。


阿里


求之不得的阿里终于找我来面试了,以前无论是内推仍是网络上投递都被拒绝了,缘由是我工做不到一年,没办法谁让马云爸爸太厉害,我投递的是杭州的天猫,是作虚拟现实的小组(刚听到这个名字感受和本身不太相符),这是我到面试完后,才知道的,面试官也跟我说Android上的需求可能不会不少,更多的是VR技术在Android上的应用,包含OpenGL等技术。


一面


 1. 询问了我博客上写的一些东西,从项目立意谈起,到设计,再到详细的技术实现,可谓是面面俱到,因为本身写的博客仍是比较熟悉,回答的还不错。

 2. GLSurfaceView的相关知识,OpenGL,Shader,绘制流程。

 3. 询问当前作的项目,以及到具体的实现和优化。

 4. 多进程间的通信,Binder机制。

 5. 询问看过哪些框架源码,EventBus,Volley讲了一下。


大概聊了一个小时左右,聊得还能够,基本上都回答上了,中间给了我不少建议,不懂的地方,也会仔细跟我讲解一番,其实有一半的时间都是跟我聊产品,为何这个产品好,怎样作才能迎合市场,而后怎么设计整个产品等,感受跟我如今水平不是一个层次的,果真,次日就给我发了一封邮件,说我如今暂时不太合适投递的岗位。


面试结果


除了阿里淘宝外,其余的公司基本都拿到offer,这段时间把华为这边的工做都交接完,休息几天,若是有空的话回家停几天。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------