一份面试题,大家来研究一下
浪漫幕末 2009-07-21 11:20:33 1. 常用的线性结构有哪些?数组和链表在内存中的存储特点是什么?栈和队列的操作原则是什么?
数组,链表,栈,队列
数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
(静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
链表从堆中分配空间, 自由度大但是申请管理比较麻烦.
栈是先进后出 FILO,队列是先进先出 FIFO
2. 判断一个表达式中左右括号是否匹配,采用哪种数据结构实现较为方便?
栈
3. 为了提高队列的空间的使用效率,通常做怎么样的处理?
不知道
4. 说出下面几个C#函数的参数传递的区别?
1, private void test(string str){…} 传值
2, private void test(ref string str){…} 传地址
3, private void test(out string str){…} 输出参数
0
5. 把整数转换成中文字符串
System.Text.Encoding.GetEncoding("GB2312").GetString(System.Text.Encoding.Unicode.GetBytes(Convert.ToString("2")));
6. 在11个整数元素的数组(1-10)中寻找唯一重复的两个整数
数组a[N],存放整数1至N-1,其中某个数重复了一次。写一个函数,找出重复的数字。时间复杂度必须为O(N),函数原型:int do_dup(int a[],int N)
解答:
int do_dup(int a[],int N)
{
int temp;
//a[0]为监视哨
while (a[0]!=a[a[0]])
{
temp = a[0];
a[0] = a[temp];
a[temp] = temp;
}
return a[0];
}
7. SQL 定时操作,Group,Average,Top,Sum
不明白
8. C#中接口的使用场景
1、强制实现某种规范
2、应用多态,比如三层架构中数据访问工厂的实现
9. 用委托方法完成在一个类中封装四则运算
不会啊
10. 单链表的插入函数,语言不限
11. 字符串倒排的算法
ToCharArray()转换成char数组,再倒序。
12. 字符串第一个子串的匹配的算法
kmp算法,忘记了。。。
13.int add(double x)
int subtract(double x)
int multiplicat(double x)
double division(double x)
用委托的方法一次性的执行以上四个函数
委托要求返回值类型一样呀,不知道怎么搞。。。。
大家来补充,HOHO~