新年已经远去,迎接我的将是what?
背水一战,争取3月10号前开始上班!
现将过去的几次面试总结一番,作为学习之用!
1、平衡二叉树的效率
2、进程的引入
3、Tcp/udp、socket
4、MFC单文档文件重载oncreate后,先执行哪个(Mainfrm/重载后的),为什么?
1、进程与线程(深层次)
2、程序运行慢的原因。
a,电脑中毒,b,算法有问题,c,线程问题(死等)
3、MFC单文档入口函数
AfxWinMain()/winmain.cpp文件中,调用工程app的initinstance()函数
4、C与C++的区别
5、static在c/c++中的区别
6、堆和栈的区别
7、二叉树类的实现
8、5w条纪录,定义相似,最快找到
空间距离最近。二分查找
9、积分
10、tcp/udp。为什么tcp安全?怎么保证数据的安全的?
11、文件系统
12、封装的优点
13、多态的优点,接口和虚函数的区别、好处
14、智能指针
类中有指针成员时,可以用智能指针来管理指针成员,实现指针指向的对象的共享,采用引用计数机制
15、vector与map的区别
vector(连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间岁间的插入,删除元素要慢,而且如果一开始分配的空间不够的话,有一个重新分配更大空间,然后拷贝的性能开销.
deque(小片的连续,小片间用链表相连,实际上内部有一个map的指针,因为知道类型,所以还是可以使用[],只是速度没有vector快)快速的访问随机的元素,快速的在开始和末尾插入元素,随机的插入,删除元素要慢,空间的重新分配要比vector快,重新分配空间后,原有的元素不需要拷贝。对deque的排序操作,可将deque先复制到vector,排序后在复制回deque。
list(每个元素间用链表相连)访问随机元素不如vector快,随机的插入元素比vector快,对每个元素分配空间,所以不存在空间不够,重新分配的情况
set 内部元素唯一,用一棵平衡树结构来存储,遍历的时候排序,查找也比较快。
map 一对一的映射的结合,key不能重复。
stack适配器,必须结合其他的容器使用,stl中默认的内部容器是deque。先进后出,一个出口,不允许遍历。
queue 是受限制的deque,内部容器一般使用list较简单。先进先出,不允许遍历。
map可以根据key 在logN时间内搜索到val,但是vector不行,查找复杂度是N
16、模板与宏
模板只实例化一次,宏每展开一次就实例化一次。
宏是直接将所有的代码同时展开,之后在编译过程中执行全面的语言检查,无论其成员函数使用与否。
模板一开始仅作语法检查,只有使用到的代码才做语义检查和实际编译。
17、模板在实例化前/后被编译。
解:C++模板的一个特殊的机制:模板中的代码只有在用到时才会被实例化。这种机制的目的主要是为了减少编译时间。但后来却成为了泛型编程和模板元编程中非常重要的一个机制
18、recv的返回值
19、c语言、c规范、c编译器
20、为什么引入中断操作
21、进程切换有的快有的慢?
22、windowsAPI
23、调试遇见的错误,
24、多线程
25、如何写程序(建模...)?
26、异常处理机制
27、STL中的迭代器
28、简述面向对象三个特性
29、Condition写for内/外的区别
30、Str[10] 012...9
31、Strcpy
32、String类
33、快排
34、中值
35、Tcp/udp
36、双链表
37、二分
38、Sql语句-分组/排序
39、多线程
学习中 学到的其它知识:
1、虚函数是利用函数指针表和间接调用实现