什么是后端?
简而言之,后端是支撑 App、网站等前端展示内容的“幕后英雄”。它负责处理数据、存储数据、业务逻辑等,确保前端能够顺利地展示出用户需要的信息。
举个例子:你在网上购物时,点击购买按钮后,前端会将请求发送给后端,后端负责验证订单信息、处理支付、更新库存、生成订单等操作,然后将结果返回给前端展示给你。前端就是用户与应用交互的界面,而后端是应用处理和存储数据的“大脑”。
要成为一名后端开发人员,需要掌握哪些技术栈?
技术栈:是指一套在开发过程中使用的工具、框架和技术。后端开发技术栈包括很多部分,从编程语言到操作系统、数据库、消息队列等,涉及的知识面非常广泛。
这里以我的简历作为切入点,来帮助你们更清晰的了解需要掌握的技术栈:
编程语言
主流的后端开发语言有:
- Golang
- Java
- C++
- …
这三个语言做个对比的话:
| 语言 | 特点 | 学习难度(门槛) | 发展前途 | 主观推荐程度 |
|---|---|---|---|---|
| Golang | 一门算是比较新的语言,不仅活跃在传统后端,还广泛运用在云原生、分布式系统建设上 | 不高,但是缺乏一个系统的学习路线,需要自己琢磨 | 腾讯、字节目前很多用的都是 Go 和 C++,潜力无限 | 中等 |
| Java | 传统开发语言,生态好 | 不高,有一套完整的学习体系,免费的资源也比较多 | 虽然市场稳定,但相比新兴语言发展空间较小 | 中等 |
| C++ | 强大的底层语言,广泛应用于高性能计算与系统开发 | 高,资源较少,学习曲线陡峭 | C++ 起一个「基石」的作用,在系统、底层编程中至关重要,尤其在操作系统领域 | 低 |
其实语言这块不是特别重要,大部分公司都支持「转语言」,更看重的还是你的其他能力
数据结构与算法
数据结构与算法算是基础中的基础了,笔试、面试环节都会问到,除此之外,在实际开发中也离不开 DS 的支持
常见的数据结构:
- 链表、数组、栈、队列
- 树(如二叉树、AVL树、红黑树)
- 图(如图的遍历、最短路径算法)
- 哈希表、堆、字典
- …
常见算法:
- 排序算法(如快排、归并排序)
- 查找算法(如二分查找、哈希查找)
- 动态规划、分治法、回溯法
- …
操作系统
计算机网络
数据库
数据库是后端开发中至关重要的部分,它帮助我们存储和管理应用的数据。后端开发常用的数据库有:
- 关系型数据库(如 MySQL、PostgreSQL)
- 非关系型数据库(如 MongoDB、Redis)
消息队列
消息队列(如 Kafka、RabbitMQ)是后端开发中非常重要的工具,它用于在分布式系统中传递消息,解耦不同服务之间的依赖,提高系统的可扩展性和可靠性。常见的应用场景包括:
- 异步任务处理:例如,用户上传文件后,后端将文件处理任务放入消息队列中,后台服务异步处理文件。
- 流量削峰:在高峰期间,将请求转发到消息队列中,避免系统过载。
分布式、云原生
- 分布式系统:当应用的规模增长时,我们需要将系统拆分成多个模块,每个模块分布在不同的机器上运行。分布式系统的核心问题包括服务注册与发现、负载均衡、数据一致性等。
- 云原生:云原生是一种通过云计算环境构建应用程序的方法,主要依靠微服务架构、容器(如 Docker)和编排工具(如 Kubernetes)。它强调弹性、扩展性、快速迭代和高效的资源利用。
就业情况
泼个冷水:实际上对于「双非」的我们,目前后端的就业情况是 不太好 的
就拿我们这一届来说,后端开发找到实习的,仅有个位数(我了解到的情况,不一定准确哈)
本就学历不占优的我们,要想最后拿到满意的 offer,肯定是要付出更多的努力的,并且 学习方式、路线也得正确
我要不要学后端开发?
了解了后端开发的技术栈、就业情况,你可能在思考:我要不要学后端开发?
如果你:
-
喜欢逻辑思维和解决问题
后端开发的核心工作之一就是处理业务逻辑、设计数据流和优化系统性能。如果你喜欢通过逻辑推理解决问题、挑战复杂的系统架构、并在代码中寻找最佳解法,后端开发非常适合你。 -
享受与数据和性能打交道
后端开发涉及大量与数据库、数据结构、性能优化等相关的工作。如果你喜欢深入了解数据如何存储和处理,关注系统如何高效工作,后端开发能够让你在这方面不断探索和成长。 -
对技术深度感兴趣,愿意学到更多底层知识
后端开发通常需要理解操作系统、网络协议、分布式系统等较为底层的技术。如果你有兴趣从更深的层次理解技术,后端开发能够提供丰富的学习资源和挑战,帮助你掌握这些基础技术。 -
有一定的团队合作精神
后端开发通常是与前端、运维、测试等多个角色紧密合作的。如果你喜欢与团队成员协作,解决跨部门的技术问题,后端开发的工作方式会非常适合你。
你可能不适合学后端开发,如果:
-
你更喜欢快速可视化的结果
后端开发往往需要更多的逻辑思维和数据处理,最终的结果不会像前端那样直接展示给用户看。如果你喜欢快速看到代码的结果并与用户交互,前端开发 可能更符合你的兴趣。 -
你对系统设计和底层架构不感兴趣
后端开发涉及到很多复杂的系统设计,特别是在处理高并发、分布式系统等问题时。如果你对这些挑战不感兴趣,可能会觉得后端开发比较 枯燥,甚至会感到力不从心。 -
你喜欢创造用户体验而非后台技术
后端开发的主要任务是构建稳定的服务器和API,而不涉及到直接与用户交互的界面设计。如果你更注重设计、用户体验(UI/UX),前端开发 可能是一个更合适的选择。
我应该如何学习后端开发?
如果你决定学习后端开发,这里可以给出我的一个学习路线作为参考:
推荐
这里推荐一些你可能会用到的工具或网站:
- LeetCode(力扣) :一个 面向工作 的刷题网站
- NowCoder(牛客) :找工作可以在上面讨论,还能看看其他人的 面经
- GeekHour :分享了一些快速入门教程,帮助你更快速的理解一个领域
- 极客时间 :很多优秀的技术文章,帮助你更深入的理解一个领域
- 李文周的个人博客 :初学 Golang 可以了解一下
- 极客兔兔 :同上
- …
另外打个广告:
- 我的博客 :记录了我平时写的一些内容
- BlueBell 论坛 :我自己写的一个论坛,你们也可以上去发点文章啥的哈哈哈