一份深入到骨子里的面试总结

9,332 阅读22分钟

1618836331756_EA684AE2-D06F-4D58-8986-427D67F29960.png

各位同学,这是一篇面试总结文,是一篇从我本身出发,把面试过程中遇到的问题,以及一些小小的建议阐述出来,希望对正在面试或者将要面试的你有一些小帮助。

背景描述

首先描述下背景,楼主是一个4年多经验的Android开发工程师,先后服务于3家互联网公司,均从事于Android开发的工作。离职前我在最后这家公司已经工作了将近3年的时间。

那为什么要离职呢?

其实这个问题一直都不是一个单一性的问题,它一定是一个多元化多维度的问题。对于我来说,主要体现在以下几个方面。

    1. 当前所使用的技术对自身成大不是很大了。
    1. 当前所负责的项目发展空间到了瓶颈。
    1. 认为自己的职场履历需要一段大厂经历。
    1. 这一点本来不太想说,但是确实也是自己比较在意的一点,那就是组织架构频繁变动,导致业务线频繁变更,这一点对业务很不利,需要一直磨合。

面试目标

其实当时的面试目标也不是单一的,比如我的面试目标按以下排序

  • 阿里巴巴 > 头条 > 美团 > 小米
面试时间
  • 2021-03-01 ~ 2021-03-24 总共24天的时间,此处贴一张图来证明

image.png

准备周期
  • 2020-12-01 ~ 2021-02-28 总共2个月多一点的时间
面试思路

面试过程即是一个 自我考察 的过程,同是也是一个 非常讲究方式方法 的过程,接下来通过这两个方面来展开阐述。

自我考察 技术实力是面试的大前提,你需要非常清晰的了解自己,了解自己所要面试岗位,这是决定面试是否成功的先决条件。

比如我工作时间4年多,我要面试的岗位是高级Android工程师,那我这个自身素质是否能满足面试岗位所要求的条件?

其实这一点在我刚刚面试的时候也是拿不准的,因为在公司已经3年,这段时间对外界的发展其实是不了解的,所以我做了以下几件事。

    1. 把自己负责的项目业务进行整体总结。
    1. 把项目中用到的所有技术进行整体总结。
    1. 复习常用 框架/系统 源码,比如Glide,Okhttp,Reteofit,Activity启动流程,Hander,HashMap,锁等等常用的源码原理。
    1. 查看BOSS,拉勾对应岗位所要求的技能。

方式方法 面试环节中即便你技术很好,项目经验很丰富,你也不乏有知识盲区,也有未能顾及的技术点,当这些点集中出现的时候你面试的成功率也会大大降低。所以针对面试我总结了以下几个流程。

  • 1.面试分为3个阶段(初期,中期,高offer期)初期 主要通过(BOSS,拉勾投递即可),初期主要投递小公司,这部分公司有两个目的。 第一是相互交流技术点,不断完善自己的技术覆盖度。 第二是了解当前市场的需求点。

    中期 主要通过猎头去投递,这个阶段主要投递中场,这类公司要求技术深度会比初期公司要深一些,算法的考察会加重,同时面试官的技术水平也会偏高一些,甚至有的中场面试难度会达到大场的水平,这个中期尽可能的持续长一些,非常有利于后续的面试经验总结。

高offer期 这个阶段主要投递你的目标企业,切记面试优先级从最不意向的公司开始投递。投递的方式也是通过猎头,这样可以加快面试流程。以上的初中期更多的是完善你的技术覆盖度,以及你的面试感。为了是让你以最好的姿态去挑战你最想去的企业,这样一路走来你面试的成功率会大大提高。

  • 2. 沟通能力 面试除了考察你的技术实力以外,还有一点是比较重要的,那就是沟通能力,你面试的岗位越高,对你沟通能力的要求也就越高。

沟通是特别重要的一个点,这决定你是否能非常清晰的把你所知所想完整的阐述出来。

我们面试的过程就是自我营销的一个过程,所以当你觉得自己沟通能力不是很强的时候,那么你就需要定向的去总结几个点。

比如一个出色的自我介绍项目中遇到的最难解决的一个问题如果让你设计一个架构你应该怎么设计简单的介绍一下你负责的业务 等..

    1. 面试频率 面试周期我建议15-30天。

初期 小公司,我建议一天面试3个,如果有精力的话可以4个,这里需要注意一点,小公司有很多不靠谱的,比如还用Eclipse的,比如上来还没问技术就先打击你的,这种可以找机会离开,不要浪费时间。面试时长建议控制在60分钟以内,不要太抠细节。有条件的可以打开录音器,方便结束后晚上复盘。你复盘3-4天的时候你会发现面试内容开始大批量重复了。

