




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程师笔试题(.net)
笔试时间:40分钟答题人:开始时间:
注:请将答案答于答题纸上,题目做擅长的即可,不必全部答完
1.值类型和引用类型分别有什么区别?System.ValueType是一个什么类
型?
答:值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、
数组、接口、委托等。
•赋值方式:将一个值类型变量赋给另一个值类型变量时,将复制包含的
值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对象的引用(即
内存地址,类似C++中的指针),而不复制对象本身。
・继承:值类型不可能派生出新的类型,所有的值类型均隐式派生自
System.ValueTypeo但与引用类型相同的是,结肉也可以实现接口。
•null:与引用类型不同,值类型不可能包含null值。然而,可空类型
功能允许将null赋给值类型。
•每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,值
类型初始会默认为0,引用类型默认为null。
♦值类型存储在栈中,引用类型存储在托管堆中。
System.ValueType是所有值类型的基类,ValueType是类类型,但是他的子
类却是值类型,这是因为CLR对他的子类经过了特殊的处理.CLR若判断某类继承
自ValueType,那么会在内存分配方面使它具有值类型的特征(例如直接分配在
栈上)
2.System.String类型是引用还是值类型?其最大特点是?在字符串连加
处理中,最好采用什么方式,理由是什么?
答:string是一个引用类型,因为string太常用,为了提高性能及开发方
便,对string做了特殊处理,给予了一些专用特性。
有两个重要的特性:恒定性与驻留性。
・恒定性:字符串是不可变的,字符串一经创建,就不会改变,任何改变
都会产生新的字符串。
•驻留性:相同的字符串在内存(堆)中只分配一次,第二次申请字符串
时,发现已经有该字符串时;直接返回已有字符串的地址;
少量字符串连接,使用String.Concat,大量字符串使用StringBuilder,
因为StringBuilder减少了内存的分配,性能更好,如果string的话会创建大
量字符串对象
3.请描述一下委托?
答:委托类似于C或C++中的函数指针,允许将方法作为参数进行传递。
(1)C#中的委托都继承自System.Delegate类型,本质上就是一个类;
(2)委托类型的声明与方法签名类似,有返回值和参数;
(3)委托是一种可以封装命名(或匿名)方法的引用类型,把方法当做指针
传递,但委托是面向市象、类型安全的:
(4)事件可以理解为一种特殊的委托,事件内部是基于委托来实现的。
4.通常异常处理分为那几部分?每一部分的分别有什么作用?
答:异常处理分为三块try、catch>finally0
(DTry块是监视区,其内放置一些正常实现编程功能的代码、资源清除的
代码、状态维护(状态改变和状态恢复)的代码等。
(2)Catch块捕获区,当try块出现异常时,如果异常类型与该区域期望的
类型一致,则执行此区域的代码,可以进行状态恢复,也可以重新抛出异常。一
个try块可以个catch块,也可以无catch块。
(3)Finally块作最后清理工作,在一个try/catch结构中,无论try是否
抛出异常,无论catch是否破获到异常,如果有finally块,在最后都会执行,
通常在这里放置资源清理的代码。一个ti、y结构可有finally块,也可以没有。
5.请列举出在接口中可以定义的成员?
答:可以定义方法、属性、事件和索引符,不能定义构造函数、运算符重载,
成员不能有修饰符(virtualstatic)
6.GC进行垃圾回收时的主要流程是?
答:(1)标记:先假设所有对象都是垃圾,根据应用程序根Root遍历堆上的
每一个引用对象,生成可达对象图,对于还在使用的对象(可达对象)进行标记
(其实就是在对象同步索引块中开启一个标示位)。
(2)清除:针对所有不可达对象进行清除操作,针对普通对象直接回收内存,
而对于实现了终结器的对象(实现了析构函数的对象)需要单独回收处理。清除
之后,内存就会变得不连续了,就是步骤3的工作了。
(3)压缩:把剩下的对象转移到一个连续的内存,因为这些对象地址变了,
还需要把那些Root跟有针的地址修改为移动后的新地址。
7.在继承的方法中使用override和new有什么区别?
答:override:
(1).override是派生类用来重写基类中方法的;
(2).override不能重写非虚方法和静态方法;
(3).override只能重写用virtual、abstract、override修饰的方法;
(4).不能使用修饰符new、static、virt.ua1或abstract来修改
override方法。
new:
(1).new是派生类用来隐藏基类中的方法的;也就是说在派生类中“看不
到”基类中的方法;
(2).如果要在派生类中隐藏(不是重写)基类中的方法,而没有使用new
关键字,编译时会出现一个警告,提示如果是要陷藏基类中的方法,请使用now
关键字;
(3).派生类可以隐藏基类中的虚方法,也可以隐藏基类中的普通方法。
(4).如果在派生类中用private来修饰new方法,那么只在该派生类中隐
藏了基类中的方法,在该派生类之外,相当于没有隐藏基类中的方法;
(5).如果在派生类中隐藏了基类中的方法,在该派生类的派生类中,将延
续对该派生类对基类方法的隐藏。
8.装箱与拆箱在内存中分别是如何执行的?如何避免它们所带来的性能
影响?
答:装箱就是把值类型转换为引用类型,具体过程:
1.在堆中申请内存,内存大小为值类型的大小,再加上额外固定空间(引用
类型的标配:TypeHandle和同步索引块);
2.将值类型的字段值拷贝新分配的内存中;
3.返回新引用对象的地址(给引用变量objecto)
拆箱就是装箱相反的过程,简单的说是把装箱后的引用类型转换为值类型。
具体过程:
1.检查实例对象(objecto)是否有效,如是否为null,其装箱的类型与
拆箱的类型(int)是否一致,如检测不合法,抛出异常;
2.指针返回,就是获取装箱对象(objecto)中值类型字段值的地址;
3.字段拷贝,把装箱对象(object。)中值类型字段值拷贝到栈上,意思就
是创建一个新的值类型变量来存储拆箱后的值;
可以使用重载、泛型、接口等方式避免所带来的性能影响。
9..net反射有什么优点和缺点?如何优化反射?
答:反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活
性.缺点是对性能有影响。
优化方案:Emit、Delegate.CreateDelegate>dynamicExpressionTrees>
缓存机制
10.lock为什么要锁定一个参数,可不可锁定一个值类型?这个参数有
什么要求?
答:lock的锁对象要求为一个引用类型。她可以锁定值类型,但值类型会
被装箱,每次装箱后的对象都不一样,会导致锁定无效。
lock是一个混合锁,其实质是Monitor。对于lock锁,锁定的这个对象参
数才是关键,这个参数的同步索引块指针会指向一个真正的锁(同步块),这个
锁(同步块)会被复用。
在使用Lock时,关键点就是锁对象了,需要注意以下几个方面:
♦这个对象肯定要是引用类型;
♦不要锁定this,尽量使用一个没有意义的Object对象来锁;
♦不要锁定一个类型对象,因类型对象是全局的;
♦不要锁定一个字符串,因为字符串可能被驻留,不同字符对象可能指向
同一个字符串;
♦不要使用
[System.Runtime.CompilerServices.MethodTmp(MethodTmplOptions.Synchro
nized)],这个可以使用在方法上面,保证方法同一时刻只能被一个线程调用。
她实质上是使用lock的,如果是实例方法,会锁定this,如果是静态方法,则
会锁定类型对象;
11.下面代码输出结果是什么?为什么?如何改进?
inta=0;
System.Threading.Tasks.Parallel.For(0,100000,(i)=>
(
a++;
});
Console.Write(a;;
答:输出结果不稳定,小于等于100000c因为多线程访问,没有使用锁机
制,会导致有更新丢失。改进如下:
System.Threading.Interlocked.Add(refa,1);
12.以下代码执行后内存中会存在多少个字符串?分别是什么?输出结
果是什么?为什么?
stringsi=〃123〃;
strings2=si-〃abc”;
strings3=〃123abc〃;
Console.WriteLine(s2==s3);
Console.WriteLine(System.Object.ReferenceEquals(s2,s3));
答:“123〃、〃abc”、〃123abe〃(驻留)、〃123abc〃
True^False
13.下面的代码输出什么结果?为什么?
List<Action>acs=newList<Action>(5);
for(inti=0;i<5;i++)
(
acs.Add(()=>{Console.WriteLine(i);]);
}
acs.ForEach(ac=>ac());
答:输出了55555,全是5!因为闭包中的共享变量i会被提升为委托
对象的公共字段,生命周期延长了
14.JOIN语句中,JOIN的表之间若交换顺序,是否对查询效率有影响?
答:用innerjoin是不会有影响的,leftjoin/rightjoin可能会出现
差异。代码中的Join顺序,不见得就是最后执行计划的顺序,因为查询优化器
相当的智能,对于Join的顺序,它有着自己的决定和考虑。
15.聚集索引与主键之间有什么关系?
答:下面是一个简单的比较表
主键聚集索引
用途强制表的实体完整性对数据行的排序,方便查询用
一个表多少个一个表最多一个主键一个表最多一个聚集索引
是否允许多个字一个主键可以多个字段一个索引可以多个字段来定义
段来定义来定义
是否允许null如果要创建的数据列中没有限制建立聚集索引的列一
数据行出现数据存在null,无法建立定必须notnull.
主键,也就是可以列的数据是null
创建表时指定的参看最后一项比较
PRIMARYKEY约束列隐式
转换为NOTNULL。
是否要求数据必要求数据必须唯一数据即可以唯一,也可以不唯
须唯一一。看你定义这个索引的
UNIQUE设置。
(这一点需要看后面的一个比
较,虽然你的数据列可能不唯
一,但是系统会替你产生一个
你看不到的唯一列)
创建的逻辑数据库在创建主键同时,如果未使用UNIQUE属性创建
会自动建立一个唯一索聚集索引,数据库引擎将向表
引。自动添加一个四字节
如果这个表之前没有聚uniqueifier列I。
集索引,同时建立主键时必要时,数据库引擎将向行自
候没有强制指定使用非动添加一个uniqueifier值,
聚集索引,则建立主键时使每个键唯一。此列和列值供
候,同时建立一个唯一的内部使用,用户不能查看或访
聚集索引问。
16.现有数据表如下,根据问题写出Sql语句
S(SNO,SNAME)学生关系。SNO为学号,SNAME为姓名
C(CNO,CNAME,CTEACHER)课程关系。CNO为课程号,CNAME为课程名,
CTEACHER为任课教师
SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩
(1)列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩;
答:selects,snane,avg(sc.scgrade)froms,scwheres.sno=sc.snoand
sc.scgrade<60groupbys.snamehavingcount(s.sname)>=2
(2)列出既学过“1”号课程,乂学过“2”号课程的所有学生姓名;
答:selectsnamefromswheresnoin(selectsc.snofromscwhere
sc.[CNO]=1orsc.eno=2groupbysc.snohavingcount(sc.sno)>=2;
17.什么是依赖属性,它和以前的属性有什么不同?为什么在WPF会使
用它?
答:11YPF提供了一组服务,这些服务可用于扩展公共语言运行时(CIR)属
性的功能,这些服务通常统称为WPF属性系统。由WPF属性系统支持的属性称
为依赖项属性。
2它和以往属性的不同之处有
(1)依赖属性是一种特定类型的属性。这种属性的特殊之处在于,其属性值
受到Windows运行时中专用属性系统的跟踪和影响。
(2)依赖属性的用途是提供一种系统的方式,用来基于其他输入(在应用运
行时其内部出现的其他属性、事件和状态)计算属性的值。
(3)依赖属性代表或支持编程模型的某种特定功能,用于定义Windows运行
时应用,这种模型使用XAML编写UL使用C#、MicrosoftVisualBasic或
VisualC++组件扩展(C++/CX)编写代码。
一般的属性没有这么复杂。
依赖属性的优点:
优化了属性的储存,减少了不必要的内存使用。
加入了属性变化通知,限制、验证等,
可以储存多个值,配合Expression以及Animation等,打造出更灵活的使
用方式。
借助于依赖属性,WP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深入解析2024年记者证考试试题及答案
- 2024年税务师考试专业解析试题及答案
- 档案摄影与影像管理试题及答案
- 完整知识点秘书证试题及答案
- 加深理解珠宝鉴定师试题及答案
- 收纳师应试技巧试题及答案
- 提高珠宝鉴定考试通过率的策略 - 试题及答案
- 第9课《饮食有讲究》教学设计-2023-2024学年生命生态安全一年级 (川教版)
- 包罗万象2024年税务师试题及答案
- 2024年珠宝鉴定师考试前沿知识试题与答案
- 山东省济宁市2022-2023学年高一7月期末生物试题(原卷版)
- 鸡毛信的故事-红色故事课件
- 川教版信息技术六年级下册全册教案【新教材】
- 国家开放大学《合同法》章节测试参考答案
- 中学生学习动机量表(MSMT)
- 初中英语七选五经典5篇(附带答案)
- 2024高三一模宝山作文题解析及范文(用怎样的目光看待事物)
- (正式版)YST 1693-2024 铜冶炼企业节能诊断技术规范
- 《纸质文物修复与保护》课件-31古籍书册结构
- 2024年福建广电网络集团有限公司招聘笔试参考题库附带答案详解
- 《养老护理员》-课件:老年人权益保障法相关知识
评论
0/150
提交评论