群发手机短信-网线制作标准

dotnettextbox
2023年4月6日发(作者:恒星播放器)

.net开发⼯程师常见的⾯试题

1.简述private、protected、public、internal修饰符的访问权限。

答.private:私有成员,在类的内部才可以访问。

protected:保护成员,该类内部和继承类中可以访问。

public:公共成员,完全公开,没有访问限制。

internal:在同⼀命名空间内可以访问。

2.列举页⾯之间传递值的⼏种⽅式。

答.1.使⽤QueryString,如….?id=1;ct()….

2.使⽤Session变量

3.使⽤er

4.使⽤Application

5.使⽤Cache

6使⽤HttpContext的Item属性

7.使⽤⽂件

8.使⽤数据库

9.使⽤Cookie

3.⼀列数的规则如下:1、1、2、3、5、8、13、21、34……求第30位数是多少,⽤递归算法实现。

答:publicclassMainClass

{

publicstaticvoidMain()

{

ine(Foo(30));

}

publicstaticintFoo(inti)

{

if(i<=0)

return0;

elseif(i>0&&i<=2)

return1;

elsereturnFoo(i-1)+Foo(i–2);

}

}

4.C#中的委托是什么?事件是不是⼀种委托?

答:

委托可以把⼀个⽅法作为参数代⼊另⼀个⽅法。

委托可以理解为指向⼀个函数的引⽤。

是,是⼀种特殊的委托

de与重载的区别

答:

override与重载的区别。重载是⽅法的名称相同。参数或参数类型不同,进⾏多次重载以适应不同的需要

Override是进⾏基类中函数的重写。实现多态。

6.如果在⼀个B/S结构的系统中需要传递变量值,但是⼜不能使⽤Session、Cookie、Application,您有⼏种⽅法进⾏处理?

答:

同第2题

7.请编程遍历页⾯上所有TextBox控件并给它赋值为?

答:

foreach(ls)

{

if(x)

{

xtb=(x)control;

=;

}

}

8.请编程实现⼀个冒泡排序算法?

答:

int[]array=newint[*];

inttemp=0;

for(inti=0;i<–1;i++)

