面试集锦C#部分

主要用于面试回答,主要是从网上摘录,有些答案是加入自己的理解,如果有哪些答案不正确,请指出谢谢。
1什么是OOP

OOP即面向对象设计。所谓对象就是一个或一组数据以及处理这些数据的方法和过程的集合。而类就是这个对象的抽象和概括

3个特性:封装、继承、多态。

封装:把数据和操作数据的有关集合放在一起,形成一个能动的实体

继承:对象类之间的关系。类具有共享性,也具有细微的差别或新增。类具有层次结构

多态:同一消息可以根据发送对象的不同采用不同的方法

 

2Using和New关键字的用法

using    一个是引用命名空间

            一种就是释放空间

new     新建对象。实例化对象

            隐藏父类中的成员,不能与Override同时用在一个成员上

 

3DataReader和DataSet的区别

Datareader使用时一直占用SqlConnection。是在线操作数据库。任何操作数据库的行为都会引发异常

DataSet把数据库一次性加载到内存中,抛弃数据连接,动态加载到内存中,可以动态更新行,列。更新数据对数据库进行回传操作

 

4接口与类的异同,抽象类,结构

接口只是一个行为规范,里面的都是抽象,包含属性方法,索引指示器和事件,一个接口可有多个父接口,如果两个父成员具有相同的同名成员就产生了二义性。只能包含功能的定义

类主要是负责功能的实现,一个类可以有一个基类。可以有多个接口,引用类型在堆上分配

抽象类是一个不完全的类,有抽象的方法和属性,也有具体的方法和属性,可以继承Implements接口可以继承实体类,前提实体类有明确的构造

结构是值类型的,在堆栈上分配。可以有构造函数,没有析构函数,不能被继承。

 

5什么是GC

GC是垃圾回收机制,处理编程人员忘记或错误的内存的回收。防止程序的不稳定和崩溃

 

6什么是WCF和WebService,它们的区别

WCF是window交流基础通信基础。是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架,包含对协议编码、消息处理、代理的处理

具有以下的优势a:统一性b:互操作性c:安全与可信赖d:兼容性

WebService是分布式应用程序和浏览器

分布应用程序主要是有3个技术

a:XML和XSD是WS平台中表示数据的基本格式。b:SOAP 简单访问对象提供了标准的RPC方法来调用WebService。c:WSDL描述WS及基函数参数和返回值。调用WS,WSDL .exe和AddWeb Reference基于网络分布式的模块化组件

WS是一种基于网络协议的通信标准。WCF是Net3.0以后的通用通信框架

 

7什么是Remoting工作原理和WebService的区别

Remoting采用分布式进行编程的一种技术,主要用于管理跨应用程序域的同步和异步RPC 会话

提供了一种允许对象通过应用程序域与另一个对象进行交互的框架。服务器端向客户端发送一个进程编号一个程序域编号以确定对象的位置

WS主要利用HTTP,它可以穿透防火墙

Remoting主要是TCP/IP,二进制传输,效率高

 

8什么是XML

XML(Extensible Markup Language)称可扩展标记语言。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。用于保存静态数据。常用于WebService和Config

 

9override和overload的区别(重写和重载的区别)

Override(重写)是继承父类中的虚成员的实现。只能对一个方法,参数要求相同

Overload(重载)是同一类中同名方法不同参数的实现。多个方法之间的关系,参数列表不同

 

10列举asp.net页面之间传递值的方式

a:使用QueryString 传送简单的值不能传对象 Response.Redirect(url+值) Request.QueryString[""]不能很长的字符串

b:Session 容易丢失,不能过多的使用  Session["name"]=TextBox1.text; Lable.text=Session["name"];

c:Cookies 缺点依赖客户端,不可靠

d:Server.Transfer()只能传递定制的页面

e:ViewState在Client-Server中传输,存储的变量不宜过多,否则影响性能,存储的变量是页面级的,只在本页面有效

