好难过!八年深漂,搞Android开发要价50万,面了六家公司,竟一个offer都没拿到!

最近逛脉脉职言,看到最多的就是客户端两年内消失。Android开发找不到工作。


这段时间从北上广深杭不断传来一两个月找不到工作的消息,我一个从杭州去上海的朋友也是一周多了才拿到一只手都能数过来的面试机会。加上近来前端开发火爆,很多公司采用React Native来开发应用,还有微信小程序的出现,让一些同学对Android开发感到迷茫了。综上两点有感而发写一些自己的思考和总结。

想达到大厂标准先要搭建知识框架

我们在学技术的时候,如果没有注重搭建知识框架的话,学到后期的话你就会遇到一个问题,就是会感觉到自己之前学习的知识很乱,不成系统,再加上行业技术更新很快,越往后自己学习的知识会越来越多,而之前的学习又是零散的自己没有整理的,你就会感觉自己所掌握的这些知识是散乱的。

就好像很多点,线可能已经连接成了,但是就是组不成一个面。当我们做一个大一点的项目,需要熟练用到很多相关技术面,甚至会用到组件化技术。如果你长期只使用一些常用的技术点,那么你可能还有很长一段时间要待在小公司搬运代码了。

怎样搭建知识框架呢?

这里分享的搭建知识框架两种方式,都是很多技术大佬总结出来的非常好的方式,看你们个人喜好!

第一种:看视频教程来搭建知识框架

这是个通用的方式,可能更加适合那些技术处于初级到中级阶段的朋友,当然,这里我说一点,我发现在很多看视频学习的朋友经常会犯这样的一个错误,就是对视频教程的欲望很强导致的松鼠病,什么意思呢?就是很多朋友到处找视频教程,然后各种囤积,顶多是这个看看,那个看看,感觉这个也好那个也好,于是这个也想看,那个也想看,导致的最终结果就是,视频教程倒是收集了不少,可是没有一个真正的看完过,你说,你是不是就是这样的?(此段话太过属实!)

其实这就是学习技术的一大禁忌,它会严重的欺骗你,让你觉得自己学的很多,实则不仅学的很少,而且还拖慢了你的提升的进度!我告诉你啊,关于视频教程,找一套差不多的就行,就这市面上流传的一些培训班的视频教程,其实都大差不差,只要不是年久失修的那种都行,要知道这就是培训班的啊,所以用来搭建知识框架很合适,找一套就行了,多了没任何好处,现在听我的,看看你收藏的资料里面是不是有好几套同类型的视频教程,听我的,留一套,其他的都删除吧!

记住,只留一套用来搭建知识框架,只留一套,一套,就一套。

第二种:搜索相关知识或路径,自我组织知识框架

这个方式其实要求就比较高了,这要求你要有一定的搜索能力和组织能力,这个方式的核心就是自己去搜索所需要学习的知识点,然后整理组合,然后组织成一个知识框架。

这样说你可能不理解,我举一个例子吧,比如说我们学习Android,如果是按照看视频的方式搭建知识框架,那我们只需要找一套视频教程,然后从前往后看,根据所讲建立相应的文件夹就可以形成我们的知识框架。

但是第二种方式不是这样的,因为没有了视频教程作为参考,我们就需要自己去搜索,比如去搜索“学习Android应该掌握哪些知识点?”,“Android需要学习什么”,“Android的学习路径是什么”,然后你就会得到很多的答案,就会有很多人告诉你先学什么,再学什么等,然后多找几个答案,你就会得出一个学习路线,然后按照这个路线建立相应的文件夹,之后再按照文件夹的顺序去逐个学习,可以找单独的视频教程看,也可以上网搜系列博客来学习,这个就自由的多了。

如果你觉得网上搜索很费劲的话,我可以分享你一套字节跳动内部传送的Android进阶指南)

1.高级UI,自定义View

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

2.NDK模块开发

时至今日,短视频App可谓是如日中天,一片兴兴向荣。随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%。

内容主要涉及以下几个方面:

  • NDK 模块开发

  • JNI 模块

  • Native 开发工具

  • Linux 编程

  • 底层图片处理

  • 音视频开发

  • 机器学习

3.数据结构与算法

为什么要研究数据结构?

这是因为所有的程序本质上是对数据进行处理,如何高效的处理数据,这依赖于数据本身的结构(如类型(整型、浮点型等)、维数、是否为复杂类型(结构体类型、类类型)等)以及数据之间的逻辑关系(线性、非线性等)。

数据结构离不开算法,设计好的数据结构就是为了让算法顺利方便的实施。

4.Java进阶与内核原理

Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

百分之百,大大小小所有公司,面试必问Java相关。

内容主要涉及以下几个方面:

  • HashMap

  • ArrayList

  • LinkedList

  • Hashset源码分析

  • 内存模型

  • 垃圾回收算法( JVM )

  • 垃圾回收机制和调用 System.gc()的区别

  • 类加载过程

  • 反射

  • 多线程和线程池

  • 设计模式

  • Java的泛型 等等.......

5.Flutter技术进阶

2019 年无疑是 Flutter 技术如火如荼发展的一年。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

本篇知识要点:

1、Flutter跨平台开发概述 2、Windows中Flutter开发环境搭建 3、编写你的第一个Flutter APP 4、Flutter Dart语言系统入门

6.360度全方面性能调优

随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化

  • 布局检测与优化

  • 内存优化

  • 耗电优化

  • 网络传输与数据储存优化

  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git

  • 自动化构建系统Gradle

4、项目实战

  • 启动速度

  • 流畅度

  • 抖音在APK包大小资源优化的实践

  • 优酷响应式布局技术全解析

  • 网络优化

  • 手机淘宝双十一性能优化项目揭秘

  • 高德APP全链路源码依赖分析

  • 彻底干掉OOM的实战经验分享

  • 微信Android终端内存优化实践

7.Framework精编内核解析

众所周知,Android是一个基于Linux实现的操作系统。但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别。

所以Android也需要运行环境,需要Linux内核在启动完成后加载Android Framework运行所需要的资源。当Framework完成初始化后才能继续启动相应的APK应用程序。

主要内容包含:

  • 深入解析Binder

  • 深入解析Handler

  • Dalvik VM 进程系统

  • 深入解析 WMS

  • PackagerManagerService

至此,这就是第二种搭建知识框架的方式了!

然后我必须强调几点:

  1. 这个搭建知识框架可不是说你整理好要学习的知识顺序,然后建立相应的文件夹就行了,这所包含的知识你是要真的去学的!

  2. 学习的时候你一定要记笔记,一定要记笔记,这个很重要

  3. 最终你的知识框架应该是一个完善的层级文件夹,每个文件夹下有相应知识的学习笔记

这样你的知识框架才算真正的搭建完成!至此,你向Android架构师迈出了最关键的一步。

有了自己的知识框架一定可以在面试中游刃有余了,最后祝大家面试顺利,都能顺利拿到满意的offer!

本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

推荐阅读更多精彩内容