背景
作为一名优秀的程序员,技术面试是不可避免的环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。
正常情况下,一轮技术面至少要 30 分钟,有的甚至能聊一个多小时,低于这个时长的基本就算凉了。
有个前同事,6 年 Android 经验,去滴滴面试,不到 10 分钟就被送走了,之后再也没有接到下一轮面试的通知。
好不容易拿到的面试机会,仅仅十分钟就被 PASS 了,说到底还是因为技术不达标。面试官问的几个问题,他回答得都不是很好,直接导致对方没有继续聊下去的意愿:
- AMS是如何启动的?
- AMS在Android起到什么作用?
- AMS有哪些应用场景?我们是如何应用AMS核心原理的?
- WMS的工作原理说说?
- JVM的核心原理你懂多少?
- 我们的代码是如何在栈区中运行的?
- 如何使用字节码研究系统级原理?
这些底层问题能回答上来吗?是不是看上去很难?是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。
面试技术点考察
其实,Android 技术面考察的知识点很多,从框架、JVM、并发,到 NDK、kotlin、Flutter和性能优化,覆盖面非常广。
其实很多的移动开发者都止步于这个水平,要想再进一步深入发展很难,进阶学习成为了一个迫在眉睫又进展艰难的点。
进阶学习难吗?有一定难度。工作和学习遇到瓶颈后我们需要钻研底层原理,而现在我们基本上都是上班怼业务代码,晚上经常性加班赶任务进度,回到家已经很累了,很少有时间去提升自己的技术。钻研底层原理对我们来说相当奢侈。
现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
对于一些不知道学习什么,没有一个系统路线的程序员,这里给大家提供一个大概的思路:
- 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO
- Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化