f:Application Web站点的全局变量,开销大

g:<input type="hidden">简单 但是可能被伪造

h:Forms

 

11访问修饰符

public 公共成员 完全公开没有访问限制

private 私有成员 只有类内部才能访问

protectel 保护成员 该类内部和继承类中访问

internal 在同一命名空间内可以访问

 

12C#中的委托是什么,事件是不是一种特殊的委托

委托就是可以把方法做为参数的一种方法。事件是一种特殊的委托

 

13net做的B/S系统,你是用几层结构来开发,每层之间的关系,为什么这样分层

MVC分层 Model View Control分这三层。数据访问层,业务层,表示层

数据访问层对数据库的增删改查

业务表现层实现与表示层的沟通,业务规则层实现用户密码的安全等

表示层为了与用户交互。例如用户注册

优点分工明确,条理清晰,易于调试而且有扩展性

缺点增加成本

 

14什么是应用程序域

可以理解为一种轻量级进程,占用资源少,起到安全的作用

 

15CTS CLS CLR分别作如何解释

CTS 通用语言系统

CLS 通用语言规范

CLR 公共语言运行库

 

16什么是装箱和拆箱

值类型-引用类型称之为装箱

引用类型-值类型称之为拆箱

 

17什么是受管制代码

UnSafe 非托管代码。不经过CLR运行

 

18什么是强类型系统

RTTI类型识别系统

 

19asp.net身份验证有哪些

windows IIS验证 Forms验证 Passport

 

20什么是CodeBehind技术

代码后置 代码分离

 

21.net中配件的意思是什么

程序集(中间语言,源数据)(资源,装配清单)

 

22string=null 和string=""的区别

string=null 不分配内存空间

string=""分配内存为空字符串的内存空间

 

23能用foreach遍历访问的对象要实现什么接口或方法

实现IEnumerable接口或声明GetIEnumerator方法

 

24构造器Constructor是否能被override

不能,但可以重载

 

25string类是什么类

是final类,故不可以被继承

 

26switch能作用哪些字段类型

能作用int,short,char,或者byte

long,string都不能作用于switch

 

27list set都继承哪个接口

都继承collection接口 Map则不是

 

28set里元素不可以重复,用什么方法区分重复与否

set不可以重复,iterator()方法来区分重复与否,Equals()判断两个set是否有相等

 

29Session有什么重大的bug,微软提出什么方法加以解决

由于IIS有进程回收机制,当系统繁忙会导致Session丢失。可以用Sate Server 或SqlServer数据库的方式存储Session,不过这种方式比较慢,而且无法获得Session的End事件

 

30asp和asp.net相比主要有哪些区别

asp解释形,asp.net编译形性能提高,有利于保护源码

 

31向服务器请求的的几种方式

两种一种是get一种是post

get链接方式会显示参数名和参数值,浏览器有最大限制的字符数

post按钮方式不会显示参数,没有字符限制

 

32GAC的含义

全局程序集缓存

 

33string和StringBuilder的区别

string是固定不变的,在进行字符串连接时是新建一个字符串连接后最后的赋值,多次赋值就会在内存中多个对象的副本。浪费系统资源

stringbuilder是可变的,不用生成中间对象拼接字符串较多,或字符串长度比较长时有较高的效率

 

34socket是什么

socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,在设计模式中,socket就是一个门面模式,它把复杂的TCP/IP协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议

 

35TCP/IP和UDP的区别

TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/网间协议 是面向连接的协议

UDP(User Data Protocol)用户数据协议  是非连接的协议

a:基于连接和无连接

b:对系统资源的要求(TCP较多,UDP少)

c:UDP程序结构较简单

d:流模式与数据包模式

e:TCP保证数据的正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

 

36 ADO.NET的五个对象

Connetion     Command    DataReader  DataAdapter    DataSet

 

37静态类和非静态类的区别

