全凭这份核心笔记,Android研发历经20天面试终提Offer喜进阿里!

Posted River_ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全凭这份核心笔记,Android研发历经20天面试终提Offer喜进阿里!相关的知识,希望对你有一定的参考价值。

作者:酱爆大头菜

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

背景描述

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

那为什么要离职呢?

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

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

面试目标

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

阿里巴巴 > 头条 > 美团 > 小米

面试时间

2021-03-01 ~ 2021-03-24 总共24天的时间,此处贴一张图来证明:

准备周期

2020-12-01 ~ 2021-02-28 总共2个月多一点的时间。

面试思路

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

自我考察

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

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

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

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

方式方法

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

1.面试分为3个阶段(初期,中期,高offer期)。

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

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

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

2.沟通能力

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

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

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

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

3.面试频率

面试周期我建议15-30天。

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

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

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

每一个公司的具体流程

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

  1. 高频问题区
  2. 公司面试体验分享

高频问题

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

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

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

最后

在这里就还分享一份由大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题,高级进阶架构文档

传送门:一键直达GitHub

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

真心希望可以帮助到大家,Android路漫漫,共勉!

以上是关于全凭这份核心笔记,Android研发历经20天面试终提Offer喜进阿里!的主要内容,如果未能解决你的问题,请参考以下文章

全凭阿里大牛总结的Java面试笔记,首战成功拿蚂蚁offer

苦逼的面经之路,历经20天最终才拿到阿里的Offer(面试过程分享)

肝了30天,终于整出这份Java面试九大核心专题,收割4个大厂offer

啃完这份Android Binder原理一系列笔记,完虐大厂面试官

历经 Android研发三面,成功 “跳”进腾讯,获60w Offer!

宅家30天,吃透这份测试工程师面试700道题解析,成功定级阿里P7