中期 这个时期我建议一天最多2个公司,因为中场一般都是3轮或者以上的面试,有一部分是一路走完的。所以你需要给二面三面留出时间以方便充分沟通。千万不要一面完就打算走,因为一二三面所考察的完全不同,一面主要是基础,二面主要是框架/源码/简历里的技术,三面一般会聊项目,方案或者思路。

高offer期 这个环节需要你按实际情况伺机而动,因为有的大厂是一条龙面完,有的是每一次面试都单独约,但是大厂一般的流程都比较慢,都在1周以上才能完成整场面试。一般都在4-6面之间。但是建议一天最多安排2场面试,这个面试时长不确定性因素会比较多。如果面试官不是很讨厌你,一般都会在60分钟以上。

每一个公司的具体流程

我先后面试了大概20家公司,最后拿到了8个offer左右,最后选择了自己最想去的公司 阿里巴巴,面试内容也进行了简单总结,分为两个部分。

  • 高频问题区

  • 公司面试体验分享


高频问题
    1. HashMap 1.7,1.8的差异,1.8中什么情况下转换为红黑树,构造函数中参数代表的意思
    1. 用什么Map可以保证线程安全,为什么?ConcurrentHashMap为什么能保证线程安全?1.7和1.8原理有什么差异。
    1. 有多少种单例模式,枚举算不算单例,单例模式中不用volatile会导致什么问题?volatile特性是什么?为什么android中不推荐使用枚举。
    1. Glide中怎么实现图片的加载进度条,Glide的缓存是怎么设计的?为什么要用弱引用。
    1. implementation 和 api的区别是什么?
    1. 事件分发的流程,以及怎么解决滑动冲突?
    1. 事件是怎么产生的?mFirstTarget 为什么是一个链表?
    1. 自定义View需要经历哪几个过程?
    1. A 跳转到 B页面,两个页面的生命周期怎么走?什么情况下A的stop()不会执行。
    1. Activity 的4中启动模式分别是什么,有什么不同。
    1. okhttp中有几个队列?分别干什么用的?怎么取消一个请求?
    1. Rxjava中map和flatMap有什么区别,都用过什么操作符。
    1. 如果Rxjava组合发送任务,中间任务出现异常,其他任务该怎么处理。
    1. 哪个场景会发生内存泄露,内存泄露怎么检测,怎么解决。以及leak cannery内部原理是什么?为什么新版本的不需要在Application中注册了。
    1. 手机适配问题怎么处理,都有什么方案。
    1. Android9 10 11 都更新了什么新特性,新版本中无法获取IMEI怎么处理。
    1. 数据序列话有那俩种方式,Serialization和Parcelable区别,如果持久化需要用哪一个
    1. 组件化怎么分层,各个组件之间怎么通信。
    1. 怎防止程序崩溃,如果已经到了Thread.UncaughtExceptionHandler是否可以让程序继续运行。
    1. Handler Looper mesaageQueue message 之间的关系。
    1. 子线程一定不能更新ui么?什么时候可以?什么时候不可以。检测逻辑是在什么阶段初始化的。
    1. ANR发生的原理是什么, 怎么排查。
    1. 程序怎么保活。
    1. 说下路由ARoute的实现原理,怎么处理页面过多内存占用过大问题。
    1. 线程池都什么时候用,怎么创建,构造函数中的参数分别代表什么意思?
    1. 进程优先级
    1. 反向输出字符串
    1. 两个有序链表合并
    1. 字符串移除多余空格,且技术单词首字符大写。
    1. 二叉树中和为某一值的路径
    1. 本地广播和正常广播的区别
    1. 二进制低位转高位
    1. 字符串数组判重
    1. 二叉树 判断是否为搜索二叉树
    1. Activity启动流程,Launcher启动流程

公司面试体验分享

天眼查(大小周,小周1.2倍)

面试体验 ★★★★

  • 这公司面试体验很好,一共三轮面试,技术面二面,HR一面。

  • 一面的面试官技术水平非常可以,跟大厂是同一级别,考察的细节很到位,都是比较注意的点,并非故意刁难,沟通过程也是非常愉快。

  • 二面是leader面,相对注重整体架构考察,沟通也相对顺利。

  • HR面其实体验不是很好,介绍公司政策不是很专业,总是靠挖掘,有点像挤牙膏沟通,薪资说实话一般般。中等偏下。

  • 总体下来体验比较好,因为这个是第一家面试的公司,属于热身,学到了很多,尤其感谢1面面试官。

