BAT|Android工程师面试流程详细解析

大家好,新的一周开始了。今天是 码小白(tamic) 的投稿,分享了他在BAT以及其它大公司的面试经验,很不错的干货,希望能够帮助到大家。

码小白(tamic)博客地址:

http://www.jianshu.com/users/3bbb1ddf4fd5

写在前面

百度

求职和我们每个人息息相关,而求职也有门道,好的发挥和技巧或许能让我们以压倒性优势在面试中胜出,可能我们技不如人,但是我们的综合能力如果优秀的话,企业也愿意招这样的人,因此我将自己亲身经历的BAT和其他知名互联网的面试经验分享给大家,让有技术的人展现获得实现自我更好的平台。

找工作了

前几天在网上一搜,一系列的百度面试题,我特别兴奋,点击链接一看,差点给吓尿,这尼玛什么东东,结果发现都是一些标题党,里面没有太实质性的东西,如果按照那上面题目的去准备,估计进一家创业公司的中级开发工程师也难啊,除非老板不懂技术,但是别忘了现在很多创业公司的CEO一般是技术出生的,在他面前也是会瞬间被完虐。

今天就给大家整理和回忆下自己面试过以往 百度,京东,新浪,携程,唯品会,阿里 面试经验,其他小名气的公司在此就可以忽略了,只要掌握百度的面试流程腾讯估计也就八九不离十。在开始面试之旅之前还是要多说几句,选公司是要看时机的 ,建议先去小公司试试水,找找感觉,其次建议春节过后看机会, 选熟人内推 或者 找个好的猎头 也是对我们的面试成功率有帮助的,那么就开始今天的面试之旅吧!

面试流程

招聘方式

BAT技术一般分为 校招社招 两个方向。

校招一般去定点的211和985大学去招聘,并且是拼证书和笔试题的,像我这种野鸡大学的人来说校招是我无法达到的境界(说白了也就那样,这个社会干啥事你说不得有个好的干爹),所以校招呢,我今天就不谈了,因为我也没经历过。

社招一般面向全国本科以上2-3年以上计算机相关专业的(可能现在已经要求到4年+了),能力不错的可以放宽到大专和其他专业,但是简历是Hr选的 ,硬性条件不过,谁知道你能力好呢,所以这点这也是扯犊子的。 至于你达到学历要求了,经验要求了,你投了简历,但是往往很多时候简历石沉大海了,因为五年甚至以上的人投简历,这样就类似高考录取一样,你再怎么牛逼也会被hr的一个next按钮筛掉,甚至加入黑名单。因此我们想要加入BAT等的公司最好还是找个认识的人内推一下,这样至少不会被hr给无情的筛掉,也会大大加快面试流程的效率,直接约面试即可。

目前由于BAT收到简历的很多,在简历通过后,会通常进行技术的的审核筛选,简历通过后,还会进行所谓的电话面试。电话面试过了,才会安排我们现场面试,如果异地会进行会议面试(电话视频面试)。

面试一般分为三轮或四轮,甚至更多,第一轮一般为笔试,二轮三轮一般为面试,四轮就是hr或boss面试,笔试不是所有项目组都需要的,而是看你所面试部门的需求,当时我就没有进行笔试。

面试方式

电话面试:

简历通过后技术会进行短暂的技术面试,别小瞧的电话面试,有可能这就决定了你有没有机会去现场面试和最终定级的问题,因为大家知道BAT都是分技术等级的,面试发挥好的话,评级也比较高,当然薪水也就能拿到高,有人会说,那我进去努力升级不就可以了吗, 我说你再怎么牛逼至少半年内的你的工资是涨不了,至于晋升吧还要看你交际能力和个人给项目带来的贡献和收益,还要看你的人格魅力(说白了还需要点拍马屁精神),就如同大海捞鱼一样,大家都在竞争凭什么让你升级呢,所以最好的加薪机会就是面试跳槽。

电话面试一般面试广度比较大,深度一般不会太大,安卓一般面试以下几点:

  1. 安卓View绘制流程

  2. 事件分发机制

  3. JAVA基础思想

  4. 多线程和安全问题

  5. 安卓性能优化和兼容问题

  6. 再问一下常规的组件相关问题

当然不会问的太难,但是也不会太简单,你要知道这次只是面试官对你的初步衡量,除非你太low,一般都会有机会现场面试。

现场笔试:

