ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

你的技术真的到天花板了吗?架构师必备技能

2021-06-11 21:53:40  阅读:176  来源: 互联网

标签:天花板 掌握 必备 理解 深入 原理 架构师 android


起因

事情是这样的。

4年前毕业那会,呆在公司的短视频项目,做 视频。那会做得比抖音还早,但是由于短视频太烧钱了,项目被公司关掉了。当时需要开发横竖屏直播/异步视频的场景,就研究下了市场上的 app,发现输入弹幕的交互并不友好。最直接的体验就是,微信比绝大部分IM软件在聊天场景下输入法与表情面板频繁切换时表现得更为平滑,不会给用户很突兀的闪烁感。但我们除了适配竖屏,们还需要兼容横屏/满屏/沉浸等场景。

摸索了一段时间之后,做出来的效果挺不错,比市面上的直播/异步视频播放场景下的输入交互体验都要好。于是写了个记录的 Blog Android -SystemUI的那点事 。主要是将如何设计横竖屏直/点播场景下良好的输入交互。但是文章并没有写完… 留了横屏模式下使用 PopupWindow 来实现的悬念… 本打算继续接着写第二篇。结果一拖,就是三年。

而在这三年里,前后参与开发了十多个项目(我们是流水线生产,老工具人),而涉及到输入交互的模块已经有IM聊天,直播间,异步视频播放页面,信息流评论等等。这些页面从最初使用 Activity 实现到演化成可用 Fragment,Dialog,PopupWindow 代替。所以原来那套技术实现已经不能满足。在寻找外部开源项目/技术博文无果的前提下,慢慢积累了一个库

初级

我对初级研发攻城狮的定义是掌握基础的 android 知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。

需要的技能有:

  1. 掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。
  2. 掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\RelativeLayout\ConstraintLayout等,控件有TextView\ImageView\RecyclerView\ScrollView等。
  3. 对android的资源访问使用有基本了解,了解android针对不同国家、语言、屏幕、API的适配原理。
  4. 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。
  5. 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。
中级

而到达中级就需要付出一些努力了,需要了解更多知识,可以仿照开源库去造轮子练习。中级工程师要能够熟练完成功能研发。

需要的技能有:

  1. 熟悉SOLID基础设计原则,掌握23种设计模式。
  2. 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
  3. 对android架构有基础了解,对apk结构和打包原理有深入了解。
  4. 对于android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
  5. 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。6. 掌握Handler\AsyncTask原理,熟悉多线程开发。
  6. 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
  7. 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等。
  8. 熟悉图片优化常用方法,避免编写内存泄漏的代码。

高级

如果到达中级,那么恭喜你已经可以应付大部分情况了。但要能更进一步,就需要深入理解android系统的运行原理,达到融会贯通,可以作为 android 端上的架构师。

  1. 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
  2. 对android运行环境有深入理解,理解android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
  3. 掌握热修复原理,各大厂商方案的优缺点。
  4. 对于android事件分发有深入理解,重点掌握触摸事件机制。
  5. 深入理解android绘制原理,理解VSYNC和surface机制和窗口原理。
  6. 深入理解android动画原理,包括补间动画和属性动画。
  7. 对于android安全机制有基本认知,理解android安全原理。
  8. 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。
  9. 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
  10. 对新技术敏感,理解掌握下一代架构dynamic feature等。

至此,android 端研发你已经炉火纯青,能够面对各种情况,达到泰山崩于前而色不变的境界。如果还想继续前进,就需要突破技术栈,从更高架构层次考虑问题。

资深

而到了资深层次,技术栈已经不再是阻碍。能够从更高层面看待问题,理解整个系统的设计,作为系统架构师的角色存在。

  1. 理解微服务、SOA思想,对于后端开发有一定涉猎。
  2. 了解前端研发工具和思想,知道vue react等研发框架。
  3. 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。

最后

我坚信,坚持学习,每天进步一点,滴水穿石,我们离成功都很近!
以下是总结出来的字节经典面试题目,包含:计算机网络,Kotlin,数据结构与算法,Framework源码,微信小程序,NDK音视频开发,计算机网络等。

字节高级Android经典面试题和答案


领取方法:

所有资料免费获取方式:直达领取链接【Android高级架构师】文件夹下载!

料免费获取方式:直达领取链接【Android高级架构师】文件夹下载!**

标签:天花板,掌握,必备,理解,深入,原理,架构师,android
来源: https://blog.51cto.com/u_14932157/2897394

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有