面试题
别是清欢
这个作者很懒,什么都没留下…
展开
-
内部排序之交换排序
1.排序的分类:根据数据存储位置的不同,排序可分为内部排序和外部排序。 若所有需要排序的数据都存放在内存中,在内存中调整数据的存储顺序,这样的排序称为内部排序;反之,若待排序记录数据量较大,排序时只有部分数据被调用内存,排序过程中存在多次内,外存之间的交换,这样的排序称为外部排序。内部排序可以分为:交换排序,插入排序,选择排序,归并排序和基数排序排序五大类。外部排序中最常用的...原创 2018-03-14 15:52:49 · 288 阅读 · 0 评论 -
平衡二叉树的插入
平衡二叉树的概念:在学习二叉排序树的查找时,通过分析查找算法的效率可知,不同结构的二叉排序树查找效率有很大的不同,单支树的查找效率相当于顺序查找,而越趋于平衡的二叉排序树查找效率越高。因此,在二叉排序树的基础上引进了平衡二叉树。所谓平衡二叉树是指它除了具备二叉排序树的基本特性之外,还具有一个非常重要的特点:它的左子树与右子树的深度之差(平衡因子)的绝对值不超过1,且都是平衡二叉树。二叉...原创 2018-03-04 22:24:34 · 17941 阅读 · 7 评论 -
浅谈C语言中的堆
操作系统堆管理器管理:堆管理器是操作系统的一个模块,堆管理内存分配灵活,按需分配。 大块内存: 堆内存管理者总量很大的操作系统内存块,各进程可以按需申请使用,使用完释放。 程序手动申请&释放: 手工意思是需要写代码去申请malloc和释放free。 脏内存: 堆内存也是反复使用的,而且使用者用完释放前不会清除,因此也是脏的。 临时性: 堆内存只在...转载 2018-02-24 22:45:59 · 473 阅读 · 0 评论 -
栈和堆内存的区别
1.1)栈:为编译器自动分配和释放,如函数参数、局部变量、临时变量等等 2)堆:为成员分配和释放,由程序员自己申请、自己释放。否则发生内存泄露。笔试题目:请解释一个栈内存与一个堆内存的区别,请分析下面代码运行是否有问题,如果有问题请改正。char* GetMemory(void){char p[] = “Hello world”;return p;}void m...原创 2018-02-24 22:43:07 · 177 阅读 · 0 评论 -
写一个函数找出一个整数数组中,第二大的数
题目:写一个函数找出一个整数数组中,第二大的数。算法分析:1)假设数组中的前两个元素就是最大和第二大,即max和smax;2)从数组的第二个元素开始遍历数组,当有元素大于max的时候,将max赋值给smax,再将最大的那个元素赋值给max;3)如果当前元素小于max,并且大于smax,那么就让smax当前元素。算法实现:方法一:#include<stdio.h&g...原创 2018-03-02 15:39:39 · 12079 阅读 · 1 评论 -
面试题:long a=0x801010;a+5?
试题:long a=0x801010; a+5=?解析:0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值为8392720,再加上5就是8392725。原创 2018-03-02 15:06:23 · 1521 阅读 · 0 评论 -
C语言函数调用三种方式:传值调用,引用调用和传地址调用。
一.试题: 考题一:程序代码如下: void Exchg1(int x, int y) { int tmp; tmp=x; x=y; y=tmp; printf(“x=%d,y=%d/n”,x,y) } void main() { int a=4,b=6; Exchg1 ...原创 2018-02-12 19:51:24 · 1586 阅读 · 0 评论 -
面试题:循环语句执行过程
题目一:(奇虎360) 以下程序运行时,若输入1abcedf2df<回车>,则输出结果是#include<stdio.h>#pragma warning(disable:4996)int main(){ char a = 0, ch; while ((ch = getchar()) != '\n') { if (a % 2 != 0 && (ch >=原创 2017-12-22 20:49:04 · 300 阅读 · 0 评论 -
堆栈溢出一般是由什么原因导致的?
题目:堆栈溢出一般是由什么原因导致的? 答:1.函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。 2.动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态空原创 2017-12-22 11:30:54 · 38183 阅读 · 0 评论 -
全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
答:有区别。 全局变量保存在内存的全局存储区,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。引申: C语言经过编译之后将内存分为以下五个区域 1.栈:由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数,局部变量,返回值及函数返回地址。操作方式类似数据结构中的栈。 2.堆:用于程序动态申请分配和释放空间。C语言中的malloc和free,原创 2017-12-22 11:08:33 · 5467 阅读 · 0 评论 -
Linux:若某一文件有n行,如何取出中间几行的数据?
从第3000行开始,显示1000行。即显示3000~3999行cat filename | tail -n +3000 | head -n 1000显示1000行到3000行cat filename| head -n 3000 | tail -n +1000*注意两种方法的顺序分解:tail -n 1000:显示最后1000行tail -n +1000:从1000行...原创 2018-09-03 08:44:55 · 5289 阅读 · 0 评论