夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> vs2022_vs2019_vs2017_vs2014_vs2012
据说这套.net面试题很多网络公司都用
夜鹰教程网 来源:www.yyjcw.com 日期:2016-11-14 23:07:02
今天推荐一套.net面试题给大家,据说很多网络公司都在用哦!呵呵,内行看门道,外行看热闹,不妨一起来试试手,看看自己都掌握了多少呢?话不多说,我们一起开始吧,后面附带有参考答案。

1.DateTime.Parse(myString); 这行代码有什么问题?

2.PDB是什么东西? 在调试中它应该放在哪里?

3.什么叫圈复杂度(cyclomatic complexity)?为什么它很重要?

4.写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查",

5.什么叫FullTrust?放入GAC的assembly是否是FullTrust的?

6.代码加上需要安全权限的特性有什么好处?

7.gacutil /l | find /i "Corillian" 这句命令的作用是什么?

8.sn -t foo.dll 这句命令是干嘛的?

9.DCOM需要防火墙打开哪些端口?端口135是干嘛用的?

10.对比OOP和SOA,它们的目的分别是什么?

11.XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?

12.为什么不提倡catch(Exception)?

13.Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?

14.Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。

15.JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?

16.对比抽象基类和接口的使用

17.a.Equals(b)和a == b一样吗?

18.在对象比较中,对象一致和对象相等分别是指什么?

19.在.NET中如何实现深拷贝(deep copy)?

20.请解释一下IClonable

21.什么叫装箱?

22.string是值类型还是引用类型?

23.XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?

24.为什么不应该在.NET中使用out参数?它究竟好不好?

25.特性能够放到某个方法的参数上?如果可以,这有什么用?

26.新建包含DataGrid控件的ASP.NET页,DataGrid控件负责显示检索到的数据并可按升降排序,我们通过 SortOrder 属性来给DataGrid控件提供数据排序方式:升序时SortOrder 的值为ASC,降序时SortOrder 的值为DESC。如果用户选择降序,应该执行
a)Application[“SortOrder”] = “DESC”;
string val = (string) Application[“SortOrder”];

b)Cache[“SortOrder”] = “DESC”;
string val = (string) Cache[“SortOrder”];

c)ViewState[“SortOrder”] = “DESC”;
string SortOrder = (string) ViewState[“SortOrder”];

d)Cache[“SortOrder”] = “SortOrder”;
string val = (string) Cache[“DESC”];

27.public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
}
请问此程序的输出是什么,为什么

28.class Class1
{
public static int Count = 0;
static Class1()
{
   Count++;
}
public Class1()
{
   Count++;
}  

static void Main()
{
   Class1 o1 = new Class1();
   Class1 o2 = new Class1();

   Console.WriteLine(Class1.Count);
   Console.Read();
}    
}
输出什么?

29.以下语句执行后myTable的名称是什么?。
System.Data.DataTable myTable= new System.Data.DataTable();

30.如下的 IDimensions 接口和Box 类,该类显式实现接口成员 Length 和 Width。myDimensions是IDimensions 接口的一个实例。

interface IDimensions
{
   
float Length();
   
float Width();
}
class Box : IDimensions
{
   
float lengthInches;
   
float widthInches;
   
public Box(float length, float width)
    {
       lengthInches
= length;
       widthInches
= width;
    }
   
float IDimensions.Length()
    {
      
return lengthInches;
    }
   
float IDimensions.Width()
    {
      
return widthInches;      
    }
   
public static void Main()
    {
       Box myBox
= new Box(30.0f, 20.0f);
       IDimensions myDimensions
= (IDimensions) myBox;
       System.Console.WriteLine(
"Length: {0}", myBox.Length());
       System.Console.WriteLine(
"Width: {0}", myBox.Width());
    }
}


执行以上程序控制台输出为?

答案:

1.当myString不能满足时间格式要求的时候,会引发异常。建议使用DateTime.TryParse()

2.PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。

3.一种代码复杂度的衡量标准, 英文名称叫Cyclomatic Complexity。在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。

4.

1public void LockTest()
2{
3     Object lockObj = new Object();
4    lock (lockObj)
5    {
6       //
7     }

8}

5.FullTrust完全信任。.NET运行时对GAC中的assembly自动赋予Full Trust的权限.

6.没深入过,望高手指教

7.全局程序集缓存中如果有Corillian就更新该程序集,没有就安装

8.显示程序集foo.dll的公钥标记