静态类被实例化时创建通过类进行访问

非静态类对象被实例化时创建。通过对象进行访问

 

38 const和static readonly区别

const是常量,编译期初始化并嵌入到客户端程序

static readonly 具有和常量类似的方法,运行期初始化

 

39extern是什么意思

extern用于声明由程序集外部实现的成员函数,经常用于系统的API调用,不能与abstract同时使用,通过dllimport使用还要有static

 

40abstract是什么意思

修饰符可以用于类方法属性事件和索引指示器,表示其为抽象成员,不能与static,virtual,但可以和new和override使用

 

41sealed什么意思

表示密封类,表示该类不能被继承

 

42什么是索引器

索引器(indexer)允许类或结构的实例按照与数组相同的方式进行索引,实现索引指示器的类可以象数组那样使用其实例后的对象,但与数组不同的是索引指示器的参数类型不仅限于int。简单来说,其本质就是一个含参数属性

 

43this关键字

仅限于构造函数和方法成员中使用

 

44可以在抽象函数重写基类中的虚函数吗

可以 用new或override

 

45密封类中可以有虚函数吗

可以

 

46别名指示符是什么

主要是解决两个命名空间内有同名类型的冲突或避免使用冗余的命名空间

 

47 如何手工释放资源

实现一个接口显示提供给客户端 System.IDisposable接口

 

48P/Invoke是什么

在非受控代码和受控代码交互时会产生一个事务,通常发生在使用凭条调用服务(Platform Invocation Services)即P/Invoke

 

49explicit和Implicit

属于转换运算符,explicit显示转换 Implicit隐式转换

 

50params有什么用

在方法成员的参数列表中使用,提供参数个数可变的能力

 

51什么是反射,什么是序列化

通过运行时获得的各种信息。例如程序集、模块、类型、字段、属性、方法、事件。通过对类型动态实例化后,还可以对其执行操作

序列化简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中.而反序列化就是把硬盘中信息读到内存中

 

52进程和线程的关系

进程是系统资源的分配和调度的单位

线程是cpu调度和分配的单位

一个进程有多个线程,这些线程共享这个进程的资源

 

53final、finally、finalite

final类声明符表示不能被继承

finally异常处理时,执行清除操作

finalize方法名,整理系统资源或者执行其他清理工作

 

54堆和栈

栈由编译器自动分配和释放

堆一般由程序员分配和释放

 

55collection和collections区别

Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

 

 56什么是属性访问器

属性访问器(Property Accessor),包括 get 访问器和 set 访问器分别用于字段的读写操作

其设计目的主要是为了实现面向对象(OO)中的封装思想

 

57什么是托管代码

由公共语言运行库环境(而不是直接由操作系统)执行的代码

 

58启动一个线程是用run()还是start()?

 用start()启用线程

 

 59try 里面有return finilly里面的代码还会执行吗

会执行

 

60asp.net的服务器控件生命周期

初始化-加载视图状态-处理回发数据-加载发送回发更改通知-处理回发事件-预呈现-保存状态-呈现-处置-卸载

 

61转发和跳转的区别

1、 Server.Transfer - 用于把处理的控制权从一个页面转移到另一个页面,在转移的过程中,没有离开服务器,内部控件(如:request, session 等)的保存的信息不变,因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。此外,在转移的过程中,浏览器的 URL 栏不变

2、Response.Redirect - 发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器

使用此方法时,将无法保存所有的内部控件数据,页面 A 跳转到页面 B,页面 B 将无法访问页面 A 中 Form 提交的数据

 

.net framework运行机制

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

62什么是内存泄漏

所谓的内存泄漏可以理解为内存单元逐渐被无用的数据占用,未对作废数据内存单元的引用置null引起分配了内存而没有释放,逐渐耗尽内存资源,导致系统崩溃

 

你可能感兴趣的:(webservice,session,面试,C#,asp.net,dataset)