最后
在这里小编整理了一份Android大厂常见面试题,和一些Android架构视频解析,都已整理成文档,全部都已打包好了,希望能够对大家有所帮助,在面试中能顺利通过。
喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
方式方法
面试环节中即便你技术很好,项目经验很丰富,你也不乏有知识盲区,也有未能顾及的技术点,当这些点集中出现的时候你面试的成功率也会大大降低。所以针对面试我总结了以下几个流程:
「1.面试分为3个阶段(初期,中期,高offer期)。」
「初期」: 主要通过(BOSS,拉勾投递即可),初期主要投递小公司,这部分公司有两个目的。第一是相互交流技术点,不断完善自己的技术覆盖度。第二是了解当前市场的需求点。
「中期」: 主要通过猎头去投递,这个阶段主要投递中场,这类公司要求技术深度会比初期公司要深一些,算法的考察会加重,同时面试官的技术水平也会偏高一些,甚至有的中场面试难度会达到大场的水平,这个中期尽可能的持续长一些,非常有利于后续的面试经验总结。
「高offer期」: 这个阶段主要投递你的目标企业,切记面试优先级从最不意向的公司开始投递。投递的方式也是通过猎头,这样可以加快面试流程。以上的初中期更多的是完善你的技术覆盖度,以及你的面试感。为了是让你以最好的姿态去挑战你最想去的企业,这样一路走来你面试的成功率会大大提高。
**「2.沟通能力」**面试除了考察你的技术实力以外,还有一点是比较重要的,那就是沟通能力,你面试的岗位越高,对你沟通能力的要求也就越高。
沟通是特别重要的一个点,这决定你是否能非常清晰的把你所知所想完整的阐述出来。
我们面试的过程就是自我营销的一个过程,所以当你觉得自己沟通能力不是很强的时候,那么你就需要定向的去总结几个点:
比如一个出色的自我介绍, 项目中遇到的最难解决的一个问题,如果让你设计一个架构你应该怎么设计,简单的介绍一下你负责的业务 等…
**「3.面试频率」**面试周期我建议15-30天。
「初期」:小公司,我建议一天面试3个,如果有精力的话可以4个,这里需要注意一点,小公司有很多不靠谱的,比如还用Eclipse的,比如上来还没问技术就先打击你的,这种可以找机会离开,不要浪费时间。面试时长建议控制在60分钟以内,不要太抠细节。有条件的可以打开录音器,方便结束后晚上复盘。你复盘3-4天的时候你会发现面试内容开始大批量重复了。
「中期」:这个时期我建议一天最多2个公司,因为中场一般都是3轮或者以上的面试,有一部分是一路走完的。所以你需要给二面三面留出时间以方便充分沟通。千万不要一面完就打算走,因为一二三面所考察的完全不同,一面主要是基础,二面主要是框架/源码/简历里的技术,三面一般会聊项目,方案或者思路。
「高offer期」: 这个环节需要你按实际情况伺机而动,因为有的大厂是一条龙面完,有的是每一次面试都单独约,但是大厂一般的流程都比较慢,都在1周以上才能完成整场面试。一般都在4-6面之间。但是建议一天最多安排2场面试,这个面试时长不确定性因素会比较多。如果面试官不是很讨厌你,一般都会在60分钟以上。
面试的基本流程
我先后面试了差不多20几家公司,最后到手的OFFER有8个左右,最后选择的是自己想去的 「阿里」,面试内容我下面会简单总结一些,共分为两部分。一个是面试中出现的频率比较高的问题,二就是面试的这些公司的一些体验分享。
面试高频问题区:
- HashMap 1.7,1.8的差异,1.8中什么情况下转换为红黑树,构造函数中参数代表的意思
- 用什么Map可以保证线程安全,为什么?ConcurrentHashMap为什么能保证线程安全?1.7和1.8原理有什么差异。
- 有多少种单例模式,枚举算不算单例,单例模式中不用volatile会导致什么问题?volatile特性是什么?为什么android中不推荐使用枚举。
- 进程优先级
- 反向输出字符串
- 两个有序链表合并
- 字符串移除多余空格,且技术单词首字符大写。
- 二叉树中和为某一值的路径
- 本地广播和正常广播的区别
- 二进制低位转高位
- 字符串数组判重
- 二叉树 判断是否为搜索二叉树
- Activity启动流程,Launcher启动流程
- 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的实现原理,怎么处理页面过多内存占用过大问题。
- 线程池都什么时候用,怎么创建,构造函数中的参数分别代表什么意思?
公司面试体验分享
「拟合未来」
- 这公司面试体验很好,一共三轮面试,技术面二面,HR一面。
- 「一面:」 自定义view、Handler机制、组件化和插件化、HashMap的源码、retrofit和okhttp的源码用到了哪些设计模式、NDK静态库和动态库编译流程、openGL渲染模式、Android中的动画有哪些它们之间的区别、谈谈mvvm。
- 「二面:」 讲之前做的项目负责哪块,根据业务采用什么架构、使用过哪些设计模式,项目中遇到哪些棘手的问题,如何解决的。
- 「三面:」 HR整体问下以前公司的情况等问题
- 总体下来基本面试官都是根据简历来问的。体验心得就是要对自己以前做的项目也好好梳理,提前组织好语言,挖掘项目闪光点。
「百度」
- 这里主要负责的业务是手机百度开发,总共面试了三次。
- 「一面内容:」
- java引用,以及引用队列,以及使用场景;
- 拆装箱
- LeakCanary
- map
- 线上性能监控
- SharedPrefrence 遇到的问题
- 手写算法
- 「二面内容:」
- Handler
- 进程间通信
- 序列化
- 动画,
- native崩溃捕获原理
- 结合项目提问
- Recyclerview的点击事件原理
- 启动一个空的apk,回启动几个线程
- 手写算法
- 「三面内容:」
- 跳槽原因
- 原来公司规模
- 预期薪资
- 个人优势
- 「个人体验心得:」
- 简历上写的一定要了解,并且知道原理
- 多熟悉项目,找出一些能聊得功能点
- 崩溃捕获,以及解决(java ,native)
- 优化需要知道(大厂都会问)
- 了解由点到面,需要把知识连贯起来
「中软国际」
- 岗位业务荣耀手机内置APP-主要负责推送,一共两面
- 「一面:」 问的项目中哪些用到了hook技术,是怎么实现的,Okhttp底层原理,点击应用图标的启动流程,hashmap在java7和java8的区别,为什么要引入红黑树
- 「二面:」 项目是怎么搭建的,用到了哪些技术点,arouter用到了什么技术点,是用来解决什么问题,socket底层原理,是如何带领团队的,一个功能是如何从分析需求到落地的
- 「个人体验心得:」 尽量围绕简历上的点来刷面试题,不一定都要研究透彻,被问到自己不熟的点,可以尽量尝试着往自己熟悉点带,例如之前我被问到pms是怎么管理package信息的,我就说目前我对pms了解不深,主要也是研究了ams,然后就把自己了解的说一下就好了。
「杭州红花朵朵(总共三面)」
- 「一面:」 Fragment和Activity生命周期联动,及Fragment显示与隐藏的一些方法,Handler原理, View绘制流程,事件分发,APP从安装到启动都做了什么,设计模式相关。
- 「二面:」 线程都有那些状态,线程锁相关的东西,对称与非对称加密,HTTPS请求过程,数组,链表,红黑树二叉树等一些数据结构相关的东西,还有一些开放性的问题
- 「HR面:」 自由回答
- 「个人体验:」 基础最重要,不仅要会用,还要知道其中的原理。
「京东到家(总共三面)」
- 「一面:」 线程,进程,消息,通信,handler,okhttp
- 「二面:」 事件分发,java一些基础,算法
- 「三面:」 聊项目
- 「体验:」 除了技术,沟通,理解能力要好
「apus(总共三面)」
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
上面分享的百度、腾讯、网易、字节跳动、阿里等公司2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
【Android高级架构视频学习资源】
**Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!