5年经验Androider面试之旅:历经万难终进阿里

Posted River_ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5年经验Androider面试之旅:历经万难终进阿里相关的知识,希望对你有一定的参考价值。

作者:Black

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

背景描述

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

那为什么要离职呢?

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

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

面试目标

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

  • 头条 > 腾讯 > 阿里 > 美团 > 小米

面试时间

  • 2022-04-05 ~ 2022-04-24 总共20天的时间

准备周期

  • 2022-01-14 ~ 2022-03-26 总共2个月多一点的时间

面试思路

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

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

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

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

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

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

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

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

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

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

  • 沟通能力

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

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

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

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

  • 面试频率

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

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

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

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


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

高频问题

  • 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启动流程

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

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

当然,面试时不会上面的每个题都问到,通常会根据简历里写的项目经历来问,结合岗位相关的技术,而面试中经常会出现层层深挖,并且会结合实际问题来问,面试中的大多数问题都是在探明你的技术边界,全方位地考察你对技术的理解深度,以及解决问题的能力

上面这些题目的答案我都已经整理到了本地PDF文档中,这里由于篇幅原因没有一一把答案贴上来,需要完整文档的朋友们可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。

这些题目的答案我都已经整理到了本地PDF文档中,这里由于篇幅原因没有一一把答案贴上来,需要完整文档的朋友们可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。

以上是关于5年经验Androider面试之旅:历经万难终进阿里的主要内容,如果未能解决你的问题,请参考以下文章

5年经验Java程序员面试20天

靠这本,在某宝花了399大洋的宝典,熬夜七天,吊打面试官,终进大厂

手撕面试:历经半年的 Android 面经汇总

4年Android 开发历经4面,成功“跳“ 进阿里,斩获60W年薪

面试官故意刁难,回来学习2400小时后成功复仇终进腾讯

Android2017最新面试题(3-5年经验个人面试经历)