{

for(intj=i+1;j<;j++)

{

if(array[j]

{

temp=array[i];

array[i]=array[j];

array[j]=temp;

}

}

}

9.描述⼀下C#中索引器的实现过程,是否只能根据数字进⾏索引?(索引器是对属性的封装,具体查看msdn)

答:不是。可以⽤任意类型。

10.求以下表达式的值,写出您想到的⼀种或⼏种实现⽅法:1-2+3-4+……+m

答:

intNum=ng();

intSum=0;

for(inti=0;i

{

if((i%2)==1)

{

Sum+=i;

}

else

{

Sum=Sum–I;

}

}

ine(ng());

ne();

11.⽤.net做B/S结构的系统,您是⽤⼏层结构来开发,每⼀层之间的关系以及为什么要这样分层?

答:使⽤MVC模式分层

⼀般为3层

数据访问层,业务层,表⽰层。

数据访问层对数据库进⾏增删查改。

业务层⼀般分为⼆层,业务表观层实现与表⽰层的沟通,业务规则层实现⽤户密码的安全等。

表⽰层为了与⽤户交互例如⽤户添加表单。

优点:分⼯明确,条理清晰,易于调试,⽽且具有可扩展性。

缺点:增加成本。

12.在下⾯的例⼦⾥

usingSystem;

classA

{

publicA()

{

PrintFields();

}

publicvirtualvoidPrintFields(){}

}

classB:A

{

intx=1;

inty;

publicB()

{

y=-1;

}

publicoverridevoidPrintFields()

{

ine(“x={0},y={1}”,x,y);

}

当使⽤newB()创建B的实例时,产⽣什么输出?

答:X=1,Y=0;x=1y=-1

13.什么叫应⽤程序域?

答:应⽤程序域可以理解为⼀种轻量级进程。起到安全的作⽤。占⽤资源⼩。

、CLS、CLR分别作何解释?

答:CTS:通⽤语⾔系统。CLS:通⽤语⾔规范。CLR:公共语⾔运⾏库。

15.什么是装箱和拆箱?

答:从值类型接⼝转换到引⽤类型装箱。从引⽤类型转换到值类型拆箱。

16.什么是受管制(托管)的代码?

答:

托管代码是运⾏.NET公共语⾔运⾏时CLR的代码

unsafe:⾮托管代码。不经过CLR运⾏。程序员⾃⾏分配和释放内存空间

17.什么是强命名程序集?

答:程序集需要经过加密签名,强命名程序集可以部署到全局程序集缓存中,成为公共程序集

中读写数据库需要⽤到那些类?他们的作⽤?

答:DataSet:数据集。

DataCommand:执⾏语句命令。

DataAdapter:数据的集合,⽤语填充。

DataReader:数据只读器

的⾝份验证⽅式有哪些?分别是什么原理?

答:

Windwos(默认)⽤IIS控制

From(窗体)⽤帐户

Passport(密钥)

20.什么是Code-Behind技术?

答:代码后置。

21.在.net中,配件的意思是?

答:程序集。(中间语⾔,源数据,资源,装配清单)

22.常⽤的调⽤WebService的⽅法有哪些?

答:1.使⽤命令⾏⼯具。

2.使⽤中的AddWebReference菜单选项

23..netRemoting的⼯作原理是什么?

答:服务器端向客户端发送⼀个进程编号,⼀个程序域编号,以确定对象的位置。

24.在C#中,stringstr=null与stringstr=“”请尽量使⽤⽂字或图象说明其中的区别。

答:stringstr=null是不给他分配内存空间,⽽stringstr=“”给它分配长度为空字符串的内存空间。

25.请详述在dotnet中类(class)与结构(struct)的异同?

答:class可以被实例化,属于引⽤类型,class可以实现接⼝和单继承其他类,还可以作为基类型,是分配在内存的堆上的

struct属于值类型,不能作为基类型,但是可以实现接⼝,是分配在内存的栈上的.

26.根据委托(delegate)的知识,请完成以下⽤户控件中代码⽚段的填写:

namespacetest

{

publicdelegatevoidOnDBOperate();

publicclassUserControlBase:ntrol

{

publiceventOnDBOperateOnNew

privatevoidtoolBar_ButtonClick(objectsender,rButtonClickEventArgse)

{

if((BtnNew))

{

//请在以下补齐代码⽤来调⽤OnDBOperate委托签名的OnNew事件。

}

}

}

答:if(OnNew!=null)

OnNew(this,e);

27.分析以下代码,完成填空

stringstrTmp=“abcdefg某某某”;

inti=es(strTmp).Length;

intj=;

以上代码执⾏完后,i=j=

答:i=13,j=10

VER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表⽰更新的事务号,LastUpdateDate表⽰更新时的

服务器时间,请使⽤⼀句SQL语句获得最后更新的事务号

答:SelectIDFROMtable1WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1)

29.根据线程安全的相关知识,分析以下代码,当调⽤test⽅法时i>10时是否会引起死锁?并简要说明理由。

publicvoidtest(inti)

{

lock(this)

{

if(i>10)

{

i–;

test(i);

}

}

}

答:不会发⽣死锁,(但有⼀点int是按值传递的,所以每次改变的都只是⼀个副本,因此不会出现死锁。但如果把int换做⼀个object,那

么死锁会发⽣)

30.简要谈⼀下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应⽤。

答:webservice主要是可利⽤HTTP,穿透防⽕墙。⽽Remoting可以利⽤TCP/IP,⼆进制传送提⾼效率。

⾯试题⼆:

1.公司要求开发⼀个继承ew类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击

列的每⾏值进⾏重排视图中的所有⾏(排序的⽅式如DataGrid相似)。根据您的知识,请简要谈⼀下您的思路

答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

2.给定以下XML⽂件,完成算法流程图。

请画出遍历所有⽂件名(FileName)的流程图(请使⽤递归算法)。

答:

voidFindFile(Directoryd)

{

FileOrFolders=eOrFolders();

foreach(FileOrFolderfofinFileOrFolders)

{

if(fofisFile)

YouFoundafile;

elseif(fofisDirectory)

FindFile(fof);

}

}

3.写出⼀条Sql语句:取出表A中第31到第40记录(SQLServer,以⾃动增长的ID作为主键,注意:ID可能不是连续的。

答:解1:selecttop10*fromAwhereidnotin(selecttop30idfromA)

解2:selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)

4.⾯向对象的语⾔具有________性、_________性、________性

答:封装、继承、多态。

5.能⽤foreach遍历访问的对象需要实现________________接⼝或声明________________⽅法的类型。

答:IEnumerable、GetEnumerator。

是什么?为什么要有GC?

答:GC是垃圾收集器。程序员不⽤担⼼内存管理,因为垃圾收集器会⾃动进⾏管理。要请求垃圾收集,可以调⽤下⾯的⽅法之⼀:

()

time().gc()

s=newString(“xyz”);创建了⼏个StringObject?

答:两个对象,⼀个是“xyx”,⼀个是指向“xyx”的引⽤对象s。

ctclass和interface有什么区别?

答:

声明⽅法的存在⽽不去实现它的类被叫做抽象类(abstractclass),它⽤于要创建⼀个体现某些基本⾏为的类,并为该类声明⽅法,但不

能在该类中实现该类的情况。不能创建abstract类的实例。然⽽可以创建⼀个变量,其类型是⼀个抽象类,并让它指向具体⼦类的⼀个实

例。不能有抽象构造函数或抽象静态⽅法。Abstract类的⼦类为它们⽗类中的所有抽象⽅法提供实现,否则它们也是抽象类为。取⽽代

之,在⼦类中实现该⽅法。知道其⾏为的其它类可以在类中实现这些⽅法。

接⼝(interface)是抽象类的变体。在接⼝中,所有⽅法都是抽象的。多继承性可通过实现这样的接⼝⽽获得。接⼝中的所有⽅法都是抽

象的,没有⼀个有程序体。接⼝只可以定义staticfinal成员变量。接⼝的实现与⼦类相似,除了该实现类不能从接⼝定义中继承⾏为。当类

实现特殊接⼝时,它定义(即将程序体给予)所有这种接⼝的⽅法。然后,它可以在实现了该接⼝的类的任何对象上调⽤接⼝的⽅法。由于

有抽象类,它允许使⽤接⼝名作为引⽤变量的类型。通常的动态联编将⽣效。引⽤可以转换到接⼝类型或从接⼝类型转换,instanceof运

算符可以⽤来决定某对象的类是否实现了接⼝。

9.启动⼀个线程是⽤run()还是start()?

答:启动⼀个线程是调⽤start()⽅法,使线程所代表的虚拟处理机处于可运⾏状态,这意味着它可以由JVM调度并执⾏。这并不意味着线程

就会⽴即运⾏。run()⽅法可以产⽣必须退出的标志来停⽌⼀个线程。

10.接⼝是否可继承接⼝?抽象类是否可实现(implements)接⼝?抽象类是否可继承实体类(concreteclass)?

答:接⼝可以继承接⼝。

抽象类可以实现(implements)接⼝,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

11.构造器(构造函数)Constructor是否可被override?

答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

12.是否可以继承String类?

答:String类是密封类故不可以继承。

{}⾥有⼀个return语句,那么紧跟在这个try后的finally{}⾥的code会不会被执⾏,什么时候被执⾏,在return前还是后?

答:会执⾏,在return前执⾏。

14.两个对象值相同((y)==true),但却可有不同的hashcode,这句话对不对?

答:不对,有相同的hashcode。

是否能作⽤在byte上,是否能作⽤在long上,是否能作⽤在String上?

答:switch(expr1)中,expr1是⼀个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。

long,string都不能作⽤于swtich。

17.当⼀个线程进⼊⼀个对象的⼀个synchronized⽅法后,其它线程是否可进⼊此对象的其它⽅法?

不能,⼀个对象的⼀个synchronized⽅法只能由⼀个线程访问。

ct的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

答:都不能。

,Set,Map是否继承⾃Collection接⼝?

答:List,Set是Map不是

⾥的元素是不能重复的,那么⽤什么⽅法来区分重复与否呢?是⽤==还是equals()?它们有何区别?

答:Set⾥的元素是不能重复的,那么⽤iterator()⽅法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==⽅法决定引⽤值是否指向同⼀对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

21.数组有没有length()这个⽅法?String有没有length()这个⽅法?

答:数组没有length()这个⽅法,有length的属性。String没有length()这个⽅法,有length属性。

()和wait()有什么区别?

答:sleep()⽅法是使线程停⽌⼀段时间的⽅法。在sleep时间间隔期满后,线程不⼀定⽴即恢复执⾏。这是因为在那个时刻,其它线程可能

正在运⾏⽽且没有被调度为放弃执⾏,除⾮(a)“醒来”的线程具有更⾼的优先级

(b)正在运⾏的线程因为其它原因⽽阻塞。

wait()是线程交互时,如果线程对⼀个同步对象x发出⼀个wait()调⽤,该线程会暂停执⾏,被调对象进⼊等待状态,直到被唤醒或等待时间

到。

1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?

答:shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1)。short

s1=1;s1+=1正确。

24.谈谈final,finally,finalize的区别。

答:

final—修饰符(关键字)如果⼀个类被声明为final,意味着它不能再派⽣出新的⼦类,不能作为⽗类被继承。因此⼀个类不能既被声明为

abstract的,⼜被声明为final的。将变量或⽅法声明为final,可以保证它们在使⽤中不被改变。被声明为final的变量必须在声明时给定初

值,⽽在以后的引⽤中只能读取,不可修改。被声明为final的⽅法也同样只能使⽤,不能重载

finally—再异常处理时提供finally块来执⾏任何清除操作。如果抛出⼀个异常,那么相匹配的catch⼦句就会执⾏,然后控制就会进⼊

finally块(如果有的话)。

finalize—⽅法名。Java技术允许使⽤finalize()⽅法在垃圾收集器将对象从内存中清除出去之前做必要的清理⼯作。这个⽅法是由垃圾收

集器在确定这个对象没有被引⽤时对这个对象调⽤的。它是在Object类中定义的,因此所有的类都继承了它。⼦类覆盖finalize()⽅法以

整理系统资源或者执⾏其他清理⼯作。finalize()⽅法是在垃圾收集器删除对象之前对这个对象调⽤的。

25.如何处理⼏⼗万条并发数据?

答:⽤存储过程或事务。取得最⼤标识的时候同时更新..注意主键不是⾃增量⽅式这种⽅法并发的时候是不会有重复主键的..取得最⼤标识要

有⼀个存储过程来获取.

n有什么重⼤BUG,微软提出了什么⽅法加以解决?

答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以⽤Sateserver或SQLServer数据库的⽅式存储Session不过这种⽅

式⽐较慢,⽽且⽆法捕获Session的END事件。

27.进程和线程的区别?

答:进程是系统进⾏资源分配和调度的单位;线程是CPU调度和分派的单位,⼀个进程可以有多个线程,这些线程共享这个进程的资源。

28.堆和栈的区别?

答:

栈:由编译器⾃动分配、释放。在函数体中定义的变量通常在栈上。

堆:⼀般由程序员分配释放。⽤new、malloc等分配内存函数分配得到的就是在堆上。

29.成员变量和成员函数前加static的作⽤?

答:它们被称为常成员变量和常成员函数,⼜称为类成员变量和类成员函数。分别⽤来反映类的状态。⽐如类成员变量可以⽤来统计类实例

的数量,类成员函数负责这种统计的动作。

。NET与ASP相⽐,主要有哪些进步?

答:asp解释形,aspx编译型,性能提⾼,有利于保护源码。

更多推荐

dotnettextbox