+++++++++++++++++++++++++++
+Grant推荐: +
+不错的博客地址:http://shijuanfeng.blogbus.com/ +
+++++++++++++++++++++++++++
摩根斯坦利在线测评(10.20) - [笔试面试]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://shijuanfeng.blogbus.com/logs/169021661.html
本文答案皆系作者本人所做,不保证其完全正确,欢迎批评指正!
全英文的题目念都念不懂,全是多选题,分三类,C++,TCP/IP,XML
以下是自己在做题过程中遇到的几个知识点:
1. Terminate;异常处理:exception——见随后即将发布的“笔试面试常考问题”总结
2. Dll和lib的区别
lib有静态lib和动态lib之分。
静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序
动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持
动态链接库(DLL) 是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数
简而言之,
(1)lib是编译时需要的,dll是运行时需要的。
如果要完成源代码的编译,有lib就够了。
如果也使动态连接的程序运行起来,有dll就够了。
在开发和调试阶段,当然最好都有。
(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。
如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。
如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。
静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
//一个最简单的C++程序,只需要一个源文件,这个源文件包含了如下语句
int main()
{
return 0;
}
/*自然,这个程序什么也不做。 当需程序需要做事情时,我们会把越来越多的语句添加到源文件中,
例如,我们会开始在main函数中添加代码: */
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
//由于人的智力水平的限制,当一个函数中包含了太多的语句时,便不太容易被理解,这时候开始需要子函数:
#include <stdio.h>
void ShowHello()
{
printf("Hello World!\n");
}
int main()
{
ShowHello();
return 0;
}
//同样的道理,一个源文件中包含了太多的函数,同样不好理解,人们开始分多个源文件了
// main.cpp
void ShowHello();//[1]
int main()
{
ShowHello();