后端开发学习路线,程序员该往哪发展?

2023-05-27 0 681

1. C语言

C语言是同时实现价值观和演算法的基础,所有设想最终都须要采用某种语言来同时实现。由于以后做项目接触过挺多 C++,只是没有系统自学过。再加上本身对下层操作方式也比较钟爱,因而优先选择 C++ 做为程式设计语言。

新浪网上打分较低的书有《C++ Primer》,但该书手写的过分全面详细,上来看这么厚一两本书不仅无用,还容易被扫地出门。因而能从《Essential C++ 英文版》进阶,看完后能对 C++ 有一个大概的介绍,后再看《C++ Primer》,再到《Effective C++英文版》。C语言相对其他知识来说并不是最重要的,因而在学该些的这时候最好短时期、耐热地啃下来,主力部队拉太长不然不仅会费时费力,也会影响自学效果。

当然,C语言的优先选择要紧密结合自身浓厚兴趣和生涯规划来确定,该些自学文本是一般来说的。

2. 计算机程序与演算法

计算机程序与演算法在自学文本里十分十分重要! 不仅考试会出题,复试的这时候也经常会要求手撕标识符。

如果以后没自学过计算机程序或者已经忘的相差无几了不然,能看呵呵《瞎掰计算机程序》,里头的文本都是讲透,而且还通俗易懂,易于快速介绍计算机程序相关习题。

至于演算法,所推荐看电视+刷题紧密结合的学习方式。工具书能优先选择《剑指Offer:优秀企业复试官圣埃蒂安德典型程式设计题(第2版)》,刷题所推荐采用LeetCode。牛客网上也有复试速刷TOP101题单,能配合采用。

《剑指 offer》做为大经典之作,是一定要刷三遍以上的,许多题都是复试时的港译,里面包含了许多考试常用的价值观方法,须要反复看。除此之外,刷题还须要不断地归纳和简述才能达到有效刷题。在稳固完强项的情况下,建议将 LeetCode 前 300 题刷熟练。除此之外,还能参照呵呵《labuladong归纳的演算法口诀》,对演算法的理解很有帮助。

依照我的复试经历,依照总的来说,公司常试题有:

1. 链表类(链表探底回升类试题)

2. 链表类(链表的结点类型题,最大公先祖类试题)

3. 数组操作方式试题

4. dfs/bfs

