计算机专业,想走Linux C/C++方向,要学哪些知识才能找到好工作?

Posted 一起学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机专业,想走Linux C/C++方向,要学哪些知识才能找到好工作?相关的知识,希望对你有一定的参考价值。

目录

Linux C/C++ 方向的一些思考

计算机基础知识的梳理

C++ 方向的深入学习路线

写在最后


在校期间,一直走的都是 Linux C/C++ 学习路线,从接触 C++ 到正式工作,大概有 4 年多的时间,对于这个方向的学习路线、以及学习编程的方法摸索出来了一些,看完本文,希望对于正在走 Linux C/C++ 路上的同学能有所帮助。

Linux C/C++ 方向的一些思考

对于方向的抉择,很多人都选择了 Java 或者 Python 方向,Java 或者 Python 方向确实学的人多,岗位需求很多,入门能比 Linux C/C++ 方向容易一些,但是往深了学,各有各的难度,先敲定了方向,再深入学习。

Linux C/C++ 方向,国内真正掌握的人,其实是很少数,这个方向的学习人数也是相对比较少的,入门一般首选 C 语言或者 Python,C、C++ 在编程排行榜也是经久不衰的,排名靠前,如果喜欢,有兴趣,走这个方向是可以的。

C++ 方向没有那么多有趣的东西可以做,在很长的一段时间内,要靠自己的兴趣去坚持学习。

Linux C/C++ 方向,入门稍微难一点,一旦选择了要走 C++ 方向的,在心态上面,要做好准备,一定不能有畏难心里,做好接触底层、复杂逻辑的分析、以及具备面向过程 + 面向对象的思想。

对于对底层没有兴趣,对 C 语言没有兴趣的人,不建议走这个方向。

计算机基础知识的梳理

计算机基础:C 语言、数据结构 + 算法、操作系统 + 计算机网络、数据库 +  Linux、

工作必备工具:Linux + Git + Sql

不管你是学习什么方向,这些基础都不能忽视,有时间的话,一定要打扎实了,有了扎实的功底,在这行才能走的更远更快!

C 语言:C 语言是我学习编程的第一门语言,是面向过程的语言,对于 C 语言中的数组、函数、指针、内存对其模式、大小端问题、野指针、内存泄露、static、register、define、typedef、struct、union 等一些关键字的考察。

推荐书籍:

<C 程序设计语言> 适合入门学习;

<C 缺陷与陷阱>、<C 专家编程>、<C 和指针>适合进阶提升

数据结构:对于常用的数据结构,链表、栈、队列、矩阵、树(BinTree、BST、AVL、RBtree、B+、B-)、跳表、图等,学习从定义--->原理--->实现--->应用,都要有不同程度的掌握。

推荐书籍:

<大话数据结构>,适合入门学习;

<数据结构>,清华大学严蔚敏写的,作为进阶和深入。

算法:一定要保证掌握基础算法 + 常见算法,十大排序算法(冒泡、插入、选择、快排、希尔、堆排、归并、桶排、基数、计数)是最简单的,也是一定一定要熟练掌握的,另外还有字符串常见算法、数组常见算法、递归算法等等。

在算法方面的要求上,C++ 方向对于算法的要求明显更高,算法功底一定要扎实!

推荐书籍:

<啊哈算法>,适合入门学习;

<编程之美>、<算法导论>,进阶提升必看;

<剑指 offer>、leetcode 找实习/工作前,刷题就好

操作系统:很常问的一些技术点,堆和栈、内存分区、虚拟内存 + 物理内存、进程 + 线程 + 协程、死锁、分片机制、五大组件、中断和系统调用 、同步和异步等等问题。

推荐书籍:

<现代操作系统>、<深入理解计算机系统> 是比较全面,写的比较好的书

计算机网络:OSI 七层模型和 TCP/IP 四层体系结构,TCP 三次握手与四次挥手、常见的网络协议(网桥、ARP、IP、ICMP、TCP、UDP、DNS、DHCP)、TCP 粘包、流量控制 + 拥塞控制、数字签名原理、http + https,http 的状态码,https 的安全机制,网络安全、等等问题。

推荐书籍:

<计算机网络>(谢希仁第 7 版);

(卷一)

Linux:Linux 的目录结构、文件系统、启动过程、用户环境,Linux 下常用命令(find、grep、awk、xargs)、正则表达式、软/硬链接、重定向、日志信息、网络配置(top、ps、ifconfig、ping 等)、简单的 shell 脚本会写(常见的脚本写一些自动化工具或者定时任务)

推荐书籍:

<鸟哥私房菜>

C++ 方向的深入学习路线

C++ 基础:C++ 是面向对象的语言,一定要理解清楚面向对象的思想,先把 C++ 的基础知识点打牢,刚从面向过程中转变过来,一定一定要适应面向对象的写法。

对于 C++ 的基础知识,我简单罗列如下:

const的用法

引用的用法

define用法

构造函数

析构函数

拷贝构造

new、delete 和 malloc、free 的区别

访问限定符 public、private、protected

深拷贝和浅拷贝

友元函数

static

内联函数

继承、虚继承

钻石继承问题

同名覆盖问题

虚函数表

虚指针

虚函数、纯虚函数

接口

多态

重写

重载

函数重载

运算符重载

流类库和文件

推荐书籍:

<C++ Primer>第 5 版先全面的了解清楚 C++ 的基础。

C++ 进阶:函数模板、类模板,C++ 中对于异常的处理,对于继承和多态底层的理解,对于 virtual 底层的理解等,理解清楚智能指针的本质是,内存的申请与释放全部交给了对象管理,以避免人为疏忽,造成内存泄露。

推荐书籍:

<Effective C++>

<more Effectice C++>

<深度探索 C++ 对象模型>

<C++ 沉思录>

STL 源码:对于 STL 中的容器剖析,常见容器有 list、vector、stack、queue、map 等,考察自动扩容的原理、map 的底层实现(RBtree),源码是必须手动至少剖析一遍的。

推荐书籍:

<STL 源码剖析>

<泛型编程与STL>

Linux 网络编程:

1、Linux 进程环境:僵尸进程、孤儿进程、守护进程、进程组、会话、前台进程组、后台进程组

2、Linux 进程七大通信方式:signal、file、pipe、shm、sem、msg、socket

3、Linux 线程:互斥量、锁机制、条件变量、信号量、读写锁

4、Linux 下并发模型:多进程、多线程、线程池

5、Linux 下 I/O 复用:select、poll、epoll 高并发

6、Linux 网络编程

7、静态库和动态库

推荐书籍:

<Linux高性能服务器编程>

<UNIX网络编程卷一>

<UNIX网络编程卷二>

<UNIX 环境高级编程>

写在最后

对于想走 Linux C/C++ 方向的同学,基本上按照上面的路线走,相应的书籍以及视频都有推荐,多实战操作。

为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!如果你想在大学期间更好的提升你的编程核心能力(内功)不妨从现在开始!

C/C++学习

微信公众号:C语言编程学习基地

以上是关于计算机专业,想走Linux C/C++方向,要学哪些知识才能找到好工作?的主要内容,如果未能解决你的问题,请参考以下文章

地理信息系统的就业方向?

linux具体要学点啥,基础要学啥?

为什么要学云计算 这是我见过最好的答案

Linux c/c++技术方向分析

软件技术要学编程吗?

所有计算机专业都要学的课程都有哪些?