开头
我属于半路出家型程序员。
我的本科专业学的是新媒体,偏向营销策划类,但是我所在的学校只是一个普通的二本,这个专业在学校里还很年轻,发展并没有其他专业成熟,于是就导致课程内容不充实,学生多出来大把的时间。
闲着没事的时候,我喜欢看一些科技前沿的文章,逛B站,无意间接触到了编程,入坑Android,开始了漫长的自学之路。
一方面是出于兴趣,另一方面是因为被程序员优渥的薪资待遇所吸引,于是我一直都在向程序员靠拢。
这一路走来我只能说:痛并快乐着。
为什么NDK越来越重要了?
一是短视频、直播等行业迅猛发展。音视频+社交成为流量新的增长点。近两年,短视频、直播、网络视频等行业不断爆热,其中抖音一骑绝尘,日活已破2.5亿,替代QQ/微信登上19年猪年春晚,成为又一国民级APP。
二是新一轮技术如人工智能、5G、物联网等新技术的融合发展,将不断寻找实用落地点,这在移动为王的年代,80%市场份额的安卓是最大受益者。据运营商消息,2019年下半年,5G手机在国内上市,2020年全面商用,届时音视频将迎来又一波热潮。
而在实际具体应用上,除了上面提到的短视频方向,还有各大视频应用,图像处理、滤镜、裁剪等等骚操作都是需要专业的音视频开发知识才能做出来的。
那么,怎么开始NDK的学习?
我们知道NDK的领域越来越广泛,作为机器学习、AI移动端落地都需要使用C和C++编译的库函数。
举个简单的例子,原来加载图片一般使用Universal-Image-Loader或者Picasso这些,但Facebook做的图片加载库fresco性能秒杀之前的所有图片库,在部分数据上甚至可以达到一个数量级的性能提升,那Facebook是怎么做到的?
它使用了之前图片库没有使用过的匿名共享内存(Ashmem,Anonymous Shared Memory),这部分内存不在Android的GC范围之内,需要自己管理,但通过这种方式可以突破Android分配的堆内存限制,极大的提高效率,对于Ashmem的使用完全是通过C++实现,更别提很多核心算法,多媒体库等等都是用NDK做的。
其实也不止C++,很多时候也要求助于Framework和架构重构。归根到底只想说明一点,如果只是做个普通的Android码农,那Java够用,但如果你的理想比这个还要大一点,C++是你进阶的必备技能。
当然,我们NDK并不好学,啃起C++就想起大学时的美好而难忘的时光。而在996成为惯例的互联网企业,我们也没办法抽出大量时间摸索着学习,试错的成本难以估量,这时候借助一些成功的经验无可厚非。
优秀开源项目:
- ali1024.coding.net/public/P7/Android/git
简介:Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义
- github.com/android
简介:Android官方GitHub开源项目,强烈推荐
最后
针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
的时间来学习。**
[外链图片转存中…(img-goDS4xTV-1648222564764)]