C++程序面试笔迹
1填空
1)32位C/C++程序
sizeof(int)= 4 。
sizeof(long)= 4 。
2)x86兼容机 请给出函数结果htonl(0x03) = 。
3) 堆栈是针对?
默认情况堆是属于?
CPU调度时针对?
答案 : 进程。
4)请给出表达式结果5《2= 20。
5)请给出以下程序结果
#define NUMBER 1*2+3*4
int val = 1 + 3 * NUMBER * 2;
则 val = 1+3*1*2+3*4*2= ?
2 程序题
1)请写一个函数重载的例子。
void A(int i);
void A(int i,float f);
2)请写一个C++多态的例子。
class A
{
public:
A() {};
virtual ~A() {};
virtual void Print() { cout << "This is A!" << endl; };
};
class B : public A
{
public:
B() {};
~B() {cout << "Output from the destructor of class B!" << endl;};
void Print() { cout << "This is B!" << endl; };
};
然后再main入口函数调用如下:
A *pTest = new B;
pTest->Print();
delete pTest;
输出结果是:
This is B!
Output from the destructor of class B!
如果将A类中析构函数前virtual去掉,输出结果则是:This is B! 也就是说类B的析构函数没有被调用.
3)请写一个代码片段完成以下功能,平台不限。
动态加载(My.dll或者My.so)调用 My 的导出函数 extern “ C” , float Function(fIoat , float)。
3 简述题
1)请简述stdcall cdcel pasecal的区别
1、_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下 划线前缀,在函数名后加上"@"和参数的字节数。 int f(void *p) -->> _f@4(在外部汇编语言里可以用这个名字引用这个函数)
2、C调用约定(即用__cdecl关键字说明)(The C default calling convention)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存 栈是由调用者来维护的(正因为如此,实现可变参数 vararg的函数(如printf)只能使用该调用约定)。另外,在函数名修饰约定方面也有所不同。 _cdecl是C和C++ 程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函 数采用从右到左的压栈方式。VC将函数 编译后会在函数名前面加上下划线前缀。
2)请简述C/C++的整个编译流程
编译、链接
3)请简述vector list map的基本功能以及注意事项
vector:支持动态数组,可通过标准数组来访问其元素
list类支持双向线性列表。注:list不能像vector那样支持随机访问,只支持顺序访问,由于list是双向的,所以可以从前向后也可以从后向前访问列表。
map类支持关联式容器。一个值映射到唯一一个关键字。可以通过关键字来查找值。注:map容器中的关键字是唯一的,不可以重复使用。
map类支持关联式容器。一个值映射到唯一一个关键字map类支持关联式容器。一个值映射到唯一一个关键字map类支持关联式容器。一个值映射到唯一一个关键字map类支持关联式容器。一个值映射到唯一一个关键字
4)请简述某平台各种进程间通讯以及优缺点
5)请简述C和C++的区别
C面向过程编程, C++面向对象编程
补充:软件开发 , C++ ,