C++面试需要掌握的,仅供参考。

语言
c 和 c++ 的区别
什么是多态
什么是虚函数
什么是纯虚函数
纯虚函数作用和实现方式
构造函数可以是虚函数吗
析构函数可以是虚函数吗
有哪几种强制类型转换,使用场景
虚函数表存放的内容
多继承的优缺点
全局变量和静态变量区别
volatile 关键字的使用


泛型的概念
C++ 内存分区
C++11新特性
左值和右值的概念
指针常量和常量指针
单例和观察者模式
MVC 模式
如何保证代码的可靠性
什么是智能指针,智能指针的作用,有哪些以及实现原理
模板偏特化是什么
堆和栈的区别
malloc、free 和 new、delete 的区别
protect 变量继承后派生类访问权限
预编译阶段主要做什么
静态编译和动态编译
函数重载的作用
重载、重写和覆盖的区别
const 关键字的使用
空类编译器会自动生成哪些函数


计算机网络
OSI 七层网络模型
三次握手和四次挥手
可以两次握手吗
tcp 和 udp 区别
tcp 如何保证可靠传输
如何使用 udp 实现可靠传输
close_wait 状态的作用
滑动窗口的作用
超市重传机制
拥塞控制和流量控制的区别
如何解决粘包问题
https 和 http 区别
socket编程流程,状态转换流程,编程函数和状态的对应节点
IO 模型
get 和 post 的区别
NAT 的原理
ping 的过程
DNS 的原理


数据结构
vector 和 list 区别
vector 扩容原理
迭代器失效问题
map 的底层实现
map 和 unordered_map 的区别
使用 map 的使用不是基础数据类型需要重载什么运算符
list 和 map 的区别
set 的底层实现
红黑树的性质
二叉搜索树、平衡二叉树和红黑树的区别


操作系统
进程和线程的区别
进程间通信的方式
线程间通信的方式
进程间的状态转换
进程上下文切换的细节
线程上下文切换的细节
多进程和多线程的区别
多线程如何实现同步与互斥
中断实现的原理
自旋锁与互斥锁区别
什么是死锁,发生的条件
Linux中du,df两个命令的区别
Linux 如何修改文件权限
什么是僵尸进程、孤儿进程
什么是守护进程,如何创建
如何判断大端和小端
线程池技术
乐观锁和悲观锁
虚拟内存的原理和优点
系统调用和函数调用的区别
用户态和内核态
内核的作用


算法
Dijkstra单源最短路径算法
从尾到头打印链表
快速排序的思想,时间复杂度,是不是稳定的
堆排序的思想,时间复杂度,是不是稳定的
二叉树的最大深度
两个栈实现队列
最长公共前缀
链表的倒数第k个数
合并两个排序的链表
存在重复元素 III
翻转二叉树
最长连续递增序列
有效的括号
最长有效括号
三数之和
数组的相对排序
二叉树的遍历方式
用队列实现栈
二分查找
接雨水

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值