本文咱们经过一篇真实的一线面经,带你们去体验一下 BAT 等互联网公司的面试现场氛围!面试者是笔者之前的下属,多年的好朋友。这是他去年早些时候出去面试,拿到 BAT 等多家一线互联网公司技术专家 Offer 的面试经历。java
本文咱们经过一篇真实的一线面经,带你们去体验一下 BAT 等互联网公司的面试现场氛围!面试
面试者是笔者之前的下属,多年的好朋友。这是他去年早些时候出去面试,拿到 BAT 等多家一线互联网公司技术专家 Offer 的面试经历。算法
先介绍一下这位朋友的我的经历:小程序
2.因为公司业务发展较为平缓,因此职业上升机会较少。
3.朋友对其负责的系统架构和技术已经很是熟悉,薪资上也较难有大幅度的增加,至于晋升更高的级别,短时间内也不容易
所以,在仔细思考一番以后,决定出来看看机会,可否在带团队的规模、技术以及薪资上实现一个突破。缓存
一 一面
一面是一个猎头给朋友推的一个职位,BAT 中某一个大厂的某个团队,具体就不说是哪一个部门了。
一面就直接过去当面聊了一次,大概从下午 2 点聊到了下午 4 点多,时间很长,炮火至关猛烈。
一面面试官也是专家职级,上来就是先聊项目,针对项目中的各类细节仔细问,就项目展开,并且极其注重细节。
一样是经过互联网公司最喜欢的连环炮形式发问。好比在面试过程当中,聊到了缓存,连环炮以下。接着,面试官继续深扣了不少细节。
面试官:性能优化
1.Android开发中,可能会形成致使内存泄漏的问题及使用Handler形成内存泄漏的分析和解决?
2.链接复用 :节省链接创建时间,如开启 keep-alive。
3.Android客户端和服务端如何使用Token和Session,使用过程当中出现的问题以及解决方案?
4.线程池。线程池的使用?如何合理配置线程池的大小
5.Java和JS的交互,以及遇到的问题如何解决
6.ContentProvider了解多少?
7.Android中提供哪些数据持久存储的方法?
8.Java中的I/O流读写怎么作?
9.SharePreferences适用情形?使用中须要注意什么?
10.了解SQLite中的事务处理吗?是如何作的?
11.使用SQLite时会有哪些优化操做?
等等等等,朋友:纸笔翻飞,大脑高度运转,一个接一个的回答架构
如上所述,全部问题,所有结合项目,落地到生产中,同时注重聊技术的不少细节,包括技术的一些原理
简单总结:并发
整体来讲,一面还算顺利,毕竟都是结合项目来问的,各类细节平时朋友进行架构设计时,都会仔细考虑过。ide
可是这里给你们提醒一句,通常某个同窗出去面试,回来以后其余人问他面试经验,通常都是问:都有啥面试题?面试官是怎么问的?高并发
说实话,你们看了上面那些问题,可能会以为说,哦,其实我也能够答出来,没什么特别的。
但其实并非这样,若是只是拿高级岗位的 Offer,你的技术会占很大比重。
可是若是要拿专家岗位的 Offer,你到底有没有线上真实的高负载的系统架构经验,很是重要。
一样的问题,普通人会回答的很普通,可是经历过真实几十亿流量请求的人必定会说出大量经验总结、教训以及踩坑。
并且对整套复杂的大型系统究竟是如何抗住高并发的,会了然于胸,熟悉全部的细节。
因此针对一面,通常就是结合项目,深挖细扣,看你到底有多少水平,作过多复杂的系统。
这块说实话,作过就是作过,没作过就是没作过,是不可能做假的。不少同窗可能本身平时也看过不少书和博客,可是看书和博客只是基础,若是没有真实的线上生产环境的历练,是确定不够的。毕竟实践出真知!
二 二面
一面就顺利经过了,紧接着安排了第二轮面试。二面面试官应该是这个团队的 Leader,P8 级别的,若是进去,应该就是朋友将来的顶头上司。
据朋友讲,二面面试官态度很是好,很和善,看来一面面试官反馈以后,这个 Team 对朋友仍是比较重视的。
技术深度
二面内容就从广度变成深度了,面试官技术实力很深厚,应该是有十几年经验。对相关技术深挖了不少东西。
好比,
4.ANR 如何产生?
9.简述消息机制相关
10.进程间通讯方式?
11.Binder相关?
12.okhttp源码?
13.RxJava简介及其源码解读?
面试官声音略显慵懒疲惫……我怀疑他是否是面了太多人已经麻木了
系统设计、工程素养、带团队
同时二面很是重视考察系统设计能力、工程素养、带团队的能力。好比面试官就这个部门负责的一块业务
须要阐述以往本身带团队项目的总体设计思路,从哪点出发考虑,存在哪些挑战以及最后如何完成的
带团队,让朋友说一下,如何招人、面试标准、如何搭建团队的人才梯度,等等
三 三面:
三道算法题,要求在一个小时以内作完。
1.翻转一个单项链表 1->2->3->4->5->null =====> 5->4->3->2->1->null
2.string to integer
3.合并多个单有序链表(假设都是递增的)
另外,考察了各类软素质。好比说责任心、抗压能力、自我驱动,让朋友举例说明本身过去的一些事情,来证实软素质。
同时还会聊聊职业价值观,是否愿意加班,等等吧。最后也聊了聊朋友的职场指望,包括这个团队是干什么的,将来的发展方向之类的。
朋友以为最重要的仍是前面两面,其实这一面,只要人品端正,平时干活儿认真负责,通常的都没什么太大的问题。
绝对不要裸面!绝对不要裸面!绝对不要裸面!重要的事情说三遍!裸面必败,并且若是一问三不知,那么给人的印象就是不好的。
若是要冲着心仪的大公司去,最起码精心准备 1 个月以上,你们务必记住这一点,这也是朋友此次的一个重要心得,准备充分了,才能有备无患。
四 四面:
总监面:问了一些java 同步相关的。
HR:聊了一些价值观的东西,好比以前以为作过最难的事情是啥,怎么克服的,当时啥心态。
还有就是为啥要离职,没有发展空间?那当时没考虑过公司内部 transfer(转岗)吗?你的绩效平时怎么样?你以为你跟同事相处的怎么样?
终面内容,总结起来,其实仍是一句话,你人品正就行了,通常都问题不大,老老实实的踏实回答。
总结
我本身面试了一些公司,拿了一些offer,可是仍是想去BAT,因此那些offer最终都拒了
结合个人面试经历与同事们的面试历程,总结几点:
1.有些规模小的公司很注重你是否是全能的,巴不得你什么都会,又给不起钱,福利待遇很很差,各类避税措施。
2.马爸爸的公司很注重项目经验是否匹配,往死了问项目,项目简单的话是很吃亏的,鹅厂但愿你是聪明的机灵的,度娘但愿你基础好,热爱技术;
3.有些猎头朋友是很是专业的,不只给你安排面试流程,还给你提供不少有价值的信息,另外猎头通常推荐的都是高级职位;
4.面试真的很看眼缘,不少时候你和面试官一见面,若是你以为面试官和你气场不合,那极可能就没戏了
5.我认为一面必须表现的很好,由于二面的面试官会参考一面的评价,一旦一面评价通常,第一印象就很差了
6.若是你出身很好,学校承认度高,那你会有优点,请联想“好学生犯错与坏学生犯错时老师的表现“
最后,可能不少人对本身到底须要学习进阶那个方面不是很清晰,我找了一份图但愿能够用得上
想学习更多Android知识,或者获取以上相关资料请加入Android技术开发交流2群:862625886。本群可免费获取Gradle、RxJava、小程序、Hybrid、移动架构、NDK、React Native、性能优化等技术教程!