1.写在前面
想要成为一名优秀的Android开发,你需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样。
2020届的秋招提前批已近尾声,目前Android开发岗已拿到的offer有[百度],[字节跳动],[美团点评],[网易],岗位均为Android开发方向。距离毕业答辩还有点时间,写写我的互联网转行之路。
先介绍一下自己的背景,北航本硕,学习成绩中上,有两个学科竞赛奖项,一篇SCI。
计算机方面,没有实习,只有一个略微相关的项目能写到简历里面。专业知识全靠自学,所以过程也异常痛苦。准备时间从2019年寒假开始,到2020年八月底结束,前后跨度不到一年。
秋招期间,互联网总共投递20多份简历,笔试8次,面试9次,5家单位给出明确录用意向,最终的结果比自己的预期理想。
这期间很多面试经验,正直现在面试季节,分享给大家。有想法和问题的欢迎在评论区留言。
正文
1.面试问得最多的是自定义 View 基本每家都问!
主要问 View 的绘制流程,自定义View的步骤。有时会涉及到细节;比如 PhoneWindow 实例是在哪个类哪个方法中实例化的?Selector 是怎么实现的?View 动画是怎么实现的?为什么移动后点击事件还在原来的位置?
2.Android 系统源码部分(这是大厂特别喜欢问到的)
事件拦截和分发
进程间的通信方式
应用的创建启动流程
Handler 是怎么导致内存泄露的
第三方库的源码,Glide、OkHttp 和 Retrofit 问得比较多,MVC,MVP和 MVVM 开发模式优缺点。
常用设计模式理解问得也多,大公司 Binder 驱动和虚拟机方面问得比较多。
3.数据结构和算法,Java 的常用集合和实现原理
比如 ArrayList ,LinkedHashMap 的实现原理,缓存淘汰策略,红黑树和二叉树,最短路径规划,海量数据筛选,很荣幸的是面试官目前还没有要我手写算法!
4.性能优化
如何检测一段代码的执行时间?
界面卡顿如何修复?
滑动不流畅怎么处理?
50fps 有什么办法可以提高到 60fps?
内存泄露怎么检测?
leakcanay 的原理?
5.线程和线程池,
wait() 和 sleep() 的区别?
同步锁
线程池的参数详解?AsyncTask 源码参数详解?
…
我能记得的大概就这些了。最后还啰嗦一下,有很多公司标明了,你必须要会 C 和 C++, OpenGL 或 OpenCv 或音视频编解码!这里要小心,我写的是熟悉,因为像音视频和 OpenCv 图像处理这些方面,没做个6、7年最好不要写精通!
来上海感觉学历真的很重要,大公司都要求本科以上,而且要能查的。如果没有学历这是个硬伤了,除非技术很强,或者有内推的话也会看情况而论。
小公司面试官一般不会问你细节,但大公司面试官都会抓细节,所以细节要清楚,概念不能模糊,但一个问题有些细节部分可能面试官也不太了解,如果你都能说出来那就不错了,所以面试就是谁面死谁的问题了。还有不要起争执,态度谦虚,心里敬佩人家。我们就是来聊聊,并不是来讨要工作的。
文末
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~
小编将自己6年以来的面试经验和学习笔记都整理成了一个**937页的PDF,**以及我学习进阶过程中看过的一些优质视频教程。**上传在我的文档中:Android架构视频+BATJ面试专题PDF+学习笔记**请君自取,无偿分享!
aERkbnFoS0ZF)**请君自取,无偿分享!
[外链图片转存中…(img-ESdnpLt5-1621321873567)]
其实看到身边很多朋友抱怨自己的工资很低,包括笔者也是一样的,其原因是在面试过程中没有给面试官一个很好的答案。所以笔者会持续更新面试过程中遇到的问题,也希望大家和笔者一起进步,一起学习。