北京流体网络科技有限公司

面试体验 ★★★

  • 面试的是1306闪电盒子部门,一共三面。二轮技术,一轮HR。

  • 一面:一面应该是他们的同事面的,年龄偏大,技术方面见仁见智,有点偏离面试本心,问的问题我反问回去也不能解答。

  • 举个例子:比如我做过电量优化,测试方式通过真机测试。

    他问:怎么保证多台手机电池性能相同?

    我答:尽量用同一型号,同一批次,电池循环次数相近的手机。

    他问:这也不能保证电池性能相近。(这个问题已经脱离面试本心了,继续争论已无意义)

    我反问:你们怎么解决。

    他说:他们不需要电量优化。

  • 这个电量优化其实是一个相对指标,对比对象是优化前的耗电指数,取样频率越多数据偏差越小。更精确的做法是拆卸电池,连接电流表去测试。

  • 二面:二面是CTO面试,面试问题很多都是从项目出发,架构设计,发版节奏,以及集成链路等多方面沟通了, 沟通过程更贴紧面试场景。

  • 三面:HR面,这个过程是我比较难受的,只能说这个HR专业性太强了,她的各种计算会给你算蒙的,有很多个算法去计算你的收入。

    反正按她的算法来说,他们给的薪资低,而你的综合收入反而高,后来我才发现他把公积金都算成你的收入了。FUC****,最后给了Offer但是直接拒绝了。

酷划在线(工作时间早10-晚10)

面试体验 ★

  • 这个公司三轮面试,二轮技术面,一轮HR面,这个公司必须得吐槽下,太坑了。

  • 首先招聘给你打电话的时候沟通的很好,说什么公司营业额10亿,承接头条,腾讯等一线流量对接,忽悠你接受他们的面试。

  • 一面:视频面,面试了一个小时左右,视频面很中规中矩,沟通都很好,没有什么问题,面试官也比较满意。

    但是面试不能一条龙面完比较浪费时间,所以提出此诉求,面试官也很好,说HR联系我沟通。

    HR沟通:电话给我说让我去一次现场,一次性把面试流程走完。

    我反问:是不是先让二面面试官仔细看下简历,避免浪费双方时间。

    HR反馈:二面面试官非常感兴趣,希望尽快去现场,所以我同意了。并且去之前特意整理了下发型。

  • 二面:骑上我心爱的小摩托,一路都没堵车,结果到早了。这个地址居然是一个商场,他们在商场的顶层,等了一会面试官,终于2点了,二面和一个妹子一起来的。

    上来自我介绍,开始面试,面试官问了我几个基础问题,我回答的还算可以,问了期望薪资,然后说出去商量一下,然后招聘小能手告诉我说今天先回去,后续等3面。

    卧槽..... 我草草.....,我请了半天假,整理了发型,你来了问15分钟让我走????主要是没有异常表现啊,没抬杠没吵架的。这是闹哪样???

    后来又给我打电话,问我有没有入职其他公司,还是否考虑机会,我考虑.......

    各位老铁这个公司一定避开啊,即便招聘小能手很能忽悠,咱可不能再信了。。。

GamesVessel

面试体验 ★★

  • 这是一家做游戏的小公司,一共三轮面试,一轮笔试,一轮技术,最后HR,这家公司体验不是很好。

  • 笔试:笔试比较简单,笔试的必要性不是很大,全是生命周期相关,并且笔试内容面试官都没有参考。

  • 一面:因为是游戏公司,因此在面试之前我就打电话说明了自己的实际情况,并且把项目经验简单的进 行了简单阐述,最终以没有游戏经验打压。

  • HR面:HR也因为没有游戏经验打压工资,虽然给了Offer,但是这种行为真是没必要,不紧浪费公司时间,也浪费自己时间。

58同城

面试体验 ★★★★

面试的是58同城的58学车部门,一共四轮面试,3轮技术面,一轮HR面 他们应该是交叉面试,因此技术面相对比较全面,体验很好,交流很顺利,尤其是三面,思维方式,以及考察问题都很专业。 HR面也很专业,介绍公司情况,部门前景,以及政策制度都很透彻,给了Offer,薪资相对也偏低。

