回顾
金九银十的面试季已过,之前自己也不得不参与到这场战役中来,其实是从去年底就开始看,android的好机会确实不太多,但也还好,3年+的android开发经历还是有一些面试机会的,不过确实不像几年前门槛那么低了,总的体会就是小的创业公司比较注重你的项目经历是否和自己的贴合,直接能过来独当一面。大厂除了看中项目经历外,还比较注重你知识面的广度,是广度、深度和解决方案等多方面的考察,平时够工作要好好积累临时刷题只聊点皮毛估计是过不了关的。
下面就总结一些遇到的题目,各种风格的都有。这里先列举问题。
面试真题
又坐标hz,各厂名字字母表示,自己猜。本题目整理不保证你会遇到相同的问题,根据岗位和面试官本身情况,问题可能差别很大,比如有做中间件的同学被问到热修复的细节等等。
总体说来阿里的面试是很正规的,从android基础到一定程度的理解总结性问题,然后回到java基础及原理,主要着重问简历上的,或从简历出发发散问题,问题会由表及里逐渐深入,很考察对你负责的项目的理解和其中用到知识原理。因为是凭着记忆后记的,以下问题不分先后。
面试过程
tb:电面一
-
dp是什么,sp呢,有什么区别
-
自定义View,ViewGroup注意那些回调?
-
界面卡顿的原因以及解决方法
-
android中的存储类型
-
service用过么,基本调用方法
-
Handler机制
-
LinearLayout、FrameLayout、RelativeLayout性能对比,为什么
-
Activity的生命周期,finish调用后其他生命周期还会走么?
-
FW层熟悉么,源码看过么
-
GC回收机制熟悉么,分代算法知道么
-
Java的类类加载原理
-
内存泄漏如何排查,MAT分析方法以及原理,各种泄漏的原因是什么比如
-
Handler为什么会泄漏
-
gradle熟悉么,自动打包知道么
-
介绍下先的app架构和通信
-
自己负责过哪些模块,跟同事相比自己的优势是什么
-
遇到过什么印象深刻的问题,怎么解决的
现场面试:三场
First:
-
最近都做了哪些工作?
-
遇到了什么印象深刻的问题。A:会顺着你介绍的项目问下具体实现。
-
推送消息有富文本么?
-
热修复了解么,用的什么?
-
apk包大小有限制么?怎么减少包大小?
-
工作中有没有用过或者写过什么工具?脚本,插件等等
-
比如:多人协同开发可能对一些相同资源都各自放了一份,有没有方法自动检测这种重复之类的
-
写过native的底层代码么
-
view的绘制熟悉么,介绍下
-
gc相关的算法
-
anr是因为什么产生的,怎么排查
-
界面上的话,有什么优化措施么?比如列表展示之类的,平时遇到过内存问题吗,怎么优化的?
-
平时用过哪些设计模式?
Second:
-
介绍下最近一年主要做了什么工作
-
会对简历上突出的技能进行详情的询问:
比如:音频合成的具体步骤,以及遇到的一些问题和细节处理。会根据面试发散一些问题,问到,seek方法播放到末尾后重新播放会有一些卡顿的不流畅问题,怎么避免,从交互设计或者技术角度。(个人表示没怎么关注这种)。 -
项目团队多少人,怎么分配工作
-
线程之间怎么通信的?
-
app的架构是怎么样的,并且为什么这样,有什么优缺点?
-
算法熟悉么?给了一个二叉排序树,出了一个给定节点找到它的下一个元素(指的是大小顺序的下一个)的算法题。
-
为什么找工作,自己的优势是什么
Third:
-
技术问题不再局限于简历,可能根据简历和回答情况渐进并扩散。
-
感觉各个技术面试官之前并没有沟通,可能会问到类似的问题
-
介绍下自己主要负责的工作
-
Activity的生命周期有哪些,知道onRestart么,介绍下
-
savedInstanceState知道么,干什么用的,什么时候有值,什么时候为空,平时是怎么用的
-
View绘制熟悉么,介绍下,能说下是实现原理么?
-
平时用过什么开发工具,分析工具?
-
ANR是怎么回事?怎么查?Service会引起ANR么?
-
Activity的启动模式有哪些?栈里是A-B-C,先想直接到A,BC都清理掉,有几种方法可以做到?这几种方法产生的结果是有几个A的实例?
-
有什么工具可以看到Activity栈信息么?多个栈话,有方法分别得到各个栈的Activity列表么
-
都熟悉哪些命令?知道怎么用命令启动一个Activity么?
-
SharedPrefrences的apply和commit有什么区别
-
java里带$的函数见过么,是什么意思
-
MD5是加密方法么,Base64呢
-
有博客和github,主要是写的什么?有哪些关注
-
android 10.0 有哪些新特性
-
差不多就这些吧。。最后每个面试官都会让你问他问题。
面试前准备
1.阅读书籍
2.刷题
3.整理自己的知识体系
4.做好面试的准备,规划。
5.管撒网,多捞鱼一定要看个人发展与公司发展是否目标一致,不要单单看薪资待遇。
6.面试后记得复盘,把自己面试时的题目进行整理,方便以后如果需要跳槽做准备!
如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
书籍
由于简书限制网盘链接,在我主页扫描我的二维码,我免费分享给你
面试心得
1.简历要如实写,相关的知识点一定要烂熟于心。
2.基础扎实,android和java相关的知识树网上有很多资料,看过但让你讲出来未必能说的好。
3.提前总结,你还擅长什么其他技术?这种开放问题要看知识面了。
4.学会提问,你有什么问题要问我吗?这种礼貌性问题也是一个了解对方的好机会。
5.良好的心里素质,无论遇到什么情况,面试官迟到、面试官态度冰冷说话不客气、质疑你的回答等等各种问题都不要慌也不要排斥,一定要沉住气,耐心积极的思考并回答对方的提问。
6.推荐几本书,也是好几次面试后发现里面涵盖了大部分答案。《Android开发艺术探索》《Android源码设计模式-解析与实战》,多看几遍。
大厂的面试流程比较长,面试是一场全面大考验,如果想换个工作,最好提前充分准备。
网友评论