C++开发的学习路线

前言

了解C++开发的学习路线和推荐基础内容。需要明确认识的是,语言学习仅仅是一小部分,与项目实际开发之间有着很大的鸿沟。 下文将详细介绍。

C++/C与Java的区别

C++/C的语言粒度非常细,机制很多。性能确实高,但语言本身的包袱重,称为”造轮子“的语言,什么都能做。Java相比有着明显“生态圈”的概念,本身服务于互联网软件开发,主要用作后端开发、客户端开发居多,学习和应用领域相对非常清楚。

C++偏向底层,比Java难一些

C++做通信公司或者互联网公司的后台开发居多(也包括部分游戏公司),也就是服务端开发 ,当然其也有很多细分的工作岗位:做数据处理和分析;做基础协议和通信;做服务端底层应用优化;做后台系统的驱动和内核。

C++语言学习路线

C语言最重要的就是指针和内存管理。C++是对C语言的扩充和延申,可以理解为在C语言里加入一些面向对象的特性,使得代码能更好的复用、扩展和工程化,这是大型项目必备的要素。比如C++新加入的面向对象的特性:封装、继承与多态,更高级的主题类似泛型和模板、STL库等等。

语言学习不要脱太久,高强度压下来

推荐书籍

《Essential C++》(侯捷译):适合从C语言过渡到C++的学习

《C++ Primer》

《Effective C++》

《More Effective C++》

《C++标准程序库》

《深度探索C++对象模型》(内容很深,进阶内容)

基础四大件

四大件包括数据结构预算法、计算机网络、操作系统、设计模式。只要未来想从事变成岗位,这4个理论基础都必须掌握。基础四大件比编程语言本身要重要的多!

数据结构与算法

直接决定能否拿到offer。

常见的数据结构需要掌握,比如字符串、链表、二叉树、堆、栈、队列、哈希表。

常见算法需要掌握,比如查找、排序、动态规划,多刷题。

推荐书籍:

《大话数据结构》

《算法》(Java语言)

《剑指offer》(找工作必看)

其余精力建议全部用来刷题。

计算机网络

可以狭义理解为TCP/IP协议栈,其可以说是当下互联网通信的基石。

主要要做到对于协议栈原理的了解,包括里面的具体协议:ARP协议、IP协议、ICMP协议、TCP、UDP协议、DNS协议、HTTP协议、HTTPS协议。

推荐书籍:

《TCP/IP详解》

操作系统

该领域在面试时频次比较高的问题:

  • 进程和线程

    由此引发多线程的一些问题,比如原子性、并发、锁

  • 内存

    包括内存分布、内存调度的算法

推荐书籍:

《深入理解操作系统》

设计模式

倒不是说23种设计模式都要熟悉,常见的需要掌握,比如单例、工厂、代理、策略模式、模板方法。

推荐书籍:

《大话设计模式》

应用和编程实践

涉及到工具和编程环境。

Linux操作系统学习

实际企业级开发中,尤其是后端开发或者服务端开发几乎都是使用Linux操作系统:

  • 常见的Linux系统操作指令要掌握。

  • 基本的shell编程要熟悉

    生产力工具,一些批处理和自动化的脚本

推荐书籍:

《鸟哥的Linux私房菜》

《Linux就该这么学》(通俗易懂)

编译和调试工具

Win10上的VS基于微软的MS编译器,有可视化的界面。但在公司工作中,Linux平台的编译器必须掌握,最重要的就是GCC。

有些公司有定制过的交叉编译工具

实际项目的编译动作叫make,编译动作过程是写在makefile文件中。因此需要会写makefile文件,里面的规则要求掌握,学会设计和编写整个编译过程。

Win10用vs调试:打断点、运行。在通信公司和互联网公司中的后台开发中,也是使用Linux操作系统,主要使用GBD调试工具,借助进行代码调试。

推荐书籍:

《debugging with gdb》中文版

GNU官方关于GCC的文档(对英文有一定要求)

GNU官方关于GDB的文档(对英文有一定要求)

《跟我一起写makefile》陈皓

Linux编程环境

这部分主要学习Linux平台具体的编程。

  • 学习Linux操作系统API的使用

  • 多线程编程

    服务端任务量大,多线程相关的东西无法避免。包括线程、资源、信号、同步、互斥、锁的编程实践

  • 网络编程

    操作系统上的一些网络编程的API,包括一些IO函数的代码编程

推荐书籍:

《Unix环境高级编程》(必看)

《Linux高性能服务器编程》

《POSIX多线程程序设计》

posted @ 2020-08-07 17:14  脱线森林`  阅读(1093)  评论(0编辑  收藏  举报