以下几个是58特殊考察的几个题目: 1.thread wait sleep join 有什么区别,主要考察wait sleep相关区别。 2.mvvp 和mvp的区别,细节里怎么实现的双向绑定。 3.打渠道包 怎么写入渠道数据(app签名在哪)这里涉及V1,V2,V3签名差异。 4.rgb565和rgb888有什么区别,主要考察数据存储位。 5.自定义view,实现一个自定义View,且支持按下放大,松开缩小动画。

邦邦汽服

面试体验 ★★

  • 这个不知道有几轮面试,反正一面是视频面

  • 面试官水平比较差,问的东西太多陈旧,考察点也远不够,也许是面向的岗位定位不是很高,技术类没有什么难点,应该是通关了,但是问了意向薪资后,没有了后续。

  • 建议应聘高级工程师的可以避开这个公司了。

博汇科技

面试体验 ★★★

  • 这个没啥说的,做军工项目的,我进去一看还是十几寸的显示器,打开的全是Eclipse,面试官问的东西也跟想象的相当,面试完还给了Offer,当时婉拒了,避免浪费对方时间。

Kika(新美互通科技有限公司)

面试体验 ★★★★★

  • 这家公司是一个很棒的公司,无论面试体验,以及公司氛围,还有发展趋势都是一家很好的公司。

  • 一共五轮面试,一面二面视频面,三面CTO面,四面项目负责人,五面CEO+HR主管

  • 一面:相对基础,问了post get区别,三次握手,jvm的架构,各种viewgroup分别测量几次,

  • 二面:相对偏Android面,主要考察Android框架源码相关,也很不错。

  • 三面:CTO主要问项目相关,考察了下算法相关的内容。

  • 四面:招聘助手+项目负责人一起面,主要问了一些项目周期,发版节奏,团队管理,问题处理等多维度的问题。

  • 五面:CEO+HR主管,主要问了创业过程有啥收获,以后职业发展规划相关。

  • 这家公司真的大赞,主营业务是做多语言输入法的,用户量6亿,后续可能会在多方面有涉猎,面试环节也大赞,除一面二面外,后续三面现场一把梭,领导没有架子。

  • 最后面试完成还给了面试纪念品,这才是真正招人的态度。找机会的同学可以着重看下这家公司。

  • 第二天发了Offer,钱也到位,奈何综合原因没有去,很是抱歉。

SHAREit(茄子快传)

面试体验★★★★★

  • 这家公司是一家高速发展的公司,面试体验,工作氛围俱佳。

  • 一共三轮面试,两轮技术面,一轮HR面

  • 一面:问了很多基础,以及细节,问题内容都在顶部大类中,唯一差异让现场写生产消费者模型,面试官比较满意,直接进入二面。

  • 二面:技术Leader,问了Glide存储方式,每一个Activity缓存图片是否分开缓存,算法相关考察了按层遍历二叉树,并输出每层的最后一个节点,并且进行了4 -5 种变化,每种变化实现方式。

  • 在遇到问题的时候,面试官会引导你去思考,去解决,最终会给解决方案。这个行为大赞。

  • 最后给了Offer,但是因为阿里也给了Offer,所以放弃了。

美团优选(大小周,且每天晚上9点后下班)

面试体验 ★★★★★

  • 一共三轮面试,全是视频面。

  • 一面:基础面试,面试官比较憨厚,基础部分不在赘述,特殊性考察有:两个有序链表合并。字符串移除多余空格,且技术单词首字符大写。

  • 二面:主要考察项目,解决方案,沟通都很丝滑。

  • HR:没想到这个流程比较慢,可能他们候选人比较多,最后给了Offer定级L7,最后也是因为选择了阿里放弃了。

字节跳动(大小周)

面试体验 ★★★★★

  • 字节跳动,我是连被干翻2次,面试官确实是牛逼。

  • 我第一次投的是抖音部门,过了一面,二面挂,面试评语是 基础相对扎实,但是项目架构略有欠缺,因此挂在二面。

  • 正在失望之余,字节的懂车帝又打来电话,说简历又被捞起来了,又去面了懂车帝,又挂了。

  • 懂车帝一面确实比较牛逼,比如我记录了部分问题:

  1. 如果想统一项目的线程池,包括三方引入包的线程池,怎么处理。(最后解答可通过字节码修改实现)
  2. 如果想监控某一线程的耗时超过300毫秒的任务需要怎么操作。(可反射获取Handler抓取每个Message的执行耗时)
  3. 如果项目出现未捕获的异常,怎么预操作可以防止Crash。
  4. 如果设计一个App的启动框架,需要考虑什么问题,怎么处理同步异步的加载任务调度。
  5. glide 加载原理,怎么感知加载和暂停。
  6. okhttp加载原理,怎么控制同步和异步任务。
  7. 说一个项目难点,具体怎么解决的。
  8. 都用过什么设计模式。
  9. mvp mvvm都在什么场景下使用。
  10. 一个int数组怎么判断是搜索二叉树的后续遍历。

小米

面试体验 ★★★

  • 小米面试体验不是很好,一开始HR沟通是面试小米的IOT部门,从投简历到面试大概经历了一个星期。

  • 一面:体验很好,面试官很谦和,问题也很有质量,大概持续了1小时20分钟,面试官对我也比较满意。

  • 二面:二面跟一面差不多又过了一个多星期,这个效率真是有点差劲,关键是二面是小米电视部门来面的,跟之前的IOT不相关了。

  • 三面:还是小米电视的人,聊了一堆项目相关的内容。

  • 其实我是一个老米粉,从米1一直到米10,一路走来对小米这家公司是有情怀的,但是有点搞不懂为啥面试链路是这样的。希望多多改进啊,面试体检有点差。

作业帮(每天晚上9点以后下班)

面试体验 ★★★

  • 这个公司是同事推荐的,因此面试流程相对迅速,第一天内推,第二天面试,面试分为三轮。

  • 一面:同事面,问的范围比较广,面试官也比较善于沟通,很愉快。

  • 二面:leader面,这个leader就是我同事的前同事,之前360搞浏览器内核的,不知道为啥搞Android了,性格相对比较闷,沟通反馈很差,沟通效率比较低。

    为了缓解沟通尴尬,我尽量将问题回答映射到生活场景,还被他怼了,说:技术不用举例子。。。。卧槽。。。

一点咨询(有不加班的文化)

面试体验 ★★★★★

  • 这公司也是同事内推,百度旗下的公司,一共四面,三轮技术,一轮HR

  • 这个公司面试体验非常棒,效率及其高,所有面试均视频完成,一天内完成了三轮技术面。

  • 比较有代表性的是三面问了一个问题,如果给你足够的人,足够的钱,足够的资源,让你去学油画,你应该怎么做?

百度

面试体验 ★★★

  • 这个公司是听说也是内推,但是我不知道是谁推的,一共四面

  • 一面:视频面,面试官非常nice,比较谦和。

  • 二面:提前约定的是2点开始,结果邮件就发成了3点,后来沟通改回了2点,结果我到了以后让我等了半个多小时,这也就算了。面试官下来的时候应该是没睡醒,所以面试带有情绪。

    回答完问题以后面试官习惯性问你 你觉得你说的对么?有不太确定的我一般喜欢反问下 有没有更好的解决方案,这个面试官真是一个方案都没给,所以这没啥可聊的。

  • 百度这个面试体验真的比较差,也许是我运气不好遇到了比较差的人,但是这对于一个面试者产生的印象都会挂在百度公司上,诶。。。真难。。

阿里巴巴

面试体验 ★★★★★

  • 阿里巴巴,我面试的是阿里妈妈部门,是阿里比较赚钱的部门,一共5轮面试。

  • 一面:纯算法,大概写了一个半小时,3道算法题,每一行代码都评审解读,面试官就是我现在的同事,上两天我已经嘲讽他了,并且劝他以后要懂得善良。

  • 二面:Android相关,面试官涉猎比较广,聊了很多,最后聊到面试官说,咱今天差不多了已经一个半小时了,等你入职了咱继续聊。

  • 三面:leader面,这个leader不是吹,太特么能砍了, 从生活到工作,到技术,到发展,整体扯了一遍,我俩又干了一个半小时。

  • 四面:P9大Boss面,这个主要聊了一些发展规划相关的,聊了半小时左右。

  • 五面:HR面,大概聊了1小时左右,主要问了一些之前公司的为人处事方式,还有一些基本信息,介绍了阿里的政策制度,福利待遇等等。

  • 阿里的Leader真的是非常有诚意,由于阿里Offer审批流程比较长,所以中途给我打了7-8个电话,每次都聊很多,让我放心,因此最后我决定退掉其他所有Offer,加入阿里巴巴大家庭。

各位同学,一定记得面试是一个双向选择的过程,面试者和招聘方一定是站在平等的沟通条件下进行面试沟通的,在此过程中双方都不要带有情绪或者有色眼镜去看待对方。

都带着诚意去沟通才是最和谐最节约时间的面试过程,最后希望正在面试的你能顺利找到心意的工作。