当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,