【百度C++面试题】如何才能得到百度的offer?你面试必需要会这些...

这篇文章主要介绍了百度面试的20道C++面试题以及参考答案 ,但愿对你们有所帮助。程序员


 

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

正确答案: 面试

这问题对区分一个正常的伙计和一个书呆子是颇有用的。只有书呆子才会读C语言课本的附录去找出象这种 问题的答案。固然若是你不是在找一个书呆子,那么应试者最好但愿本身不要知道答案。数据库

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

正确答案: 编程

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

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

正确答案: 数组

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

四、内联函数INline和宏定义一块儿使用的区别。

正确答案: 多线程

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

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

正确答案: 工具

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

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

正确答案: 

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

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

正确答案: 

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

八、 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;

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

正确答案: 

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

十、参数传递有几种方式;实现多态参数传递采用什么方式,若是没有使用某种方式缘由是什么;

正确答案: 

传值,传指针或者引用

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

正确答案: 

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

if ( n == 0 )

if ( n != 0 )

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

正确答案: 

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

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

正确答案: 

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

1四、触发器怎么工做的?

正确答案: 

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

1五、C也能够经过精心封装某些函数功能实现重用,那C++的类有什么优势吗,难道仅仅是为实现重用。

正确答案: 

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

1六、CSingleLock是干什么的?

正确答案:

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

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

正确答案: 

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

1八、 C与C++各自是如何定义常量的?有什么不一样?

正确答案: 

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

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

正确答案: 

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

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

正确答案: 

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

感谢阅读,但愿能帮助到你们,有什么问题欢迎评论区留言。


 

若是你想更好的提高你的编程能力,学好C语言C++编程!弯道超车,快人一步!

C语言C++学习企鹅圈子】,分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!

编程学习书籍:


 

编程学习视频:

相关文章
相关标签/搜索