




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-软件工程师面试题根底题:1.简述string[]、ArrayList、List的区别。数组:优点:数组在存中是连续存储的,索引速度非常快;赋值和修改元素也很简单;缺乏:两个数据之间插入数据比拟麻烦;声明数组的时候,必须指明数组的长度,数组长度过长会造成存浪费,数组的长度过短,会造成数据溢出错误。ArrayList:优点:.netframework提供的用于数据存储和检索的专用类大小依据存储的数据来动态扩展和收缩继承IList,可以便的进展数据的添加、插入和删除缺点:允插入不同类型的数据,都当做object类型处理数据处理时可能出现类型不匹配的错误存在装箱〔值=?引用〕拆箱的操作,会带来很大的性能损耗List:优点:声明List集合时,需要声明集合数据的对象类型防止了类型平安问题和装箱拆箱的性能问题2.简述装箱和拆箱操作中的性能损耗是如产生的。3.简述对ASP.NET中的事件机制的理解。4.在一个ASP.NET的三层构造系统中,以登录操作为例,简述在各层中如组织代码。5.简述相比DATASET,实体类在WEB工程中的优点与缺点。6.简述GC是如工作的。Java采用VM〔VirtualMachine〕机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的法由CLR(CommonLanguageRuntime)来管理。GarbageCollector〔垃圾收集器,在不至于混淆的情况下也成为GC〕以应用程序的root为根底,遍历应用程序在Heap上动态分配的所有对象[2],通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比拟常见的算法有ReferenceCounting,MarkSweep,CopyCollection等等。目前主流的虚拟系统.NETCLR,JavaVM和Rotor都是采用的MarkSweep算法。Java的存管理实际就是对象的管理,其中包括对像的分配和释放。对于程序员来说,分配对象使用new关键字,释放对象时只是将对象赋值为null,让程序员不能够再访问到这个对象,该对象被称为“不可达〞。GC将负责回收所有“不可达〞对象的存空间。根据GC的工作原理,可以通过一些技巧和式让GC运行更快,高效而又合理。编程建议如下:尽早释放无用对象的引用,特别注意一些复杂对象,如数组,队列等。对于此类对象,GC回收它们的效率一般较低,如果程序允,应尽早将不用的引用对象赋为null,这样可以加速GC的工作。尽量少用finalize函数。finalize是java提供应程序员用来释放对象或资源的函数,但是它会加大GC的工作量,因此尽量少采用finalize函数回收资源。当程序有一定的等待时间,程序员可以手动执行System.gc(),通知GC运行,但是java语言规并不保证GC一定会执行。.NET的GC机制有这样两个问题:首先,GC并不是能释放所有的资源。它不能自动释放非托管资源。第二,GC并不是实时性的,这将会造成系统性能上的瓶颈和不确定性。GC并不是实时性的,这会造成系统性能上的瓶颈和不确定性。所以有了IDisposable接口,IDisposable接口定义了Dispose法,这个法用来供程序员显式调用以释放非托管资源。使用using语句可以简化资源管理7.简述3个熟悉的设计模式。简单工厂模式〔只适用于业务简单的情况〕:有三种角色组成:工厂类角色〔只有一个工厂类〕抽象产品角色具体产品角色工厂法模式〔当产品种类非常多时会出现大量与之对应的工厂类〕:有四种角色抽象工厂角色具体工厂角色抽象产品角色具体产品角色简单工厂和工厂法结合能够减少工厂类。使用这两种模式能够提高扩展性和维护性抽象工厂模式〔需要创立的对象比拟复杂〕:满足条件:系统中有多个产品族,而系统一次只可能消费其中一族产品同属于同一个产品族的产品一起使用时。组成角色:抽象工厂角色具体工厂角色抽象产品角色具体产品角色8.简述UDP协议特点,以及如提高UDP传输可靠性。9.简述.NET2.0,.NET3.0,.NET3.5各版本中推出的新特性。10.
const和readonly的区别我们都知道,const和staticreadonly确实很像:通过类名而不是对象名进展访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而staticreadonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中staticreadonly和const能否互换了:1.staticreadonlyMyClassmyins=newMyClass();2.staticreadonlyMyClassmyins=null;3.staticreadonlyB=10;
staticreadonlyA=B*20;4.staticreadonlyint[]constIntArray=newint[]{1,2,3};5.voidSomeFunction()
{
constinta=10;
...
}6.privatestaticstringastr="abcd";privateconststringstr=astr+"efg";1:不可以换成const。new操作符是需要执行构造函数的,所以无法在编译期间确定2:可以换成const。我们也看到,Reference类型的常量〔除了String〕只能是Null。3:可以换成const。我们可以在编译期间很明确的说,A等于200。4:不可以换成const。道理和1是一样的,虽然看起来1,2,3的数组确实就是一个常量。5:不可以换成readonly,readonly只能用来修饰类的field,不能修饰局部变量,也不能修饰property等其他类成员。6.错误:如果在astr前加上const或者const改为readonly即可;总结:1.const、readonly和staticreadonly定义的常量,指定初始值后(包括在构造函数指定的初始值)将不可更改,可读不可写;
2.const定义时必须指定初始值,而readonly定义时可以不进展初始化(MS建议在定义时初始值),同时也可以在构造函数指定初始值,并以构造函数指定的值为准;
3.const和staticreadonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态的,只能由实例对象访问;
4.staticreadonly常量,如果在构造函数指定初始值,则必须是静态无参构造函数;
5.const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。在应用上以staticreadonly代替const,以平衡const在灵活性上的缺乏,同时克制编译器优化cosnt性能,所带来的程序集引用不一致问题;算法题:(以下三题不用作答,想好思路面试谈即可)1.一个整数数列,元素取值可能是0~65535中的任意一个数,一样数值不会重复出现。0是例外,可以反复出现。请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。注意:-5个数值允是乱序的。比方:87506
-0可以通配任意数值。比方:87506中的0可以通配成9或者4
-0可以屡次出现。-复杂度如果是O(n2)则不得分。解题思路:1.取5个数中非0的最大数和最小数,之差不大于4则连续,否则不连续。2.要增加两个特例:1〕全0算连续,2〕只有一个非0算连续代码实例[java]viewplaincopyprint?_<span
style="font-size:14p*;"><span
style="font-family:Microsoft
YaHei;font-size:12p*;color:#333333;"><span
style="font-size:12p*;">#include<iostream>
#include<stdlib.h>
using
namespace
std;
int
check(int
arry[5])
{
int
ma*=0,min=65535;
int
zerocount=0;
for(int
i=0;i<5;i++)
{
if(arry[i]==0)
zerocount++;
else
{
if(arry[i]>ma*)
ma*=arry[i];
if(arry[i]<min)
min=arry[i];
}
}
if(zerocount>=4)
return1;
else
{
if(ma*-min<=4)
return1;
elsereturn0;
}
}
int
main()
{
int
arry[5];
cout<<"一个整数数列,元素取值可能是0~65535中的任意一个数,一样数值不会重复出现;0是例外,可以反复出现"<<endl;
for(int
i=0;i<5;i++)
cin>>arry[i];
int
p=check(arry);
if(p)
cout<<"连续"<<endl;
else
cout<<"不连续"<<endl;
system("pause");
}
</span></span></span>
输入:12305
输出:连续2.设计一个在一百万个数字中求十个最大的数算法[java]viewplaincopyprint?_<span
style="font-size:14p*;"><span
style="font-family:Microsoft
YaHei;font-size:12p*;color:#333333;"><span
style="font-size:12p*;">int
data[M];
int
top[N
+
1];
void
top_N()
{
top[0]
=
std::numeric_limits<int>::ma*();
//
Set
a
"guard"
on
the
boundary
to
reduce
comparision
times.for
(int
i
=
1;
i
<=
N;
++i)
top[i]
=
std::numeric_limits<int>::min();
for
(int
j
=
0;
j
<
M;
++j)
{
for
(int
k
=
N;
top[k]
<
data[j];
--k)
top[k]
=
top[k
-
1];
top[k
+
1]
=
data[j];
}
}</span></span></span>
3.有如下输入:假设干个由大写英文字母构成的单词,以’,’号隔开。如“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB〞。写一段程序,从输入中寻找由一样字符构成(重复字符出现次数也是一样)的单词组输出。如以上输入,则输出:第1组:ABCCD,CDCAB
第2组:CDA,DCA,ADC[java]viewplaincopyprint?_<span
style="font-size:14p*;"><span
style="font-family:Microsoft
YaHei;font-size:12p*;color:#333333;"><span
style="font-size:12p*;">string
s
=
"ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB";
var
query
=
s.Split(',').GroupBy(*
=>
*.OrderBy(y
=>
y));
foreach
(var
item
in
query)
Console.WriteLine(string.Join(",",
item.ToArray()));</span></span></span>
工程&管理:(以下两题不用作答,想好思路面试谈即可)1.假设你做为一个开发团队的领导者,经过长时间的磨合,有了一只10人左右的不错的团队。其中每个成员都在其职位上有不可或缺的作用。现由于一些原因,需要你辞退其中一人。你会如处理这件事情?
2.有一套公司自己开发供本公司使用的CRM系统,其中的权限控制过于简单。现需要你重新设计其权限系统,你会如开展这个工作?
1、文件路径文本转换编写一个函数,输入参数:·页面文件的虚拟路径〔stringpageVirPath,例如:~/abc/def/page.asp*〕·图片文件的虚拟路径〔stringimgVirPath,例如:~/ghi/image/pic.gif〕处理:计算出图片文件相对页面文件的相对路径,例如:../../ghi/image/pic.gif
返回:相对路径要求:a、不要求格的C#语言表述,可适当使用伪码,着重要表达清楚处理逻辑;b、尽量使用正则表达式2、DataTable数据转换编写一个函数,输入参数:·源数据表〔DataTablesrcTable〕,该表中已包含int型数据列〞isSys〞,数据为0或-1,处理:直接处理源数据表,将〞isSys〞数据列替换为string型的〞系统〞数据列,当〞isSys〞列中值为0,则〞系统〞列值为空字符串,当〞isSys〞列中值为-1,则〞系统〞列值为〞系统〞。返回:操作是否成功(bool);
要求:a、不要求格的C#语言表述,可适当使用伪码,着重要表达清楚处理逻辑;b、不抛出任异常〔包括.net异常〕设计模式面试题:1,WindowsMediaPlayer和RealPlayer是常用的媒体播放器,它们的API构造和调用法非常不同,现在你的应用需要同时支持调用这2种播放器的API。你要怎么设计?2,现在有一种空调,它支持3种模式:HotAir,CoolAir和DoNothing。例如,中选择HotAir模式时,再选择温度为20度,空调将输送热风;选择CoolAir模式,温度设置为20度时,将输送冷风;在选择DoNothing模式时,空调什么都不做。你将考虑如为空调设计应用程序?如果将来空调需要增加支持新的模式呢?一、第一题的解:适配器模式+抽象工厂模式我采用了抽象工厂模式+适配器模式,先上图:_设计的重点是:1,首先看适配器模式。MediaPlayerClassA和RealPlayerClassA都实现了IMediaA接口。MediaPlayerClassA调用MediaPlayer的APIs来实现IMediaA接口定义的功能;RealPlayerClassA则调用RealPlayerAPIs。2,再来看抽象工厂模式。MediaPlayerFactory和RealPlayerFactory继承自抽象类MediaFactory类,MediaPlayerFactory用来创立MediaPlayer产品族;RealPlayerFactory用来创立RealPlayer产品族。虽然上图中只画出了IMediaA接口,但事实上我们可能需要实现多个接口如IMediaB,IMediaC等,这就是这里为什么使用抽象工厂模式。3,抽象类MediaFactory实现了一个静态法CreateFactory,用来创立具体工厂,该法返回MediaFactory类型的对象给Client,这样,Client不就需要知道它操作的是那个具体工厂。CreateFactory法采用反射技术,这样,不需要修改CreateFactory法的代码,就可以支持以后添加新的具体工厂。4,工厂类返回IMediaA接口给Client,Client操作IMediaA接口而不需要知道它具体使用的是MediaPlayerClassA还是RealPlayerClassA的实例。序列图如下:_二、第二题的解:Flyweight模式我采用了Flyweight〔桥梁〕模式,先上图:_设计的重点是:1,把AirConditioner和它支持的Model别离开来,在AirConditioner类的实例中保存它支持的所有Model类的实例,这样做的好处是1)如果只是支持的Model有变化,不需要去实现新的AirConditioner类,只要添加或删除支持的Model即可。2)多个不同的AirConditioner类可以便地共享共同的Model类,否则,可能需要复杂的继承关系才能在不同AirConditioner类之间共享Model。事实上,AirConditioner类和Model类的关系非常类似于桥梁模式中抽象类和实现类的关系。2,采用Flyweight模式。在多个AirCondition实例中,共享Model的实例,这样可以大节省存储空间。ModelFactory用于创立Model实例并返回给AirCondition,它保存了一个Model池,每种类型的Model只有一个实例。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 974-2020公共汽(电)车车载信息系统一体化基本技术要求
- DB31/T 915-2019氨冷库安全生产规范
- DB31/T 727-2013工业企业屋顶排风机系统节能改造技术规范
- DB31/T 467-2018社区事务受理服务中心建设和服务规范
- DB31/T 357-2022柑橘栽培技术规范
- DB31/T 1310-2021火花探测和熄灭系统应用指南
- DB31/ 851-2014机力通风吹压式冷却塔能效限定值及能效等级
- DB31/ 757-2013工业气体空分单位产品能源消耗限额
- DB31/ 540.6-2014重点单位消防安全管理要求第6部分:养老机构
- CBWQA/T 0003-2013螺旋杂质分离器
- DB4211T12-2022医疗废物暂存间卫生管理规范
- 第二讲公文语言及结构(1语言)分析课件
- 氯氧铋光催化剂的晶体结构
- 低压电气装置的设计安装和检验第三版
- 国际商务管理超星尔雅满分答案
- 监理人员考勤表
- 克丽缇娜直销奖金制度
- 基本医疗保险参保人员丢失医疗费用票据补支申请
- 高血压病人的护理(PPT)
- DB11-T 825-2021绿色建筑评价标准
- 4例先天性高胰岛素血症患儿的护理
评论
0/150
提交评论