zoukankan      html  css  js  c++  java
  • 秋招斩获OPPO意向书,方向是搞 Android Framework,一点顾虑让我选择了放弃。

    近日看到网友发帖询问,自己拿到了秋招OPPO的意向书,学java后端的,结果却拿到了Android相关的意向书,并最终选择了拒绝offer!

    本人是应届本科生,目前秋招拿到了OPPO的意向书,方向是搞 Android Framework 的,
    不过说来惭愧,本来学的 Java 后端,结果中大厂能给的面试机会却是 Android/C++后台 /大数据方向,感觉 Java 后台竞争过大,不打算接着找了,
    就问问 Android 开发在以后是否有可观的发展空间(面向技术+薪资+未来需求量+万一干不动好不好转型),还不错的话就这么结束秋招
    (表示对 Android 开发不太了解,也不知道 Framework 具体是干什么的,但我除了前端啥都可以学)

    有很多网友建议还是老生常谈,Android开发前景凉凉。下面我们来看看网友结合自身的一些看法提供的建议。

    目前市场上原生 Android 留给新手的坑不多,市面上大部分都是平台级产品,招肯定都是招有工作经验 hold 住的,而且或多或少涉及 NDK、OpenGL、ffmpeg 这些东西,外包项目出于开发成本和跨平台的考虑用 Hybrid、RN、Flutter 的又比较多,需要你 Android、iOS 都有一定经验才 hold 住,否则遇到兼容问题你只能头破血流。

    现在做Android,50 年入国军。

    将来换工作,Framework 可能比应用层更不好找。

    当然这些都是大家各抒己见,发表自己的看法,无论怎么唱衰android开发前景或者Framework,但Android中高端岗位依然缺人。

    此外framework 开发虽然比较偏底层,圈子窄,但是能掌握一些原理的东西,可以触类旁通,往应用层发展也可以,接下来我们看看framework知识有多重要。举几个栗子,你或许就能清楚了。

    Android Framework 的知识有多重要,广泛的应用在各个领域。像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……

    另外 Framework 作为 Android 框架层,为 App 提供了众多 API 去调用 ,但是很多机制都是 Framework 包装好了给 App 来用的,如果不知道这些机制的原理,那么很难去在这基础上做优化。

    举个例子,如果你了解 Android App 的启动机制,优化启动速度的时候会更得心应手:定制什么样的 StartingWindow;什么时候可以拿到图片的宽高;DelayLoad 怎么做才会更合适;Service 什么时候启动可以不影响启动速度;Activity onResume 回调的时候真的可见了么?Redex 为什么会加快应用启动速度?

    再比如我们经常说的 Handler,MessageQueue,Looper。看源码你就可以更好的理解那些概念:ThreadLocal 做什么的;Thread 和 Handler 的关系;为什么不能在子线程更新 UI?

    还有很多栗子,这里就不一一论述学习Android Framework的重要性了。

    很多人说客户端已经饱和了,但是我们行内的人看到的是中高级开发仍然是刚需,那些初级或者连初级都不如的甚至是外行当然觉得这行走不下去了,程序员的一个刚需技能就是学习,有学习能力做哪个领域的程序员都可以。移动端也曾出现过风口,别人说现在的风口是前端,但是你能说保证前端会一直在风口吗?我表示怀疑,所以打好基础来应对任何变化才是正路。

    如何学习Android Framework

    既然Framework这么重要,那我们该如何学习呢?

    关于如何学习Android Framework开发知识,最近小编有幸在字节跳动总监手里扒到这份Android framework高级开发笔记,部分知识章节发布到了在知乎上竟然1000+点赞,今天就拿出来分享给大家。

    本笔记主要讲解了Framework的主要模块:

    第一章: 深入解析Binder
    Binder机制作为进程间通信的一种手段,基本上贯穿了andorid框架层的全部。所以首先必须要搞懂的Android Binder的基本通信机制。
    本章知识点

    • Binder 系列—开篇
    • Binder Driver 初探
    • Binder Driver 再探
    • Binder 启动 ServiceManager
    • 获取 ServiceManager
    • 注册服务(addService)
    • 获取服务(getService)
    • Framework 层分析
    • 如何使用 Binder
    • 如何使用 AIDL
    • Binder 总结
    • Binder 面试题全解析

    第二章: 深入解析Handler
    相信大家都有这样的感受:网上分析 Handler 机制原理的文章那么多, 为啥还要画蛇添足整理这份笔记呢?不是说前人们写的文章不好,我就是觉得他们写的不细, 有些点不讲清楚,逻辑很难通顺的,每次我学个什么东西时遇到这种情况都贼难受。

    本章先宏观理论分析与 Message 源码分析,再到MessageQueue 的源码分析,Looper 的源码分析,handler 的源码分析,Handler 机制实现原理总结。最后还整理Handler 所有面试题大全解析。

    Handler这章内容很长,但思路是循序渐进的,如果你能坚持读完我相信肯定不会让你失望。

    第三章: Dalvik VM 进程系统

    Andorid系统启动、init 进程、Zygote、SystemServer启动流程、 应用程序的创建使用,Activity的创建、销毁 Handler和Looper。

    第四章深入解析 WMS

    窗口管理框架 系统动画框架 View的工作原理。

    第五块 PackagerManagerService

    包管理服务。 资源管理相关类

    由于篇幅原因,这份纯手写笔记已经被整理成了PDF文档,有需要AndroidFramework开发笔记完整文档的麻烦点赞+评论【1】即可获取资料免费领取方式!

    本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/Android-Alvin/p/13850623.html
Copyright © 2011-2022 走看看