微软.NET 经典面试题
1. OO 面向对象的语言具有的三大特性:________性、_________性、________性
答:封装、继承、多态。
2. 什么是多态?C#如何支持多态?
多态指的是多种行为。C#可以通过方法重载以及方法重写实现多态。
3. C#中能用 foreach 遍历访问的对象需要实现 ________________接口或声明
________________方法的类型。
答:IEnumerable 、 GetEnumerator。
4. 垃圾收集器 GC 作用是什么? 为什么要有 GC?
答:
a) .NET 与 Java 类似,属于托管平台,C#等语言编写的代码由 CLR 托管执行。
b) GC 是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
5. 简述 C# private、 protected、 public、 internal 修饰符的访问权限。
答.:
a) private : 私有成员, 在类的内部才可以访问。
b) protected : 保护成员,该类内部和继承类中可以访问。
c) public : 公共成员,完全公开,没有访问限制。
d) internal: 在同一命名空间内可以访问。
6. 列举 ASP.NET 页面之间传递值的几种方式。
答:
a) URL 使用 QueryString, 如....?id=1; response. Redirect()....
b) 使用 Session 对象
c) Cache
d) 文件
e) 数据库
7. C#中的委托是什么?事件是不是一种委托?
答 :
a) 委托也是类型
b) 委托是类型安全的指针
c) 事件是特殊的委托
8. override 与 OverLoad 重载的区别
答 :
a) Override 是进行基类中函数的重写。
b) 重载是方法的名称相同,但是参数或者返回值不同。
OO 实现多态的方式。
9. 如果在一个 B/S 结构的系统中需要传递变量值,但是又不能使用 Session、Cookie、
Application,您有几种方法进行处理?
答 :
a) this.Server.Transfer
b) Cache
c) 文件
d) 数据库
10. 用.net 开发系统,一般是什么架构?,每一层之间的关系以及为什么要这样分层?
答:一般为 3 层架构
a) 数据访问层 DAL,业务层 BLL,显示层 PL。
b) 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。
缺点: 增加资源开销、提升开发、运营成本。
11. 什么叫应用程序域 AppDomain?
答:应用程序域(由 AppDomain 对象表示)为执行托管代码提供隔离、卸载和安全边界。多个应用程序域可以在一个进程中运行;但是,在应用程序域和线程之间没有一对一的关联。 多个线程可以属于一个应用程序域,尽管给定的线程并不局限于一个应用程序域,但在任何给定时间,线程都在一个应用程序域中执行。
12. .NET 中的 CTS、CLS、CLR 分别是什么?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。作用类似于
JVM 虚拟机,托管执行代码。
13. 什么是装箱和拆箱?
答:Inbox 从值类型转换到引用类型叫做装箱。OutBox 从引用类型转换到值类型叫做
拆箱。
14. 什么是托管代码?
答: 托管代码,指的的是 C#或者 VB.NET 等语言编写的代码,不是直接编译成机器码,
而是编译成中间语言 IL,由 CLR 托管运行。Java 也属于托管语言,使用 Java 编写的代码也属于托管代码。
15. ADO.NET 中读写数据库需要用到那些类?他们的作用?
答:
a) DataSet:数据集,可以离线存储数据库数据。
b) DataCommand:执行语句命令,也可以执行 SQL 和存储过程。
c) DataAdapter:数据的集合,用语填充。
d) SQLConnection 提供链接字符串对象
e) DataReader 数据读取器,每次读取一行数据。
16. ASP.net 的身份验证方式有哪些?分别是什么原理?
答:
a) Windows(默认):使用 Window 域验证。
b) From(表单)用帐户:用户再 Form 中输入用户名和密码,然后提交给服务器验证。
c) Passport(密钥) 微软提供服务,收费。
17. 什么是 Code-Behind 技术?
答:代码后植。 也叫代码隐藏,是.NET 提供了一种把前台 UI 代码和后台逻辑代码分离的技术。在 Winform、WebForm、WPF、Silverlight 很常见。MVC 开发中已经不再支
持。
18. .NET 调用 Web Service 的方法有哪些?
答:
a) 使用 WSDL.exe 命令行工具。
b) 使用 Visual Studio 中的 Add Web Reference,自动生成客户端调用代码
c) 用 WCF 带的 SvcUtils 工具。
d) 自定义代码构造 SOAP 消息调用。
19. .net Remoting 的工作原理是什么?
答: 客户端和服务通过对象序列化传递信息,使用 HTTP、 TCP 或者 IPC,服务端收到消息后执行方法调用。实际也是一种代理模式。WCF 框架一定程度上借鉴了.NET
Remoting 的编程模型,差别是 WCF 还可以支持跨平台调用。
20. 在 C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
答:
a) string str = null 是不给他分配内存空间,
b) 而 string str = "" 给它分配长度为空字符串的内存空间。
21. 请详述在 dotnet 中类(class)与结构(struct)的异同?
答:
a) Class 属于引用类型,是分配在内存的堆上, 可以被实例化,
b) Struct 属于值类型,分配在内存的栈上.
22. 简要谈一下您对微软.NET remoting 和 ASP.NET web service、WCF 技术的理解以及
实际中的应用。
答:
a) ASP.NET web service,微软早期的 Web 服务开发技术,支持 的 WS 协议。使用HTTP 协议,不支持安全、事务等高级特性。
b) Remoting 只能应用于.NET 平台,不能夸平台。可以利用 TCP/IP,HTTP,IPC
等协议。
c) WCF 是微软推出的全新的分布式开发技术,兼容旧的 ASP.NET web service,支
持最新的 WS 规范,比如 WS 安全、分布式事务、会话等特性。功能强大。
23. 写出一条 Sql 语句:取出表 A 中第 31 到第 40 记录(SQLServer,以自动增长的 ID 作
为主键,注意:ID 可能不是连续的。
答:
解 1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as
A)
24. C#中 abstract class 抽象类和 interface 有什么区别?
答:
a) 抽象类使用 abstract 声明,(abstract class)
b) 不能创建 abstract 类的实例。在子类中实现该方法。知道其行为的其它类可以在
类中实现这些方法。实现多态。
c) 抽象类只能单继承,可以包含实现的方法。
d) 接口表示契约,一种约束关系(interface)是抽象类的变体。在接口中,所有方法
都是抽象的。
e) 多继承性可通过实现这样的接口而获得。
f) 接口允许多继承。
25. 启动一个线程 thread 是用 run()还是 start()?
答:启动一个线程是调用 start()方法
26. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
答:
a) 接口可以继承接口。抽象类可以实现(implements)接口,
b) 抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
27. C#构造函数 Constructor 是否可被 override?
答:
a) 构造器 Constructor 不能被继承,因此不能重写 Overriding,
b) 但可以被重载 Overloading。
28. C#中 是否可以继承 String 类?
答:String 类是 final 类故不可以继承。
29. try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
答:不一定,可能会执行,A)异常被捕获,则在 return 前执行。B)如果没有捕获,
则 finally 块的执行取决于如何触发异常展开操作。此操作又取决于计算机是如何设置的。应该说在{}括号前执行。
30. 两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
答:不对,有相同的 hash code。
31. swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
答:switch (expr1)中,expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于 swtich。
32. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的
其它方法?
不能,一个对象的一个 synchronized 方法只能由一个线程访问。
33. abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是
synchronized?
答:抽象方法只能属于抽象类,都不能。
34. Thread 的线程的 sleep() 和 wait() 方法有什么区别?
答:
a) sleep()方法是使线程停止一段时间的方法。在 sleep 时间间隔期满后,线程不一定
立即恢复执行正在运行的线程因为其它原因而阻塞。
b) wait()是线程交互时,如果线程对一个同步对象 x 发出一个 wait()调用,该线程会
暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
35. 谈谈 C#中 final, finally 区别
答:
a) final—修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子
类,不能作为父类被继承。
b) finally—再异常处理时提供 finally 块来执行任何清除操作。
36. Session 有什么重大 BUG,微软提出了什么解决方法?
答:
a) 可能出现会话信息丢失的问题。
b) 是 iis 中由于有进程回收机制,系统繁忙的话 Session 会丢失
c) 可以用 Sate server 或 SQL Server 数据库的方式存储 Session 不过这种方式比
较慢,而且无法捕获 Session 的 END 事件。
37. 进程和线程的区别?
答:
a) 进程是系统进行资源分配和调度的单位;
b) 线程是 CPU 调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进
程的资源。
38. 堆和栈的区别?
答:
栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
堆:一般由程序员分配释放。用 new、malloc 等分配内存函数分配得到的就是在堆
上。C#中的堆为托管堆,GC 负责管理。
39. C# static 的作用?是不是所有的方法都应该声明为 Static 的?
答:
a) 对象方法或者声明为 Static 静态成员,表示此成员不在属于对象的实例,而是属
于整个 Class,我们可以直接通过 Class 直接调用该方法。
b) 不应该,静态成员存储在内存静态存储区,访问速度快,但是容量有限。
40. ASP.NET Web Form 有几种页面传值方式?各有什么优劣?
Session、Viewstate、URL 等
41. ASP.NET Web Form 与 ASP 相比,主要有哪些进步?
答:
a) asp 属于微软早起的编程技术,页面代码嵌入脚本 VbScript,解释执行类型.已经
被淘汰了。存在很多安全问题,执行效率低下。和 JSP 类似。
b) ASP.NET Web Form 属于新的网站开发框架,基于.NET 平台。 编译型,性能提高,
安全性更高,更利于提升开发、调试工作的效率。 提供了丰富的控件库、支持事件
编程模型。
42. ASP.NET MVC 是什么?
ASP.NET MVC 是微软推出的全新的网站开发框架,支持 MVC 架构模式。支持关注点
分离,更好地支持团队开发,支持单元测试。 让程序员更深入地了解 Web 开发的本质。
目前已经发布到最新的 MVC6.0 版本。
43. ASP.NET MVC 一共有几个版本,哪个版本比较稳定?哪个集成到.NET 框架中?
MVC1.0-6.0,6 个版本 MVC。
44. ASP.NET MVC6 最大的新特性是什么?
45. ASP.NET MVC 有几种页面传值方式?
46. Bootstrap 是什么?如何使用?
Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师
Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS/HTML 框架。免费、开源,使用起
来非常简单。目前非常流行。ASP.NET MVC 5.0 版本直接集成到模板中。
47. ASP.NET WebForm 与 MVC 有什么区别?各自的优缺点是什么?
a) ASP.NET Web Form 网站开发框架,基于.NET 平台。编译型,性能提高,安全性
更高,更利于提升开发、调试工作的效率。 提供了丰富的控件库、支持事件编程模
型。
b) ASP.NET MVC 属于全新的微软网站开发框架,开源。
c) 支持 MVC 架构模式,很好地实现了职责分离。更好地支持单元测试,和团队协作
开发工作!
d) MVC 与三层架构区别,路由、缓存、安全验证等
48. Web API 是什么?和 REST WCF 有什么关系?
49. ASP.NET Identity 是什么?
ASP.NET Identity 属于微软推出的全新的、更加简单易用的、安全身份验证框,取代之
前的 ASP.NET Membership 组件。它支持最新的 Oath,兼容 OWIN 组件,与 Visual
Studio2013 一起发布。
50. 什么是 SOA?什么是 Web 服务?与 Web API 有什么不同?
SOA 又称作面向服务的架构,以服务为核心来实现分布式系统的集成交互。最大限度
利用现有资源。WCF 是微软的全新的分布式开发框架,支持最新的 Web 服务标准规
范,Web API 也称作 Web 接口,微软推出的
ASP.NET Web API 是一种 REST 风格的开发框架,简单方便。
51. 微软下一代.NET vNext 有什么新特性?你比较期待什么?
52. 如何实现跨平台分布式系统安全身份验证和数据加密?
53. 如何保证网站系统安全?加密算法各有什么优点和缺陷?有什么措施?
54. 如何实现高并发电商网站分布式架构?
55. 如何支持百万用户同时在线 NoSQL 是什么?MongoDB 如何做分布式集群?
56. 如何实现 SSO 单点登录,跨平台对接 QQ 或者微博账号?
57. 如何实现千万数据库查询优化?
58. 如何实现上亿规模数据快速存取?