“互联网企业每年校招的技术面试形式类似,大多是对面试者技术基础的考察。本文面对C++后台开发岗位,收集总结了百余道技术基础题。供大家学习和准备。”
文
Amazing10
c++具有哪些特点和性质,和c有什么区别指针的作用全局变量的缺点c++对象的生命周期c和C++中动态分配内存是怎样实现为什么建议多用组合少用继承编译语言和解释语言的区别面对对象的思想,还有什么其它编程思想多态是什么,有哪几种doule和float二进制怎么存的,double1.5和float1.5的大小c++的对象模型(内存模型,虚函数表,虚函数指针)有没有了解智能指针dynamic_cast有什么用智能指针shared_ptr,循环引用的情况怎么办,weak_ptr的弱引用什么意思野指针是什么lambda函数rand函数需要注意什么c++模板static关键字常量指针与指针常量函数参数传常引用和普通函数参数内存泄漏原因及如何避免深拷贝和浅拷贝右值引用虚表所有类都有虚表吗C++是单继承还是多继承,菱形继承的问题,为什么虚继承能解决强制类型转换,static_cast和dynamic_cast的区别,为什么dynamic_cast能够向上向下转RTTI的底层实现原理,如何动态获得类型,怎么判断指针对象的继承关系函数重载?有什么用?怎么实现的?为什么不能用返回值不同函数名形参列表相同做重载呢?重载和重写结构体和类的区别拷贝构造和移动构造什么情况下必须使用拷贝构造函数内存堆栈对比,分配效率全局变量放哪儿碎片会出现在哪内存区域malloc底层实现volatile作用,寄存器new和malloc的区别delete的几种方式面向对象的特点子类和父类在构造和析构的时候有什么特点吗,顺序基类的析构函数,不是虚函数会造成什么问题纯虚函数和虚函数的区别引用的作用常引用结构体和联合体,对联合不同成员赋值,其它的值会改变吗c++是类型安全的吗const和define的区别,哪种更好指针和数组的区别全局变量和局部变量的区别,操作系统和编译器是怎么知道的标准模板库,哪些数据结构,怎么分类迭代器什么时候用vector和list,实现的方案STLvector扩容怎么实现STL中map和unordered_map的区别,两种map的底层实现设计模式原则
单例模式的线程安全实现
观察者模式
代理模式
为什么要采用工厂模式,策略模式,一定要用吗
常见排序算法及其复杂度,哪些稳定和非稳定
快速排序为什么随机选初始值
建堆的过程及建堆后如何排序
快速排序和归并排序的过程
数据结构知道哪些,对比下数组和链表
链表的作用
红黑树和平衡二叉搜索树
哈希表
哈希冲突解决办法
如何判断图的连通性
堆和栈的区别
b+树
Linux常用命令,查看系统负载情况,查看端口号,端口号被占用怎么办
如何查看服务器运行时间?看是否有重启和宕机?
Linux系统的gdb调试
Linux查看进程的命令
ping一个ip发生了什么
锁的概念
如何避免死锁
进程和线程的区别
线程同步的方式,读写锁
进程间的通信方式
多线程中对A,B同时加锁的时候,需要注意什么问题(死锁的情况)
如何避免死锁
epoll和select区别,水平触发和边沿触发
Reactor模式,调度器、工作线程和请求队列都会干什么,状态发生什么改变
单进程如何进行IO复用
epoll的单线程
select的实现需要多线程吗
虚拟内存和物理内存
为什么用多线程,不同线程共享栈吗
软中断什么时候发生
僵尸进程、孤儿进程
操作系统复制粘贴如何实现
页面置换算法
进程调度算法
线程池怎么实现
TCP的TIME_WAIT和CLOST_WAIT
time_wait和close_wait,客户端断开连接了,服务器会怎样
TCP的可靠性,超时重传怎么实现
UDP和TCP对比