导语

Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的。只能通过一点点的学习和积累把这块的知识串联积累起来。

音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。

要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术, 流媒体协议,ffmpeg这些都是音视频开发必备技能,而且OpenCV/OpenGl/这些又是图像处理必备知识,这些都在文章里面有原理级的实战项目。

Java相关

Java基础

  • HashMap1.7和1.8的实现原理
  • final关键字,为什么匿名内部类使用局部引用要用final

Java多线程

  • 线程池的使用和原理
  • 锁机制:synchronized、Lock
  • volatile关键字
  • ThreadLocal原理
  • JVM
  • Java内存结构
  • Java垃圾回收机制
  • Java类加载过程

Android相关

  • Android基础
  • Handler通信机制
  • 跨进程通信方式
  • Activity启动模式
  • 内存优化、布局优化
  • View的绘制流程
  • Android事件分发机制
  • 动画的分类及其原理
  • MVC、MVP和MVVM模式
  • SparseArray原理

Android开源框架

  • Android网络库:Volley、OkHttp和Retrofit的使用、原理和对比
  • Android图片库:Glide和Picasso的使用、原理和对比
  • EventBus的使用和原理
  • RxJava的使用和原理
  • Router的使用和原理

网络基础

  • HTTP相关:包括HTTP2.0、HTTPS等
  • TCP相关:三次握手、四次挥手等

设计模式

  • 单例模式
  • 代理模式:静态代理和动态代理
  • 观察者模式

这些基础知识一方面大家可以直接阅读源码,一方面可以去网上搜索相关文章去学习,我这里也做了一些整理,参看文集Android开发者必会,遇到好的文章我还会收集,欢迎大家关注。

在这个文集里我收集了大部分Android开发者要会的东西,大部分文章来自于Carson_Ho,真的很感谢这位大佬,他的文章逻辑很清楚,可以学到很多东西,真的给我带来很大帮助。

另外,腾讯面试真的很喜欢问原理,而且问得比较细,可能我面的岗位要求比较资深,一面就挂了。。。以后还是要加强对原理的研究。

2.1.4 算法

问完基础就可以写算法了,通过我的面试经历来看,算法的难度不是很大,基本刷过《剑指Offer》就足以应对面试了。

大家刷《剑指Offer》的时候,每道题一定要自己先做一遍,这些题基本牛客网上都有,大家可以直接在那上面敲代码。做完之后看看书上的解题思路,如果发现自己的方法不是很好,可以按照书上的思路自己实现一遍,再和书上的代码对比一下,这样印象才深刻。

记住,我们刷《剑指Offer》并不是去记每道题,而是记每种解题的思路,自己有个总结,这样以后在遇到没见过的题目时,才会应对自如。

我在准备的过程中已经把《剑指Offer》所有的题目都用Java实现了一遍,大家可以参考剑指Offer Java版官方题解汇总。

新的开始

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。