Linux C++ 后台开发:进BAT的学习路线

简介: C++相较于其他编程语言而言,学习门槛略高,主因在于其学习路径不够明确,缺乏像Java那样丰富的学习资源。然而,在众多大型企业中,如腾讯、百度、阿里云、网易和华为等,C++岗位的需求量与Java相仿。以下是我个人的C++与Linux后端学习路线和阅读方法的分享,希望能为大家提供一些参考。

1.png

C++相较于其他编程语言而言,学习门槛略高,主因在于其学习路径不够明确,缺乏像Java那样丰富的学习资源。然而,在众多大型企业中,如腾讯、百度、阿里云、网易和华为等,C++岗位的需求量与Java相仿。以下是我个人的C++与Linux后端学习路线和阅读方法的分享,希望能为大家提供一些参考。

让我们C++起飞!

C++基础知识学习

对于初学者,建议通过B站的C++教学视频辅助《C++ Primer 第五版》进行学习。

  • 在B站搜索C++学习视频,推荐黑马程序员的教程。

  • 《C++ Primer 第五版》是学习的好书。

当涉及到选择《C++ Primer 第五版》和《C++ Primer Plus 第六版》时,如果只能选择一本,我个人推荐《C++ Primer 第五版》。

  • 《C++ Primer 第五版》对于初学者而言可能稍难,因为某些章节知识点跳跃。但其讲解深入透彻,配合视频学习效果更佳。读完一遍后,该书可作为参考书或工具书,遇到不懂的问题时查阅总能找到启发。

  • 《C++ Primer Plus 第六版》讲解较为连贯,不太跳跃。主要基于C++98/03讲解,C++11相关内容大多放在附录中,且介绍不够深入。我个人在阅读完此书后,又重新购买并阅读了《C++ Primer 第五版》,才真正入门C++。

选择任何一本书都建议与视频教程结合,因为仅靠阅读书籍可能会感到枯燥。如果时间紧张,建议根据自己的基础跳过某些章节直接学习C++部分。

C++11及以上版本

C++11是对C++进行的重大更新,不仅使使用C++更安全、更便捷,也是校招中的重点考查内容。推荐阅读以下三本书来学习C++11及以上版本的新特性:

  • 《深入理解C++11:C++11新特性解析与应用》

  • 《Effective Modern C++》

  • 《Modern C++ Tutorial》

如果时间有限,建议优先阅读重要知识点,然后再补充其他细节。

C++进阶学习

为了提升C++内功,推荐以下三本书:

  • 《深度探索C++对象模型》:尽管这是一本较旧的书籍,但内容依然适用,能显著提升C++的内功。如果时间紧张,可以仅阅读前四章。

  • 《Effective C++》和《More Effective C++》:这两本书能帮助你了解如何正确且更好地使用C++。

  • 《STL源码剖析》:建议阅读,可以深入了解STL的实现原理,不仅涉及各种数据结构的实现,还包括一些设计模式和模板知识。

这些书籍内容可能偏硬核,均由侯捷翻译。如果感觉枯燥,可以配合侯捷的视频教程一起学习。

操作系统(OS)与Linux

推荐两本书《深入理解计算机系统》和《程序员的自我修养-链接、装载》,它们能帮助你从编译器的视角理解C/C++语言规则。如果准备时间有限,可以选择不阅读《程序员的自我修养-链接、装载》。

进入Linux后端开发之前,需要学习Linux系统编程和网络编程。无疑,《UNIX环境高级编程》和《UNIX网络编程》是必读的书籍。但这两本书篇幅较长,对初学者不太友好。我的学习方法是:

  • 首先阅读列出的重点章节,其余章节在需要时再看。

  • 结合视频学习,推荐黑马程序员的Linux全套视频及Linux网络编程视频,可以选择性观看。

对于搭建Linux环境,有两种方法:

  1. 在Windows中安装WSL2,并在VSCode中安装Remote-WSL插件,直接在WSL环境下使用VSCode,非常便捷。

  2. 如果需要调试网络功能,如tcpdump等,可以使用虚拟机,并通过VSCode的Remote SSH插件远程连接。

后端开发

具备了C++和Linux后端开发的基础后,可以开始学习服务器开发相关知识:

  • 《Linux高性能服务器编程》:游双老师的这本书深入剖析了服务器设计的各个要点,很多面试题也会涉及到这些内容,强烈推荐。

  • 开源项目《Muduo》及其讲解视频:陈硕老师的Muduo项目在设计上遵循了《Linux高性能服务器编程》的原则,B站有逐行代码讲解视频,虽然音质可能稍差,但内容非常丰富。

后端进阶

  • RPC:如果你对RPC感兴趣,可以从jsonrpc开始学习,进一步了解brpc的设计,如协程设计等。

  • Redis:如果时间允许,可以深入学习Redis的源码。《Redis设计与实现》和《Redis 5设计与源码分析》是推荐的学习资源。

数据结构与算法

  • 推荐《算法》一书和清华大学邓俊辉老师的《数据结构与算法》课程。

  • LeetCode刷题:建议至少完成前300道题目,重点是《LeetCode精选TOP面试题》。

  • 剑指Offer:至少复习2遍,熟悉其中的题目,这对于获取offer至关重要。

计算机网络

  • 如果时间允许,可以阅读《TCP/IP 卷一》。但如果时间紧张,可以跳过,因为上述推荐的书籍和代码中已包含了必要的TCP/IP知识。

工具使用

  • 学会使用cmake和gdb,这对于开发和调试非常有帮助。

最后的建议:学会使用Markdown进行笔记记录,这对于学习过程中的知识整理非常有用。

目录
相关文章
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
396 0
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
750 1
Linux C/C++之IO多路复用(aio)
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
195 0
|
12月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
325 16
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
2725 3
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
274 0
Linux C/C++之线程基础
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
596 0
Linux C/C++之IO多路复用(poll,epoll)
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
739 0
Linux C/C++之TCP / UDP通信
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
385 0
Linux c/c++之IPC进程间通信
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
197 0
Linux c/c++进程间通信(1)