asp.net面试题
1.new有几种用法
* W- m) P. f. h2 q v& f- x& P5 \( \) G
第一种:new Class();
/ ~" R- M# w6 v6 `
% Q# \* i1 y3 o4 |9 a3 L第二种:覆盖方法
$ R* U6 @% O+ b7 `7 J6 k" P6 _4 B8 P/ l# A
public new XXXX(){}, u5 A4 c! c/ Q9 \8 h4 x- P
9 r% w) {1 `: j, W, E2 X# H' B2 M; z
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。( ]6 v* [2 q. [
8 U" Z! P: f& w2.如何把一个array复制到arrayList里2 B" Z! z" H4 L0 b
% t% {* J* `0 R( k0 }foreach( object o in array )arrayList.Add(o);3 t/ q$ w5 i6 q
1 e/ e z5 W$ Y
3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]6 o3 {* u3 {0 M( t
: D3 E1 r5 t! J- r7 J& n0 H7 J- v- [
dataset,datatable,dataview , IList
8 \7 q" k4 O8 g ]7 a9 A
0 W( \& l0 l& s `9 j) }3 o4.概述反射和序列化
& N; n- Z; k0 {* T9 D8 U3 p% Z' \
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性' u3 }4 O( T9 C
; o1 a. z) s5 O% ]( j& C序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
* j D1 B$ t' \7 P% h, R
: t5 [! S1 D( w \" a( {5.概述o/r mapping 的原理
6 S0 j! ]) N1 S# {: S
/ K# d& R+ z- d2 d+ L- `利用反射,配置 将类于数据库表映射1 P2 G0 F6 e0 B- F0 C+ X; _( g
0 l1 _4 C2 ]! ^( f' z* r
6.类成员有( )种可访问形式/ o, _4 S6 o; n; Z8 [' ]& t
* T0 c" R s5 B. t3 v可访问形式?不懂。+ N6 K [$ u" @0 Y, K* h% e
9 v; c( T S9 t* J. }
可访问性:public ,protected ,private,internal1 p! P! _3 ?& V2 `
3 v- @; W: \7 P( ~' d1 j& u7.用sealed修饰的类有什么特点2 M, x3 H, b' ]9 k2 W% v
# B( k, A. F" b: v8 H
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。5 `& b0 a9 N5 i6 ^8 S: L
# k( B4 p1 @8 v
密封类不能同时为抽象类。
. ]( W0 K- _% O% l4 o+ [
7 V1 Q2 V0 H- P9 t2 A2 Isealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
' I! F9 Y% y6 q0 I8 t
( t# n. z M. a$ a% w8.列举ADO.NET中的五个主要对象,并简单描述
% P, {) E: x! f) N( c
( m) d$ B3 Y* T3 U+ _' Qconnection,command,dataReader,trans,dataset ...
3 j/ d* j* l6 T7 v, |* g( W; F' [
' k% P0 }( Q# G: `7 \2 `9.执行下面代码后:! H" o; G" R0 \: F
+ o1 z) j. Z9 W$ I& L7 P
String strTemp ="abcdefg 某某某";6 v6 s* d5 d" u
/ f$ ~# O/ h7 W; ~: k6 lInt i System.Text.Encoding.Default.GetBytes(strTemp).Length;' m+ j6 H# m+ ?; X# G1 B
1 V. x- Y6 T! d, k1 K6 O
Int j = strTemp.Length;
. ?3 v8 M% t$ S7 }% {5 ?+ \$ r# y. w% D
问:i=(14 ) ;j=(11 )
3 o y# J' ?& _; Z! i, H% |% d9 x4 h C2 [1 j$ X
i=(14 ) ;j=(11 ) 中文两个字节
6 d* \: z& x" M( ^( v, J7 D: Y9 I, j
# [6 u5 s$ \% U) R, A10.C#中,string str = null 与 string str ="",请尽量用文字说明区别。(要点:说明详细的内存空间分配)9 }, I7 b, z8 ], u
# R2 I* m: M7 [# n, E4 \$ Y
string str ="" 分配空间
4 L" A- p2 ?* @6 a
6 m- r/ b4 A# f+ q* h11.详述.NET里class和struct的异同!
, ~3 `# Q d% X! r$ W3 u1 `' i6 B u5 Z7 V" w
class:放在 ? struct放在?
7 ~$ l& K$ c4 P2 q. F, R6 W) }+ L1 @' v) ?/ W) M
struct值传递( C& I$ s, \$ {0 q" q& v
' K8 y4 ]; X) O* m
类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。9 V5 ]2 \, L/ }) Y1 g7 @
# q( E0 c- c+ }1 M2 P6 t/ X2 x12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。
; ^3 U: Z* E2 c) O& k _5 i; K1 `0 W
2 I$ r- l3 i+ l2 W% m远程逻辑调用,remoing接口只能用在.net中
* }6 |8 A. E% _# s M" m5 M# v3 J4 j' I; z& X/ L I* L
13.什么是code-behind技术* s U2 n* l8 | }& }9 ^
+ P D0 |& J0 i. r
aspx and cs " h' g6 x8 l$ I! C. Q* s
3 u a I ^- n/ e1 H# p
14.概述三层结构体系% @/ F( h+ V- v+ l" p i; G+ X
! Y1 z& D' k; c/ w
web/business/dataaccess
- |% I. `. ~7 S/ M3 ^
4 C, y4 i; a% ^& K& I1 A15.asp.net如何实现MVC模式,举例说明! p' }9 U a' l! N9 ]/ ]6 U$ e# r
2 E- E& ~1 f! L# v! c$ a* N
web/business/dataaccess/ {) z; G, x& C+ A7 o T
2 o* Q `' P. |+ O
----------------------------------------------------------------------------------------------------------8 l$ K$ H$ r! ` Q( }' `% z3 b
; F$ B" M7 R: q6 U- S1 E, L' `$ A
1.面向对象的思想主要包括什么?/ U/ M- D$ P8 d5 m) L5 `
% n0 Y4 C/ d5 y: W% J/ M
答:这个题范围太广,不知道说什么.
9 O; d% |! H, P: k
) o6 s' J" t6 z" h g2.什么是ASP.net中的用户控件 b; |! x' r! e+ D
0 A+ P; K( M% M' w. t0 q
答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整." N3 q# H D: O4 V& I' h' q8 N6 K
. ` K( P- W9 r
3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
; \& a9 ]: B& X; ~' _! o9 d: X; G
答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.
7 f) B3 b" r+ m6 k m, h& R- g
6 N( ~$ J9 `7 E* c4.列举一下你所了解的XML技术及其应用
2 d/ A I. v0 g; v% w/ z# r
5 x6 i2 p- W$ H' x# H0 B7 L答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.1 x7 y% I1 m6 W/ b; \, R
; @5 d, f! x0 q+ i3 g5.值类型和引用类型的区别?写出C#的样例代码。2 f3 D3 s+ ?9 ^& Z& y$ k& e
3 M. b ] C! i+ G9 ^; y& Y" o- w答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.! a! g. ~- b' p3 M8 y& e6 E
$ m$ B3 @3 R+ S% R; ?; A- z. j4 F6.ADO.net中常用的对象有哪些?分别描述一下。6 y% k. I/ q: U# B7 Z3 o- |
5 @* t; z. w- r* m0 A答:connection command sqladapter dataset datatable dataview等等.写不完了.6 B. T8 p0 v( R$ S% b! ?
+ Q8 y. A! [1 g7.如何理解委托?( D6 K1 n w4 {. g& m
1 w5 c6 E# Q$ A* B' B- }+ y
答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.2 ~6 Z! E- w% M, D
2 W$ j$ O7 n, ]" F- ]
msdn2005中是这样解释的:) \0 @. P, }4 k) q/ p0 A& y2 ]
$ W# `. K$ t4 V9 g% ]% Q
委托具有以下特点:
( P, Q; f' d9 V( y' k6 Y0 U6 M$ ]" i1 d/ o1 \% J$ b. L) a$ g* b6 _
委托类似于 C++ 函数指针,但它是类型安全的。
7 `- j3 @, ~ q# B6 d
* A! [9 I" T5 w/ f$ R* [' I% P9 T8 v委托允许将方法作为参数进行传递。
6 a/ t7 _% R3 x# {1 X* V! q
( D: l' c& K( R- C5 N! G委托可用于定义回调方法。
& d& S; I$ S4 Z; A- \
4 c+ H+ h% L* @' @+ J6 o委托可以链接在一起;例如,可以对一个事件调用多个方法。; R, L6 p8 {% U: I3 b6 u
3 o6 f t2 O% w3 b A
方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。' O- l9 ^+ X7 c! [6 k* e9 m
2 z/ [6 v( M$ p1 L
C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。% S+ t0 f$ Y [4 I* [
& v* z6 b( [# t8.C#中的接口和类有什么异同。/ j7 i& J' ]% C/ c9 H
8 b- a# |6 O' E8 c; {答:这个异同可多了,要说清楚还真不容易.