写点什么

Android 开发者出路在哪,附大厂真题面经

用户头像
极客开源
关注
发布于: 刚刚

最近很多人说,Android 越来越不好找工作了,学习 NDK 开发会不会好点,今天就聊聊这个问题。是否应该选择学 NDK?

1.哪些场景下要用到 NDK 开发?

跨平台的库,如 FFmpeg, skip,weex,加固,防逆向签名校验图片压缩音视频解码 OpenGL ES 高级特效热修复 andfix 人脸识别 face++加密算法微信 apk 中的 so 文件



手机淘宝 apk 中 so 文件


2.NDK 开发,和 JNI 开发有什么区别?

JNI 是 JAVA NATIVE INTERFACE, JNI 只是一个中间层。JNI 中要用 c/c++作具体实现。达到 c/c++与 Java 通信的作用。不一定要编译成 so 文件,才叫 JNI 开发。也不是 Android 上才有,Java 程序员一样可以做 JNI,不会写 Activity 也可以。Java 最简单 Main 函数,可以声明一个 Native 方法,在 VS 中,写一段 c/c++代码,按照 JNI 规范。编译成 dll 文件,放到 Java 工程中,一样可以执行。而 so 是只是不同平台动态链接库的产物,因为 Android 是基于 linux 平台。


?

3.有没有必要搞 NDK 开发?

如果你的业务和 NDK 开发应用场景不是很有关联,可以不用搞,也是合理的。毕竟 Java 及 Android 中还有很多你不会玩的。如插件化(纯 Java 可以搞),如性能优化,如高级自定义控件,如源码学习等等。光这些够折腾好久了。把这些玩会了,你也是专家了。


当然,你如果业务有关联。如 Camera 美颜,滤镜,音视频等,如果要进阶,NDK 不用多说,肯定要会玩的。NDK 本质上玩的是 c/c++,所以就需要好好学习 c/c++,如虚函数,虚析构,虚基类,智能指针,宏函数,宏定义,结构体,共用体,运算符重载,指针,这些基本的 c++相关。面向对象在任何语言中都受用。


?

4.如果要学,怎么学?

1.Google 官方 NDK2.老外有一本:Android NDK Beginner's Guide3.网上的 blog 最后看系统的,要么就不看,不然东写一篇,西写一篇,没有系统的线路,对初学者帮助意义不大。4.JNI Specification.chm 这个手册,很方便查询 5.The Java? Native Interface Programmer’s Guide and Specification


把 JNI 熟悉之后,然后写一些小案例,达到熟悉程度,可以在看一些与 C/C++进阶的书,如,Effective c++,深入理解 c++对象内存模型,STL 源码剖析,这些书之类。

最后

最后为了帮助大家深刻理解 Android 相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的 24 套腾讯、字节跳动、阿里、百度 2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。


还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。


Android 基础知识点


Java 基础知识点


Android 源码相关分析


常见的一些原理性问题



希望大家在今年一切顺利,进到自己想进的公司,共勉!


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Android开发者出路在哪,附大厂真题面经