今天去中兴面试,面试官问了很多问题,从网络到C++,再到Windows,各种各样的问题都涉及到了,我感觉被鄙视的一塌糊涂,基本上问道的问题都没有准确回答出来,在此总结一下问道的问题:
1、除了STL标准库之外,还有其他的什么库? 该问题见博客http://developer.51cto.com/art/201105/262721.htm 简要地记住为:除了标准库STL之外,还有准标准库Boost,GUI库(其中的代表为MFC),网络通信库(如ACE:Adaptive Communication Environment),XML,科学计算库,游戏开发库,线程库,字符串库等等;
2、智能指针是什么? 简要地说是引入智能指针是为了防止出现指针悬空的情况,具体分析见http://blog.csdn.net/linfengfeiye/article/details/4054258
3、静态链接库和动态链接库 静态链接库: 在早期库的组织形式相对简单,里面的目标代码只能够进行静态链接,所以我们称为“静态库”,静态库的结构比较简单,其实就是把原来的目标代码放在一起,链接程序根据每一份目标代码的符号表查找相应的符号(函数和变量的名字),找到的话就把该函数里面需要定位的进行定位,然后将整块函数代码放进可执行文件里,若是找不到需要的函数就报错退出。 静态库的两个特点: #1链接后产生的可执行文件包含了所有需要调用的函数的代码,因此占用磁盘空间较大。 #2如果有多个(调用相同库函数的)进程在内存中同时运行,内存中就存有多份相同的库函数代码,因此占用内存空间较多。
4、TCP和UDP的区别?
Q:动态链接库:
动态链接库就是为了解决这些问题而诞生的技术,顾名思义,动态链接的意思就是在程序装载内存的时候才真正的把库函数代码链接进行确定它们的地址,并且就算有几个程序同时运行,内存也只存在一份函数代码。
动态库的代码必须满足这样一种条件:能够被加载到不同进程的不同地址,所以代码要经过特别的编译处理,我们把这种经过特别处理的代码叫做“位置无关代码(Position independed Code .PIC)”.
根据载入程序何时确定动态代码的逻辑地址,可以把动态装载分为两类。
#1 静态绑定(static binding)
使用静态绑定的程序一开始载入内存的时候,载入程序就会把程序所有调用到的动态代码的地址算出确定下来,这种方式使程序刚运行的初始化时间较长,不过旦完成动态装载,程序的运行速度就很快。
#2动态绑定(dynamic binding)
使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这种方式使程序初始化时间较短,但运行期间的性能比不上静态绑定的程序。
平时默认进行链接的标准 C/C++ 函数就是动态库。
4、TCP和UDP的区别?
比较简单
mfc