全面讨论 后端、前端、客户端的区别

帖子背景

楼主看到今年不少友友暑期实习都或多或少,被客户端岗位打捞起来面试;也有很多友友本来是投的后端,结果拿了客户端的offer,不知道改不改转客户端。

楼主之前在字节的CapCut做过半年的客户端开发实习生,对客户端有一个基本的了解,再加上后端楼主也实习过,所以两个方向的技术栈楼主都知道一些,所以来尝试讨论一下这个热门话题。

客户端技术栈

目前大厂的客户端方向,主要是三个方向:iOS端、安卓端和PC端

iOS:原生方向(不涉及跨端)是由Object-C和swift语言,OC苹果官方已经停止更新了,所以主流的原生方向,都是swift;跨端方向:flutter,跨端更加偏向前端。

安卓:java和kotlin,跨端和ios的方向一样,更多的交给前端完成ui绘制。

PC端:也可以说是桌面端,技术栈C++ qt、cef等。

当然三端都会涉及到C++,用于中间层SDK开发。

客户端日常工作及产品需求

1.对于native原生客户端来说,日常工作70%都是在画ui,利用swift、kotlin、qt封装好的ui组建进行ui绘制,动画跳转等,比如颜色、字体大小、ui组建的组合等等;剩下30%则是写一些端内的逻辑,比如文件/资源下载、缓存等等。

2.数据怎么来?后端开发会提供响应的http远程调用接口,客户端同学调用这些接口,请求数据。因此客户端开发不需要数据库(这里不讨论SQLite)、缓存中间件的使用。

3.当然在目前跨端技术的推广下,很多ui细节是交给前端开发去完成,客户端这边只需要搭建容器,也就是H5页面,比如我们常见的小红书推荐流、APP的各种弹窗,这部分ui的绘制都是前端完成,客户端开发只需要把容器搭建好就行,剩下的工作就跟打开一个网页是一样的。

4.一部分少量的客户端岗位,是完全不涉及ui的,比如C++ SDK客户端开发、客户端基础技术开发等等。

5.客户端页面渲染、优化,这部分跟应届生应该没什么关系,涉及到操作系统底层的优化,比如如果加快负责页面的渲染进度,如何让用户打开一个复杂页面更快,像视频剪辑类APP、地图类APP,开发难度非常大。

后端技术栈及日常工作

这块相信各位友友都很熟悉了,因为在学校学的,基本都是后端开发的内容,Java/Golang/C++以及数据库和中间件,楼主就不再展开。

关于日常工作的话,最基本的是提供rpc、http接口供前端和客户端调用。大伙对后端都比较熟悉,我就不再展开了。

实习/校招求职难度

这块不少同学都经历过客户端、后端的面试,相信大家也有自己的结论,楼主认为从过简历、面试难度的角度来说,客户端明显比后端容易。

1.过简历,对于应届生找实习或者是校招,客户端的简历不需要写那些微服务、中间件的项目、技术栈,只需要熟练掌握一门面向对象的语言,就可以过大厂简历,约到面试;而后端对技术栈要求更多,除了语言之外,还需要数据库、中间价等技术栈的熟练掌握

2.面试难度,客户端面试非常简单粗暴,接受转语音,即使是零客户端基础,面试的时候完全不问客户端的知识,只需要掌握计算机网络、操作系统、算法及数据结构的知识即可,连数据库都可以不会!后端大伙肯定都知道了,要求非常全面。

3.收到offer难度,对于应届生而言,想进大厂,肯定是客户端更容易,但是大厂对客户端的要求,也是很高的,大伙可以看看wxg、字节的客户端面经,问的难度确实不低,算法题难度也不低,因此楼主说客户端简单一些,是相对大厂后端的,并不是说点击就送。但是对于想进大厂拿高薪的友友来说,后端太卷,那客户端不失为一个好的选择。补充:对于不涉及ui的客户端开发,例如cpp sdk客户端开发、基础技术、内核开发的客户端方向,对cpp语言的要求会很高,难度和后端是差不多的。

客户端发展空间

这块楼主也看了不少帖子,也跟一些客户端资深从业者有过交谈,如果要说客户端不好,那主要是下面两点:

1.不好跳槽、岗位少,因为现在绝大多数的App,都是大厂的,比如阿里系、腾讯系、字节系等等。中小公司没有提供一定数量的客户端开发岗位。(比如校招进公司,工作一段时间后吃N+1,相比后端的同学,跳去其他公司,选择会少一些);再加上APP小程序(比如微信),浏览器等对客户端的影响,使得客户端岗位相比5年前,确实变少了很多。

