最近又看了下脉脉,出现了不少劝退客户端的声音。比如
什么东西一旦押韵了,好像都挺有道理的样子。
好奇地搜索一下,的确有些不对劲:
看了几个帖子,总结下来劝退的理由有这么几个:
- 客户端开发在走下坡路,就业市场在缩小
- 前端抢走了很多客户端的活
- (针对客户端+前端)天花板低,很难做到高级别
- 现在客户端面试问的很偏很难,难度很大
客户端的需求在缩小,这确实是一个事实。
移动互联网创业热潮早已经过去,一方面没有那么多新创业公司涌现了,另一方面互联网也有赢家通吃,大厂更大,小厂生存空间越来越窄的苗头。当年知道什么是weak,会写个TableView就能拿个15k的iOS开发offer的好事情已经没有了。
不过,一个市场是买方市场还是卖方市场,从来都是需求和供给两方面决定的。而技术人才的供给,相比需求存在一定的滞后。从一个领域需求火爆,到大批新人学成进入这个领域,中间会有几个月到几年的时间差。可能这个时候需求变化更快,火爆行情已经过去,新进入的人就会面临窘境。比如在移动互联网最火热的2015年很多人去学了iOS开发,然后发生了2015年股灾,地主家也没有余粮,创业公司没有投资人的输血纷纷倒闭,转过年这批iOS新人发现:
但反过来想,客户端开发领域已经经历了这么一轮高开低走,现在没人愿意学了,但市场上的需求,其实并没有消失,很多大厂依然需要客户端。于是就迎来了一轮市场行情的反转,很多大厂不得不想尽办法招揽应届生做客户端,供不应求,招聘时就不得不略微放放水,比往年要求降低一些。这难道不是一种机遇吗?
有人担心即使现在上车了,以后客户端领域路会越走越窄。如第2点所说,前端抢走了很多客户端的活。开发原生客户端需要iOS、Android各开发一个App,成本的确更高。很多公司的业务用小程序就完全能够承载了。
其实手机这个平台有一个很有意思的现象,它没有像桌面平台一样,绝大部分应用都从客户端转向了Web。现在大家用电脑,除了Office三件套、Adobe全家桶这种专业软件,大部分的时间都是在用浏览器。而手机就不同,大家每天在用的是App,移动端浏览器用的并不多。
个人觉得,这种差异主要是因为手机和电脑人机交互的差异。
电脑上信息输入主要靠键盘和鼠标。而手机就丰富多了,触摸屏、摄像头、话筒、还有GPS、气压计、陀螺仪等丰富的传感器。要利用好这些硬件提供的信息,势必需要访问手机操作系统提供的各种API,这种场景下Web就远远不如原生了。比如要做需要处理音视频输入的应用,就只能用原生。
另一方面,用户在移动端主要依赖触摸屏操作,Web页面手势操作的体验不如原生。另外Web的入口是网址,在移动端用软键盘输入网址远远不如PC键盘方便。
因此,Web在移动端比较适合做重展示、轻交互的应用,比如电商,外卖。但重交互、需要处理多媒体信息的应用都会选择原生,比如短视频。
另外Web的交互体验始终和原生有一定差距,所以重视体验、对成本不敏感的大厂都不会放弃原生开发,Facebook曾经尝试过纯Web实现App,后来也回归原生了。相反,大厂会投入大量人力优化体验,除了需求开发,会专门投入人力做性能优化、稳定性、架构、安全、基础设施等方面,每个方向都有相当的技术深度供你挖掘。
因此,对于应届生来说,如果志在一线大厂,客户端的需求规模并不是一个问题。
再说天花板问题。据说在阿里,P8以上后端占多数,这的确给人一种客户端天花板低的感觉。
但阿里这种情况,有其业务特点的因素。阿里是做电商的,电商系统的复杂度在于订单、库存、支付这些复杂业务逻辑的处理和高并发的挑战。这些部分都是后端在处理的,前端/客户端只是用户操作的入口,大佬多后端合情合理。
但有些业务类型,比如短视频App,很大一部分复杂度在于用户的创作和观看的体验(当然还有后端的视频服务、并发支撑和推荐算法),这部分都是客户端在支撑的,尤其是视频拍摄和编辑,有相当的复杂度。因此在短视频团队中,客户端的重要性和电商团队相比就会重要的多。这种团队客户端开发就会有更多机会走上更高的位置。
另外说句老实话,P8以上的能有几个,大部分人不需要想这么远。
说到最后一个问题,客户端社招面试的难度。
- 可能是一种认知偏差,难道大厂的前端后端面试就不难吗?
- 如上面所说,二三线公司的客户端需求的确变少了,所以市面上主要是大厂在招聘,那么统计意义上整体难度确实提高了,但同层次的公司面试难度则未必。
- 和15年比确实变难了,但15年的情况并不是一种常态。
说了这么多,我个人觉得客户端绝对不像那些劝退言论说的是个大坑,相反,对现在的应届生来说,是个不错的进大厂机会。很多大厂校招都不要求任何客户端开发经验的,只要基础知识扎实,代码能力过关就行了。
最后分享一下字节大佬整理的Android中高级面试题锦集答案,文末直接获取
第一章 Java方面
- 第一节 Java基础
- 第二节 Java集合
- 第三节 Java多线程
- 第四节 Java虚拟机
第二章 Android 方面
- 第一节 Android 四大组件相关
- 第二节 Android 异步任务和消息机制
- 第三节 Android UI 绘制相关
- 第四节 Android 性能调优相关
- 第五节 Android 中的 IPC
- 第六节 Android 系统 SDK 相关
- 第七节 第三方框架分析
- 第八节 综合技术
- 第九节 数据结构方面
- 第十节 设计模式
- 第十一节 计算机网络方面
- 第十二节 Kotlin方面
第三章 音视频开发高频面试题
- 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
- 怎么做到直播秒开优化?
- 直方图在图像处理里面最重要的作用是什么?
- 数字图像滤波有哪些方法?
- 图像可以提取的特征有哪些?
- …
第四章 Flutter高频面试题
-
第一节 Dart部分
- Dart 语言的特性?
- Dart的一些重要概念?
- dart是值传递还是引用传递?
- Dart 多任务如何并行的?
- 说一下 mixin?
- …
-
第二节 Flutter 部分
- Flutter 特性有哪些?
- Flutter 中的生命周期
- Widget 和 element 和 RenderObject 之间的关系?
- mixin extends implement 之间的关系?
- Flutter 和 Dart的关系是什么?
- …
第五章 算法高频面试题
- 如何⾼效寻找素数
- 如何运⽤⼆分查找算法
- 如何⾼效解决接⾬⽔问题
- 如何去除有序数组的重复元素
- 如何⾼效进⾏模幂运算
- …
第六章 Android Framework方面
- 第一节 系统启动流程面试题解析
- 第二节 Binder面试题解析
- 第三节 Handler面试题解析
- 第四节 AMS面试题解析
- …
第七章 企业常见174道面试题
- 1.SD卡
- 2.android的数据存储方式
- 3.BroadcastReceiver
- 4.sp频繁操作会有什么后果?sp能存多少数据?
- 5.dvm与jvm的区别
- 6.ART
- 7.Activity的生命周期
- 8.Application能不能启动Activity
- 9.Activity的状态都有哪些
- 10.横竖屏切换时Activity的生命周期
- …
有需要的自己白嫖扫码领取。