9.135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下,DCOM不能穿越防火墙。因为根本不晓得开哪个端口。但有解决办法可以使DCOM分配的端口号固定。135是远程过程调用(RPC)的默认端口

10.我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态 。而SOA是一个技术框架或者是一种思想,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件现组成业务总线提供给应用程序来调用。

11.将对象序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.

12.原因可能有两点:1)try..catch在出现异常的时候影响性能 2)应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等


13.Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。

14.Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略

15.方法,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么

16.抽象类能有具体实现,而接口只定义行为规范,不能有具体实现。一个类只能继承一个父类,但能实现多个接口。

17.不一样。a.Equals(b)表示a与b一致, a==b表示a与b的值相等

18.对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同
19.实现IClonable接口

20.IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().


1  public class Name
2    {
3        public string FirstName;
4        public string LastName;
5     }

6    public class Person:ICloneable
7    {
8        public Name PersonName;
9        public string Email;
10        /**//**//**//// <summary>
11        /// Deep Copy的例子
12        /// </summary>
13        /// <returns></returns>

14        public Object Clone()
15        {
16             Person p = new Person();
17             p.Email = this.Email;
18             p.PersonName = new Name();
19             p.PersonName.FirstName = this.PersonName.FirstName;
20             p.PersonName.LastName = this.PersonName.LastName;
21            return p;
22         }

23
24        public void ChangLastName(string lastName)
25        {
26            this.PersonName.LastName = lastName;
27         }

28        
29        public static void Main()
30        {
31             Person p = new Person();
32             p.PersonName = new Name();
33             p.PersonName.LastName = "jill";
34             p.PersonName.FirstName = "zhang";
35             p.Email = "jillzhang@126.com";
36             Person sameNamePerson = p.Clone() as Person;
37             sameNamePerson.ChangLastName("clr_");
38             Console.WriteLine(p.PersonName.LastName);
39             Console.WriteLine(sameNamePerson.PersonName.LastName);            
40          
41
42             Person samePerson = p.MemberwiseClone() as Person;
43             samePerson.ChangLastName("Shadow");
44
45             Console.WriteLine(p.PersonName.LastName);
46             Console.WriteLine(sameNamePerson.PersonName.LastName);
47        
48             Console.Read();
49         }

50     }

21.装箱(boxing)是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将引用类型数据转换值类型,比如int j = (int)o;属于拆箱

22.引用类型

23.只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能

24.不知道,只是看过有文章说最好少用……

25.可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便抱错。


1   [AttributeUsage(AttributeTargets.Parameter)]
2    public class ParameterAtt : Attribute
3    {
4        public int Min = 100;
5     }

6
7    public class AttributeTest
8    {       
9        public void TestMethod([ParameterAtt(Min = 100)] int par1)
10        {
11             ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0];
12             ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt;
13            if (att.Min > par1)
14            {
15                throw new Exception("要求para1最小为" + att.Min);
16             }

17         }

18     }

26.C

27.i=2001,0=2000,j=2000

28.3

29.""(字符串空)

30.报错,Box 类并没有Length和Width方法

复制链接 网友评论 收藏本文 关闭此页
上一条: asp.net2.0下如何全程使用SSL协议…  下一条: 浅析C#3.0 新特性
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
一个关于天气预报的WebService【C…
VS2010最大的新特点是并行编程的进…
TextBox控件:asp.net中如何为密码…
Web服务调用实例:实现天气预报的…
ASP.NET程序员面试试题(130道题)
ASP.NET教程:调用WebService的源码…
网站开发全程设计
据说这套.net面试题很多网络公司都…
考考你:C#常见题型及部分答案
原创:.net读取数据库sql2000
伪静态URL重写配置
配置web.config代码asp.net3.5个性…
使用线程池提高性能 Socket网络编…
ASP.NET(C#)GridView表头的增加…
如何找到正确的学习方向【.NET版】…
  最近更新
C#修改注册表demo
一个获取内容中的图片地址的方法
ASP.NET 4.0尚未在 Web 服务器上注…
四大作用域:application,session…
ConfigurationManager不存在的解决…
vs2012_vs2013_vs2015没有Web Dep…
vs2015禁用解决方案中单击打开文件…
微软为Visual Studio 2015新增安卓…
C#如何实现搜索引擎网络爬虫程序
C#中正则表达式的用法
用C#抓取需要登录的页面数据
VS2015新功能
VS2015安装图解教程
vs2015新功能介绍
vs2015安装图解

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3