C++经典面试题(七)

最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。

一是从来没有这个意识,二是没有认真的梳理下。

下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯!

61.main 函数执行以前,还会执行什么代码?

【参考答案】全局对象的构造函数会在main 函数之前执行。

62.There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement
statements, find out the biggest one of the two numbers.

【标准答案】( ( a + b ) + abs( a - b ) ) / 2

(利用了数轴原理)

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

【标准答案】

cout << __FILE__ ;

cout<<__LINE__ ;

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

(快忘完了。。。)

64.下面两种if语句判断方式。请问哪种写法更好?为什么?

int n; if (n == 10) // 第一种判断方式
if (10 == n) // 第二种判断方式

【参考答案】这是一个风格问题,第二种方式如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=。

在《C陷阱和缺陷》上面看到过,然后就一直保持这样的风格,嘿嘿!

65.写出运行结果:

{
// test1
char str[] = "world";
cout << sizeof(str) << ": ";
char *p = str;
cout << sizeof(p) << ": ";
char i = 10;
cout << sizeof(i) << ": ";
void *pp = malloc(10);
cout << sizeof(p) << endl;
}

【标准答案】6:4:1:4

简单解释下

6,“world”在内存中这样存储,‘w’、‘o’、‘r’、‘l’、‘d’,还有它的结束符‘\0’,sizeof运算符计算str大小的时候包含‘\0’,所以是6,而使用strlen()函数计算出的str的大小就不包含‘\0’,得出的结果是5,注意区分。。

4,*p是一个char型指针,在32位机器上,指针的大小是4字节。如果是在64位机器上,结果是8

1,在32位机器上,char类型所占的大小是1字节

4,malloc(10)申请了10个指向void的地址,*pp存储的是首地址

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

【参考答案】

a = a + b;
b = a – b;
a = a – b; 

用位运算会更快一点

a=a^b;
b=a^b;
a=a^b;

实际上,原理和参考答案一样。。。

67.int i = 5, b = 7; cout << (i+++b) <<endl;

不用调试,请说出,以上代码在gcc编译过后的执行结果!

【标准答案】结果是12。

68.写一个能做左值的函数(方法有很多)。如:max(x, y) += 2874 + 55; drwline(x, y)++;

【参考答案】

int &max(int & x, int & y)
{
      return x > y? x : y;
} 
int x = 55, y = 77;
max(x, y) += 12 + 11; // 此时 y = 100;
cout << "x = "x << "; y = "<< y << endl; // 输出 x = 55; y = 100;

69.

【标准答案】

human disp ... ...

human over ......

因为没有声明为虚函数,所以无法调用子类的成员函数

70.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正 :

int add_n(int n)
{
	static int i=100;
	i+=n;
	return i;
} 

【标准答案】 因为static使得i的值会保留上次的值。以后的i会一直更新,使得第二次调用出现 出现错误, 去掉static就可了

未完。。。待续(*^_v_^*)

时间: 2024-08-18 10:16:30

C++经典面试题(七)的相关文章

.Net经典面试题

1.同一平台: 2.Bootstrap 3.webAPI 4.SignalR 5.ASP.Identity 6.OWIN 二. ObjectContext: 用于控制ASP的交易(Transaction),交易由Microsoft Transaction Server(MTS)管理 三.asp 是解释执行 asp.net是编译执行的 四.列举ASP.NET 页面之间传递值的几种方式. 答. 1.使用QueryString,  如....?id=1; response. Redirect()...

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).

Linux 经典面试题

[Linux  经典面试题] 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来标识. 4. 全部磁盘块由四个部分组成,分别为引导块 .专用块 . i节点表块 和数据存储块. 5. 链接分为: 硬链接 和 符号链接 . 6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息. 7. 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八

李洪强iOS经典面试题总结

iOS经典面试题总结--内存管理 我根据自己的情况做了一下总结,答案是我总结的,如有答的不好的地方,希望批评指正以及交流,谢谢! 内存管理 1.什么是ARC? ARC是automatic reference counting自动引用计数,在程序编译时自动加入retain/release.在对象被创建时retain count+1,在对象被release时count-1,当count=0时,销毁对象.程序中加入autoreleasepool对象会由系统自动加上autorelease方法,如果该对象

【转】.net 经典面试题

[转].net 经典面试题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public : 公共成员,完全公开,没有访问限制. internal: 在同一命名空间内可以访问. 2 .列举ASP.NET 页面之间传递值的几种方式. 答. 1.使用QueryString, 如....?id=1; response.

50个C/C++经典面试题

C/C++经典面试题  面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明.一个变量可以在多个地方声明, 但是只在一个地方定义.加入extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分 定义. 说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间, 如外部变量. 面试题2 :写出bool .int. float .指针变量与 “零值”比较的if 语句 bool 型数据: if( flag ) { A;

经典面试题回答——学习Java基础的目的

本系列知识解释:相信每一个学习Java的人都是从JavaSE开始的,也就是Java基础开始.但是却并不清楚学习Java基础到底有什么用? 首先我来回答这个问题,学习Java基础是有两个目的: 一.掌握基本的Java语言底层编码方法,同时掌握Java这门语言的编程思想,为了后期学习JavaEE打下基础,要不然在学习JavaEE的时候,连封装,继承,多态都不懂,那就实在是没法说了(相信在传智播客学习过Java基础的同学,这些都不是问题.) 二.在学习完JavaSE和JavaEE后招工作的时候能够答上

李洪强iOS经典面试题

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px "Helvetica Neue"; color: #333333; min-height: 20.0px } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px "Helvetica Neue"; color: #333333; background-color: #ffffff } p.p3 { margi

李洪强IOS开发之-iOS经典面试题

李洪强IOS开发之-iOS经典面试题 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看.我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖.整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人.所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家,进阶题目在后续补充.我的理解如果有错漏请一定指出,非常感谢! 从12年开始做面试官到现在已经三个年头了,这