5. 动态规划(这个考的基本都是 leetcode 上的或者是背包问题,对于动态规划问题其实有许多种类,比较见到的就是一维动态和二维动态),另外还有区间调度类型的试题(贪心演算法,也属于动态规划的一种特殊情况。

3. 操作方式系统

操作方式系统比较重要的四大模块分别是内存管理 (opens new window)、进程管理 (opens new window)、文件系统管理 (opens new window)、输入输出设备管理 (opens new window)。这是所推荐的自学顺序,因为内存管理不仅是最重要、最难的模块,也是和其他模块关联性最大的模块,先把它搞定,后续的模块学起来会相对轻松一些。

B站关于操作方式系统课程资源许多,比较好的进阶课程是清华大学的《操作方式系统》,课程授课的顺序为「内存管理→进程管理→文件系统管理→输入输出设备管理」。除此之外还有哈工大的《操作方式系统》,这个相对清华的更加细节,老师会用 Linux 内核标识符的角度进一步讲解操作方式系统。

当然也能直接看电视,初学者能先看呵呵《操作方式系统导论》,该书书讲的比较浅而且易懂,然后再看《现代操作系统》,看的相差无几了,最后看《深入理解计算机系统》。最后该书能跳着看,有几章节是用纯汇编演示的,不懂的同学粗略看一看也没关系。

4. 计算机网络

进阶 HTTP 最好书籍就是《图解 HTTP》了。如果要进阶 TCP/IP 网络模型,所推荐《图解 TCP/IP》,该书书也是以大量的图文来介绍了 TCP/IP 网络模式的每一层,但是这个书籍的顺序不是从「应用层→物理层」,而是从「物理层→应用层」顺序开始讲的,这一点我觉得不太好。一上来就把最枯燥的部分讲了,很容易就被扫地出门了。能先跳过前面几个章节,先看网络层和传输层的章节,然后再回头看前面的这几个章节。

另外,如果想介绍网络是怎么传输,所推荐《网络是怎样连接的》,该书书相对比较全面的把访问一个网页的发生的过程讲解了一遍,其中关于电信等运营商是怎么传输的,该些能跳过。

对于 TCP/IP 网络模型深入自学不然,所推荐《计算机网络:自顶向下方法》,该书书从我们最熟悉 HTTP 开始说起,一层一层的说到最后物理层的,有种挖地洞的感觉,这样的文本编排顺序相对是比较合理的。

但如果要深入 TCP,前面的这些书还远远不够,赋有计算机网络圣经的之说的《TCP/IP 详解 卷一:协议》该书书,是进一步深入自学的好资料,该书书的作者用各种实验的方式来细说各种协议,但真的很枯燥。能只看 TCP 部分,其他部分优先选择性看。一定要过几遍该书书的 TCP 部分,涵盖的内容十分全且细。

5. 设计模式

能通过《瞎掰设计模式》进阶,对设计原则和常用的设计模式有个印象。在没有商业项目和工作经验的前提下,应届生很难真正熟悉这些。除此之外也能找呵呵别人博客归纳的一些知识。

6. 数据库

数据库方面 MySQL 和 Redis 是两个比较常用的数据库。

MySQL 进阶所推荐《SQL必知必会》,这一本很薄的书,主要是讲数据库增删查改的 SQL 语法,后看《MySQL是怎样运行的》。MySQL 用的最多的就是 InnoDB 引擎了,进一步自学 InnoDB 是很有必要的,能看《MySQL技术内幕》。最后稍微看一看《高性能MySQL》(挑章节看,该书书讲的太深,理解起来比较困难)。

最好在学完这些后自己动手去部署一个 MySQL,然后挑一些小项目做一做。

介绍下 MySQL 的重点知识,也是复试常面的习题:

1. 基本语法:

select/delete/insert/update、limit、join等

2. 索引:B+树,聚族索引,二级索引,组合索引,最左匹配原则,索引失效、慢查询

3. 事务:事务四大特性ACID,事务隔离级别,MVCC

4. 锁:全局锁、表级锁、行级锁、快照读、当前读、乐观锁、悲观锁、死锁

5. 日志:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)

6. 架构:读写分离、主从架构、分库分表、数据库和缓存双写一致性

Redis 不然所推荐圣经级别的书——《Redis设计与同时实现》。该书书不是教你如何采用 Redis,而是讲解跟你讲Redis是怎么同时实现,怎么设计的,也就说源码级别的自学,但是书上并没有大段贴标识符,作者是用伪标识符的方式来讲解,所以读起来不会太难。书本上主要围绕这几大习题:计算机程序、AOF 和 RDB 持久化技术、网络输入输出系统、主从复制、哨兵模式、集群模式。看完基本就进阶 Redis 了,不仅会了 Redis 基本命令,还懂 Redis 的同时实现,剩下的就是自学如何在实战中运用 Redis。这里所推荐《Redis实战》,该书通过实际的例子, 展示了采用 Redis 构建多种不同的应用程序的方法。

7. Linux

Linux 不然能先看《鸟哥的 Linux 私房菜》,对 Linux 整体有了一些介绍后再看一看《Linux 系统程式设计》。

走后端方向不然能看呵呵《Linux高性能服务器程式设计》,都是干货。跟着书上做一个服务器相关的项目,会有助于加深理解。Linux 系统不然纯看电视可能事半功倍,最好在 Linux 环境下做两个小项目,对整体自学可能更有用处。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务