“Android 开发还有什么可以学习的?”近半年来,大家对于职业的未来发展、个人的成进阶都有一些迷茫和焦虑。
为什么会这样呢?放眼现在互联网行业,各大公司已经从争夺用户转为争夺用户时长。而小程序、快应用的崛起,也让许多 App 的增长达到瓶颈。
移动开发的前景似乎并不明朗,再加上竞争激烈以及技术变革放缓,我们感到迷茫、焦虑就不难理解了。但这是不是就意味着移动开发没有前途了呢?
并不是,移动开发不局限于 App 开发,所有新的技术浪潮其实都可以融入到移动开发的体系里,比如 IOT、音视频、边缘计算、VR/AR, 我们要做的,就是打好基础,不断学习新技术,建立完备的知识体系,提升个人能力和价值,以迎接新的挑战。
接下来给大家举例Android开发需要学习的一些技能及知识点:
安卓基础知识
安卓基础知识确实很多,如果日常积累不够的话确实比较头晕,比如我承认我只在 APP 升级的时候搞过一个前台的 Service,但是面试的时候就会问你 Service 生命周期,如何绑定,如何跨进程通讯,如何关闭Service 等等,你肯定不能说"我没用过我不会"。
所以我们就要复习,一来我们可以应付面试,二来我们也可以通过基础知识的积累来提高我们的能力。
主要知识点:
1.Activity 任务栈和 4 种启动模式关联性问题
2.IPC 非常重要,想要达到中级和高级的水平就必须要读懂,跨进程几种方式必须了解
3.Binder 肯定是必问的,当然还有 AIDL
4.自定义 View 的 draw measure layout 过程,事件的分发,拦截,处理,处理滑动冲突的思路,view滑动的几种方式
5.动画的几种实现方式
6.Window 在 Android 里的作用。它和 Activity 和 View 的关系
7.四大组件的工作过程,这个确实有难度,按自己能力钻研吧,也别陷的太深 但是,四大组件的使用方式必须会,Service 的启动和绑定,广播的使用方法,写个简单 ContentProvider 这些都是必须的
8.Looper,Handler,MessageQueue 的关系
9.主线程为什么是主线程,如何开启线程,线程池和安卓常用的四种线程池 他们的特点和使用场景
11.AsyncTask 原理,并发问题,缺点等
12.如何面对大的 bitmap,如何自己设计一个 ImageLoader
13.其实可以扩展为,如何设计一个 okhttp,如何设计一个 retrofit,eventBus 等等
14.其实就考察对开源框架的认识和使用的熟练程度
15.如何避免和处理 Crash 和 ANR 16.优化篇,过度绘制,OOM,内存泄漏,布局优化,MAT, Lint
大厂相关面试题:
Java 基础知识
我是参照的《Thinking in Java》这个书和网上的博文,别的我也没买。网上 Java 的资料非常多,但是确实有很多写的不好,甚至有一些错误的,大家阅读要小心了。
主要知识点:
1.修饰符
2.类 接口 抽象类 匿名内部类 回调机制
3.几种基本类型,长度,边界
4.从 Iterator 到 Collection,再到 Set List Map(必问)
5.从以下几个角度理解学习:用法,具体实现类,线程安全性,底层数据存储结构,某些场景下如何选用?比如 ArrayList 和 LinkedList 如何选用 线程相关(必问)
6.锁机制 synchronize 用法
7.实现一个死锁
8.同步,生产者消费者模型
9.Thread 中的几个常用方法 比如问你 sleep 和 wait 区别
10.线程安全
11.JVM 了解一些,GC 了解一下,堆和栈的区别等
12.静态代理,动态代理 反射
13.设计模式 单例模式(要会写),工厂模式,抽象工厂,观察者模式等
大厂相关面试题:
算法和数据结构
主要知识点:
1.数组,链表,队列,栈,图
2.不会直接问你,会让你找到用处,比如Activity任务栈
3.算法
4.基本几种排序复杂度和思路
5.几种查找复杂度和思路
6.串的处理
大厂相关面试题:
推荐 LeetCode 刷题和读《剑指offer》。
性能优化
主要内容:
1.ANR
2.内存溢出
3.内存抖动
4.内存泄漏
5.UI卡顿
6.冷启动优化等方面
大厂相关面试题:
在学习之路上,每个人都会走一些弯路,犯一些错误,前世之事后事之师,真心希望Android初学者不要重蹈我的覆辙。
1、在外包待的时间太久,外包学习投入的时间过多,技术上没什么长进
2、没有早一点接触互联网技术
3、没有早一点拥抱开源,Github上有那么多牛逼的代码,多读,多写,然后就拼天赋吧。
4、不要妄自菲薄,技术上不自信,认为自己写不了牛逼的代码
5、不要闭门造车,多关注最新技术,提高眼界
6、尽量不要接收二手知识,比如能看英文就不要看翻译版了
7、不要惧怕大块头的书,像 thinking in Java,算法导论,一天掌握一点,一年也差不多掌握了8 不要过早地做管理,先写个五年代码再说
8、Java基础一定要扎实,虽然说并不需要首先精通Java才能上手安卓,但良好的Java功底确实会有很大的帮助。
有句话叫做基础不牢,地动山摇,大家可以制定一个安卓学习计划:
第一步:书籍
我之前入手的第一本书就是android疯狂讲义,七八百页,其实我感觉我们不用全部都学,比如说动画、视频、传感器先可以不学,安卓疯狂讲义的有些设计不是很合理,把很多难的内容放到了前面。
没有做到从易到难,我们学的过程中可以先把一章整体看一下,然后再安排学习的顺序,把里面的每一个例子都自己敲一遍。因为我上下班坐公交车时间很长因此我都是在公交车上看书,这样一个月过去了,疯狂讲义的主要部分学了一遍。
第二步:视频
我看过收集的视频也很多,每天看7个,中间也有耽搁的这样过去了一个月,所有的看了一遍,主要的,难懂的看了两到三遍。
第三步:高仿项目
做完前两步,自己感觉水平应该可以了,于是就想去独立开发一个app,但是还是不知道怎么下手,于是从网上找了几个开源项目,开始模仿去做,有仿新浪微博,仿美团,闹钟,这样过去了一个月,终于有些底气了。
第四步:android官网
要想去安卓官网还需要,这个大家都懂,首先官网上面的api guide看一下,最后都能仿着写一遍代码,然后再把training上的几个例子也仿着写一遍。这样学上面的例子用了一个月。
第五步:独立开发app
开始设想独立开发一款app。
Android学籍推荐
我 Android 开发快八年了,做为一名过来人的角度,给大家推荐几本书籍。
Android 开发,目前主要是以 java/ kotlin 语言为主,学习 Android 之前,最好要先学习 java 语言。对 java 语法,基本数据结构有一定的了解。
Java
1.《Effectve Java》
2.《Java编程思想》
3.《深入理解Java虚拟机》
Android
1.入门的话,主要推荐郭霖的《第一行代码》书籍,写得通俗易懂。
2.进阶推荐两本书籍《Android内核剖析》,《Android开发艺术探索》
C++
学习完 Android 的话,想进阶的话,还要学习一下 C++,没错,现在很多疑难问题都是 native 层的,只有学习 C++,才能成为一名真正的高手。
1.《深度探索C++对象模型》
2.《UNIX环境高级编程 第3版》
做得越多不见得越厉害,而是对自己的知识体系做总结。
我认为学习的阶段应该是这样的:
学习新知识--->灵活应用--->自我总结--->创造新知识
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!
- Android学习路线图
首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
- 模块化学习资源
接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。
《Android汇总复习资料—Java》
《Android汇总复习资料—Android》
《Android汇总复习资料—Android扩展》
《Android汇总复习资料—Kotlin》
《Android汇总复习资料—Flutter》
《Android汇总复习资料—算法》
除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~
①看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。
②读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
③面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
④2020大厂面试高频知识点