想要成长为高级开发,掌握更多层面的技术,兼顾深度和广度是毋庸置疑的。
你肯定认为,我要认真努力的学习技术,丰富自己的技术栈,然后就可以成为一个优秀的高级开发了。
但当你真正去学习之后就会发现,技术栈异常庞大,每个技术都很深奥,很难通过自学就深刻领会和掌握,必须结合实践的反馈,才能真正提高自身的技术水平。
除了技术之外,身为高级开发工程师,掌握完整的开发流程,清晰不同架构下的开发规范、技术规范以及架构思维,同样非常重要。
你站在更高的层面看待开发问题,一定比眼里只有 CRUD 的人,思维更明朗,更活跃。
当你具备优秀全面的技能栈,掌握标准化的开发流程,拥有清晰的架构设计思路,那就真的可以说是出类拔萃了。想要拥有这些,必须通过足够体量规模的项目来练手,通过实战验证自己的实力。
事实也正如此,由于公司规模本身的限制,很多工程师根本没有机会去接触高精尖的技术,大部分工作只是堆叠简单的业务逻辑,看不到更广阔的业务场景和需求,更没有亲自动手、验证并提升自己的机会。
当然,你可以选择跳槽去大厂,但是,你怎么向大厂证明,自己有能力来应对那些从没接触过的开发技术或架构难题呢?这似乎成了一个死循环。
作为一个在一线互联网大厂摸爬滚打十多年的技术人,我给你提两点建议:
1.将自身的开发工作做好,提升自己的技术能力,让面试官愿意相信,你具备把事情做好的能力。
2.提前掌握大厂高级开发需要掌握的开发技能和标准化开发流程。即使你现在的工作用不到,但当你万事俱备时,你差的就只是一个机会了。
问题在于:
你想要成为 Android 高级开发吗?
你想提升自己的开发能力吗?
你想进大厂吗?
你想升职加薪吗?
此前,我特地整理了一份《Android开发核心知识点笔记》:
涵盖了十一个板块的知识点:
- Java 知识点
- Android 知识点
- Android 扩展知识点
- 性能优化知识点
- Android 开源库源码分析
- Kotlin知识点
- 设计模式
- Gradle知识点
- 计算机网络基础
- C++知识点
- 常见面试算法题
目前还在利用时间不断更新和优化知识点!
每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图片。
Java知识点汇总
Android应用是由Java语言进行开发的,SDK也是由Java语言编写,所以我们要学习java语言。
另外,虽说kotlin语言得到了Android官方的热推,但是kotlin也是编译成了java语言再运行的。
对于Android来说,只要SDK没有用kotlin重写,那么Java语言是都需要学习的。
而且Android apk的后台服务器程序大概率是java语言构建,所以学习java也是一种必然。
那么Java中哪些东西是我们Android程序员需要学习的呢?由于Android程序员习惯了 C V 代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像泛型,多线程,反射,JVM,Java IO,注解,序列化等。
- JVM
- Object
- static
- final
- String、StringBuffer、StringBuilder
- 异常处理
- 内部类
- 多态
- 抽象和接口
- 集合框架
- 反射
- 单例
- 线程
- volatile
- synchronized
- Lock
- 引用类型
- 动态代理
- 元注解
Android知识点汇总
基础知识主要是UI这块,要学习如何开发界面,并且不只是学习如何创建布局,而是从原理的角度理解UI底层,学习原理,可以达到的效果是:以后市面上绝大部分的UI特效,各种各样的产品需求都不用指望第三方sdk,,完全可以靠自己的能力写出来。
- Activity
- Fragment
- Service
- BroadcastReceiver
- ContentProvider
- 数据存储
- View
- 进程
- Parcelable 接口
- IPC
- Window / WindowManager
- Bitmap
- 屏幕适配
- Context
- SharedPreferences
- 消息机制
- 线程异步
- RecyclerView 优化
- Webview
Android扩展知识点汇总
扩展部分这里,就涉及了一些较为高级的技术。比方说hook、架构相关知识、NDK……
架构这块我想就不用多说了,不想当架构师的程序员不是好程序员~
像NDK主要是面对音视频开发,比如抖音这种现象级产品,app内播放视频,视频加特效,都可以通过NDK这块的学习完成,另外NDK会涉及C/C++知识,这块在未来,如果涉及到物联网的开发也能用得上,最重要的还是关于音视频的开发,音视频工程师的薪资水平基本比其他岗位高处30%,还有webrtc技术,也是非常值得深挖的。
- ART
- Hook
- Proguard
- 架构
- Jetpack
- NDK 开发
- 类加载器
性能优化知识点汇总
性能优化是针对整个app开发而言的。一个好的项目被开发出来,不单是产品要好,开发者也需要知道,为什么我开发的这个app能够在绝大多数的手机运行,为什么用户在使用的时候绝大部分的手机不会出现bug。我们的apk文件可以优化到很小的,比如你做一个项目,打包之后可能是10m,但是经过优化之后可能就只有8m,甚至更小。
另外,我们做的项目安全性如何?我们凭什么断定我们做出来的app安全性好。这都是进阶路上必须要思考的问题。
- 启动优化
- 存储优化
- 网络优化
- 耗电优化
- 多线程并发优化
- 安装包优化
篇幅有限,无法一个一个的展示(这些知识点均已收集在了这份“Android开发核心知识点笔记”里),觉得有需要的读者朋友们,可以直接点这获取
Android开源库源码分析
相信大家经常逛各大博客的话就会看到,很多大牛都会建议大家多读源码,技术的显著提升恰恰就是从看源码开始的。
- OKHttp
- Retrofit
- Glide
- GreenDao
- RxJava
- LeakCanary
- ButterKnife
- Dagger 2
- EventBus
Kotlin知识点汇总
- 对象
- 类
- 继承
- 变量
- 常量
- 静态常量
- 定义方法
- 重载方法
- 基本数据类型
- 比较类型
- 转换符
- 字符串比较
- 数组
- 循环
- 角标循环
- 高级循环
- 判断器
- 构造函数
- 类创建
- 私有化 set 方法
- 私有化 get 方法
- 枚举
- 接口
- 匿名内部类
- 内部类
- 内部类访问外部类同名变量
- 抽象类
- 静态变量和方法
- 可变参数
- 泛型
- 构造代码块
- 静态代码块
- 方法代码块
- 可见修饰符
- 无需 findViewById
- Lambda
- 函数变量
- 空安全
- 方法支持添加默认参数
- 类方法扩展
- 运算符重载
- 扩展函数
- 协程
设计模式汇总
- 设计模式分类
- 面向对象六大原则
- 工厂模式
- 单例模式
- 建造者模式
- 原型模式
- 适配器模式
- 观察者模式
- 代理模式
- 责任链模式
- 策略模式
- 备忘录模式
Gradle知识点汇总
- 依赖项配置
计算机网络基础
- 网络体系的分层结构
- HTTP 相关
- TCP/IP
- Socket
C++知识点汇总
- 头文件
- 数据类型
- typedef
- 类型限定符
- 定义常量
- 存储类
- 引用 vs 指针
- struct vs class
- 成员函数
- 析构函数
- 拷贝构造函数
- friend 友元
- inline 内联函数
- 继承类型
- 运算符重载
- 动态内存
- 命名空间
- 预处理器
- 信号
- 线程
- 强制类型转换
- 智能指针
- 内存空间
常见面试算法题汇总
现在很多公司面试都会问到算法,虽然大多不会太难,但如果技术都OK,最后却挂在算法上了,那就太可惜了~所以这块非常有必要看看。
- 排序
- 二叉树
- 链表
- 栈 / 队列
- 二分
- 哈希表
- 堆 / 优先队列
- 二叉搜索树
- 数组 / 双指针
- 贪心
- 字符串处理
- 动态规划
- 矩阵
- 二进制 / 位运算
- 其他
相信以上的这份Android开发核心知识点笔记能够成为你进入BATJMZ等大厂的垫脚石。
目前也还在利用下班时间补充修正,如果你看到有哪里不对的话,还麻烦告诉我一下,我马上去修改~
漫漫开发之路,我们只是其中的一小部分……
只有不断的学习、进阶,才是我们的出路!才跟得上时代的进步!
网友评论