2.职业前景,很多帖子吐槽客户端职业前景不好,发展空间受限;这点见仁见智吧,楼主并不认同,客户端的一些场景开发难度是非常大的,比如音视频剪辑、地图软件开发等等,涉及ui渲染优化等需求,技术深度也非常大,甚至需要使用深度学习、opencv、opengl等知识。其实天花板后端和客户端都一样的,不存在什么的客户端天花板更低,因为绝大部分程序员 都根本接触不到天花板,当然这也只是鼠鼠的个人观点。

客户端优点

1.校招的薪资待遇和后端是一样的,甚至比后端要多一点(签字费多一些)

2.进大厂更容易,比如腾讯今年暑期实习,不少同学投的后端,被客户端打捞,最终拿到offer,过简历、面试难度是比大厂后端低的。

3.开发体验更好,客户端开发很直观,有什么bug、ui错误,在编译器的ui模拟器上非常清楚,不用像后端那样,还要进入隔离环境打印日志来排查,客户端开发直接本地编译、debug。

Offer选择

相信不少友友都面临着offer选择的问题,比如大厂客户端 vs 中/小厂后端,大厂核心业务客户端 vs 大厂边缘业务后端

1.如果秋招坚定后端的话,楼主建议是有后选后,客户端实习对秋招后端的帮助是有的,但是是有限的,比如有了客户端实习之后,秋招就会被客户端岗位打捞(当然也可以拒绝面试),然后被锁流程,导致面不到后端岗位,或者一些后端岗位要求有后端实习经验。

2.大厂客户端的实习内容肯定是有含金量的,如果不喜欢画ui,可以跟mentor、leader提出来,说安排一些写逻辑、优化的需求。因此没有心仪公司后端的offer,可以联系hr要到客户端ld、mentor的微信,提前了解部门的需求,问清楚。比如不涉及ui的客户端开发方向(前面有提及),楼主是推荐接offer的。

3.对于想走客户端开发的同学,那就选客户端吧!

如果有什么写得不对的,片面的,欢迎大家补充~

#我的实习求职记录##你们的毕业论文什么进度了##没有实习经历,还有机会进大厂吗##牛客在线求职答疑中心##我的求职思考#
全部评论
有工作就不错了
13 回复 分享
发布于 05-06 19:09 广东
学会了,分我一个offer
3 回复 分享
发布于 05-04 21:49 上海
讲得挺好的
3 回复 分享
发布于 05-17 14:28 重庆
真实,身边后端朋友被tx捞起来客户端,前不久入职客户端
2 回复 分享
发布于 05-28 13:37 湖北
大佬
1 回复 分享
发布于 05-06 20:12 安徽
运维和测试老哥怎么看
1 回复 分享
发布于 05-07 08:33 广东
大佬美团后端和阿里flutter客户端选啥
1 回复 分享
发布于 05-09 23:09 四川
感谢,我最近也一直比较困惑,因为拿到了腾讯QQ的基础架构的安卓开发暑期实习,现在来看还是去吧,秋招继续找后端了
1 回复 分享
发布于 05-24 14:46 陕西
大佬什么时候更新前端的部份
点赞 回复 分享
发布于 05-05 15:19 广东
快手的安卓,虾皮的ios,估计一个也不接了😩
点赞 回复 分享
发布于 05-05 21:01 山西
客三消
点赞 回复 分享
发布于 05-06 21:41 北京
为什么网上全是劝退客户端的 不懂
点赞 回复 分享
发布于 05-07 16:50 四川
有后端谁特么愿意客户端啊,没办法😂
点赞 回复 分享
发布于 05-21 10:33 上海
java后端太难了,可以先去做客户端后面转后端么😂
点赞 回复 分享
发布于 05-21 10:34 上海
请问如果是完全不涉及UI的客户端跳槽好跳吗?
点赞 回复 分享
发布于 05-26 13:19 河南
找客户端岗位需要会qt吗
点赞 回复 分享
发布于 05-30 23:21 浙江
讲的太好了,非常真实😭
点赞 回复 分享
发布于 07-10 14:49 广东
佬您好,我是非科班的,对开发了解的比较少,目前拿到一个客户端的offer,了解到主要是做pico影像效果的,能不能麻烦您根据这个jd评价一下这个岗位,十分感谢!
点赞 回复 分享
发布于 10-31 14:19 浙江

相关推荐

头像
10-28 13:57
已编辑
中国科学院大学 C++
比亚迪 底层软件工程师 n*1.36*12
点赞 评论 收藏
分享
点赞 评论 收藏
分享
54 139 评论
分享
牛客网
牛客企业服务