今年3月,说它是史上“最冷春招”也不为过,不少朋友都反馈说自己投的简历石沉大海,再加上“大厂的裁员潮和股市的大幅回撤”……这些似乎都证明了同一件事:今年找工作真的难!
网络上曝出多个大厂裁员的消息,疫情当下、裁员浪潮,焦虑和不安充斥这个金三银四。
不过大家应该冷静和理性地看待大厂裁员。因为每年大厂都会去做项目规划、人员调整,肯定会有部分业务要招人、部分业务需要有成本上的优化,以及人员上的盘点。
破局最重要的一点是:不断提升个人价值。
一个人在职场里、在专业领域、在技术上的层层突破和能力塑造,从而建立起自己的个人价值。即使遇到裁员这种情况,个人的经验和技术水平都相比从前更有竞争力,面对这样的情况,应该也可以找到一份更好的选择。
打个比方,近期面试时就经常会被问到这些问题:
- JVM原理
- Android系统启动流程
- Binder在做数据传输过程中,最大的数据量限制是多少?
- 为什么不能在子线程更新 UI ?
- 如何从线程、系统层面出发优化启动速度?
- OkHttp 连接池复用原理
- Retrofit核心实现原理
- 组件化、插件化、热修复 原理
- ……
大部分Android开发者一遇到这种面试题就直接懵逼了,不少人不是没有看过相关的解答,但也都只是浅尝辄止,没有深入掌握其中原理,面试的时候自然会被问个措手不及。最要命的是面试官还会根据你的回答来一步一步深入,直到你回答不上来为止!
很多求职者抱怨大厂“面试造火箭,工作拧螺丝”,但实际上,面试中的大多数问题都是在全方位地考察你对技术的理解深度,以及解决问题的能力。
那些看似无理甚至无用的问题:比如“Okhttp请求复用有没有了解”,其实是面试官想借此看看你对网络优化和Socket协议的理解情况和掌握程度,进而引伸到你对网络架构、设计模式的理解。在熟知Okhttp源码的前提下,你才能够答好这道面试题。
比如优化方面,多少人往往就是说一些自己编写的业务,一些去除页面多余嵌套、使用线程池、ViewStub 这些非常浅的方案。其实更多的,面试官还是希望能够听到,线上复杂环境,低端机/弱网等因素下,用户触发的一系列的体验问题。
像在进行启动优化的时候,例如你从线程角度做启动优化,你需要了解在 Linux 层线程的 nice 值,线程优先级对调度的影响等。在进行内存优化的时候,就必须要精通JVM!
作为过来人,我发现很多人对于 Android 知识的掌握还是多浮于表面,导致对一些核心底层技术点却只停留在“使用过”甚至是“听说过”的阶段,这其中甚至不乏一些工作 5 年以上的 Android 工程师。
诸如这些困扰,相信很多Android开发都有体会:
- 工作场景中遇到难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引以及工具支持;
- 能力修炼中,缺乏大型项目这一实践环境,对底层知识只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程;
- 职场晋升中,只管功能开发,不了解底层原理,缺少深入地思考与总结,无法完成复杂系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往只留给有准备的人。
总之,一旦遇到问题,很少人能够由点及面逆向分析,最终找到瓶颈点和最优解决方案。
如今,国内移动互联网的红利期已经过去,Android 开发工程师也从最初的一人难求,到现在的一个岗位百人竞争,僧多粥少的情况直接导致整个行业对求职者的要求越来越高。可以说,初中级工程师很难找到一份大厂工作,即使高级工程师也经常在面试中碰钉子。
为了帮助到大家更好的掌握 Android 技术知识点,面试中更好应对面试官的问题,整理了一些 Android 核心技术的学习文档及面试常见相关问题文档,如大家有需要请去我 GitHub 进行查阅。
GitHub地址:
https://github.com/733gh/Android-T3
- 1
- 2
评论记录:
回复评论: