开发⼯程师常见的⾯试题1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答 . private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同⼀命名空间内可以访问。
2 .列举ASP.NET 页⾯之间传递值的⼏种⽅式。
答. 1.使⽤QueryString, 如….?id=1; response. Redirect()….
2.使⽤Session变量
3.使⽤Server.Transfer
4.使⽤Application
5.使⽤Cache
6使⽤HttpContext的Item属性
7.使⽤⽂件
8.使⽤数据库
9.使⽤Cookie
3. ⼀列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第30位数是多少, ⽤递归算法实现。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i – 2);
}
}
4.C#中的委托是什么?事件是不是⼀种委托?
委托可以把⼀个⽅法作为参数代⼊另⼀个⽅法。
委托可以理解为指向⼀个函数的引⽤。
是,是⼀种特殊的委托
5.override与重载的区别
答 :
override 与重载的区别。重载是⽅法的名称相同。参数或参数类型不同,进⾏多次重载以适应不同的需要
Override 是进⾏基类中函数的重写。实现多态。
6.如果在⼀个B/S结构的系统中需要传递变量值,但是⼜不能使⽤Session、Cookie、Application,您有⼏种⽅法进⾏处理?答 :
同第2题
7.请编程遍历页⾯上所有TextBox控件并给它赋值为string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
8.请编程实现⼀个冒泡排序算法?
答:
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length – 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
9.描述⼀下C#中索引器的实现过程,是否只能根据数字进⾏索引?(索引器是对属性的封装,具体查看msdn)答:不是。可以⽤任意类型。
10.求以下表达式的值,写出您想到的⼀种或⼏种实现⽅法: 1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum – I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
11.⽤做B/S结构的系统,您是⽤⼏层结构来开发,每⼀层之间的关系以及为什么要这样分层?
答:使⽤MVC模式分层
⼀般为3层
数据访问层,业务层,表⽰层。
数据访问层对数据库进⾏增删查改。
业务层⼀般分为⼆层,业务表观层实现与表⽰层的沟通,业务规则层实现⽤户密码的安全等。
表⽰层为了与⽤户交互例如⽤户添加表单。
优点: 分⼯明确,条理清晰,易于调试,⽽且具有可扩展性。
缺点: 增加成本。
12.在下⾯的例⼦⾥
using System;
class A
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine(“x={0},y={1}”,x,y);
}
当使⽤new B()创建B的实例时,产⽣什么输出?
答:X=1,Y=0;x= 1 y = -1
13.什么叫应⽤程序域?
答:应⽤程序域可以理解为⼀种轻量级进程。起到安全的作⽤。占⽤资源⼩。
14.CTS、CLS、CLR分别作何解释?
答:CTS:通⽤语⾔系统。CLS:通⽤语⾔规范。CLR:公共语⾔运⾏库。
15.什么是装箱和拆箱?
答:从值类型接⼝转换到引⽤类型装箱。从引⽤类型转换到值类型拆箱。
16.什么是受管制(托管)的代码?
答:
托管代码是运⾏.NET 公共语⾔运⾏时CLR的代码
unsafe:⾮托管代码。不经过CLR运⾏。程序员⾃⾏分配和释放内存空间
17.什么是强命名程序集?
答:程序集需要经过加密签名,强命名程序集可以部署到全局程序集缓存中,成为公共程序集18中读写数据库需要⽤到那些类?他们的作⽤?
DataCommand:执⾏语句命令。
DataAdapter:数据的集合,⽤语填充。
DataReader:数据只读器
19.ASP的⾝份验证⽅式有哪些?分别是什么原理?
writeline方法的作用答:
Windwos(默认)⽤IIS控制
From(窗体)⽤帐户
Passport(密钥)
20.什么是Code-Behind技术?
答:代码后置。
21.在中,配件的意思是?
答:程序集。(中间语⾔,源数据,资源,装配清单)
22.常⽤的调⽤WebService的⽅法有哪些?
答:1.使⽤命令⾏⼯具。
2.使⽤VS.NET中的Add Web Reference菜单选项
23. Remoting 的⼯作原理是什么?
答:服务器端向客户端发送⼀个进程编号,⼀个程序域编号,以确定对象的位置。
24.在C#中,string str = null 与 string str = “” 请尽量使⽤⽂字或图象说明其中的区别。
答:string str = null 是不给他分配内存空间,⽽string str = “” 给它分配长度为空字符串的内存空间。
25.请详述在dotnet中类(class)与结构(struct)的异同?
答:class可以被实例化,属于引⽤类型,class可以实现接⼝和单继承其他类,还可以作为基类型,是分配在内存的堆上的struct属于值类型,不能作为基类型,但是可以实现接⼝,是分配在内存的栈上的.
26.根据委托(delegate)的知识,请完成以下⽤户控件中代码⽚段的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e) {
if(e.Button.Equals(BtnNew))
{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。