什么是后端?

简而言之,后端是支撑 App、网站等前端展示内容的“幕后英雄”。它负责处理数据、存储数据、业务逻辑等,确保前端能够顺利地展示出用户需要的信息。

举个例子:你在网上购物时,点击购买按钮后,前端会将请求发送给后端,后端负责验证订单信息、处理支付、更新库存、生成订单等操作,然后将结果返回给前端展示给你。前端就是用户与应用交互的界面,而后端是应用处理和存储数据的“大脑”。

要成为一名后端开发人员,需要掌握哪些技术栈?

技术栈:是指一套在开发过程中使用的工具、框架和技术。后端开发技术栈包括很多部分,从编程语言到操作系统、数据库、消息队列等,涉及的知识面非常广泛。

这里以我的简历作为切入点,来帮助你们更清晰的了解需要掌握的技术栈:

image

编程语言

主流的后端开发语言有:

  • Golang
  • Java
  • C++

这三个语言做个对比的话:

语言 特点 学习难度(门槛) 发展前途 主观推荐程度
Golang 一门算是比较新的语言,不仅活跃在传统后端,还广泛运用在云原生、分布式系统建设上 不高,但是缺乏一个系统的学习路线,需要自己琢磨 腾讯、字节目前很多用的都是 Go 和 C++,潜力无限 中等
Java 传统开发语言,生态好 不高,有一套完整的学习体系,免费的资源也比较多 虽然市场稳定,但相比新兴语言发展空间较小 中等
C++ 强大的底层语言,广泛应用于高性能计算与系统开发 高,资源较少,学习曲线陡峭 C++ 起一个「基石」的作用,在系统、底层编程中至关重要,尤其在操作系统领域

其实语言这块不是特别重要,大部分公司都支持「转语言」,更看重的还是你的其他能力

数据结构与算法

数据结构与算法算是基础中的基础了,笔试、面试环节都会问到,除此之外,在实际开发中也离不开 DS 的支持

常见的数据结构:

  • 链表、数组、栈、队列
  • 树(如二叉树、AVL树、红黑树)
  • 图(如图的遍历、最短路径算法)
  • 哈希表、堆、字典

常见算法:

  • 排序算法(如快排、归并排序)
  • 查找算法(如二分查找、哈希查找)
  • 动态规划、分治法、回溯法

操作系统

计算机网络

数据库

数据库是后端开发中至关重要的部分,它帮助我们存储和管理应用的数据。后端开发常用的数据库有:

  • 关系型数据库(如 MySQL、PostgreSQL)
  • 非关系型数据库(如 MongoDB、Redis)

消息队列

消息队列(如 Kafka、RabbitMQ)是后端开发中非常重要的工具,它用于在分布式系统中传递消息,解耦不同服务之间的依赖,提高系统的可扩展性和可靠性。常见的应用场景包括:

  • 异步任务处理:例如,用户上传文件后,后端将文件处理任务放入消息队列中,后台服务异步处理文件。
  • 流量削峰:在高峰期间,将请求转发到消息队列中,避免系统过载。

分布式、云原生

  • 分布式系统:当应用的规模增长时,我们需要将系统拆分成多个模块,每个模块分布在不同的机器上运行。分布式系统的核心问题包括服务注册与发现、负载均衡、数据一致性等。
  • 云原生:云原生是一种通过云计算环境构建应用程序的方法,主要依靠微服务架构、容器(如 Docker)和编排工具(如 Kubernetes)。它强调弹性、扩展性、快速迭代和高效的资源利用。

就业情况

泼个冷水:实际上对于「双非」的我们,目前后端的就业情况是 不太好

就拿我们这一届来说,后端开发找到实习的,仅有个位数(我了解到的情况,不一定准确哈)

本就学历不占优的我们,要想最后拿到满意的 offer,肯定是要付出更多的努力的,并且 学习方式、路线也得正确

我要不要学后端开发?

了解了后端开发的技术栈、就业情况,你可能在思考:我要不要学后端开发?

如果你:

  • 喜欢逻辑思维和解决问题
    后端开发的核心工作之一就是处理业务逻辑、设计数据流和优化系统性能。如果你喜欢通过逻辑推理解决问题、挑战复杂的系统架构、并在代码中寻找最佳解法,后端开发非常适合你。

  • 享受与数据和性能打交道
    后端开发涉及大量与数据库、数据结构、性能优化等相关的工作。如果你喜欢深入了解数据如何存储和处理,关注系统如何高效工作,后端开发能够让你在这方面不断探索和成长。

  • 对技术深度感兴趣,愿意学到更多底层知识
    后端开发通常需要理解操作系统、网络协议、分布式系统等较为底层的技术。如果你有兴趣从更深的层次理解技术,后端开发能够提供丰富的学习资源和挑战,帮助你掌握这些基础技术。

  • 有一定的团队合作精神
    后端开发通常是与前端、运维、测试等多个角色紧密合作的。如果你喜欢与团队成员协作,解决跨部门的技术问题,后端开发的工作方式会非常适合你。

你可能不适合学后端开发,如果:

  • 你更喜欢快速可视化的结果
    后端开发往往需要更多的逻辑思维和数据处理,最终的结果不会像前端那样直接展示给用户看。如果你喜欢快速看到代码的结果并与用户交互,前端开发 可能更符合你的兴趣。

  • 你对系统设计和底层架构不感兴趣
    后端开发涉及到很多复杂的系统设计,特别是在处理高并发、分布式系统等问题时。如果你对这些挑战不感兴趣,可能会觉得后端开发比较 枯燥,甚至会感到力不从心。

  • 你喜欢创造用户体验而非后台技术
    后端开发的主要任务是构建稳定的服务器和API,而不涉及到直接与用户交互的界面设计。如果你更注重设计、用户体验(UI/UX),前端开发 可能是一个更合适的选择。

我应该如何学习后端开发?

如果你决定学习后端开发,这里可以给出我的一个学习路线作为参考:

推荐

这里推荐一些你可能会用到的工具或网站:

另外打个广告:

  1. 我的博客 :记录了我平时写的一些内容
  2. BlueBell 论坛 :我自己写的一个论坛,你们也可以上去发点文章啥的哈哈哈