大型软件公司.Net面试题(一)

大型软件公司.net面试题!一定得看

1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换

2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组


3:请简述面向对象的多态的特性及意义!

4:session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法

5:对数据的并发采用什么办法进行处理较好。

6:已知Oracle数据库有GD和ZS两个数据库,GD数据库v_s表有数据写入时,从v_s表中提取最新数据到ZS数据库的D_E表中。请问用什么办法解决这一问题?如果又碰到不能互访的问题时,又用什么办法解决?

7:已知Oracle数据库a,b
现在在a用户权限下,访问b数据库sql语句为select a.* From b a,请改正这一句Sql的写法

8:当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法

9:算法分析
AH 20060625 12 44 01 CAD001
AH 20060625 12 44 01 CAD001
AH 20060625 13 44 02 CAD001
AH 20060625 14 44 03 CAD001
说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段
很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉

10:javascript算法
已知a,b,现在点鼠标a会向b游动,鼠标停,a会停下来
请实现"跑步算法"

1、答案

a=a+b;
b=a-b;
b=(a+b)/2;
a=a-b;

还有变态要求,需要代码最短呢。有两个结果:
1) a^=b^(b^=a^b); // 13个字节
2) a=b+(b=a)*0; // 11个字节

2、答案(如果不限定算法,其实可以直接用Array.Sort()方法的)

public class TestQuickSort {

private int[] array = null;

private void quickSort(int lowest, int highest) {
if (array == null || lowest < 0 || lowest >= highest
|| highest >= array.length) {
return;
}
int low = lowest;
int high = highest;
int key = low++;
for (; low <= high;) {
if (key < high) {
if (array[key] > array[high]) {
array[high] = array[key] + (array[key] = array[high]) * 0;
key = high;
}
high--;
}

if (key > low) {
if (array[key] < array[low]) {
array[low] = array[key] + (array[key] = array[low]) * 0;
key = low;
}
low++;
}
}
quickSort(lowest, key - 1);
quickSort(key + 1, highest);
}

/**
* @param args
*/
public static void main(String[] args) {
TestQuickSort test = new TestQuickSort();
int[] array = {6,5,2,9,7,4,0};
test.array = array;
test.quickSort(0, array.length - 1);
int length = test.array.length;
for (int i = 0; i < length; i++) {
System.out.println(test.array[i]);
}
}
}

不要用冒泡排序法很慢,选择排序好些,但题意是快速排序算法

快速排序算法的基本思想:

快速排序的基本思想是基于分治策略的。对于输入的子序列ap..ar,如果规模足够小则直接进行排序,否则分三步处理:

分解(Divide):将输入的序列ap..ar划分成两个非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于aq+1..ar中任一元素的值。
递归求解(Conquer):通过递归调用快速排序算法分别对ap..aq和aq+1..ar进行排序。
合并(Merge):由于对分解出的两个子序列的排序是就地进行的,所以在ap..aq和aq+1..ar都排好序后不需要执行任何计算ap..ar就已排好序。
这个解决流程是符合分治法的基本步骤的。因此,快速排序法是分治法的经典应用实例之一。

算法Quick_Sort的实现:

Pascal实现:
Procedure Quick_Sort(p,r:TPosition;var L:TList); {快速排序}

var

q:TPosition;

begin

if L[p..r]足够小 then Sort(p,r,L) {若L[p..r]足够小则直接对L[p..r]排序}

else

begin

q:=Partition(p,r,L); {将L[p..r]分解为L[p..q]和L[q+1..r]两部分}

Quick_Sort(p,q,L); {递归排序L[p..q]}

Quick_Sort(q+1,r,L); {递归排序L[q+1..r]}

end;

end;


3、答案

面向对象的编程使用了派生继承 以及虚函数机制.
一个本来指向基类的对象指针可以指向其派生类的.并访问从基类继承而来的成员变量和函数.
而虚函数是专门为这个特性设计的,这个函数在每个基类的派生类中都是同一个名字,但函数体却并不一定相同,派生类往往为实现自己的功能而修改这个虚函数.这样用一个指针就能够实现对多种不同的派生类的访问, 并实现其派生类的特定功能(代码 )....

4、答案
用VIEWSTATE
stateserver

5、答案
可以控制连接池的连接数量条件好的话 可以用负载平衡

posted @ 2010-12-19 00:53  左正  阅读(524)  评论(0编辑  收藏  举报