笔试题目一般和你的简历项目无关,BAT也不会按照你的简历项目特意指定面试题,面试题一般面向大众的,面试基础的,也会有算法在里面,只要是走流程的,关键还是看后面的面试表现,但是你也不能答的太LOW,最好手机充好电带身上,不会的建议搜一下答案,我尽量回忆一下这几个公司的笔试题。

目前BAT很多项目组已无笔试题。

  1. 请描述安卓四大组建之间的关系,并说下 安卓 MVC 的设计模式。

  2. 线程中 sleep()wait() 有何区别,各有什么含义?

  3. abstract和 interface 的区别?

  4. array,arrayList, List  三者有何区别?

  5. hashtable和 hashmap 的区别,并简述 Hashmap 的实现原理。

  6. StringBuilder和 StringsubString方法 的细微差别。

  7. 请写出四种以上你知道的设计模式,并介绍下实现原理。

  8. 安卓子线程是否能更新UI,如果能请说明具体细节。

  9. ANR产生的原因和解决步骤。

  10. JavaGC机制的原理和内存泄露。

  11. 安卓布局优化方案。

  12. 请在100个电话号码找出135的电话号码,注意不能用正则(类似怎么最好的遍历 LogCat 日志 )。( 此类算法一般比较类似,记得京东笔试比较10个数字,拿出最大的数字,也就是冒泡排序。唯品会是让你写一算法,依次从10个数字中拿出3个,不够依此类推

  13. Handler机制,请写出一种更新UI的方法和代码

  14. 请解释安卓为啥要加签名机制。

  15. 你觉得安卓开发最关键的技术在哪里?

笔试题一般分为选择和简答题,选择题我不再整理,因为目网上流行的java面试宝典和安卓面试宝典的经典题目以包含在里面,类似考驾照一样,你提前背会,总之面中几率很高, 如果我们很久没去注意细节了,建议还是去多看一下基础面试题,不要忽视了它

一轮面试

此面试一般为基础面试,主要有项目Leader或高工来面试,大多是java的题目居多,安卓也会涉及到一些基础问题,此环节也比较关键,一般一面不会问我们熟知的项目,大多是一些基础功底的初探,面试官会看你的笔试试卷问答。

记得阿里P6面试题,其中我也加入了其他上市公司的面试题,希望对大家有用。PS:顺序不一定正确。

  1. ANR具体产生的类型有哪些,具体说下其产生的最大超时时间。

  2. 多线程多点下载的过程。

  3. http协议的理解和用法。

  4. 安卓解决线程并发问题。

  5. 你知道的数据结构有哪些,说下具体实现机制。

  6. 十六进制数据怎么和十进制和二进制之间转换?

  7. 谈下对 Java OOP 中多态的理解。

  8. Activty和 Fragmengt 之间怎么通信, FragmengtFragmengt 怎么通信?

  9. 怎么让自己的进程不被第三方应用杀掉,系统杀掉之后怎么能启动起来。

  10. 说下平时开发中比较注意的一些问题。 答 :可以熟说下svn和git的细节,和代码规范问题,和一些安全信息的问题等。

  11. 自定义 view 效率高于xml定义吗?说明理由。

  12. 广播注册一般有几种,各有什么优缺点?

  13. 服务启动一般有几种,服务和 Activty 之间怎么通信,服务和服务之间怎么通信A?

  14. 布局优化主要哪些?具体优化?

  15. 数据库的知识,包括本地数据库优化点。

一面大致为半小时左右,问题一般比较广,但是不会牵扯太多的深层问题,只要考核我java基础和安卓开发APP的必备基础能力,这个环节一般面试官不会问你为啥 离职,为啥选择本公司之类的,但是又公司会让你做自我介绍。

二轮面试

此阶段面试一般为技术经理或者小组Leader面试,主要问的技术点看你的简历写的必备技能面试,所以我们写简历的时候不要瞎写,自己不会的千万别写上去,不然问到了你不会,这样会大大降低对你技术能力的认证,因为面试官会觉得你会的也是不会的,不会的也是你不会的,所以根据自己擅长的方向去写简历。

面试官也会主动问你擅长什么,主要看你之前的工作项目经验做了什么模块,但是主动权还是由我们自己把控,我们可以引开话题,往自己会的知识点去走。

主要还是挖掘你的技术功底。面试题目一般为:

  1. 安卓事件分发机制,请详细说下整个流程。

  2. 安卓 View绘制机制和加载 过程,请详细说下整个流程。

  3. Activty的加载过程,请详细介绍下。( 不是生命周期切记

  4. 安卓采用自动垃圾回收机制,请说下安卓内存管理的原理。

  5. 说下 安卓虚拟机java虚拟机 的原理和不同点。

  6. 多线程中的安全队列一般通过什么实现?线程池原理?(java)

  7. 安卓权限管理,为何在清单中注册权限,安卓APP就可以使用,反之不可以。(操作系统)

  8. socket短线重连怎么实现,心跳机制又是怎样实现,四次握手步骤有哪些?(网络通讯原理)

  9. HTTP中 TCP和UDP 有啥区别,说下 HTTP 请求的 IP报文 结构。(计算机网络)

  10. 你知道的安全加密有哪些?   (如果你说了一个加密,面试官就会接着跟进提问,所以之前你必须要会,不会的话背也要背下来)(安全加密)

  11. 你知道的数据存储结构?堆栈和链表内部机制。(数据结构)

  12. 说下 Linux进程和线程 的区别。进程调度优先级,和cpu调度进程关系。(操作系统)

  13. 请你详细说下你知道的一种设计模式,并解释下java的高内聚和低耦合。

  14. Spring的反射和代理,在安卓中应用场景。(插件和ROM数据框架)

  15. JNI调用过程中 混淆问题。

  16. 看过安卓源码吗,请说出一个你看过的API或者组建内部原理。

  17. Android 5.0、 6.0 以及7.0预测新特性。

  18. hybrid混合开发,响应式编程等。

  19. 为啥离职呢  对待加班看法?

  20. 你擅长什么,做了哪些东西?

好了 ,总结一些,本阶段只要问深层的问题,前面三道题尽量细节说到代码方法,光理论没用的,主要看你平时有没有积累,有无真实的项目经验,后面几道题也主要看你是否从科班出身,主要涉及 计算机网络,数据结构,线性代数,操作系统,安全密码学,软件建模,设计模式 等,如果大学你学过这些课程,那么此阶段的一些非安卓常用开发的问题,估计你又能答上来,鉴于很多有培训学校出来的,那么请先去准备下这些理论知识,因为关系到你薪水问题,定级问题,因为不一样的等级进去一般干的活一样,何必为了这些常规的问题而比别人少拿待遇呢,一般BAT面试都会做记录,后面一轮的面试官会看上一个面试官的记录和评价。

此阶段关键度很大,直接影响你技术评级问题,面试官已经了解了你的技术家底,比如已经定了你T4或P6, 后面你表现再怎么多么好,估计已经无法改变了,除非Hr能给你多加点工资而已。

三轮面试

此阶段主要是部门经理级别的面试,有技术问题也有非技术问题,主要是看面试官是否技术出身,据我经验和百度这边的习惯,大都技术出身,但是他们知道的技术已经老旧了,所以问的问题大多是一面和笔试的问题,即使问到二面中的问题 ,也不会细到某个方法的程度,此面试主要看你的沟通能力和管理协调能力,也会在看你的稳定程度,阿里一般会换其他部门的经理来面,为了方便交叉考核,此时的气氛不会向一面和二面那样严肃,稍微缓和了,如果不出意外你已经有很大录取的可能。

  1. 说下项目中遇到的棘手问题,包括技术,交际和沟通。

  2. 说下你进几年的规划。

  3. 给你一个项目,你怎么看待他的市场和技术的关系?

  4. 你一般喜欢从什么渠道获取技术信息,和提高自己的能力?

  5. 你以往的项目中,以你现在的眼光去评价项目的利弊。

  6. 对加班怎么看?(不要太浮夸,现实一点哦)

  7. 说下 OPPAOP 的思想。

  8. 你知道的一些开源框架和原理。

  9. 不同语言是否可以互相调用?

  10. 安卓适配和性能调优问题。

  11. 对于非立项(KPI)项目,怎么推进?

  12. 你还要什么了解和要问的吗?

总结:此阶段一般也非技术问题为主,主要看你的思想和个人态度方向相关,而最后一个问题也决定了领导是否看你有无领导能力,不要第一句话就问公司加班多吗?

公司福利怎样,公司活动等,互联网哪公司不加班呐,尤其大公司加班更严重。 你可以问下项目团队多少人,主要以什么方向为主,一年内的目标怎样,团队气氛怎样,等内容着手。

今年可能你多学习下响应式编程( Rxjava, React Native 等),面向协议编程,以及7.0最新API特性,一些流行的架构模式( mvvm, mvp 等),以及 Hot Fix, Hybrid 开发模式等,Android系统启动流程等,如果你的开发工具还在用 Eclipse,建议切到 Android Studio,不要败在 Gradle 语法上!

HR面试

好了,到此你离BAT的大门已经很近了,只要不出叉子,不漫天要价,那么你已经安全了,此阶段人事会问你为何离职,大学哪里上的,以前公司一些细节问题。

不要大含糊哦,不要和大公司的精明的HR搞心机(尤其阿里的HR,分分钟把你灭掉),求职者总是站在劣势一方,我主要整理下面的问题,这阶段和普通公司没多大区别。

  1. 为何离职?

  2. 对加班怎么看?

  3. 对之前面试感觉怎样?

  4. 自我评价下你的优缺点。

  5. 接下来几年你是怎么规划的?

  6. 你做的疯狂的事是什么?

  7. 对我公司文化怎么看待?

总之Hr会和你瞎扯,但是不要掉以轻心哦,当初唯品会我就这在这里挂掉的。 不要乱说hr不问的东西,不要暴露自己比较极端的一面 ,这个阶段hr会根据你表现和技术反馈的技术等级,和以往员工的待遇加上你的项目经历做出一个初步的定级,提前会问题你期望的工资,当然啊你可以提前了解下BAT的薪资范围,再根据自己的表现提出合理的范围,Hr一般会砍价,就看你自己坚持度了,心理战很重要,等你们商量好薪水和合同期限后,今天的面试会通常结束,也不会当天通知你offer。

也有可能复试的可能,一般是离面试之后一周进行,三面的面试一般是单人面试,而复试一般是两人以上面试,中主要以技术为主,之后技术过后了,hr也不会面试。

阿里一面二面三面 估计需要一个多月,甚至在你终面以后还会进行交叉面试,或者HRG来面试(hr老大),我有碰到三个月后才发offer的同学。

如果你没进行复试,一般两周内发offer,如果安排你复试,大概延迟一周后收到offer。

面试细节总结

  1. 如果电话面试结束后,三天内没通知你面试,那么你百分之九十挂了。

  2. 一面结束或者终止面试,面试官让你回去的,你也挂了。

  3. 如果二面结束了,让你回去的,或者三面没有问很多问题的,你百分之70挂了。

  4. 三面结束或者三面中面试官没问多少东西的,你50%挂了。

  5. 如果没有安排Hr面试,你离录取只有40%的可能。

  6. 如果HR面了没谈到工资环节,敷衍了事,你有40%挂的可能。

  7. 薪水谈完了,通知你复试的,你有20%挂的可能。你做好备胎和拍马屁的准备,尤其面阿里的时候。

    "可以高呼,马云我爱你了 我爱阿里 你收我去扫厕所吧" 你就会被录了,哈哈当然是逗你玩的。

  8. 如果工资谈完了,说三天内给你答复的那么你有15%可能。

  9. 如果工资谈完了,说一周内没任何消息的,多半你挂了,另谋出路吧。

也有人说面试看脸,估计是的,这跟相亲一样一样的,你情我愿。

总之面试是一种技术活,又是体力活,并且还是一场心理战。虽然我上面提供的题目是去两年前的面试题,但是有80%的接近腾讯2.3和阿里的p6程师的面试题。对一些小的公司估计你会了笔试题目和一面的技术点,估计你已经被offer了,稍微的二线公司,只要会了一面和二面的部分问题,只要说出理论,不要到细节,那么你已经有了被录取的可能,总之能力和薪水成正比的。但是前提你要准备,至少两个月是合理的。

最后切记,大公司不要学历造假,不然你无法入职的,现在很多公司都在offer前进行背调,这样会影响你以后去该公司的就入职机会,小公司当然你可以玩点技巧,但最重要的还是你必须自我努力,自己有能力才是关键,是金子去哪里都会发光。

如果你没被录上,也不要来喷我,如果你被录上了,那么恭喜你。不管怎样都是命。

如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击 “投稿” 菜单查看。

欢迎 长按下图 -> 识别图中二维码 或者 扫一扫 关注我的公众号:

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章