您的位置:首页 > 职场人生

面试题总结1

2015-06-22 19:19 344 查看
1、C\C++中的内存分配问题。

C\C++程序中涉及到的内存大致分为3种情况:

堆栈区(stack),由编译器自动分配,存放函数的参数列表,局部变量等,其操作方法类似于数据结构的栈。
堆区(heap),一般由程序员动态申请的内存, 由程序员释放空间,或者在程序结束的时候由操作系统回收资源,其操作方法类似于数据结构的链表。
全局区(静态存储区),一般存放全局变量和静态变量,程序结束后由系统自己释放。
文字常量去,存放常量字符串等,由系统释放。
程序代码区,存放程序的二进制代码。

2、C\C++中动态申请内存的函数。

c语言中与内存申请相关的函数有:alloca,calloc, malloc, realloc, free.

其中alloca是向栈中申请内存,无需释放,malloc是向堆中申请内存,并没有对申请的内存块进行初始化,所以一般用memset函数进行初始化,memset()函数原型:

void *memset(void *s, int ch, size_t n);

realloc是对malloc申请的内存大小进行调整,用free进行释放内存。calloc申请的内存初始化为0。

C++中用new、delete操作符。用new申请的内存必须用delete,两者配合使用。

3、delete和delete []的区别

delete 释放一次,调用一次析构函数,而delete []针对对象数组形式,有多少个对象就调用多少次析构函数。

4、二叉平衡树和满二叉树的区别。

平衡二叉树(Balanced
Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对
值不超过1,并且左右两个子树都是一棵平衡二叉树。

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。

5、无向图与有向图的区别。

无向图的边看成是两个方向,有向图的边只有一种方向,如果用邻接矩阵来表示,无向图是对称矩阵,有向图不一定是。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: