].net面试题大全(有答案)
3.
简述
private
、
protected
、
public
、
internal
修饰符的访问权限。
private :
私有成员
,
在类的内部才可以访问。
protected :
保护成员,该类内部和继承类中可以访问。
public :
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
4.
写出一条
Sql
语句:
取出表
A
中第
31
到第
40
记录(
SQLServer,
以自动增长的
ID
作为主键
,
注意:
ID
可能不是连续的。)
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)
5 . 列举 ASP.NET 页面之间传递值的几种方式。
解 2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
5 . 列举 ASP.NET 页面之间传递值的几种方式。
1.
使用
QueryString,
如
....?id=1; response. Redirect()....
2. 使用 Session 变量
3. 使用 Server.Transfer
2 。请说明在 .net 中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype="hidden" 简单,可能被伪造
url 参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
2. 使用 Session 变量
3. 使用 Server.Transfer
2 。请说明在 .net 中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype="hidden" 简单,可能被伪造
url 参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
2
.
override
与重载的区别
Override
用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
3
、
.net
的错误处理机制是什么
.net
错误处理机制采用
try->catch->finally
结构,发生错误时,层层上抛,直到找到匹配的
Catch
为止。
4
、
C
#中接口和类的异同
接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。
4
、
DataReader
和
DataSet
的异同
DataReader
和
DataSet
最大的区别在于
,DataReader
使用时始终占用
SqlConnection,
在线操作数据库
..
任何对
SqlConnection
的操作都会引发
DataReader
的异常
..
因为
DataReader
每次只在内存中加载一条数据
,
所以占用的内存是很小的
..
因为
DataReader
的特殊性和高性能
.
所以
DataReader
是只进的
..
你读了第一条后就不能再去读取第一条了
..
DataSet 则是将数据一次性加载在内存中 . 抛弃数据库连接 .. 读取完毕即放弃数据库连接 .. 因为 DataSet 将数据全部加载在内存中 . 所以比较消耗内存 ... 但是确比 DataReader 要灵活 .. 可以动态的添加行 , 列 , 数据 . 对数据库进行回传更新操作 ...
DataSet 则是将数据一次性加载在内存中 . 抛弃数据库连接 .. 读取完毕即放弃数据库连接 .. 因为 DataSet 将数据全部加载在内存中 . 所以比较消耗内存 ... 但是确比 DataReader 要灵活 .. 可以动态的添加行 , 列 , 数据 . 对数据库进行回传更新操作 ...
1.
在
c#
中
using
和
new
这两个关键字有什么意义,请写出你所知道的意义?
Using
引入一个名子空间,或在使用了一个对像后自动调用其
IDespose
,
New
实例化一个对像,或修饰一个方法,表此方法完全重写此方法
2. 在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
当使用 new B() 创建 B 的实例时,产生什么输出? X=1,Y=0
2. 在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
当使用 new B() 创建 B 的实例时,产生什么输出? X=1,Y=0
(
说明
:
B t = new B(); //
输出
x=1,y=0
t.PrintFields(); //
输出
x=1,y=-1 )
3. 下面的例子中
3. 下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
产生的输出结果是什么? x=1,y=2
4. 谈谈类和结构的区别?
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
产生的输出结果是什么? x=1,y=2
4. 谈谈类和结构的区别?
最大区别一个是引用类型,一个是值类型
默认成员访问为
public
是另外一个区别
1.
在
.net
(
C# or vb.net
)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。
this(C#) Me(vb.net).
2
在
.net
(
C# or vb.net
)中如何用户自定义消息,并在窗体中处理这些消息。
在
form
中重载
DefWndProc
函数来处理消息
:
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string 与 MFC 中的 CString 的 Format 函数的使用方法有所不同
string message = string.Format(" 收到消息 ! 参数为 :{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);/// 显示一个消息框
break;
case USER:
处理的代码
default:
base.DefWndProc(ref m);/// 调用基类函数处理非自定义消息。
break;
}
}
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string 与 MFC 中的 CString 的 Format 函数的使用方法有所不同
string message = string.Format(" 收到消息 ! 参数为 :{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);/// 显示一个消息框
break;
case USER:
处理的代码
default:
base.DefWndProc(ref m);/// 调用基类函数处理非自定义消息。
break;
}
}
3.
在
.net
(
C# or vb.net
)如何启动另一个程序
。
process
4.
在
.net
(
C# or vb.net
)中如何取消一个窗体的关闭
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
{
e.Cancel=true;
}
5.
在
.net
(
C# or vb.net
)中,
Appplication.Exit
还是
Form.Close
有什么不同?
答案 : 一个是退出整个应用程序,一个是关闭其中一个 form
答案 : 一个是退出整个应用程序,一个是关闭其中一个 form
6.
在
C#
中有一个
double
型的变量,比如
10321.5
,比如
122235401.21644
,作为货币的值如何按各个不同国家的习惯来输出。比如美国用
$10,321.50
和
$122
,
235
,
401.22
而在英国则为£
10 321.50
和£
122 235 401.22
答案 :
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB"); 为英国货币类型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
答案 :
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB"); 为英国货币类型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
7.
某一密码仅使用
K
、
L
、
M
、
N
、
O
共
5
个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
( 1 ) 密码单词的最小长度是两个字母,可以相同,也可以不同
( 2 ) K 不可能是单词的第一个字母
( 3 ) 如果 L 出现,则出现次数不止一次
( 4 ) M 不能使最后一个也不能是倒数第二个字母
( 5 ) K 出现,则 N 就一定出现
( 6 ) O 如果是最后一个字母,则 L 一定出现
问题一:下列哪一个字母可以放在 LO 中的 O 后面,形成一个 3 个字母的密码单词?
A) K B)L C) M D) N
答案 :B
( 1 ) 密码单词的最小长度是两个字母,可以相同,也可以不同
( 2 ) K 不可能是单词的第一个字母
( 3 ) 如果 L 出现,则出现次数不止一次
( 4 ) M 不能使最后一个也不能是倒数第二个字母
( 5 ) K 出现,则 N 就一定出现
( 6 ) O 如果是最后一个字母,则 L 一定出现
问题一:下列哪一个字母可以放在 LO 中的 O 后面,形成一个 3 个字母的密码单词?
A) K B)L C) M D) N
答案 :B
问题二:如果能得到的字母是
K
、
L
、
M
,那么能够形成的两个字母长的密码单词的总数是多少?
A)1 个 B)3 个 C)6 个 D ) 9 个
答案 :A
A)1 个 B)3 个 C)6 个 D ) 9 个
答案 :A
问题三:下列哪一个是单词密码?
A) KLLN B) LOML C) MLLO D)NMKO
答案 :C
A) KLLN B) LOML C) MLLO D)NMKO
答案 :C
8. 62-63=1
等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
答案 :62 移动成 2 的 6 次方
答案 :62 移动成 2 的 6 次方
new
有几种用法
第一种 :new Class();
第二种 : 覆盖方法
public new XXXX(){}
第三种 :new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
2. 如何把一个 array 复制到 arrayList 里
foreach( object o in array )arrayList.Add(o);
3.datagrid.datasouse 可以连接什么数据源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
4. 概述反射和序列化
反射 : 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化 : 序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
5. 概述 o/r mapping 的原理
利用反射,配置 将类于数据库表映射
7. 用 sealed 修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
第一种 :new Class();
第二种 : 覆盖方法
public new XXXX(){}
第三种 :new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。
2. 如何把一个 array 复制到 arrayList 里
foreach( object o in array )arrayList.Add(o);
3.datagrid.datasouse 可以连接什么数据源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
4. 概述反射和序列化
反射 : 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化 : 序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
5. 概述 o/r mapping 的原理
利用反射,配置 将类于数据库表映射
7. 用 sealed 修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
11.
详述
.NET
里
class
和
struct
的异同!
class: 放在 ? struct 放在?
struct 值传递
类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在 “ 在堆栈上 ” 或 “ 内联 ” 。细心的程序员有时可以通过聪明地使用结构来增强性能。
12. 概述 .NET 里对 remoting 和 webservice 两项技术的理解和实际中的应用 。
远程逻辑调用, remoing 接口只能用在 .net 中
13. 什么是 code-behind 技术 aspx and cs
class: 放在 ? struct 放在?
struct 值传递
类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在 “ 在堆栈上 ” 或 “ 内联 ” 。细心的程序员有时可以通过聪明地使用结构来增强性能。
12. 概述 .NET 里对 remoting 和 webservice 两项技术的理解和实际中的应用 。
远程逻辑调用, remoing 接口只能用在 .net 中
13. 什么是 code-behind 技术 aspx and cs
14.
概述三层结构体系
web/business/dataaccess
15.asp.net 如何实现 MVC 模式,举例说明! web/business/dataaccess
15.asp.net 如何实现 MVC 模式,举例说明! web/business/dataaccess