zoukankan      html  css  js  c++  java
  • Android菜鸡脉脉求助:4年开发经验,深圳不到15K,我该怎么办?

    近日逛脉脉,看到这样一则帖子,引起了我的关注。楼主4年开发经验,月薪不到15K,满满的无力感!

    有网友吐槽:
    有后选后,无后选前,无后无前,算法也甜,条件允许,无脑后端,前途无量,预定高管,其次前端,需求频繁,温饱有余,人上人难,算法数据,收入可观,最好硕博,高端饭碗,测试开发,也可一战,随手一点,月入过万,走投无路,回家种田,日出日落,生活美满,鬼迷心窍,来客户端,表面繁荣,实则内卷,工作清闲,面试火箭,不到三年,全部玩完,65在后,绿帽在前,苦口婆心,金玉良言,奉劝诸位,擦亮双眼,有则改之,无则加勉。

    同为android开发,近些年,移动开发市场看似并不乐观,小程序、快应用的崛起,让许多App的增长达到瓶颈,
    尤其是Android开发。

    既然红利期已过,就更需要精炼的技术作为支撑,像现在的中高级招聘要求,除开学历要求、
    Android基础之外,把JNI/NDK/Framework,甚至JS、Server端开发也作为了提升点,是
    全栈方向的雏形。

    其实,安卓开发的从业者会发现,各大公司中高端职位有明显增加,这也意味着安卓开发已进
    入技术赋能业务时代,所以增强个人的竞争实力,也就是Android开发能力很有必要。

    我本人在小厂待过,也去过华为,OPPO等大厂待过,19年5月份进了字节跳动一直到现在。
    所以,也来和大家总结一下,Android开发人员的发展方向。

    第一:横向提升

    基于全栈发展的趋势,在自己擅长领域深入钻研的同时,横向扩展,不要关起门闭门造车。
    而这里说的横向提升就是向前端转型,在除了要在APP会hybrid开发(web、native、前端
    交互、硬件交互)之外,还要会web开发,微信小程序,H5。
    比如服务端开发,我们做Android开发很多时候,要依赖于服务端接口返回数据,可以自己试
    着搭建一下,至少要对服务端的结构理论、服务于服务之间通信、聚合是什么样的流程也是需
    要有所耳闻。

    第二:纵向重塑

    一直以来,做Android开发有这么两个说法,如果是做应用开发,往应用架构方向发展比较合
    适;如果是做系统层开发,往往底层驱动比较合适。

    那具体应该学习什么呢?

    1、移动架构
    架构展示层—MVC、MVP、MVVM、Clean、Flux、AndroidArchitectureComponents;
    架构层—模块化->组件化->插件化->沙盒/双开技术,比如可以双开微信,类似Docker,每
    个页面都是插件,类似Vue.js中每个页面都是组件。

    2、基础进阶
    这个方向可能比较多,比如view、Android动画机制、四大组件工作原理、多媒体技术等等。
    我们平常在工作中碰到的View滑动冲突问题,其实通过掌握View工作机制和Android触摸
    时间体系就能轻易解决掉。
    还有对于需要开发绚丽的动画效果,那么对于视图动画和属性动画一些特性必须有一定的了解。
    Android中的四大组件工作机制其实底层应用的是Binder机制,我们不妨送AIdL这个接口来
    了解Binder。
    JNI和NDK开发也是比较常见的,特别对于一些做NDK项目为主的,这一块开发流程也是需
    要掌握。
    NDK开发也是佣人单位区分应聘者的手段之一,企业不一定要用到,但是可以通过是否掌握
    NDK来筛选人才。

    3、语言学习开发语言
    这里要纠正一下学习语言不是跨行业,比如Kotlin可以说是Android世界的头等公民了,再
    有时下比较火的Python和GO,另外做底层C/C+++是必不可少的。

    4、源码
    要求能看懂并且能够熟悉源码(自己选几个第三方库的也可以),要做到熟悉源码及其实现原
    理,并且要能做到自己二次封装(或自己贡献三方库)三方库。
    这样一来,你就会在维护中慢慢成为这个技术块的专家了,我觉得输出倒逼输入是一个不错的
    学习方式。

    如何阅读源码?

    Android精编源码解析目录

    1.深入解析微信 MMKV 源码
    MMKV 是微信于 2018 年 9 月 20 日开源的一个 K-V 存储库,它与 SharedPreferences 相似,但又在更高的效率下解决了其不支持跨进程读写等弊端。

    2.深入解析阿里巴巴路由框架ARouter 源码
    组件化被越来越多的Android项目采用,而作为组件化的基础——路由也是重中之重。因此详细的分析阿里巴巴开源的路由框架ARouter。从源码的角度解释为什么这样使用,以及避免做什么,让你使用地更加顺滑。

    3.深入解析AsyncTask 源码(一款 Android 内置的异步任务执行库)
    AsyncTask 是 Android SDK 中提供的一个用于执行异步任务的框架,在 Android 兴起的早期被广泛使用,但如今已经被 RxJava、协程等新兴框架所取代。虽然它存在着一些不足,但我们还是可以尝试了解一下它的实现原理以及存在的不足。

    4.深入解析Volley 源码(一款 Google 推出的网络请求框架)
    Volley 是 Google 开发的一款网络请求框架,目前已停止更新。虽然目前大家的关注焦点都在 Retrofit、OkHttp 等第三方网络请求框架,团队的项目中所用的也是这两个框架,但 Volley 中还是有非常多优秀的设计思想值得我们去学习的。

    5.深入解析 Retrofit源码
    在Andrroid开发中,网络请求十分常用,而在Android网络请求库中,Retrofit是当下最热的一个网络请求库。

    ❤️篇幅有限,更详细的内容点击我获取完整版pdf查看❤️

    6.深入解析OkHttp 源码
    OkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。随着OkHttp的不断成熟,越来越多的Android开发者使用OkHttp作为网络框架。

    7.深入解析ButterKnife 源码
    作为 Android开发者,大家肯定都知道大名鼎鼎的butterknife。它大大的提高了开发效率,虽然在很早之前大家就开始使用它了,但是只知道是通过注解的方式实现的,却一直没有仔细的学习下大牛的代码。所以有必要系统的分析下 butterknife的实现原理。

    8.深入解析Okio源码(一套简洁高效的 I/O 库)
    Okio 中有两个非常重要的接口——Sink 以及 Source,它们都继承了 Closeable,其中 Sink 对应了我们原来所使用的 OutputStream,而 Source 则对应了我们原来所使用的 InputStream。
    Okio 的入口就是Okio 类,它是一个工厂类,可以通过它内部的一些 static 方法来创建 Sink、Source 等对象。

    9.深入解析SharedPreferences源码
    SharedPreference 是一个 Android 开发自带的适合保存轻量级数据的 K-V 存储库,它使用了 XML 的方式来存储数据,比如我就经常用它保存一些如用户登录信息等轻量级数据。

    10.深入解析EventBus 源码
    EventBus 是一个 Android 事件发布/订阅框架。
    传统的事件传递方式包括:Handler(消息处理机制,一般用于更新UI)、BroadCastReceiver(广播接收者)、Interface 回调。

    EventBus优点:

    • Activity、Fragment、Service与线程之间的通讯是很常见的,EventBus正好可以屏蔽一些线程切换问题,简单地实现发布订阅功能。
    • 代码简洁,使用简单,并将事件发布和订阅充分解耦。

    11.Android 自定义注解初探
    由于之前用到的很多开源框架如 GreenDao、EventBus、ButterKnife、ARouter 等都使用了自定义注解,因此有必要去研究一下自定义注解。

    12.View 的工作机制源码分析

    13.Android 触摸事件分发机制源码分析

    14.Android 按键事件分发机制源码分析

    15.深入解析 Handler 源码
    Android 的消息机制是基于 Handler 实现的。很多人以为,知道了 Handler、Looper、MessageQueue 就自以为了解了 Handler 的原理。但其实看源码的过程中慢慢就会发现,Handler 的内容可不止这点, 像同步屏障、 Handler 的 native 层的阻塞唤醒机制等等这些知识以前就没有理解清楚。

    16.深入解析Binder源码
    Binder在Android中堪称武林秘籍中的"易筋经",无论是菜鸟还是老鸟都对之神往。Binder架构是进程间相互通信的最常用手段,四大组件的基本功能都是依赖着Binder才能够实现的。
    为了开发者能够使用java与cpp进行binder通信,binder的设计贯穿了framework、native和kernel层,开发者可以轻松的在上层使用binder向其它进程发起数据通信。

    17.深入解析JNI源码
    Android NDK开发中,常常因为效率、安全等原因,需要借助JNI的机制调用到Native环境中进行c/cpp操作。

    18.深入解析Glide源码
    Glide 功能丰富,图片三级缓存、可深度定制(继承AppGlideModule、LibraryGlideModule实现更多功能)、修改网络请求库、支持多种输入输出资源的转换(例如输入Stream,输出bitmap等等)、生命周期的管理。因此很有必要深入解析源码

    19.RxJava原理及如何封装使用
    RxJava可谓是Android开发人员必备技能,重要性就无需赘述了。

    20.LeakCanary核心原理源码解析
    LeakCanary是Android内存泄漏的框架,作为一个“面试常见问题”,它一定有值得学习的地方。

    21.插件化架构定义及插件化架构的实践思路分析
    babel插件、webpack插件、vue-cli插件,为啥这么多的优秀框架都是使用插件系统?插件化架构是什么?带来了什么好处?可以应用到什么场景呢?

    Android精编源码解析

    22.热修复设计之热修复原理
    热修复技术是当下Android开发中比较高级和热门的知识点,是中级开发人员通向高级开发中必须掌握的技能。同时目前Android业内,热修复技术也是百花齐放,各大厂都推出了自己的热修复方案。因此也有必要了解和学习热修复原理。

    ❤️篇幅有限,更详细的内容点击我获取完整版pdf查看❤️

    进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,源码学习针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

  • 相关阅读:
    I.MX6 RGB clock 和 data 重合
    git 一次删除所有删除的文件
    C# ListView 列宽调整 刷新
    I.MX6 dhcpcd 需要指定网卡
    VS 一些用法设置
    Java写的爬虫的基本程序
    jQuery HighchartsTableHTML表格转Highcharts图表插件
    highcharts 去掉打印和链接
    Highcharts选项配置详细说明文档
    Highcharts使用指南
  • 原文地址:https://www.cnblogs.com/Android-Alvin/p/14306316.html
Copyright © 2011-2022 走看看