.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;
a=a-b;
据说还可以这样:a^=b^(b^=a^b); 不了解是什么原理
2.
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]);
}
}
}
快速排序是综合性能最好的内部排序算法!
3.
多态:面向对象的语言使用虚方法表达多态。这就意味着派生类可以有和父类具有同样签名的方法,并且父类可以调用派生类的方法。在C#中,必须使用virtual关键字才能使方法被父类调用。这使得一个对象在不同的环境中有不同的动作形态。
4.
用VIEWSTATE /Profile/自己在服务器端实现个Cache
5.
答可以控制连接池的连接数量
条件好的话 可以用负载平衡
6.
使用触发器,在GD数据库v_s表上建insert触发器,当有新数据加入时,同时写数据到ZS数据库的D_E表中。
如果不能互访,则还是用触发器先保存最新加入的数据到临时表中,用应用程序将数据转移到ZS数据库。
7.
Select * from b.table1
8.
对于oracle数据库来说,可能出现的问题包括:
1. 回滚区间空间不足 ---解决方法,增加表空间
2. 数据表空间不足 ---- 增加数据表空间
3. 表空间不足 ---- 增加表空间(oracle数据表有空间限制)
4. 临时表空间不足 --- 因为计算索引使用临时表空间,增加表空间或者暂时不使用索引,数据导入完毕再新建索引
5.另外一些原因,主要是垃圾数据造成的,比如外键匹配,主键冲突,单一索引冲突等。
9.
alter table 表 add ID int identity(1,1)
delete from 表
where newfield not in
(
select top 1 ID from 表 group by 日期,温度,水位,流量,水位测站编码
)
alter table 表 drop column ID
10.
<html> <head> <title>aa</title> <script language= "javascript" type="text/javascript"> <!-- var obj1=obj2=p1=p2=null; var id=0; //设置调用ID var intval = 10; //单位豪秒,控制调用moveObj()的周期 var step = 5; //每次移动的像素,控制移动的速度 window.onload=function() { obj1=document.getElementById("obj1"); obj2=document.getElementById("obj2"); p1={x:obj1.style.pixelLeft,y:obj1.style.pixelTop}; p2={x:obj2.style.pixelLeft,y:obj2.style.pixelTop}; } function moveObj() { if(p1.x <p2.x) obj1.style.pixelLeft=p1.x+=step; if(p1.y <p2.y) obj1.style.pixelTop=p1.y+=step; } document.onmousedown=function() { if(id==0) id=setInterval("moveObj()",intval); } document.onmouseup=function(){clearInterval(id);id=0;} //--> </script> </head> <body> 按下鼠标a移动,释放鼠标移动停止,再按下则继续移动。 <img src= "a.ico" id= "obj1" alt= "a" style= "position:absolute;left:100px;top:100px; "/> <img src= "b.ico" id= "obj2" alt= "b" style= "position:absolute;left:500px;top:500px; "/> </body> </html>