更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

2017百度C/C++开发工程师面试题

  • 发布:C++培训
  • 来源:C++职场
  • 时间:2017-08-28 13:52

2017百度C++面试题

1、 预处理器标识#error的目的是什么?

正确答案:

这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种 问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。

2、C语言的volatile的含义是什么。使用时会对编译器有什么暗示。

正确答案:

如果这个测试是一个关于嵌入式的,那么这道题非常重要!!从词面上讲,volatile的意思是易变的,也就是说,在程序运行过程中,有一些变量可能会被莫名其妙的改变,而优化器为了节约时间,有时候不会重读这个变量的真实值,而是去读在寄存器的备份,这样的话,这个变量的真实值反而被优化器给“优化”掉了,用时髦的词说就是被“和谐”了。如果使用了这个修饰词,就是通知编译器别犯懒,老老实实去重新读一遍!可能我说的太“通俗”了,那么我引用一下“大师”的标准解释: volatile的本意是“易变的” 。 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化,但有可能会读脏数据。当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。 精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量 嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量。不懂得volatile内容将会带来灾难。

3、 MFC中CString是类型安全类么?

正确答案:

不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换

4、内联函数INline和宏定义一起使用的区别。

正确答案:

内联函数是在编译的时候已经做好将对应的函数代码替换嵌入到对应的位置,适用于代码较少的函数。 宏定义是简单的替换变量,如果定义的是有参数的函数形式,参数不做类型校验。

5、C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中?

正确答案:

栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理 堆: 程序运行时动态申请,new 和 malloc申请的内存就在堆上。

6、DB事务处理的四个特性:

正确答案:

原子性,一致性,隔离性,持久性 就答对一个:一致性,

7、如何初始化一个指针数组。

正确答案:

首先明确一个概念,就是指向数组的指针,和存放指针的数组。 指向数组的指针:char (*array)[5];含义是一个指向存放5个字符的数组的指针。 存放指针的数组:char *array[5];含义是一个数组中存放了5个指向字符型数据的指针。 按照题意,我理解为初始化一个存放指针的数组,char *array[2]={“China”,”Beijing”};其含义是初始化了一个有两个指向字符型数据的指针的数组,这两个指针分别指向字符串”China”和”Beijing”。

8、 int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?

正确答案:

相当于 i=j=4;i=k=8;i=l=16;i=m=32; 故最后i=32;

9、如何在C中初始化一个字符数组。

正确答案:

这个问题看似很简单,但是我们要将最简单的问题用最严谨的态度来对待。关键的地方:初始化、字符型、数组。最简单的方法是char array[];。这个问题看似解决了,但是在初始化上好像还欠缺点什么,个人认为:char array[5]={’1′,’2′,’3′,’4′,’5′};或者char array[5]={“12345″};或者char array[2][10]={“China”,”Beijing”};也许更符合“初始化”的意思。

10、参数传递有几种方式;实现多态参数传递采用什么方式,如果没有使用某种方式原因是什么;

正确答案:

传值,传指针或者引用

11、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。

正确答案:

这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:

if ( n == 0 )

if ( n != 0 )

12、C++特点是什么,如何实现多态?画出基类和子类在内存中的相互关系。

正确答案:

多态的基础是继承,需要虚函数的支持,简单的多态是很简单的。 子类继承父类大部分的资源,不能继承的有构造函数,析构函数,拷贝构造函数,operator=函数,友元函数等等

13、 什么是“引用”?申明和使用“引用”要注意哪些问题?

正确答案:

引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引 用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只 表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

14、触发器怎么工作的?

正确答案:

触发器主要是通过事件进行触发而被执行的,当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,数据库就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。

15、C也可以通过精心封装某些函数功能实现重用,那C++的类有什么优点吗,难道仅仅是为实现重用。

正确答案:

并不仅仅是这样的。 OOD,OOP从根本上改变了程序设计模式和设计思想,具备重大和深远的意义。 类的三大最基本的特征:封装,继承,多态。

16、CSingleLock是干什么的。

正确答案:

同步多个线程对一个数据类的同时访问

17、 C++中引用和指针的区别?

正确答案:

引用是对象的别名, 操作引用就是操作这个对象, 必须在创建的同时有效得初始化(引用一个有效的对象, 不可为NULL), 初始化完毕就再也不可改变, 引用具有指针的效率, 又具有变量使用的方便性和直观性, 在语言层面上引用和对象的用法一样, 在二进制层面上引用一般都是通过指针来实现的, 只是编译器帮我们完成了转换。 之所以使用引用是为了用适当的工具做恰如其分的事, 体现了最小特权原则。

18、 C与C++各自是如何定义常量的?有什么不同?

正确答案:

C中是使用宏#define定义, C++使用更好的const来定义。 区别: 1)const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换,没有类型安全检查,而且在字符替换时可能会产生意料不到的错误(边际效应)。 2)有些编译器可以对const常量进行调试, 不能对宏调试。

19、 C++函数中值的传递方式有哪几种?

正确答案:

C++函数的三种传递方式为:值传递、指针传递和引用传递。

20、一般数据库若出现日志满了,会出现什么情况,是否还能使用?

正确答案:

只能执行查询等读操作,不能执行更改,备份等写操作,原因是任何写操作都要记录日志。也就是说基本上处于不能使用的状态。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C++面试常考题型总结
下一篇:C语言计算机基础学习||新手入门必看

几个C语言经典基础算法(含代码)

不得不知道的八个C语言面试题

C/C++后台开发面试难不难,京东二面

C/C++后台开发面试难不难,来看看京东

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省