1.c++面试问题总结:
(1)空类的大小,仅含有虚函数类的大小
(2)析构函数声明为虚函数的作用
(3)C++多态的实现方式,虚函数的底层实现细节
(4)引用和指针的区别(++)
(5)继承类调用构造函数顺序和析构函数顺序,什么时候要将 析构函数定义为虚函数
()多重继承,基类和父类之间怎么转换
(6)new 与 malloc的异同处 C++为什么要引入new
(7)new背后会发生什么 , new有几种用法
(8)结构体内存对齐方式。
(9)虚函数实现方式 (+) 虚函数作用
C++的虚函数表、虚继承相关
C++的虚函数表了解吗?虚继承虚指针呢?
(10)在类里面给成员赋值,会在什么时候初始化
(11)为什么析构函数不要抛出异常,构造函数中出现异常会怎么样
(12)模板的特化和偏特化
(13)C++11特性
(14)lamda表达式原理,lamda表达式内的变量的生命周期
lamda表达式怎么用的
(15)C++17了解过吗
(16)转移构造函数了解吗,用在什么场景
介绍一下拷贝构造函数
(17)介绍下重载和重写,f(int, float), f(float, int), 调用f(1, 1)用的哪个
(18)介绍下多态,多态是为了解决什么问题
(19).构造函数可以是虚函数吗,析构函数可以是虚函数吗
(20)编译和链接分别做了什么事情,什么情况下链接失败
(21)static_cast dynamic_cast区别
(22)智能指针有哪几种,为了解决什么问题,weak_ptr和shared_ptr用起来什么区别
.智能指针实现
(23)stl用过哪些,sort怎么实现,unordered_map实现
(24)右值引用是什么概念,C++98怎么做到类似的事情
(25)map和unordered_map有什么区别,怎么根据需求选择map还是unordered
(26)stl的allocator做什么的
(27)volatile关键字做什么的,对volatile变量访问是线程安全吗
(28)C和C++的区别
C++能直接运行C语言文件吗?用C语言可以实现C++的继承和多态吗?
类和结构体的区别?C和C++的区别?
(29)i++和++i的区别,效率有区别吗
()siezeof结构体为什么要对齐
()C++如何防止内存泄漏
()STL了解吗?STL的容器底层数据结构是什么?
()vector的内存分配了解吗?a是vector的一个元素,&a传参可以吗?为什么?
()编译的过程
()static相关,static变量存在内存哪里,两个.h文件同时定义一个static变量会怎样,函数返回static巴拉巴拉各种,回答到想吐
C++重载和重写区别在哪?怎么实现的?
STL了解吗?hash_map和map的区别?
char str、 char、const char str_list[]={“hello”,“world”}、malloc返回指针等的sizeof求值
uint16_t和uint32_t的强转相关
手写String类
解释深拷贝和浅拷贝
静态库和动态库
一个class需要实现什么才能满足map的需求
const关键字作用,要修改成员有什么办法(mutable)
2:数据结构与算法
链表上的快速排序
蓄水池问题
外部排序
翻转链表
非递归输出二叉树的后序遍历
工作队列用的什么数据结构,多线程同步怎么处理
反转链表?
冒泡排序和快排;时间复杂度多少?
合并两个排序链表
栈和队列,如何用2个栈实现队列,如何用2个队列实现栈
hash hash_map了解多少说多少
hash冲突怎么解决
3:计算机网络
TCP与UDP区别,三次握手,四次挥手
TCP建立连接的过程
http协议格式
http协议的关键点
http都了解多少?会用socket吗?
http的状态码都了解多少
手写TCP server和client的几个步骤的代码
TCP的三次握手并画图
time_wait状态介绍一下?
TCP的三次握手,哪一次可以携带数据
4:操作系统(网络编程)
要求实现单例模式,写完后要求改进满足线程安全
同步IO与异步IO的区别。 答完后问我可不可以举个例子
进程调度方式(先来先服务,最短工作优先,最优响应比优先,时间片轮转
线程同步方法(互斥锁,信号量,条件变量)
死锁是怎样的
epoll和select区别 epoll和select区别,epoll比select多的事件有哪些
epoll两种触发模式
epoll和select区别,epoll底层原理,线程池实现思路,如果所有线程都在工作,又来了一些任务,这时候会发生什么,工作队列同步
IO的多路复用有什么总结吗?epoll用过吗?遇到过什么问题?怎么解决的?
处理过高并发吗?epoll了解吗?epoll都有哪几种工作模式?epoll和select比较的优势。
Linux多线程并发机制
Linux有哪些锁
服务器挂掉了重启发现端口被占用了,可以在编程避免吗(setsockopt,reuseaddr)
讲解一下线程池模型
高并发频繁加锁对性能有影响吗,怎么优化(减小锁的粒度,无锁队列)
主线程往工作队列加任务,如果请求量大,主线程可能工作不过来吗
worker线程处理ok,主线程出现瓶颈怎么做
写个生产者和消费者的程序
生产者消费者模型(问了很多场景怎么用进程和线程解决)
进程和线程的区别,进程间通信有哪几种方式?
进程间通信的管道实现原理? 进程间通信的几种方式和各自的特点
虚拟内存了解多少
TCP的三次握手,每一次发送的报文的具体格式
socket编程:recv返回收到包是真的收到包了吗?
自旋锁和读写锁的区别
TCP的四次挥手,为什么要四次挥手
TCP的四次挥手介绍一下?fin_wait和time_wait了解吗?time_wait如何避免?
用TCP发大包会出现什么情况?UDP会吗?
进程的地址空间,物理内存和虚拟内存,虚拟内存的机制,能否重叠?
5:linux
Linux系统了解深吗,命令,用了什么网络编程接口
Linux多线程并发机制
shell脚本懂吗,awk,cd
静态库和动态库
Linux用得最多的命令,gdb查看所有线程的堆栈,怎么调试带参数的程序
netstat用来看什么信息,recvq,sendq什么意思,在网络过程中是属于什么阶段的数据
Linux下怎么调多进程多线程?
linux下查看进程、线程、cpu和存储的指令