CC++的一些面试基本题_cc经典面试笔试题

2020-02-29 其他范文 下载本文

CC++的一些面试基本题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“cc经典面试笔试题”。

标题: C/C++的一些面试基本题

发信站: 兵马俑BBS(Wed Jun 16 15:00:14 2010), 本站(bbs.xjtu.edu.cn)

下面是自己面试时或是听别人说的一些C/C++面试基本题,都是语言细节和一些基本功,准备找工作的同学是可以看看。至于算法方面的,我面试过的公司都没有问什么有深度的东西(总是问我排序,堆栈方面的)。关于算法,我个人推荐一本书,algorithms in c(C算法),我觉得这本书写的很好,很值得看(我现在就在看),如果能掌握了这本书的话,面试算法问题就不大了。我知道很多人更喜欢Introduction to algorithms(算法导论)这本书,这本书我买了一年多,惭愧,看了一半都不到,习题写得代码也不多。不过我个人更喜欢algorithms in c这本书,感觉它更适合我。

下面就是那些题目了,答案基本上我检验过,应该错误不多。

1.求下面函数的返回值(腾讯,阿里巴巴今年笔试都有)

int func(int x){

int countx = 0;

while(x){

countx++;

x = x &(xb))/ 2

13.如何打印出当前源文件的文件名以及源文件的当前行号?

答案:

cout

cout

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

14.main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行。

15.如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

答案:

#ifdef __cplusplus

cout

#else

cout

#endif

16.下面程序的输出结果是什么啊?

#define SQR(X)X*X

int main(int argc, char* argv[]){

int a = 10;

int k = 2;

int m = 1;

a /= SQR(k+m)/SQR(k+m);

printf(“%dn”,a);

return 0;

}

答案: 1

17,const在一个函数中的4个位置的不同用法(面试我时我没有答上这个题,汗)主要是要理解const函数,不能改变对象。否则编译会报错。

18.写出运行结果:

union V {

struct X {

unsigned char s1:2;

unsigned char s2:3;

unsigned char s3:3;

} x;

unsigned char c;

} v;

v.c = 100;

printf(“%d”, v.x.s2);

}

答案: 1

19.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数 A1:

16位的系统下,int i = 65536;

cout

int i = 65535;

cout

32位的系统下,int i = 65536;

cout

int i = 65535;

cout

A2:

int a = ~0;

if(a>65536){

cout

}

else{

cout

}

20.在不用第三方参数的情况下,交换两个参数的值

方法1:

i=i+j;

j=i-j;

i=i-j;

方法二:

i^=j;

j^=i;

i^=j;

方法三:

// 用加减实现,而且不会溢出

a = a+b-(b=a)

21.写出输出结果

typedef union {

int a_int1;

double a_double;

int a_int2;

} a;

typedef struct {

a a1;

char y;

} b;

struct {

double c_double;

b b1;

a a2;

} c;

printf(“%dn”, sizeof(c));

答:有人说在VC下答案是32,我是linux系统,没法测试VC,但我知道在gcc下32位机默认的对齐是4(#pragma pack(4)),所以答案是28.22.试编写函数判断计算机的字节存储顺序是开序(little endian)还是降序(bigendian)答:

bool IsBigendian(){

unsigned short usData = 0x1122;

unsigned char*pucData =(unsigned char*)&usData;

return(*pucData == 0x22);

}

23.int id[sizeof(unsigned long)];这个对吗?为什么??

答:对,这个 sizeof是编译时运算符,编译时就确定了,可以看成和机器有关的常量。

24.找错

void test1(){

char string[10];

char* str1 = “0123456789”;

strcpy(string, str1);

}

答:数组越界。

25.分别给出bool,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)答案:

bool型变量:if(!var)

int型变量: if(var==0)

float型变量:

const float EPSINON = 0.00001;

if((x >=-EPSINON)&&(x

指针变量:if(var==NULL)

26.请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1 答:和22题一样,不过这里是另外一个方法。

nt checkCPU()

{

{

union w

{

int a;

char b;

} c;

c.a = 1;

return(c.b == 1);

}

}

27.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的(此题我没有答上)? 答:是在编译时建立的。但在运行时刻才能知道究竟事调用那个函数。

28.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)

bool IsTwoPower(int s){

return(s > 0)&&((s &(s-1))==0);//如果是2的幂的话,在二进制表示中只能有1个1 }

《CC++的一些面试基本题.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
CC++的一些面试基本题
点击下载文档
相关专题 cc经典面试笔试题 CC cc经典面试笔试题 CC
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文