System.out.println(test.array[i]);
}
}
}
快速排序是综合性能最好的内部排序算法!
3.请简述面向对象的多态的特性及意义!
多态:
面向对象的语言使用虚方法表达多态。
这就意味着派生类可以有和父类具有同样签名的方法,并且父类可以调用派生类的方法。
在C#中,必须使用virtual关键字才能使方法被父类调用。
这使得一个对象在不同的环境中有不同的动作形态。
4.session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法
用VIEWSTATE/Profile/自己在服务器端实现个Cache
5.对数据的并发采用什么办法进行处理较好。
可以控制连接池的连接数量
条件好的话可以用负载平衡
6.已知Oracle数据库有GD和ZS两个数据库,GD数据库v_s表有数据写入时,从v_s表中提取最新数据到ZS数据库的D_E表中。
请问用什么办法解决这一问题?
如果又碰到不能互访的问题时,又用什么办法解决?
7.已知Oracle数据库a,b现在在a用户权限下,访问b数据库sql语句为selecta.*Fromba,请改正这一句Sql的写法
8.当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法
9.算法分析
AH20060625124401CAD001
AH20060625124401CAD001
AH20060625134402CAD001
AH20060625144403CAD001
说明:
第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段
很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉
10.javascript算法
已知a,b,现在点鼠标a会向b游动,鼠标停,a会停下来
请实现"跑步算法"
11.猫叫,老鼠逃跑,主人惊醒。
要点:
1.联动效果,运行代码只要执行Cat.Cryed()方法。
2.对老鼠和主人进行抽象
评分标准:
<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。
(3分)
1usingSystem;
2usingSystem.Collections;
3
4namespaceConsoleApplication1
5{
6publicinterfaceObserver
7{
8voidResponse();//观察者的响应,如是老鼠见到猫的反映
9}
10publicinterfaceSubject
11{
12voidAimAt(Observerobs);//针对哪些观察者,这里指猫的要扑捉的对象---老鼠
13}
14
15publicclassMouse:
Observer
16{
17privatestringname;
18publicMouse(stringname,Subjectsubj)
19{
20this.name=name;
21subj.AimAt(this);
22}
23
24publicvoidResponse()
25{
26Console.WriteLine(name+"attempttoescape!
");
27}
28}
29
30publicclassMaster:
Observer
31{
32publicMaster(Subjectsubj)
33{
34subj.AimAt(this);
35}
36
37publicvoidResponse()
38{
39Console.WriteLine("Hostwaken!
");
40}
41}
42
43
44publicclassCat:
Subject
45{
46privateArrayListobservers;
47publicCat()
48{
49this.observers=newArrayList();
50}
51publicvoidAimAt(Observerobs)
52{
53this.observers.Add(obs);
54}
55publicvoidCry()
56{
57Console.WriteLine("Catcryed!
");
58foreach(Observerobsinthis.observers)
59{
60obs.Response();
61}
62}
63}
64
65classMainClass
66{
67/**////
68///应用程序的主入口点。
69///
70[STAThread]
71staticvoidMain(string[]args)
72{
73Catcat=newCat();
74Mousemouse1=newMouse("mouse1",cat);
75Mousemouse2=newMouse("mouse2",cat);
76Mastermaster=newMaster(cat);
77cat.Cry();
78}
79}
80}
设计方法二:
使用event--delegate设计
1usingSystem;
2usingSystem.Collections;
3
4
5namespaceConsoleApplication1
6{
7publicdelegatevoidSubEventHandler();
8publicabstractclassSubject
9{
10publiceventSubEventHandlerSubEvent;
11protectedvoidFireAway()
12{
13if(this.SubEvent!
=null)
14this.SubEvent();
15}
16}
17publicclassCat:
Subject
18{
19publicvoidCry()
20{
21Console.WriteLine("catcryed.");
22this.FireAway();
23}
24}
25
26publicabstractclassObserver
27{
28publicObserver(Subjectsub)
29{
30sub.SubEvent+=newSubEventHandler(Response);
31}
32publicabstractvoidResponse();
33}
34publicclassMouse:
Observer
35{
36privatestringname;
37publicMouse(stringname,Subjectsub):
base(sub)
38{
39this.name=name;
40}
41publicoverridevoidResponse()
42{
43Console.WriteLine(name+"attempttoescape!
");
44}
45}
46publicclassMaster:
Observer
47{
48publicMaster(Subjectsub):
base(sub){}
49publicoverridevoidResponse()
50{
51Console.WriteLine("hostwaken");
52}
53}
54
55classMainClass
56{
57/**////
58///应用程序的主入口点。
59///
60[STAThread]
61staticvoidMain(string[]args)
62{
63Catcat=newCat();
64Mousemouse1=newMouse("mouse1",cat);
65Mousemouse2=newMouse("mouse2",cat);
66Mastermaster=newMaster(cat);
67cat.Cry();
68}
69}
70}
12.在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。
回答要点:
说明详细的空间分配。
stringstr=null是不给他分配内存空间,而stringstr=""给它分配长度为空字符串的内存空间.
13.请详述在dotnet中类(class)与结构(struct)的异同:
Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
14.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
(10)
namespacetest
{
publicdelegatevoidOnDBOperate();
publicclassUserControlBase:
System.Windows.Forms.UserControl
{
publiceventOnDBOperateOnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)
{
if(e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
}
答:
if(OnNew!
=null)
OnNew(this,e);
15.分析以下代码,完成填空
stringstrTmp="abcdefg某某某";
inti=System.Text.Encoding.Default.GetBytes(strTmp).Length;
intj=strTmp.Length;
以上代码执行完后,i=j=
答:
i=13,j=10
16.SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。
SelectIDFROMtable1
WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1)
17.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?
并简要说明理由。
publicvoidtest(inti)
{
lock(this)
{
if(i>10)
{
i--;
test(i);
}
}
}
:
不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。
但如果把int换做一个object,那么死锁会发生)
18.分析以下代码
publicstaticvoidtest(stringConnectString)
{
System.Data.OleDb.OleDbConnectionconn=newSystem.Data.OleDb.OleDbConnection();
conn.ConnectionString=ConnectString;
try
{
conn.Open();…….
}catch(ExceptionEx)
{
MessageBox.Show(Ex.ToString());
}finally
{
if(!
conn.State.Equals(ConnectionState.Closed))
conn.Close();
}
请问
1)以上代码可以正确使用连接池吗?
答:
回答:
如果传入的connectionString是一模一样的话,可以正确使用连接池。
不过一模一样的意思是,连字符的空格数,顺序完全一致。
2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?
答:
只可以捕捉数据库连接中的异常吧.(finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。
所以理论上并非所有异常都会被捕捉。
)
19.简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
WS主要是可利用HTTP,穿透防火墙。
而Remoting可以利用TCP/IP,二进制传送提高效率。
20.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:
点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。
根据您的知识,请简要谈一下您的思路:
根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中
21.给定以下XML文件,完成算法流程图。
(10)
请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。
答:
voidFindFile(Directoryd)
{
FileOrFolders=d.GetFileOrFolders();
foreach(FileOrFolderfofinFileOrFolders);
{
if(fofisFile)
YouFoundafile;
elseif(fofisDirectory)
FindFile(fof);
}
}
22.C#中property与attribute的区别,他们各有什么用处,这种机制的好处在哪里?
property和attribute汉语都称之为属性。
不过property是指类向外提供的数据区域。
而attribute则是描述对象在编译时或运行时属性的。
这两者是有本质区别的。
23..列举ASP.NET页面之间传递值的几种方式。
答.1).使用QueryString,如....?
id=1;response.Redirect()....
2).使用Session变量
3).使用Server.Transfer
24.一列数的规则如下:
1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。
答:
publicclassMainClass
{
publicstaticvoidMain()
{
Console.WriteLine(Foo(30));
}
publicstaticintFoo(inti)
{
if(i<=0)
return0;
elseif(i>0&&i<=2)
return1;
elsereturnFoo(i-1)+Foo(i-2);
}
}
25.C#中的委托是什么?
事件是不是一种委托?
答:
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托
26.override与重载的区别
override与重载的区别。
重载是方法的名称相同。
参数或参数类型不同,进行多次重载以适应不同的需要
Override是进行基类中函数的重写。
为了适应需要。
27.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
Server.Transfer
28.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
foreach(System.Windows.Forms.Controlcontrolinthis.Controls)
{
if(controlisSystem.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;
tb.Text=String.Empty;
}
}
29.请编程实现一个冒泡排序算法?
int[]array=newint
;
inttemp=0;
for(inti=0;i{
for(intj=i+1;j{
if(array[j]{
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
30.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
不是。
可以用任意类型。
31.求以下表达式的值,写出您想到的一种或几种实现方法:
1-2+3-4+……+m
答:
intNum=this.TextBox1.Text.ToString();
intSum=0;
for(inti=0;i{
if((i%2)==1)
{
Sum+=i;
}
else
{
Sum=Sum-I;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine();
32.在下面的例子里
usingSystem;
classA
{
publicA()
{
PrintFields();
}
publicvirtualvoidPrintFields(){}
}
classB:
A
{
intx=1;
inty;
publicB()
{
y=-1;
}
publicoverridevoidPrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
当使用newB()创建B的实例时,产生什么输出?
答:
X=1,Y=0;x=1y=-1
33.什么叫应用程序域?
应用程序域可以理解为一种轻量级进程。
起到安全的作用。
占用资源小。
34.CTS、CLS、CLR分别作何解释?
答:
CTS:
通用语言系统。
CLS:
通用语言规范。
CLR:
公共语言运行库。
35.什么是装箱和拆箱?
答:
从值类型