前几天和一位 Android 前辈聊天,他说面试中很多工程师,对特别基础的问题都停留在“使用过”或者“听说过”。没有深入到技术细节里,在竞争激烈的市场中就只能被淘汰。
下面这些,是他提到的几个问题,你能快速回答上么?
-
SoftReference(软引用)在内存不足时会被虚拟机回收,那它会不会导致 OOM?
-
Android 的 Touch 事件中 CANCEL 事件是如何产生的?哪些场景下会发生 CANCEL 事件?
-
Handler 中的 Looper 无限循环,为什么没有阻塞UI主线程?
-
你在简历中写“精通多线程”,那么:线程中自己的“工作内存”指的是什么? 为什么阿里开发规范中不允许使用 Executors 创建线程池?
你一定想说“面试造火箭,工作拧螺丝”。实际上,你的答案反映了你对技术理解的深度,以及解决问题的能力。
听起来很套路,但企业需要的是能对自己提交代码负责、对使用每一个工具负责的「高级/资深 Android 开发」。
我认识很多优秀的 Android 工程师,他们丝毫不焦虑,因为他们知道清晰地知道自己的薄弱处和强项。
和他们的交流中,我总结了 3 点经验,分享给你:
1. 深入学习Android底层框架源码知识
有些程序员一看见底层框架源码就会恐惧,不知从何入手。但要成为一个优秀的Android 工程师,精通框架源码是必经之路。
你要多写代码,如果没有时间看底层,就在遇到问题的时候深挖原理,在编程中深入底层,熟悉原理。一般的程序员都没有做到的,当你做到了,你就比他们更牛了。
2. 多积累项目经验
代码的最终目标就是实现某个场景的解决方案。只不过如果你没有太多经验,不知道代码应该写成什么样。只要你的Android/ Java 底层知识基础打的足够坚实,进到公司后跟着做几个项目,熟悉框架后,自己不断尝试造轮子,项目经验自然而然就增长了
3. 需要掌握系统化的学习方法
网上学习Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议你先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。
最后
在此为大家准备了四节优质的Android高级进阶视频:
架构师项目实战——全球首批Android开发者对Android架构的见解
附相关架构及资料
#####