百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

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

sinye56 2024-11-18 16:45 3 浏览 0 评论

1. 编程语言

编程语言是实现思想和算法的基础,所有想法最终都需要使用某种语言来实现。由于之前做项目接触过挺多 C++,只是没有系统学习过。再加上本身对底层操作也比较感兴趣,因此选择 C++ 作为编程语言。

豆瓣上评分较高的书有《C++ Primer》,但这本书写的过于全面详细,上来看这么厚一本书不光浪费时间,还容易被劝退。因此可以从《Essential C++ 中文版》入门,看完之后可以对 C++ 有一个大概的了解,之后再看《C++ Primer》,再到《Effective 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 环境下做两个小项目,对整体学习可能更有用处。

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: