中兴软件开发面试
2015-09-13 11:11
447 查看
中兴软开面试:
一进去,先自我介绍,
然后问了下 什么C语言const,与c++的区别:
答::C语言是变量,C++const常量,在C++里面用这个在常量存储区。
为什么我象下面的例子一样用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢? const int n = 5;int a
;
这样会出错,而在C++中不会出错。
C++可以方便常量进行标识。
这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如5,
“abc”,等,肯定是只读的,因为程序中根本没有地方存放它的值,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不 过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为 只读变量,可惜再怎么修饰也不是常量。而ANSI
C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。
问题二 什么是完全二叉树,什么是满二叉树:
满二叉树, 深度是k,有2^k-1个节点。
完全二叉树,是满二叉树从右到左减少几个节点。(面试的时候,可以画图给他看看)
还有其他的,都是根据项目问的,转自同学。
一进去,先自我介绍,
然后问了下 什么C语言const,与c++的区别:
答::C语言是变量,C++const常量,在C++里面用这个在常量存储区。
为什么我象下面的例子一样用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢? const int n = 5;int a
;
这样会出错,而在C++中不会出错。
C++可以方便常量进行标识。
这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如5,
“abc”,等,肯定是只读的,因为程序中根本没有地方存放它的值,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不 过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为 只读变量,可惜再怎么修饰也不是常量。而ANSI
C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。
c++中的const:跟c中比较,内容要丰富很多,当然,作用也更大了 1:非类成员const *在c++中,const变量(在这里涉及的const都不是类中的const,类中的const专门提出来记录)默认是内部连接的,因此在不同的编译单元中可以有同名的const 变量定义。 *是编译时常量,因此可以像#define一样使用,而且因为上面一点,可以在头文件中定义const变量,包含的不同的cpp文件(编译单元)中使用而不引起命名冲突。 *编译器默认不为const变量分配内存,除非:1. 使用 extern 申明, 2:程序中有引用const 变量的地址。 * 可以使用下面的类型转换(不安全的): 1: int * = (int *)pConst 2: int * = const_cast<int*>pConst(c++解const属性cast) * 函数参数或者返回值能使用 const & or const * 时,尽量使用const属性,增强程序健全性。 *c++中临时对象/内置变量默认具有const属性 2:类中的const *类中的const与c语言中的const一样,只是运行时常量,不能作为数组维数使用,即不能取代#define。在类中使用下面两种方式取代#define: 1:static const... 2: enum{....}//enum 不占存储空间 *类中的const 变量占用存储空间 *类中的const成员变量需要在构造函数初始化列表中初始化 *const 对象:在该对象生命周期内,必须保证没有任何成员变量被改变。const对象只能调用const成员函数。 *const成员函数: void fun() const ... 不仅能被const对象调用,也能被非const对象调用,因此,如果确认一个任何成员函数不改变任何成员变量,应该习惯性将该函数定义成const类型。 如果const成员函数需要改变成员变量,有两种实现方式: 1 ,const_cast<class*> this强制取消this指针的const属性。 2:将被改变的成员变量定义成mutable:mutable int i; //应永远只使用第二种方法,让任何阅读程序的人都知道该变量可能被const函数改变。 *如果一个对象被定义成const,那么该const对象“可能”会被放入到ROM当中,这在嵌入式开发当中有时非常重要。。。。(不能有任何自定义的constructor 和destructor。它的基类或者成员对象不能有自定义的constructor和destructor,不能有任何mutable成员变量)
问题二 什么是完全二叉树,什么是满二叉树:
满二叉树, 深度是k,有2^k-1个节点。
完全二叉树,是满二叉树从右到左减少几个节点。(面试的时候,可以画图给他看看)
还有其他的,都是根据项目问的,转自同学。
相关文章推荐
- 【转载】程序员:增加编程经验的3种途径
- 去哪儿网面试 -- HR面跪了
- 蘑菇街2016校园招聘面试经验
- OSChina 周日乱弹 —— 程序员要这么求婚
- 程序员如何做到『编程速度又快,Bug 数量又少』?
- 海量数据处理面试题
- 《剑指Offer》面试题:统计一个数字在排序数组中出现的次数
- 黑马程序员——IO流(下)
- 《剑指Offer》面试题:对字符串进行循环左移
- 程序员必须知道的10大基础实用算法及其讲解
- 南京大学行业求职研究报告——投资银行篇
- 南京大学行业求职研究报告——投资银行篇
- 面试题6:重建二叉树
- 《剑指Offer》面试题:员工的年龄进行排序
- 我决定开始写技术博客了
- Java面试问题集锦02-Java语言开发环境
- 《剑指Offer》面试题:旋转数组的最小数字
- java面试问题集锦01-Java程序设计概述
- 你想成为优秀的Java程序员吗?
- 黑马程序员——IO流(上)