操作系统
C++说白了就是和操作系统打交道,不了解操作系统永远无法发挥C++的优势,因此操作系统在C++开发中尤为重要。
1.讲一下C++内存模型(十分重要,十个面试九个问)
2.什么是内存泄漏?怎么防止?有用过什么检测工具吗?
3.堆和栈的区别
4.假设有一个class A,在函数里执行A a = new A()的话,在哪个区?*(不理解分区容易出错)
5.什么是栈溢出?内存越界又是什么?
6.进程和线程的区别(同样很重要)
7.线程有哪些状态(相互间如何转换要讲清楚)
8.某个进程有两个线程A,B,A如果进入死亡态会影响B吗?如果会的话在什么情况下会?
9.多线程平常使用API还是第三方库,你觉得有什么区别
(我回答一般使用C++11提供的thread库)
10.同步异步阻塞非阻塞分别是什么
11.线程同步方式有哪些?(一般重要)
12.无锁编程了解吗?用什么实现?
13.死锁是什么?四个必要条件?
14.进程间通信能讲一下吗?平常主要用哪个?你在开发中根据什么来选择?
(这题是腾讯的,答得不是很好,因为我基本用的共享内存)
15.僵尸进程和惊群效应是什么?怎么防止惊群效应?
16.C中字符串赋值怎么保证安全?用=号会怎么样?
17.什么是虚拟内存?怎么实现的?
18.不同进程可以通过虚拟内存来指向同一块内存吗?
(小米的面试题,这里我犯病了,这不就是共享内存的原理,我还回答不能,还好面试官提醒了我)
19.分段分页了解吗?简单介绍一下
20.编程题:将一个txt文件中的文字按行读出存入vector(网宿科技一面)
21.中断是什么?
22.时间片了解吗?
23.深拷贝浅拷贝是什么
24.一个C++文件变成可执行文件的过程
25.程序是怎么装入内存的