群发手机短信-网线制作标准
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
发布评论