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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超标量处理器设计:重排序缓存(ROB)

★超标量处理器的很多地方用到了重排序缓存,但是我对它不是很了解,所以我整理一下重排序缓存的知识点。 重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit),也可以用来寄存器重命名。 ROB是一个先进先出的表,每个…

教你解决PUBG绝地求生游戏中闪退掉线无法重连回去的问题

《绝地求生》(PUBG),作为一款在全球范围内掀起热潮的战术竞技游戏,以其栩栩如生的战场环境和令人心跳加速的生存冒险博得了广大玩家的青睐。然而,一些玩家在经历了一场惊心动魄的对局后,却面临了一个不大不…

uniapp video 层级覆盖

层级覆盖 cover-view组件 我这里做了个判断 监听全屏时隐藏按钮 根据项目需求自行更改

汉诺塔问题和爬楼梯(递归)

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 c语言基础_LaNzikinh篮子的博客-CSDN博客 文章目录 一.爬楼梯问题二.汉诺塔问题总结 一.爬楼梯问题 假设你正…

第八篇:深入探索操作系统架构:从基础到前沿

深入探索操作系统架构:从基础到前沿 1 引言 在当今这个高速发展的数字时代,操作系统无疑是计算机科学领域的基石之一。它不仅是计算机硬件与最终用户之间的桥梁,更是实现高效计算和资源管理的关键。操作系统的架构,即其内部结构和…

AIGC 时代软件工程师:前景、需求与大模型提效探究

过去,在互联网浪潮汹涌的十年来,软件工程师的角色愈发凸显其不可或缺的价值。随着AIGC(人工智能生成内容)时代的到来,软件开发的每个环节都正在经历一场前所未有的革新。今天,我们深入研究了大型AI模型如何…

ETL中如何执行Python脚本

Python的解读 Python 是一种高级、通用的编程语言,由荷兰程序员吉多范罗苏姆(Guido van Rossum)于1990年代初设计并发布。Python的设计哲学强调代码的可读性和简洁性,它的语法清晰且表达力强,使得开发者能够以更少的代…

【二分查找 滑动窗口】100257找出唯一性数组的中位数

本文涉及知识点 二分查找算法合集 C算法:滑动窗口总结 LeetCode 100257找出唯一性数组的中位数 给你一个整数数组 nums 。数组 nums 的 唯一性数组 是一个按元素从小到大排序的数组,包含了 nums 的所有非空子数组中不同元素的个数。 换句话说&#xf…

QAnything 在mac M2 上纯python环境安装使用体验(避坑指南)

这是一篇mac m2本地纯python环境安装 qanything的文章。安装并不顺利,官方提供的模型无法在本地跑。 这篇文章记录了,使用xinference来部署本地模型,并利用openAi的通用接口的方式,可以正常使用。 记录了遇到的所有的问题&#xf…

安全数据交换系统哪个好?该如何选型?

安全数据交换系统是用于在不同网络或组织之间安全、高效地传输和共享数据的解决方案。安全数据交换系统对于任何需要处理敏感数据、确保数据安全、并满足合规要求的组织来说都是至关重要的。 这种系统通常用于以下目的: 1)数据传输:允许用户…

Docker快速搭建NAS服务——NextCloud

Docker快速搭建NAS服务——NextCloud 文章目录 前言NextCloud的搭建docker-compose文件编写运行及访问 总结 前言 本文主要讲解如何使用docker在本地快速搭建NAS服务,这里主要写如下两种: FileBrowser1:是一个开源的Web文件管理器&#xff…

从0到1:低代码如何助力社会组织实现管理数字化

在数字化大时代,创业服务中心的数字化转型显得至关重要。数字化转型不仅是一个技术升级的过程,更是一个涉及业务模式、组织结构、服务方式等全方位的深刻变革。 随着信息技术的快速发展,数字化已经渗透到社会生活的各个领域,成为…

Docker笔记(七)使用Docker部署Spring Boot项目

本文介绍如何使用Docker打包并部署Spring Boot多模块项目。 其中本文涉及的Docker的私库是用Nexus3搭建的。 使用Docker部署Spring Boot项目有三种方式 (1)使用 spring-boot-maven-plugin内置的build-image. (2)使用 Google 的 j…

发票审核如何自查?报销没有发票,如何处理?

在财务管理中,发票是非常重要的一项凭证,是费用核算和税务申报的重要依据,但光靠发票入账可能会被定义为虚开。 一、费用报销审核必看的6个要点 1、票据与实际业务吻合 这是费用报销中最基本的常识,比如:采购一批物料&…

三、配置带HybridCLR的ARCore开发环境

预告 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 专栏: Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景,简化了AR开发流程,让用户可更多地关注Unity场景内容的制作。 “EnvInstaller…”支…

新能源汽车中HEV与PHEV分别代表什么车型,它们与传统燃油车都有什么区别?

前言 新能源汽车正逐渐成为全球汽车工业的主流方向,而HEV(Hybrid Electric Vehicle)和PHEV(Plug-in Hybrid Electric Vehicle)这两种混合动力车型在这一转型过程中扮演着重要角色。下面我们详细探讨HEV与PHEV的定义&a…

Pandas数据取值与选择

文章目录 第1关:Series数据选择第2关:DataFrame数据选择方法 第1关:Series数据选择 编程要求 本关的编程任务是补全右侧上部代码编辑区内的相应代码,要求实现如下功能: 添加一行数据,时间戳2019-01-29值为…

TC3xx MTU概述(2)

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

WireShark对tcp通信数据的抓包

一、抓包准备工作 安装wireshark sudo apt update sudo apt install wireshark 运行 二、WireShark工具面板分析 上图中所显示的信息从上到下分布在 3 个面板中,每个面板包含的信息含义如下: Packet List 面板:显示 Wireshark 捕获到的所…

window golang 升级版本

执行go tidy,发现执行不了,得升级一下版本了 进入官网,并选择合适的系统以及版本。https://go.dev/dl/ 这台电脑是windows,我本人比较喜欢下载zip自己解压。 解压,这里我选择直接覆盖原文件,需要保留原版…