软件工程设计师C#,ASP.NET开发面试一般写和面试什么题目,谢谢。
1.简要描述私有、受保护、公共和内部修饰符的访问权限。
答:
Private:私有成员,只能在类内部访问。
Protected:保护成员,可以在类内部和继承的类中访问这些成员。
公众:公众中的一员,完全开放,没有访问限制。
内部:可在同一名称空间内访问。
2.列出几种在ASP.NET页面之间传递值的方法。
答:
(1)使用QueryString,例如...?id = 1;回应。重定向()....
(2)使用会话变量
(3)使用服务器。转移
3.一列的编号规则如下:1,1,2,3,5,8,13,21,34...求第30位,用递归算法实现。
答:
公共类MainClass
{
公共静态void Main()
{
控制台。WriteLine(Foo(30));
}
公共静态int Foo(int i)
{
如果(我& lt= 0)
返回0;
else if(I & gt;0 & amp& amp我& lt= 2)
返回1;
否则返回Foo(I-1)+Foo(I-2);
}
}
4.C #中的委托是什么?事件是一种委托吗?
答:委托可以将一个方法作为参数替换到另一个方法中。委托可以理解为对函数的引用。事件是一种特殊的委托。
5.重写和重载的区别
答:
重写和重载的区别在于方法具有相同的名称。参数或参数类型不同,多次重载以满足不同的需求。
重写是重写基类中的函数。为了满足需要。
6.如果在B/S结构的系统中需要传递变量值,但是不能使用Session、Cookie、Application,有几种方式处理?
答:这个。服务器.传输
7.请以编程方式遍历页面上的所有TextBox控件,并将其作为字符串分配。空的?
答:
foreach(系统。Windows.Forms.Control控件。控件)
{
如果(控制是系统。Windows.Forms.TextBox)
{
系统。windows . forms . textbox TB =(System。Windows.Forms.TextBox)控件;
肺结核。文本=字符串。空的;
}
}
8.请编程实现一个冒泡排序算法?
答:
int[]array = new int;
int temp = 0;
for(int I = 0;我& lt数组。长度-1;i++)
{
for(int j = I+1;j & lt数组。长度;j++)
{
if(array[j]& lt;数组[i])
{
temp = array[I];
array[I]= array[j];
array[j]= temp;
}
}
}
9.描述索引器在C#中的实现过程。是否可以仅通过数字进行索引?
没有。任何类型都可以。
10.求以下表达式的值,写出一个或多个你想到的实现方法:1-2+3-4+...+M。
答:
int Num = this文本框1。text . ToString();
int Sum = 0;
for(int I = 0;我& ltnum+1;i++)
{
if ((i % 2) == 1)
{
sum+= I;
}
其他
{
Sum = Sum-I;
}
}
系统。Console.WriteLine(Sum。ToString());
系统。console . ReadLine();
11.使用。net作为B/S结构体系,你在开发几层?每一层有什么关系,为什么要这样分层?
答:一般是3层。数据访问层、业务层和表示层。数据访问层添加、删除、检查和修改数据库。业务层一般分为两层,业务外观层实现与表示层的通信,业务规则层实现用户密码的安全。为了与用户交互,比如用户添加表单,表示层。
优点:分工明确,组织清晰,易于调试,可扩展性强。
缺点:成本增加。
12.在下面的例子中
使用系统;
A级
{
公共A()
{
print field();
}
公共虚拟void PrintFields()
{
}
}
乙类:甲类
{
int x = 1;
int y;
公共B()
{
y =-1;
}
公共覆盖void PrintFields()
{
控制台。WriteLine("x={0},y={1} ",x,y);
}
}
使用new B()创建B的实例时,输出是什么?
答:X=1,Y = 0;x=1 y=-1
什么是应用程序域?
答:应用领域可以理解为一个轻量级的过程。扮演安全的角色。并且占用资源少。
14有哪些解释。分别是中旅、CLS和CLR?
答:CTS:通用语言系统。CLS:公共语言规范。公共语言运行时。
15.什么是打包和解包?
答:从值类型接口到引用类型装箱。从引用类型转换为值类型取消装箱。
什么是受控代码?
答:不安全:非托管代码。不带CLR运行。
17.什么是强类型系统?
答:RTTI:型号识别系统。
18读写数据库需要哪些类?。网?他们的角色是什么?
答:数据集:数据存储。
DataCommand:执行语句命令。
DataAdapter:充满术语的数据集合。
19.ASP.net的认证方式有哪些?原理是什么?
答:10。Windwos(默认)使用IIS...从(表格)账户...护照(钥匙)。
20.什么是代码隐藏技术?
答:代码是嵌入式的。
21.英寸网,配件是什么意思?
答:组装。(中间语言、源数据、资源、程序集列表)
22.调用WebService的常用方法有哪些?
答案:1。使用WSDL.exe命令行工具。2.使用VS.NET中的“添加Web引用”菜单选项。
23.23的工作原理是什么。。net Remoting?
答:服务器发送一个进程号和一个程序域号给客户端,确定对象的位置。
24.在c #中,string str = null和string str = " "请尽量用文字或图像来说明区别。
回答:string str = null表示不给他分配内存空间,string str = " "分配内存空间,字符串长度为空。
25.请详细说明dotnet中类和结构的异同?
答:Class可以实例化,属于引用类型,分配在内存堆上,Struct属于值类型,分配在内存堆上。
(1),结构是值类型;
(2)结构不支持继承;
(3)结构不能定义默认构造函数;
(4)结构不能定义析构函数;
(5)该结构不能使用初始值来设置域值。
26.根据delegate的知识,请填写以下用户控件中的代码片段:
名称空间测试
{
公共委托void OnDBOperate();
公共类UserControlBase : System。Windows .窗体. UserControl
{
OnDBOperate OnNew公共活动;
privatevidtoolbar _ button click(object sender,System。windows . forms . toolbar button click eventargs e)
{
if(e.Button.Equals(BtnNew))
{
//请完成代码用来调用下面的OnDBOperate委托签名的OnNew事件。
}
}
}
}
答:如果(OnNew!= null ) OnNew(this,e);
27.分析下面的代码,完成空格。
String strTmp = " abcdefg XXX
int i=系统。text . encoding . default . getbytes(strTmp)。长度;
int j= strTmp。长度;
上述代码执行后,I = _ _ _ _ _ _ _ j = _ _ _ _ _ _ _ _
答:i=13,j=10。
28.在SQL Server服务器中,给定表table1中有两个字段ID和LastUpdateDate,其中ID表示更新后的事务编号,LastUpdateDate表示更新时的服务器时间。请使用SQL语句获取最近更新的交易号。
答:从表1中选择id,其中最后更新日期=(从表1中选择max(最后更新日期))。
29.根据线程安全的知识,分析下面这段代码。调用测试方法时,I >;10会造成死锁吗?并简要说明原因。
公共无效测试(int i)
{
锁定(这个)
{
如果(i & gt10)
{
I-;
测试(一);
}
}
}
答:不会出现死锁,(不过有一点是int是传值的,所以每次只改变一个副本,所以不会出现死锁。但是如果用一个对象代替int,就会出现死锁)
30.简单谈谈你对微软框架下的remoting和webservice的理解。NET及其实际应用。
答:WS主要可以利用HTTP穿透防火墙。远程处理可以使用TCP/IP和二进制传输来提高效率。
31.公司需要开发一个继承类系统的组件。Windows.Forms.ListView,它要求实现以下特殊功能:当点击ListView的列标题时,可以根据所点击列的每一行的值重新排列视图中的所有行(排序方法类似于DataGrid)。根据你的知识,请简单谈谈你的想法。
答:根据点击的列标题,取出列的ID,按照ID排序,然后绑定到ListView。
32.给定下面的XML文件,完成算法流程图。
& lt文件系统& gt
& ltDriverC & gt
& ltDir DirName="MSDOS622 " >
& ltFile FileName = " Command.com " & gt& lt/File & gt;
& lt/Dir & gt;
& ltFile FileName ="MSDOS。SYS " & gt& lt/File & gt;
& ltFile FileName ="IO。SYS " & gt& lt/File & gt;
& lt/DriverC & gt;
& lt/file system & gt;
请画一个流程图来遍历所有文件名(请使用递归算法)。
答:
void FindFile(目录d)
{
FileOrFolders = d . GetFileOrFolders();
foreach(文件文件夹中的文件文件夹fof)
{
如果(fof是文件)
您找到了一个文件;
else if ( fof是目录)
FindFile(fof);
}
}
33.写一个Sql语句:取出表A中的31到40条记录(SQLServer,以自动增长的ID为主键,注意:ID不一定是连续的。
a:解决方案1:从id不在的a中选择top 10 *(从a中选择top 30 id)。
解决方案2:从a where id >中选择top 10 *;(从(从A中选择前30个id)中选择最大id作为A)
34.面向对象的语言是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。
答:封装、继承和多态。
35.foreach遍历可以访问的对象需要实现_ _ _ _ _ _ _ _ _接口或者声明_ _ _ _ _ _ _ _ _的类型。
答:IEnumerable,GetEnumerator。
36.什么是GC?为什么会有GC?
答:GC是一个垃圾收集器。程序员不必担心内存管理,因为垃圾收集器会自动管理它。若要请求垃圾回收,可以调用以下方法之一:system.gc () runtime.getruntime()。gc()。
37.String s =新字符串(" XYZ ");创建了多少个stringobjects?
答:有两个对象,一个是“xyx”,一个是指向“xyx”的引用对象S。
38.抽象类和接口有什么区别?
答:
声明方法存在而不实现它的类称为抽象类。当你想创建一个体现一些基本行为的类,并为这个类声明一个方法,但不能在这个类中实现这个类的时候,就要用到它。您不能创建抽象类的实例。但是,您可以创建一个类型为抽象类的变量,并将其指向一个具体子类的实例。不能有抽象构造函数或抽象静态方法。抽象类的子类为其父类中的所有抽象方法提供实现,否则它们也是抽象类。相反,在子类中实现这个方法。其他知道其行为的类可以在类中实现这些方法。
接口是抽象类的变体。在接口中,所有的方法都是抽象的。通过实现这样的接口可以获得多重继承。接口中的所有方法都是抽象的,它们都没有程序体。接口只能定义静态最终成员变量。接口的实现类似于子类的实现,只是实现类不能从接口定义继承行为。当一个类实现一个特殊的接口时,它定义(也就是给程序体)所有这样的接口的方法。然后,它可以在实现接口的类的任何对象上调用接口的方法。由于抽象类,它允许使用接口名称作为引用变量的类型。通常的动态绑定将生效。引用可以与接口类型相互转换,instanceof运算符可用于确定对象的类是否实现接口。
39.用run()或start()启动一个线程?
答:启动一个线程就是调用start()方法,让线程代表的虚拟处理器处于可运行状态,也就是说可以被JVM调度执行。这并不意味着线程会立即运行。run()方法可以通过生成一个必须退出的标志来停止线程。
40.接口可以从接口继承吗?抽象类可以实现接口吗?抽象类可以继承具体类吗?
答:接口可以从接口继承。抽象类可以实现接口,不管抽象类是否可以继承实体类,但前提是实体类有显式的构造函数。
41.构造函数可以被重写吗?
答:构造函数不能被继承,所以它不能被重写,但它可以被重载。
42.可以继承String类吗?
答:String类是final类,所以不能继承。
43.try {}中有return语句,那么紧接着try之后的finally {}中的代码会不会执行,什么时候执行,在return之前还是之后?
是的,在回来之前。
44.两个对象具有相同的值(x.equals(y) == true),但是它们可以具有不同的哈希代码。这是正确的吗?
答:没有,有相同的哈希码。
45.swtich可以作用于byte,long,String吗?
答:在switch(expr1)中,expr1是一个整数表达式。所以传递给switch和case语句的参数应该是int,short,char或者byte。绳子既不能长,也不能短。
47.当一个线程进入一个对象的同步方法时,其他线程可以进入该对象的其他方法吗?
不,一个对象的同步方法只能被一个线程访问。
48.抽象方法可以同时是静态的、原生的和同步的吗?
答:都不是。
49.列表、集合和映射是否继承自集合接口?
列表,集合是地图,不是吗
50.集合中的元素不能重复,那么用什么方法来区分是否重复呢?是= =还是等于()?两者有什么区别?
回答:集合中的元素不能重复,所以用iterator()方法来区分是否重复。Equals()是判断两个集合是否相等。
equals()和= =方法确定引用值是否指向同一个对象。equals()在类中被覆盖,以便在两个独立对象的内容和类型匹配时返回一个true值。
51.数组有length()方法吗?String有length()方法吗?
答:数组没有方法length(),但是有属性length。字符串的方法长度为()。
52.sleep()和wait()有什么区别?
答:sleep()方法是一种让线程停止一段时间的方法。休眠间隔到期后,线程不一定会立即恢复执行。这是因为在那个时刻,其他线程可能正在运行并且没有被调度来放弃执行,除非(a)“唤醒”线程具有更高的优先级。
(b)正在运行的线程由于其他原因被阻塞。
Wait()是一个线程交互。如果一个线程调用了一个同步对象X,那么这个线程就会挂起执行,被调用的对象就会进入等待状态,直到被唤醒或者等待时间到了。
54.说说final,finally,finalize的区别。
答:
Final-Modifier(关键字)如果一个类被声明为Final,就意味着它不能再派生新的子类,也不能作为父类继承。因此,一个类不能同时声明为abstract和final。将变量或方法声明为final可以确保它们在使用中不会被更改。声明为final的变量必须在声明时被赋予一个初始值,并且在以后的引用中只能读取不能修改。声明为final的方法也只能使用,不能重载。
Finally—提供一个Finally块,以便在异常处理期间执行任何清理操作。如果抛出异常,将执行匹配的catch子句,然后控制将进入finally块(如果有)。
完成--方法名称。Java技术允许使用finalize()方法在垃圾收集器从内存中清除对象之前进行必要的清理。当确定对象未被引用时,垃圾回收器调用此方法。它是在Object类中定义的,所以所有的类都继承它。子类覆盖finalize()方法来组织系统资源或执行其他清理任务。在垃圾收集器删除该对象之前,会对其调用finalize()方法。
55.如何处理几十万的并发数据?
答:使用存储过程或事务。获得最大ID的同时更新..请注意,主键不是自增量的。当此方法是并发的时,将不会有重复的主键..要获得最大ID,您需要一个存储过程来获取它。
56.Session中的主要bug是什么,微软提出了什么方法来解决?
答:由于iis中的进程回收机制,如果系统繁忙,会话将会丢失。您可以以状态服务器或SQL Server数据库的形式存储会话,但这种方法速度较慢,并且无法捕获会话的结束事件。
57.进程和线程的区别是什么?
答:进程是系统分配和调度资源的单位。线程是CPU调度和分派的单位。一个进程可以有多个线程,这些线程* * *享受这个进程的资源。线程和进程都定义了某种边界,但不同的是,进程定义的是应用之间的边界,不同的进程不能* * *享受代码和数据空间,而线程定义的是代码执行栈和执行上下文之间的边界。一个进程可以包含几个线程,创建多个线程同时完成一个任务就是多线程。同一进程中的不同线程共享代码和数据空间。打个比喻,如果一个家庭代表一个过程,在家庭内部,每个成员都是一根线,每个家庭成员都有积累家庭财富的义务,也有消费家庭财富的权利。当面临一个任务时,家族还可以派几个成员配合,而家族外的人没有办法直接消费不属于自己家族的财产。
58.堆和栈有什么区别?
a:堆栈:由编译器自动分配释放。函数体中定义的变量通常在堆栈上。
堆:一般由程序员分配和释放。使用new、malloc和其他内存分配函数分配的内存在堆中。
59.在成员变量和成员函数前加static有什么作用?
答:分别叫常量成员变量和常量成员函数,也叫类成员变量和类成员函数。用于反映类的状态。例如,类成员变量可以用来统计类实例的数量,而类成员函数负责这个统计操作。
60.与ASP相比,ASP.NET的主要改进是什么?
答:asp解释形式,aspx编译类型,提高了性能,有利于保护源代码。