五年Android 开发大厂面经总结
Posted 涂程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五年Android 开发大厂面经总结相关的知识,希望对你有一定的参考价值。
作者:鸠摩智
概述
时间过得是真TM快,回想自己是16年从学校毕业,现在是出来工作的第五个年头啦。在不同的大小公司都待过,就在前段时间顺利的完成了一次跳槽涨薪,面试了几家公司,今特此前来跟大家进行分享,希望对大家有所帮助。
简历
简历这个东西不管在哪行那业,去面试时是一个很重要的东西,它相当于你的名片标签。HR或面试官会对应聘者们的简历进行优良等级的筛选划分,简历就是你和面试官或HR见的一面,所以简历的好坏、够不够吸引决定了你是否输在了起跑线。
有面试跳槽的想法时,首先得给自己做一份整洁又吸引力的一份简历,我们可以去找一些优秀的模板进行去套用填写自己的一个技能和项目经历即可。
参考模板:
简历建议长度为2页,太长太短都不好。
建议用掌握与熟练掌握取代了解与精通。
在制作简历的过程中,还可以同步做面试前期知识点的复习,保障自己面试中能够顺利的答题通过。
刷题
算法题可以说是现在找工作必刷的了。不过根据我面试的经验,算法题总得来说问的还是比较少,还有一些公司是基本不问算法的。
当然如果碰到字节,快手这种每轮都问算法的公司,如果因为算法题拿不到offer就很可惜了。
算法题就好像高考语文的古诗词默写一样,分不多,但丢了就很可惜了。
根据我的经验,大概刷了,掌握100道题就足以应付面试了。
当然完全掌握需要重复练习,不是刷了一遍就可以的。
还就是找寻一些 android 近几年问的频繁和自己做过的一些项目相关的问题。因为近几年问的频繁问题,说明整个问题比较重要和关键;二自己做过的一些项目相关的问题,这个是面试官比较想了解的,从中可以检测出你对自己的项目有多深的了解,在延伸的问就是检测你之前是否考虑过对项目优化等因素。
面试过程
接下来就是各公司的面经了,分享出来供大家参考。
A公司一面
- 自定义view
- Handler机制
- 组件化和插件化
- HashMap的源码
- retrofit和okhttp的源码用到了哪些设计模式
- NDK静态库和动态库编译流程
- openGL渲染模式
- Android中的动画有哪些它们之间的区别
- 谈谈mvvm
A公司二面
- 讲之前做的项目负责哪块,根据业务采用什么架构
- 使用过哪些设计模式,项目中遇到哪些棘手的问题,如何解决的。
A公司三面
这个是hr说,整体问下以前公司的情况等问题
感受:自己简历上写的东西要熟悉,基本面试官都是根据简历来问的。对自己以前做的项目也好好梳理,提前组织好语言,挖掘项目闪光点。
B公司一面
- java引用,以及引用队列,以及使用场景
- 拆装箱
- LeakCanary
- map
- 线上性能监控
- SharedPrefrence 遇到的问题
- 手写算法
B公司二面
- Handler
- 进程间通信
- 序列化
- 动画
- native崩溃捕获原理
- 结合项目提问
- Recyclerview的点击事件原理
- 启动一个空的apk,回启动几个线程
- 手写算法
B公司三面
- 跳槽原因
- 原来公司规模
- 预期薪资
- 个人优势
感受:
1.简历上写的一定要了解,并且知道原理
2.多熟悉项目,找出一些能聊得功能点
3.崩溃捕获,以及解决(java ,native)
4.优化需要知道(大厂都会问)
5.了解由点到面,需要把知识连贯起来
6.还有如果想要高薪,一定要多跳槽,一般大厂工资涨幅都是有限度的,最高涨幅百分之30,除非你特别牛皮
C公司一面
- MediaCodec连环炮:MediaCodec报错,只有错误码,没有任何其它信息,如何解决?使用MediaCodec遇到了哪些问题?同步使用和异步使用有什么区别?
- 如何计算音频帧,一帧音频帧有多大
- YUV基础知识,相比于RGB减少了多少空间,YUV 各个分量都是0实际渲染出来是什么颜色的,NV21和NV12有什么区别
- MP4是如何存储音视频文件的,它是什么结构
- OpenSL 相关的问题,如何使用。可以干什么不可以干什么
- 结合项目问题
C公司二面
1.SurfaceView和TextureView区别
2.OpenGL ES相关问题,MVP矩阵左乘和右乘有什么区别,什么是外部纹理,为什么叫外部
3.OpenGL如何渲染一个View
4.VBO是用来干嘛的解决什么问题
5.结合项目问问题
C公司三面
1.项目是什么架构,如何设计的,为什么这么设计
2.算法题:字符串反转
3.平时如何学习的
感受:音视频开发感觉OpenGL ES问的比较多
D公司一面
1.问的项目中哪些用到了hook技术,是怎么实现的
2.Okhttp底层原理
3.点击应用图标的启动流程
4.hashmap在java7和java8的区别,为什么要引入红黑树
D公司二面
1.项目是怎么搭建的,用到了哪些技术点
2.arouter用到了什么技术点,是用来解决什么问题
3.socket底层原理
4.一个功能是如何从分析需求到落地的
5.如何带领团队的
感受:主要简历要写的好,尽量围绕简历上的点来刷面试题,不一定都要研究透彻,被问到自己不熟的点,可以尽量尝试着往自己熟悉点带,例如之前我被问到pms是怎么管理package信息的,我就说目前我对pms了解不深,主要也是研究了ams,然后就把自己了解的说一下就好了。
总体感受
毕业时选择的是一家非一线大厂的公司,在这边工作的近两年时间里,业余学习了许多 Android 相关的专业知识(因为不忙),但是由于业务原因,且公司发展一直在走下坡路,我在项目上的经验比较欠缺,因此考虑进一家大厂继续磨练磨练自己。
这次面试也暴露出了我的一些问题,最主要的话还是业务项目经验上不太足,所幸面试到的公司基本上都通过了,可能是因为我在 Android 基础上还可以吧。面试也是一种能够快速地发现自己缺点与不足的方法,可以更好地提高自己。
关于算法题:个人感觉有些八股了,也比较讨厌刷题,只写了剑指offer和leetcode上hot前百中所有easy难度的题,以及几道中等题,总共估计不超过100道吧。。。面试的时候感觉算法题这块都不是很难,大概也许可能是运气好呗。
另外就是可以自己搞一些比较有亮点的地方,所以上面面试中有一些都涉及到,和面试官聊的很开心。
最后
跟大家分享一下我这面试前期进行收集整理复习的一些 Android 开发相关的学习文档、面试题、Android 核心笔记等等文档,希望能帮助到大家学习提升,如有需要参考的可以直接去我 CodeChina地址:https://codechina.csdn.net/u012165769/Android-T3 访问查阅。
好了,暂时只能想到这些,后面如有想到其它东西再补充哈,祝想找工作的同学都能去自己心仪的公司,前程似锦!
以上是关于五年Android 开发大厂面经总结的主要内容,如果未能解决你的问题,请参考以下文章