微信

使用微信服务,更方便

职友集>程序员面试题 > 苏州信描软件公司 笔试题(软件方面)-答案

苏州信描软件公司 笔试题(软件方面)-答案

2015-10-06 06:30:02 阅读( 158 )

1742人 收藏本页

标签:程序员面试题

1. 对数组元素进行排序的思路是什么?你还知道哪些排序方法?

答:起泡法

(1):从数组末端开始,不断比较相邻记录,不满足排序要求就交换,这样比较完一轮后,就会发现最小的元素已被推到数组的最左端R0的位置上,就好象一个气泡从湖底慢慢的冒上来,最后浮出水面。

(2):然后开始第二轮冒泡过程,由于R0已经是最小的记录了,所以第二轮只要对

Rn-1到 R1进行比较就可以了。第二次冒泡结束后,第二小的记录就被推到R1位置上了。如此类推,直到数组中所以记录都排好序为止。

除了冒泡算法,还有:插入排序、直接选择排序、快速排序、归并排序、堆排序、Shell排序 等。

2. 在编写程序之前,你是否是先画出程序的流程图了?谈谈流程图对你在编程时的帮助。试写出对一列数用选择排序法进行升序排序的程序流程图。

答:是的,流程图能形象的表示程序的流程,能给人清晰直观的感觉。流程图能把我建立清晰的程序结构,有利于程序编写时的参考。

程序流程图略.

3. 在c/c++中,谈谈对continue 与break 的区别。

答:continue是终止当前次的循环并转入下次循环的入口,break则是终止它所在的整个循环体,转到循环结构的下面指令进行执行。

4. 在处理动态链表时常常需要哪些函数?它们各自的功用是什么?可以用其它方式替代吗?

答:一般要用到:FindIndex(const int i),//查找单链表中第i个结点;

Insert(value,i),//插入数据内容为value的新结点,使之成为第i个结点;

RmoveAfter(In),//删除由参数In指定的结点的下一个结点;

New Type,//新申请一块由Type指定类型数据的内存空间。

这些函数可以由已知头结点的指针,通过编写代码来实现其功能。

5. 在数组的存储中,对于稀疏矩阵是怎么样存储的?常采用什么样的结构?

答:用数组存储稀疏矩阵时,一般使用三元组(i,j,V)来顺序存储稀疏矩阵,其中i表示该元素的行号,j表示该元素的列号,V表示该元素的值。

用三元组存储稀疏矩阵时进行矩阵的查找、添加、删除等运算时十分不方便,所以经常使用十字链表法来存储稀疏矩阵。

6. 编程时,内存的分配方式有哪几种?分别有什么特点?

答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。
二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc(C)或new(C++)申请任意多少的内存,程序员自己负责在何时用free(C)或delete(C++)释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

7. 请你谈谈指针除了在数组方面的优点外,还有什么其他的优点?也请你谈谈如何将指针与数组结合使用,以便最大限度地利用它们各自的长处。

答:指针是一种特别的变量,它所存放的是其他的变量的地址,就是说它所存的数据实际上的其他变量的地址而不是一般的数据。指针的特点就是动态性比较好,可以随时申请内存空间,对指针的操作也很灵活。 可以将数组的首地址申明成一个指针,这样对数组元素的操作就可以化为用指针进行操作,从集合了数组对元素读取的速度快,而删除或者添加的则又有指针的快捷。

来自IT公司面试手册

下一篇:面经-优识-兼职软件开发工程师

上一篇:关于程序员面试的注意事项 (摘抄

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题