写点什么

android 开发教程!写给安卓软件工程师的 3 条建议,一线互联网公司面经总结

发布于: 2021 年 03 月 10 日

最近跟我的一些读者交流,有一位读者的经历让我记忆深刻:


“有一次和大学同学聚会,和几个在 BAT 的同学聊了聊技术,发现自己在创业公司这几年,完全是吃老本的状态,没有什么机会精进技术,同样是工作了三年,和同学的差距越来越大”


我继续问他,他说真正让他受打击的是这个月的一次面试。


“面的是一个大厂,面试官问了很多问题,一大半的问题我都是一知半解,回答上来问题也是特没底。


大概回顾了这场面试:上来先是问了 Java 基础知识,自定义 view,算法等等,这部分我还算准备的充分。第二部分开始复杂了,主要是底层、NDK、设计模式、调优方面的问题,像是如何检测一段代码的执行时间?滑动不流畅怎么处理??


我之前工作上经历的少,加上自己技术储备浅薄,到这部分时我就感觉自己快凉了。面试到最后,问了 mvvm 架构相关的,当时已经懵了,我只记得一个问题:让你做一个项目,怎么选择 mvvm 架构和 MVP 架构?我。。。。“


面完后他说,觉得自己在技术上欠了很多债,最惨的是,在这之前他根本不知道。


听了这位读者的经历,于是有了今天这篇文章。很多工作了 1-3 年的 Android 人,想够一够 3w 月薪的岗位,但在底层技术上却有很大的问题:


毕业几年,表面上用过很多技术,但都没能深入学习,一年的工作经验,干了好几年。结果就是遇到实际问题时无从下手,最终还是走着普通工程师的道路,和高手的距离越来越远。


都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。


听过很多人说 Android 学习很简单,做个 App 就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多 Android 开发者最开始入行的原因之一。


在工作初期,工作主要是按照业务需求实现 App 页面的功能,按照设计师的设计稿实现页面的效果。


在实现的过程中,总是会被提如下的需求:


这个字能不能大点或者醒目点儿?感觉颜色和设计稿有差别,能不能再调调?怎么老是崩溃啊,行不行啊?......


所以,工作过一年后你会发现,自己的工作重点就是将找各种各样的组件、框架,拖拖拽拽,改改样式。在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。


造成这种局面的有两种原因:


1.所开发的 App 功能要求并不复杂,在性能上呢,也不需要极致的追求;2.自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划


从自身规划的角度讲,技术上的进阶分如下几个阶段:


1.做好业务需求的功能**。这个是初级程序员就应该有的能力。

2.解决极端情况下的技术问题,比如性能优化,OOM 等。稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的 App 在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。在忽略这些问题的过程中,也放弃了进一步提升的可能性。还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。3.在开发框架和效率上做文章。举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。


上面列举的几个阶段,首先要从思考方式上去逼迫自己不断地逼迫自己,不要偷懒。其次,要想按照上述阶段发展,还需要落在实处,在具体的技术体系中不断的学习。


举个例子:


对于 OOM,需要知道有哪些优化工具可以使用(Lint、MAT 等),如何检测 OOM,以及垃圾回收机制等深层次的原理。对于性能优化来说,如何减少 apk 体积、资源动态加载等都是必会的。以下是性能优化相关思维导图(文末还有更多 Android 架构进阶的学习资料免费分享)



在体系化的学习过程中,博客、书籍、视频课程都是较好的学习手段。


鉴于 Android 也是基于 java 语言的,因此很多与 java 相关的基础也是必须掌握的,比如《深入理解 Java 虚拟机》、《Effective Java》等相关书籍也是必读的。


Android 相关的书籍包括《Android 权威编程指南》、《Android 开发艺术探索》等,进一步的还可以去阅读 Android 相关源码,配合《Android 源码设计模式解析与实战》等书籍,对阅读源码大有裨益。


最后


一个零基础的新人,我认为坚持是最最重要的。我的很多朋友都找我来学习过,我也很用心的教他们,可是不到一个月就坚持不下来了。我认为他们坚持不下来有两点主要原因:


他们打算入行不是因为兴趣,而是因为所谓的 IT 行业工资高,或者说完全对未来没有任何规划。


刚开始学的时候确实很枯燥,这确实对你是个考验,所以说坚持下来也很不容易,但是如果你有兴趣就不会认为这是累,不会认为这很枯燥,总之还是贵在坚持。


技术提升遇到瓶颈了?缺高级 Android 进阶视频学习提升自己吗?还有大量大厂面试题为你面试做准备!


点击:Android 学习,面试文档,视频收集大整理


来获取学习资料提升自己去挑战一下 BAT 面试难关吧



对于很多 Android 工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些知识图谱希望对 Android 开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。


不论遇到什么困难,都不应该成为我们放弃的理由!


如果有什么疑问的可以直接私我,我尽自己最大力量帮助你!


最后祝各位新人都能坚持下来,学有所成。


用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
android开发教程!写给安卓软件工程师的3条建议,一线互联网公司面经总结