C++ 如何进阶?

一、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个月的时间。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

创新指南|组织健康仍然是企业创新长期绩效的关键

麦肯锡关于组织健康的最新调查结果表明,它仍然是当今全球市场中价值创造的最佳预测者和竞争优势的可持续来源。在本文中,我们将探讨最新的 OHI 结果,并重点介绍该指数揭示的有关领导力、数据和技术以及人才管理的一些更引人注目的见解。我们还…

数据仓库基础理论(学习笔记)

数据仓库基础理论 1.数据仓库概念 2.数据仓库为何而来 3.数据仓库主要特征 4.OLTP、OLAP系统 5.数据仓库与数据库的区别 6.数据仓库与数据集市的区别 7.数据仓库分层架构 7.1为什么要分层? 8.ETL、ELT

【前端】创建跳动字符效果的前端技术实现

创建跳动字符效果的前端技术实现 在前端开发中,动态视效能够显著增强用户体验。本文介绍一种实现字符跳动效果的技术方案,通过简单的HTML、CSS和JavaScript代码,你可以为网页文本添加生动的交互动画。这种效果可以用于吸引用户注意、增强品牌…

C语言—控制语句

控制语句就是用来实现对流程的选择、循环、转向和返回等控制行为。 分支语句 if语句 基本结构 if(表达式) { 语句块1; } else { 语句块2; } 执行顺序: 如果表达式判断成立(即表达式为真),则执行语句块…

华为先进芯片麒麟9010效能再升级,挑战新高度 | 百能云芯

根据最新的彭博资讯报道,华为再次引领了智能手机行业的先进技术,其最新发布的Pura 70系列智能手机搭载了由中芯国际生产的麒麟9010高阶处理器。这一消息再次证明了华为在芯片设计和生产领域的持续创新能力,并且表明华为对于提升智能手机性能和…

什么是虚拟货币?

随着科技的进步,虚拟货币逐渐进入公众视野,其影响深远且复杂。本文将从专业角度分析虚拟货币的发展现状、未来趋势,以及面临的挑战,并尝试提出一些思考。 一、虚拟货币的定义与现状 虚拟货币是一种基于区块链技术的数字资产&…

从固定到可变:利用Deformable Attention提升模型能力

1. 引言 本文将深入探讨注意力机制的内部细节,这是了解机器如何选择和处理信息的基础。但这还不是全部,我们还将探讨可变形注意力的创新理念,这是一种将适应性放在首位的动态方法。 闲话少说,我们直接开始吧! 2. 注…

Dockerfile创建Docker镜像

Dockerfile DOCKER镜像的组成 Docker 镜像的构建和使用是基于 UnionFS(联合文件系统)的原理。UnionFS 允许将多个目录挂载到一个虚拟文件系统下,并且可以对这些目录进行修改,这些修改会以一次提交的形式叠加在已有的文件系统层上…

CTF-WEB(MISC)

安全攻防知识——CTF之MISC - 知乎 CTF之MISC杂项从入门到放弃_ctf杂项 你的名字-CSDN博客 CTF MICS笔记总结_archpr 掩码攻击-CSDN博客 一、图片隐写 CTF杂项---文件类型识别、分离、合并、隐写_ctf图片分离-CSDN博客 EXIF(Exchangeable Image File)是…

笔记本电脑怎么多选删除文件?误删除文件怎么办

在日常使用笔记本电脑中,我们可能会遇到需要删除大量文件的情况,例如清理临时文件、整理文档或卸载不再需要的程序。手动一个一个地删除不仅效率低下,还可能遗漏某些文件。那么,如何在笔记本电脑上高效地进行多选删除操作呢&#…

Case中default的综合结果

在使用case语句时,不完备的case语句会导致Vivado综合时推断出锁存器。下面通过实例来详细看看各种情况下的综合结果: 1.完备的case语句 下述的verilog对应的电路结构是一个8选一的多路复用器: module case_test(input [2:0]sel,input data…

PostgreSQL连接拒绝如何解决和排查?

1. 服务器未运行 解决方案:确保 PostgreSQL 服务已启动。在 Linux 上,你可以使用如下命令来检查服务状态:sudo systemctl status postgresql如果服务未运行,使用以下命令启动它:sudo systemctl start postgresql2. Po…

【软考】模拟考卷错题本2024-05-05

1 算法 关键词:按照单位重量价值大优先,那就是1、2、3即430;之后的根据排除法又可以得到630;故C。 2 UML 序列图 上图已经基本上有解析;重点在于在四个选项中选正确的。根据概念排除:异步和同步是不一样的&…

uniapp的底部弹出层实现保姆式教程

实现照片: 此过程先进入uniapp官网,找到扩展组件 打开找到里面的uni-popup和uni-icons 点击进入,下载&安装 点击下载并导入HBuilderX 导入到你使用的目录,如test目录

高效、精准:皮秒激光切割机在陶瓷基板加工中的应用

皮秒激光切割机(激光划片机)在陶瓷基板切割领域具有显著的优势和潜力,主要体现在以下几个方面: 1. 高精度:皮秒激光切割机能够实现极高的切割精度,对于陶瓷基板这种需要精细加工的材料尤为重要。它能够在不…

五一 作业

#include <iostream>using namespace std; class Num { private:int a; public:Num() {}Num(int a):a(a){}//设置a的值void set(int a){this->aa;}//1-a的和void Sum(){if(a<1){cout<<"a<1"<<endl;return;}int sum0;for(int i1;i<a;i)…

Excel文件解析---超大Excel文件读写

1.使用POI写入 当我们想在Excel文件中写入100w条数据时&#xff0c;使用XSSFWorkbook进行写入时会发现&#xff0c;只有将100w条数据全部加载到内存后才会用write()方法统一写入&#xff0c;效率很低&#xff0c;所以我们引入了SXXFWorkbook进行超大Excel文件读写。 通过设置 …

图像降噪算法 BM3D 介绍

介绍 BM3D 是 “Block-Matching and 3D Filtering” 的缩写&#xff0c;即三维块匹配滤波&#xff0c;它是一种用于图像去噪的算法。该算法来源于 一篇“Image and video denoising by sparse 3D transform-domain collaborative filtering”的高质量文章&#xff0c;文章的作…

软件测试面试问题汇总

一般软件测试的面试分为三轮&#xff1a;笔试&#xff0c;HR面试&#xff0c;技术面试。 前两轮&#xff0c;根据不同企业&#xff0c;或有或无&#xff0c;但最后一个技术面试是企业了解你“行不行”的关键环节&#xff0c;每个企业都会有的。 在平时的学习、工作中一定要善于…

为什么要学Python?学Python有什么用?

为什么要学Python&#xff1f;学Python有什么用&#xff1f; 在当今的数字化时代&#xff0c;编程已成为一项宝贵的技能。Python&#xff0c;作为一种流行的编程语言&#xff0c;因其易于学习和强大的功能而受到全球开发者的青睐。本文将探讨学习Python的原因和它的实际应用&am…