C++ 如何进阶?

news2024/10/7 8:24:23

一、C++基础(3个月)

1、面向对象的三大特性:封装、继承、多态

2、类的访问权限:private、protected、public

3、类的构造函数、析构函数、赋值函数、拷贝函数

4、移动构造函数与接贝构造函数对比

5、深接贝与浅贝的区别

6、空类有哪些函数?空类的大小?

7、内存分区:全局区、堆区、栈区、常量区、代码区

8、C++与C的区别

9、struct与class的区别

10、struct内存对齐

11、new/delete与malloc/free的区别

12、内存泄露的情况

13、sizeof与strlen对比

14、指针与引用的区别

15、野指针产生与避免

16、多态:动态多态、静态多态

17、虚函数实现动态多态的原理、虚函数与纯虚函数的区别

18、继承时,父类的析构函数是否为虚函数?构造函数能不能为虚函数?为什么?

19、静态多态:重写、重载、模板

20、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数

21、 const关键字:修饰变量、指针、类对象、类中成员函数

22、extern关键字:修饰全局变量

23、volatile关键字:避免编译器指令优化

24、四种类型转换:static_cast、 dynamic_cast const cast、 reinterpret_cast

25、右值引用

26、std:move函数

27、四种智能指针及底层实现:auto_ptr、unique_ptr、SShared_ptr、weakptra

28、shared_ptr中的循环引用怎么解决 (weak_ptr)

29、vectora与list比较

30、vector送代器失效的情况

31、map与unordered_map对比

32、set与unorderedset对比

33、STL容器空间配置器

二、计算机网络 (1个月)

1、OSI7层网络模型:应用层、表示层、会话层、传输层、网络层、链路层、物理层

2、TCP/IP四层网络模型:应用层、运输层、网际层、接口层。综合OSI与TCP/IP模型,学习五层网络模型;从上向下架构:应用层、传输层、网络层、链路层、物理层

链路层

3、MTU

4、MAC地址

网路层

5、地址解析协议

6、为啥有IP地址还需要MAC地址?同理,为啥有了MAC地址还需要IP地址?

7、网络层转发数据报的流程

8、子网划分、子网掩码

9、网络控制报文协议ICMP

10、ICMP应用举例:PING、traceroute

传输层

11、TCP与UDP的区别及应用场景

12、 TCP首部报文格式(SYN、ACK、FIN、RST必须知道)

13、 TCP滑动窗口原理

14、 TCP超时重传时间选择

15、 TCP流程控制

16、 TCP拥塞控制 一定要弄清楚与流量控制的区别

17、 TCP三次握手及状态变化。为啥不是两次握手?

18、 TCP四次挥手及状态变化。为啥不是三次挥手

19、 TCP连接释放中TIMEWAIT状态的作用

20、 SYN泛洪攻击。如何解决?

21、 TCP粘包

22、 TCP心跳包

23、 路由器与交换机的区别

24、 UDP如何实现可靠传输

推荐学习视频

4个小时搞懂tcp/ip协议栈,从tcp/ip协议栈原理到实现一个网络协议栈icon-default.png?t=N7T8https://www.bilibili.com/video/BV1NA411y7Vc/

应用层

25、 DNS域名系统。采用TCP还是UDP协议?为什么?

26、 FTP协议(了解)

27、 HTTP请求报文与响应报文首部结构

28、 HTTP1.0、HTTP1.1、HTTP2.0对比

29、 HTTP与HTTPS对比

30、 HTTPS加密流程

31、 方法:GET、 HEAD、POST、PUT、 DELETE

32、 状态码:1、2、、3、4、5

33、 cookie与session区别

34、 输入一个URL到显示页面的流程 (越详细越好,搞明白这个,网络这块就差不多了)

三、操作系统 (1个月)

1、进程与线程区别

2、线程同步的方式:互锁、自旋锁、读写锁、条件变量

3、互锁与自旋锁的底层区别

4、孤儿进程与户进程

5、死锁及避免

6、多线程与多进程比较

7、进程间通信:PIPE、FIFO、消息队列、信号量、共享内存、socket

8、管道与消息队列对比

9、fork进程的底层:读时共享,写时复制

10、线程上下文切换的流程

11、 进程上下文切换的流程

12、 进程的调度算法

13、 阻塞10与非阻塞IO

14、 同步与异步的概念

15、 静态链接与动态链接的过程

16、 虚拟内存概念(非常重要)

17、 MMU地址翻译的具体流程

18、 缺页处理过程

19、 缺页置换算法:最久未使用算法、先进先出算法、最佳置换算法

操作系统的内容看起来不是很多,实际上每个问题答案的底层原理要弄懂还是很考验基本功的。比如:互锁与自旋锁的区别,实际上涉及到阻塞时线程的状态是不一样的。互锁阻塞的线程是挂起的,此时系统会优先执行其它可执行的线程,就会将阻塞的线程切换到可执行线程,而当临 界区执行的时间非常短时,此时线程切换频繁、开销较大,此时就会采用自旋锁的方式,让阻塞的线程处于忙等状态。

推荐学习视频

【计算机底层原理】linux内核源码分析教程,内容涵盖(进程管理,内存管理,网络协议栈,文件系统,设备驱动,中断管理,性能优化)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1GE421K7aJ/

四、 网络编程?(1个月)

1、IO多路复用:select、 poll epoll的区别 (非常重要,几乎必问,回答得越底层越好,要会使用)2、手撕一个最简单的server端服务器 (socket、 bind、 listen accept这四个API一定要非常熟练)3、线程池4、基于事件驱动的reactor模式5、 边沿触发与水平触发的区别6、 非阻塞IO与阻塞I0区别

推荐学习视频

3天学会linux c/c++高性能网络编程,多案例解析,附面试网络八股文!!(socket、tcp/ip、udp、epoll、网络io、协程...)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1rC41187WQ/

五、数据结构与算法“及刷题 (2个月)

1、数组

2、链表

3、栈

4、队列

5、堆

6、 二叉树:二叉搜索树、平衡树、红黑树

7、 B树、B+树

8、 哈希表及哈希冲突

9、 排序算法:冒泡排序、简单选择排序、插入排序、希尔排序、归并排序、堆排序、快速排序(要求能够面试时手写出堆排序和快速排序)

10、 二分法:旋转数组找target

11、 回溯法:全排列、复原IP地址

12、 动态规划(掌握基本的动态规划的几个题其实就够了,如:斐波那契数列、 接雨水、股票的最佳买入时机)

推荐学习视频

《剑指offer》c/c++后端服务器开发教程之数据结构与算法,内容包含(B树、红黑树、时间轮、跳表、布隆过滤器、hash、动态规划等)icon-default.png?t=N7T8https://www.bilibili.com/video/BV16T42117xZ/

六、 mySQL数据库 (7天~15天)

1、数据存储引擎:InnoDB、 myISAM Memory2、数据库索引类型及原理:B+树索引、 哈希表索引3、锁:悲观锁、乐观锁4、事务:事务的四大特性 (ACID)、事务并发的三大问题、事务隔离级别及实现原理5、多版本并发控制实现机制 MCVV 原理参考书籍:《高性能MySQL》

推荐学习视频

后端技术:中间件开发(redis、nginx、mysql)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1iM4y1C7mQ/

七、项目 (2个月)

如果时间够的话就可以写一个项目,当然大部分人写的项目都是一个烂大街的项目,也就是 “web 高性能服务器”。其实就是根据陈硕大神写的 《Linux高性能服务器编程:使用muduo c++网络库》进行改编,当然啦,读懂这本书还是很耗时的,学习其中的思想也会受益浅的。

推荐学习视频

2024年,c/c++后端开发值得推荐的开源项目,包含(协程ntyco、网络协议栈ntytcp、nginx、redis 、openresty、skynet..)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1zH4y1H7WW/

八、总结

按照上面推荐的内容来学习的话,要学习得深入一点的话1年的时间肯定需要的,甚至2年也不足为 其。当然对于非科班的学生来说,大部分都没有充足的时间的,这时候建议尽量把C++基础、计算 机网络、操作系统、 网络编程、数据结构与算法这五个部分的内容学得很扎实,大概6个月的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1646763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么相同内核的Linux桌面稳定干净,而Android却臃肿不堪?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 Linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 对于这个问题,我…

每日一题 盛最多水的容器

. - 力扣(LeetCode) 思路分析: 利用函数的单调性解决这道题两端取最小,最小的往里找就是高不变或者缩小 宽减少 一定是减小的因此这题可以使用左右指针实现 public int maxArea(int[] height) {int left 0;int right height.length - 1;i…

红日靶场ATTCK 1通关攻略

环境 拓扑图 VM1 web服务器 win7(192.168.22.129,10.10.10.140) VM2 win2003(10.10.10.135) VM3 DC win2008(10.10.10.138) 环境搭建 win7: 设置内网两张网卡,开启…

TC3xx MTU概述(2)

目录 1.概述 2.如何配置NDT 3.小结 1.概述 上篇TC3xx MTU概述(1)-CSDN博客我们讲解了MTU基本功能和MBIST基本概念,接下来我们继续讲解MTU如何配置NDT算法。 2.如何配置NDT 前面聊了那么多概念,我们还是来看看如何配置MTU来实现NDT。 MTU寄存器分为…

为什么需要自动化测试?自动化有哪些优势?

前言 自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。 虽然说会写自动化测试并不能说明你就很牛批,但是你不会的话,那么很抱歉,你…

如何复制本地docker镜像到其他主机

(1)打包镜像 比如我要复制的镜像是grafana的镜像 docker images 这里我把打包的镜像放在了根~目录下,如截图所示: docker save grafana/grafana:latest -o ~/grafana.jar (2)移动镜像 scp命令拷贝镜像到目标…

C语言 循环控制流程的跳转语句

本文 我们来说 控制流程的跳转语句 C语言 提供三种 控制流程的跳转语句 1. break 语句 我们之前讲 switch 时 大家已经看到过这个 break 了 作用是跳出当前 switch 在循环中 它的作用也差不多 这里 我们举个生活中的例子 例如 我们在操场上跑步 计划跑十圈 但是 还没跑完 我…

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序,做个笔记! 希尔排序也是插入排序的一种捏!本篇博客也是用排升序来举例捏! 希尔排序是基于直接插入排序的,是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址:点击 注:需先申请“短信签名”和“短信正文”,按照要求填写申请即可,腾讯云的审核效率还是很快的,一般在1-2个小时内就会有结果,链接&…

Linux环境创建普通用户,授权root权限。报错:usermod: group ‘sudo‘ does not exist

在Linux环境下,创建普通用户并授权root权限需要以下步骤: 1. 以root用户登录终端。 2. 执行以下命令创建一个新的用户,其中username为你想要创建的用户名,可根据实际情况自行更改。 adduser username 3. 设置该用户的密码&…

数据库原理与应用实验三 嵌套查询

实验目的和要求 加深和掌握对嵌套查询的理解和应用 实验环境 Windows10 SQLServer 实验内容与过程 图书(书号,书名,价格,出版社) 读者(卡号,姓名,年龄,所属单位&a…

luci框架相关笔记

luci架构 LuCI 架构采用了MVC(Model-View-Controller)设计模式,各个目录的作用如下: model(模型): 位于 /usr/lib/lua/luci/model 下,存放了与系统配置相关的模型脚本。这些脚本负责与底层系统…

有免费的通配符SSL证书吗?通配符证书的申请

首先要了解通配符SSL证书,需要先知晓我们常用的普通单域名SSL证书、多域名SSL证书与之的区别。 单域名SSL证书最容易理解,一张证书有且只能绑定与保护一个域名,例如www.123456.com 证书安装部署完成后则会激活对于该域名的https、即加密访问…

【Leetcode 42】 接雨水

基础思路: (1)需要将问题最小化,首先计算第i个位置最多容纳多少雨水(细长的一条水柱),然后求和就是总的雨水量; (2)第i个位置容纳雨水量 min(左侧最高, 右…

【数据结构】单链表和双链表的基操实现

文章目录 一、链表的概念及结构二、链表的分类三、无头单向非循环链表1.单链表创建2.尾插和头插3.尾删和头删4.打印5.查找6.插入7.删除8.销毁 四、带头双向循环链表1.双链表的创建2.初始化3.判断链表是否为空4.尾插和头插5.尾删和头删6.查找7.插入8.删除9.销毁 五、总结链表和顺…

vulnhub靶场之FunBox-2

一.环境搭建 1.靶场描述 Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first. This VM is created/tested with Virtualbox. Maybe it works with…

【C++】vector的迭代器失效问题(什么是迭代器失效?那些操作会导致迭代器失效?如何避免迭代器失效?)

目录 一、前言 二、什么是迭代器失效? 三、哪些操作会导致迭代器失效? 四、如何避免迭代器失效? 🥝 insert迭代器失效 ✨迭代器失效 ------ 扩容导致的野指针 ✨迭代器失效 ------ 迭代器指向的位置意义发生改变 &#x1f347…

揭秘无尘布:科技与清洁的完美结合

在现代科技的浪潮下,人们对于清洁工作的要求越来越高,尤其是对于精密仪器、光学设备、电子产品等高科技产品的清洁需求更为迫切。在这样的背景下,无尘布作为一种特殊的清洁工具,备受关注并得到广泛应用。本文将深入揭秘无尘布的科…

怎么口语外教一对一课程?这篇文章告诉你答案!

怎么口语外教一对一课程?在当今全球化的时代,英语口语能力已经成为许多人追求的重要技能。为了满足这一需求,市场上涌现出了许多提供一对一口语外教课程的软件。这些软件不仅提供了与母语为英语的外教进行实时交流的机会,还通过互…

德国韦纳WENAROLL滚压刀,液压缸,滚光刀,挤压刀,滚轧刀

德国韦纳WENAROLL滚压刀,液压缸,滚光刀,挤压刀,滚轧刀(百度一下,西安尚融) 德国韦纳(WENAROLL)的滚压刀、液压缸、滚光刀、挤压刀和滚轧刀在工业领域享有很高的声誉,这些产品因其高…