本文共 6055 字,大约阅读时间需要 20 分钟。
很多人说Android开发前景越来越差了 我觉得这个回答是片面的
首先Android应用开发前景差是在最近两年出现的,也就是从2018开始,从那时起移动端的程序员已经慢慢出现供大于求的局面,本人作为移动端开发,深知这一点。
然而也必须说明一点,不论是Android开发还是iOS开发,虽然都出现了相关的程序员供大于求的情况,但市场仍然是有需求的,特别是对资深的开发人员及拥有相关底层开发知识的应用程序员市场及发展还是很多的;这里所讲的就业难都是相对于初级开发人员。
为什么会在18年出现应用端就业难?这是由于在前几年App风盛行,那几年只要是个和互联网的公司要是没个自己的App那都不好意思叫互联网公司,所以一般的互联网公司成立之初就会着手开发自己的App,不管是否是刚需,但市场终究是严峻的;App虽然好,能快速开展本公司的业务,但App的运营成本还是很高的,一个App在早期就开发团队来说一般都是需要至少Android开发一人,iOS开发一人,后台开发2人以上,还有UI及产品等等,当然最主要的问题是一般的公司对于这种模式都会面临回报周期长的问题,App开发完了还面临着推广的问题,市场抢占不了,也许之前的都会付之东流。于是在早期很多学校特别是培训机构就针对市场推出了应用端的培训课程,短到三个月长到半年的课程,于是乎每一个月都会有成千上万的应用端走向市场,所以时间一长,市场慢慢趋于稳定。应用端的人员慢慢就变得供大于求了,这也是慢慢出现应用端求职难的问题了。
以上说的是其中一方面,成本高和其他低成本,低运营的技术相继出现也是应用端求职难现象的助推手。
这里主要讲下2016年出现的小程序对于App的冲击,原生App有着开发周期长,运营成本高及回报周期长的特点,所以近年来很多公司都慢慢削去了应用端从而将资金放在其他部分,直到小程序的出现,开发成本一下就可以降下不少,为什么呢,因为小程序的开发语言可以由前端的开发人员承担,而且开发一个小程序不需要维护两套代码也就是不需要像原生App一样,需要Andoid端和iOS端,因为小程序是运行在微信中的,所以只要开发人员维护一套代码就够了,这大大的降低了前期的开发成本,其他细节在这就不细讲了,总之小程序的出现不同程度上更加冲击了应用端的竞争市场,从而也使得应用端就业竞争更加激烈。
当然市场还是需要应用端的人才的,这里所说的人才指的是那些会顺应技术发展和时代的有着不断学习力的开发人员,对于那些初级的程序员市场终究对于他们是残酷的,所以提升自己的竞争力在任何职业任何时候都是非常重要的,只有这样才不会被市场所抛弃。
就先写到这,手机码字很痛苦,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我 我会定期分享一些关于Android进阶方面的知识,也会分享一下最新的面试题~
Java&Android 基础知识梳理(0) - Java 基础知识大纲
Java&Android 基础知识梳理(1) - 注解 Java&Android 基础知识梳理(2) - 序列化 Java&Android 基础知识梳理(3) - 内存区域 Java&Android 基础知识梳理(4) - 垃圾收集器与内存分配策略 Java&Android 基础知识梳理(5) - 类加载&对象实例化 Java&Android 基础知识梳理(6) - 字节输入输出流 Java&Android 基础知识梳理(7) - Android 虚拟机 Java&Android 基础知识梳理(8) - 容器类 Java&Android 基础知识梳理(9) - LruCache 源码解析 Java&Android 基础知识梳理(10) - SparseArray 源码解析 Java&Android 基础知识梳理(11) - 浅拷贝 Vs 深拷贝 Java&Android 基础知识梳理(12) - 泛型 Java&Android 基础知识梳理(13) - 反射Activity 知识梳理(1) - Activity 生命周期
Activity 知识梳理(2) - Activity 栈 Activity 知识梳理(3) - Activity 状态保存和恢复Fragment 知识梳理(1) - Fragement 源码解析
Fragment 知识梳理(2) - Fragment 状态保存和恢复 Fragment 知识梳理(3) - FragmentPagerAdapter 和 FragmentStatePagerAdapter 解析 Fragment 知识梳理(4) - FragmentPagerAdapter 和 FragmentStatePagerAdapter 的数据更新问题RecyclerView 知识梳理(1) - 综述
RecyclerView 知识梳理(2) - Adapter RecyclerView 知识梳理(3) - LayoutManager RecyclerView 知识梳理(4) - ItemDecoration RecyclerView 知识梳理(5) - ItemTouchHelperLoader 知识梳理(1) - LoaderManager 初探
Loader 知识梳理(2) - initLoader 和 restartLoader的区别 Loader 知识梳理(3) - 自定义 LoaderAndroid 异步任务知识梳理(1) - AsyncTask 解析
Android 异步任务知识梳理(2) - HandlerThread 解析 Android 异步任务知识梳理(3) - AsyncQueryHandler 解析Android 数据存储知识梳理(1) - SQLiteOpenHelper 源码解析
Android 数据存储知识梳理(2) - Android存储目录 Android 数据存储知识梳理(3) - SharedPreference 源码解析 Android 数据存储知识梳理(4) - 数据库升级操作的处理策略Android 状态栏知识点总结
Broadcast 知识梳理(1) - BroadcastReceiver 基本概念
Service 知识梳理(1) - Service 问题整理
Android 版本适配问题
Retrofit 知识梳理(1) - 流程分析
Retrofit 知识梳理(2) - Retrofit 动态代理内部实现OkHttp 知识梳理(1) - OkHttp 源码解析之入门
OkHttp 知识梳理(2) - OkHttp 源码解析之异步请求 & 线程调度 OkHttp 知识梳理(3) - OkHttp 之缓存基础 OkHttp 知识梳理(4) - OkHttp 之缓存源码解析Volley 知识梳理 - Volley 源码解析
Glide 知识梳理(1) - 基本用法
Glide 知识梳理(2) - 自定义Target Glide 知识梳理(3) - 自定义transform Glide 知识梳理(4) - 自定义animate Glide 知识梳理(5) - 自定义GlideModule Glide 知识梳理(6) - Glide 源码解析之流程剖析RxJava 知识梳理(1) - RxJava 解析
RxJava 知识梳理(2) - RxJava2 操作符实践 RxJava 知识梳理(3) - RxJava2 基础知识小结RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通知 UI 更新
RxJava2 实战知识梳理(2) - 计算一段时间内数据的平均值 RxJava2 实战知识梳理(3) - 优化搜索联想功能 RxJava2 实战知识梳理(4) - 结合 Retrofit 请求新闻资讯 RxJava2 实战知识梳理(5) - 简单及进阶的轮询操作 RxJava2 实战知识梳理(6) - 基于错误类型的重试请求 RxJava2 实战知识梳理(7) - 基于 combineLatest 实现的输入表单验证 RxJava2 实战知识梳理(8) - 使用 publish + merge 优化先加载缓存,再读取网络数据的请求过程 RxJava2 实战知识梳理(9) - 使用 timer/interval/delay 实现任务调度 RxJava2 实战知识梳理(10) - 屏幕旋转导致 Activity 重建时恢复任务 RxJava2 实战知识梳理(11) - 检测网络状态并自动重试请求 RxJava2 实战知识梳理(12) - 实战讲解 publish & replay & share & refCount & autoConnect RxJava2 实战知识梳理(13) - 如何使得错误发生时不自动停止订阅关系 RxJava2 实战知识梳理(14) - 在 token 过期时,刷新过期 token 并重新发起请求 RxJava2 实战知识梳理(15) - 实现一个简单的 MVP + RxJava + Retrofit 应用Dagger2 知识梳理(1) - Dagger2 依赖注入的两种方式
Dagger2 知识梳理(2) - @Qulifier 和 @Named 解决依赖注入迷失 Dagger2 知识梳理(3) - 使用 dependencies 和 @SubComponent 完成依赖注入 Dagger2 知识梳理(4) - @Scope 注解的使用面试算法知识梳理(1) - 排序算法
面试算法知识梳理(2) - 字符串算法第一部分 面试算法知识梳理(3) - 字符串算法第二部分 面试算法知识梳理(4) - 数组第一部分 面试算法知识梳理(5) - 数组第二部分 面试算法知识梳理(6) - 数组第三部分 面试算法知识梳理(7) - 数组第四部分 面试算法知识梳理(8) - 二分查找算法及其变型 面试算法知识梳理(9) - 链表算法第一部分 面试算法知识梳理(10) - 二叉查找树 面试算法知识梳理(11) - 二叉树相关算法第一部分 面试算法知识梳理(12) - 二叉树算法第二部分 面试算法知识梳理(13) - 二叉树算法第三部分 面试算法知识梳理(14) - 数字算法Kotlin 知识梳理(1) - Kotlin 基础
Kotlin 知识梳理(2) - 函数的定义与调用 Kotlin 知识梳理(3) - 类、对象和接口 Kotlin 知识梳理(4) - 数据类、类委托 及 object 关键字 Kotlin 知识梳理(5) - lambda 表达式和成员引用 Kotlin 知识梳理(6) - Kotlin 的可空性 Kotlin 知识梳理(7) - Kotlin 的类型系统 Kotlin 知识梳理(8) - 运算符重载及其他约定 Kotlin 知识梳理(9) - 委托属性 Kotlin 知识梳理(10) - 高阶函数:Lambda 作为形参或返回值 Kotlin 知识梳理(11) - 内联函数 Kotlin 知识梳理(12) - 泛型类型参数 Kotlin 知识梳理(13) - 运行时的泛型多线程知识梳理(1) - 并发编程的艺术笔记
多线程知识梳理(2) - synchronized 三部曲之基本使用 多线程知识梳理(3) - synchronized 三部曲之锁优化 多线程知识梳理(4) - synchronized 三部曲之等待/通知模型 多线程知识梳理(5) - 线程池四部曲之 Executor 框架 多线程知识梳理(6) - 线程池四部曲之 ThreadPoolExecutor 多线程知识梳理(7) - ConcurrentHashMap 实现原理 多线程知识梳理(8) - volatile 关键字 多线程知识梳理(9) - ThreadLocal 多线程知识梳理(10) - 死锁的概念 多线程知识梳理(11) - 队列同步器实现原理 & 应用 多线程知识梳理(12) - ReentrantLock 解析 多线程知识梳理(13) - ReentrantReadWriteLock 原理其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
以上分享七大模块整套学习资料均免费分享,需要的小伙伴,我已经上传到石墨文档了,大家自取就可以了。白嫖可以,别忘了给我点个关注哈。
当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。这也是我这些年来养成的习惯,一定要学会把好的东西,归纳整理,然后系统的消化吸收,这样才能极大的提高学习效率和成长进阶。碎片、零散化的东西,我觉得最没有价值的。就好比你给我一张扑克牌,我只会觉得它是一张废纸,但如果你给我一副扑克牌,它便有了它的价值。这和我们收集资料就要收集那些系统化的,是一个道理。
如果你需要,我把他放在GitHub了,无偿分享的。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)[外链图片转存中…(img-Sy7fshWg-1616934431609)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
转载地址:http://pgati.baihongyu.com/