全面讨论 后端、前端、客户端的区别
帖子背景
楼主看到今年不少友友暑期实习都或多或少,被客户端岗位打捞起来面试;也有很多友友本来是投的后端,结果拿了客户端的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.对于想走客户端开发的同学,那就选客户端吧!
如果有什么写得不对的,片面的,欢迎大家补充~
#我的实习求职记录##你们的毕业论文什么进度了##没有实习经历,还有机会进大厂吗##牛客在线求职答疑中心##我的求职思考#