裁员潮下,市场所需要的Android高级工程师要具备哪些特点?
Posted River_ly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了裁员潮下,市场所需要的Android高级工程师要具备哪些特点?相关的知识,希望对你有一定的参考价值。
高级工程师阶段,无论是编程能力还是业务能力,你都具有了一些不可替代性。你通常负责新技术的预研,重要需求推进以及新项目的技术选型。高级工程师会让老板和同事觉得:非你不可。你更多的时间是在解决别人解决不了的事情,尝试业界还未尝试过的方案以及帮助其他工程师成长。
到了这个阶段编程语言已经不重要了,一切选择都是为了业务更好的发展。同时也要考虑更多代码之外的事情了。
工作了 3-5 年之后,一部分能力强又运气好的同学可以成为高级工程师。也许每个人的发展路径都不同,但这些高级工程师都具有某些相同的特点:
不被某一种编程语言束缚
android 虽然主要使用 Java,但是涉及到 Gradle 插件的开发要用 groovy。音视频相关的底层开发又要懂 C++,如果做 Web 容器需要跟前端同学对接,还要懂 javascript,懂前端。有时候写写脚本还需要懂点 python。所以说到这个阶段,如果还只停留在某一种编程语言的话,往后的路就会越来越难走。
对于 Android 工程师来说 Java 可能已经先入为主,平时可以自己选择的话,肯定优先选择Java,这是很符合人性的。但是要明白的是既然你可以学会 Java,你就能学会其他任何一种编程语言。语言是一种工具,做不同的事情会有特定好用的工具。优秀的工程师平时都会主动关注其他语言的发展和应用,假如真的在工作中会用到,也已经早已上手了。
站在更高维度思考
高级工程师不会只站在代码实现的层面来思考问题,不会因为代码实现比较困难就否定业务需求。优秀的工程师会站在业务层面思考需求,甚至站在产品架构的层面来思考问题。比如遇到新需求的时候,由于对业务的熟悉,可能就会考虑到这个需求是否会跟其他业务有冲突。或者评估需求是否打破了业务规则,这些想法经常会避免很多线上问题的发生。
学会站在更高维度的思考,凡事想的深入一些,并把想法映射到代码实现里。你会发现项目越做越轻松,新的需求对代码的改动也会越来越小,开发效率也就越来越高了。
站在别人的角度思考问题
多站在别人的角度思考问题,不要总把自己的想法看的太重。也不要认为自己总是对的,别着急否定别人,也别太固执己见。同一个需求可能会有很多种方案的解法,你自己坚持的那种不一定就是最好的。尝试站在别人的角度来思考为什么别人会跟自己提出不同的方案?是不是自己的方案更符合自身的利益?是否为了共同目标先让步?平时多想想类似的问题,以后的沟通可能会更顺利。
技术是为了服务业务
高级工程师不会炫技,也不会学出复杂难以维护的代码。懂得技术是用来服务业务的,先将业务再讲技术。不要觉得用了某一个框架无法实现业务要求的功能,就说业务需求不合理。多想想是不是因为自己提前没考虑到未来业务的发展方向,所以选择了错误的框架?
没有业务支撑的技术其实没有任何意义。记得几年前我在一家公司花了很大的精力,对新项目设计了全新的架构,所有框架都是当时最新的,但是我没有考虑团队的整体能力,大家光理解项目架构都花了好几天,开发起来效率也不是很高。最后项目没有成功,全新架构也没有用处了,新项目还是沿用旧项目的架构,就是因为开发效率高。实际证明能快速完成业务开发的代码就是好代码,概念先进又漂亮的代码也许是无用的代码。
但说说容易,不少人不是没有成为高工的想法,而是苦于没有门路,缺乏适合自身的学习路线,缺乏自身的体系化知识结构,就很容易出现面试被吊打、晋升苦无门的情况,或是明明技术足够,拿到的薪资却不尽人意。
这其中最为核心的原因就是知识体系的零散!
由于缺乏具体的学习路线思路指引,导致学习的知识过段时间就全忘了,所学知识不能够串联起来是根本原因,最终就导致掌握的技能不能运用到实际项目当中,晋升、拿高薪便离你越来越远
那这里就给大家分享一套完备的知识体系,整体参照了各家一线大厂高工岗位的招聘要求及岗位技能需求,并且每个具体的知识节点还附带有一整套体系化的学习资料、笔记进行辅助,帮助你把所学的知识点全部串联起来,也可以帮助你在晋升高工的路上起到事半功倍的效果!
如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。
01.Android必备底层技术:
- Java序列化:Serializable原理、Parcelable接口原理、Json、XML
- 注解、泛型与反射:自定义注解、注解的使用、泛型擦除机制、泛型边界、Java方法与Arm指令、Method反射源码、invoke方法执行原理
- 虚拟机:JVM垃圾回收器机制、JVM内存分配策略、Android虚拟机与JVM底层区别、虚拟机底层Odex本地指令缓存机制、虚拟机如何分别加载class与object、虚拟机类加载模型
- 并发:Java线程本质讲解、线程原理、线程通信、UnSafe类、线程池
- 编译时技术:OOP面向切面之AspectJ、字节码手术刀JavaSSit实战、字节码插桩技术(ASM)实战
- 动态代理:动态代理实现原理、动态代理在虚拟机中运行时动态拼接Class字节码分析、ProxyGenerator生成字节码流程
- 高级数据结构与算法:HashMap源码、ArrayList源码、排序算法
- Java IO:Java IO体系、IO文件操作
02.Framework:
- Binder:Linux内存基础、Binder四层源码分析、Binder机制、Binder进程通信原理
- Handler:Loop消息泵机制、Message解析
- Zygote:init进程与Zygote进程、Zygote启动流程、Socket通信模式、APP启动过程
- AMS:ActivityThread源码分析、AMS与ActivityThread通信原理、Activity启动机制
- PMS:PMS源码、APK安装过程分析、PMS对安装包的解析原理
- WMS:PhoneWindow实例化流程、DecorView创建过程、ViewRootImpl渲染机制
03.Android常用组件:
- Activty:Activity管理栈与Activity的启动模式、Activity生命周期源码分析
- Fragment:Fragment生命周期深入详解、Fragment事务管理机制详解、性能优化相关方案
- Service:Service启动模式分析、Service管理与通信方案、Service生命周期底层详解
04.高级UI:
- UI绘制原理:setContentView()方法下到底做了什么、AppCompatActivity与Activity的区别、UI测量、布局、绘制的底层执行流程
- 插件换肤:LayoutInflater加载布局分析、Android资源的加载机制、Resource与AssetManager
- 事件分发机制原理:事件执行U形链与L形链、事件拦截原理
- 属性动画:VSYNC刷新机制、ObjectAnimator与ValueAnimator源码讲解、Android属性动画:插值器与估值器
- RecycleView:布局管理器LayoutManager详解、回收池设计思想、适配器模式原理
- 高阶贝塞尔曲线
05.Jetpack:
- Lifecycle:Lifecycle源码、Lifecycle高阶应用
- ViewModel:ViewModel源码、ViewModel应用技巧
- LiveData:LiveData源码
- Navigation:Navigation源码
- Room:Room源码、Room+LiveData监听数据库数据变更刷新页面原理
- WorkManager内核
- Pagging原理
- DataBinding:单向绑定、双向绑定、如何与RecyclerView的配合使用、底层原理
06.性能优化:
- 启动优化:系统启动原理、Trace工具分析启动卡顿、类重排机制、资源文件重排机制
- 内存优化
- UI渲染优化:UI层级规范及对UI加载的影响、UI卡顿原因及修复、UI绘制、布局、测量原因以及处理方案
- 卡顿优化:造成卡顿的原因分析、内存抖动与GC回收、回收算法
- 耗电优化
- 崩溃优化:项目崩溃异常捕获、优雅的异常处理方案、如何避免异常弹框
- 安全优化:APP加固实现(防反编译,dex加固)、https防抓包机制(数据传输加载,客户端服务器端双向加密校验)
- 网络优化:serializable原理、parcelable接口原理、http与https原理详解、protbuffer网络IO详解、gzip压缩方案
- 大图加载优化:Glide巨图加载机制原理分析、大图多级缓存实现方案
- 多线程并发优化
- 储存优化:Android文件系统-sdcard与内存存储、Shared Preference原理、MMAP内存映射
- 安装包优化:shrinkResources去除无用资源、合理设置多语言、webp实现图片瘦身、合理配置armable-v7的so库、Lint检查工具实践
如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。
07.音视频:
- C/C++:数据类型、数组、内存布局、指针、函数、预处理器、结构体、共用体、容器、类型转换、异常、文件流操作、线程
- H.265/H.265:音视频格式封装原理、编码原理、视频流H264的组装原理切片NAL单元、视频流H264码流分析、切片与宏快,运动矢量、信源编码器、高频滤波、帧间拆分与帧内预测、CTU,PU TU编码结构、DSP芯片解码流程、MediaPlayer与DSP芯片交互机制、投屏架构、MediaProjection与MeidiaCodec交互机制、H265码流交换
- MediaCodec:dsp芯片、编解码器的生命周期、解码器中输入队列与解析队列设计思想、MediaCodec中平缓解码解析、MediaExtractor 多路复用、MediaMuxer合成器、MediaFormat格式
- 音视频剪辑:视频剪辑、音频剪辑、音频合成、音谱显示、视频倒放
- 音视频直播:硬编码、软编码、native实现rtmp推流、摄像头预览帧编码NV21转YUV、视频画面封装拼接Packet包、音频流数据拼接Packet包、RtmpDump实时同步发送音视频数据、MediaProjection、Medicodec编码H264码流、rtmp推流
- OpenGL与音视频解码:OpenGL绘制流程、矩阵、Opencv详解、人脸识别效果实现
- OpenGL特效:CPU与GPU运行机制详解、世界坐标,布局坐标,与FBO坐标系、图像镜像与旋转处理、人脸定位与关键点定位、大眼效果、贴纸效果、美颜效果
- FFmpeg万能播放器:FFmpeg结构体、声音播放原理、Surface的渲染、像素绘制原理与对齐机制、音视频同步原理、视频播放器整体架构
- Webrtc音视频通话:WebRtc服务端环境搭建与Webrtc编译、1v1视频通话实现方案、群聊视频通话实现思路、多对多视频会议实现、1V1音视频通话实现
08.开源框架原理:
- Okhttp
- Retrofit
- RxJava
- Glide
- Hilt
- Dagger2
- EventBus
- 组件化、插件化、热修复等
09.Gradle:
- Groovy语法
- Gradle Android插件配置
- Gradle实践等
10.kotlin:
- Kotlin语法
- 扩展使用
- 进阶使用
- 实践等
11.Flutter:
- Dart语法
- UI
- 进阶使用
- 优化
- 实践等
12.鸿蒙:
- Ability组件
- 分布式任务
- 事件总线
- 鸿蒙线程
- UI自定义控件等
如果需要的话,可以顺手帮我点赞评论一下,直接前往公号:Android开发之家,自行领取。
Android路漫漫,共勉!
以上是关于裁员潮下,市场所需要的Android高级工程师要具备哪些特点?的主要内容,如果未能解决你的问题,请参考以下文章