C#⾯试题(附答案)
1.abstract class和interface的区别?
abstract class是抽象类。它声明了⽅法,⽽且可以有属性,但它的⽅法不实现,主要创建⼀个体现基本⾏为的类。不能创建类的实例。它的⼦类来实现它的⽅法,若⼦类也没有实现,那么这个⼦类也是抽象类。
interface是接⼝,在接⼝中,所有的⽅法都是抽象的,⼀个类可以继承多个接⼝,接⼝中不能有属性。
2。<%# %>和<% %>有什么区别?
<%# %>表⽰绑定的数据源。
<% %>是服务器端代码块。
3.&和&&的区别?
&是位运算符,⽽&&是逻辑运算符(and)。
4.C#可否对内存进⾏直接的操作?
不能,C#有垃圾回收功能,不能直接操作内存,但是可以调⽤基类的Finalize()⽅法。
5.62-63=1 等式不成⽴,请移动⼀个数字(不可以移动减号和等于号),使得等式成⽴,如何移动?
把62变成2的6次⽅。
asp 字符串转数组6.在(C# or vb)中,Appplication.Exit 还是 Form.Close有什么不同?
Appplication.Exit是退出整个程序,⽽Form.Close是关闭Form。
7.在.Net托管代码中我们不⽤担⼼内存漏洞,这是因为有了______。
GC(垃圾回收器)。
8.在.Net中所有可序列化的类都被标记为_____。
[serializable]。
9.⽤sealed修饰的类有什么特点?
密封的,不能继承。
10.委托声明的关键字是______?
delegate。
11.float f=-123.567F; int i=(int)f;i的值现在是_____?
-123。
12.public static const int A=1;这段代码有错误么?是什么?
const不能有static修饰。
13.当整数a赋值给⼀个object对象时,整数a将会被?
装箱。
14.c#中的三元运算符是?
?:。
15.ADO中常⽤的对象有哪些?分别描述⼀下。
Connection 数据库连接对象
Command 数据库命令
DataReader 数据读取器
DataSet 数据集
16.什么是虚函数?什么是抽象函数?
虚函数:没有实现的,可有⼦类继承或重写。抽象函数:其⾮虚⼦类必须重写函数。
17.下⾯这段代码输出什么?为什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal")
不相等,因为⽐较的是对象。
18.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
new 创建实例,new 隐藏基类中⽅法,using引⼊命名空间或者使⽤⾮托管资源。
19.软件开发过程⼀般有⼏个阶段?
需求分析,架构设计,代码编写。
20.DataReader与Dataset有什么区别?
DataReader只能向前读,⽽Dataset是建⽴⼀个内存中的表。
21.向服务器发送请求有⼏种⽅式?
get,post。
22.请说明在中常⽤的⼏种页⾯间传递参数的⽅法,并说出他们的优缺点。
session(viewstate):简单,但易丢失
application:全局
cookie:简单,但可能不⽀持,可能被伪造
23.ASP.NET与ASP相⽐,主要有哪些进步?
asp解释形,aspx编译型,asp有更多的类。
24.String s = new String("xyz");创建了⼏个String Object?
两个对象.⼀个是是xyz,⼀个是指向xyz引⽤的s。
25.GC是什么? 为什么要有GC?
GC是垃圾回收器。因为有了GC就省去了程序员⼿⼯编码释放内存。
26.能⽤foreach遍历访问的对象需要实现 ________________接⼝或声明________________⽅法的类型。 IEnumerable 、GetEnumerator。
27.⾯向对象的语⾔具有________性、_________性、________性
封装、继承、多态。
28.在C#中,string str = null 与 string str = “” 请尽量使⽤⽂字或图象说明其中的区别
string str = null 是不给他分配内存空间,⽽string str = "" 给它分配长度为空字符串的内存空间。
29中读写数据库需要⽤到那些类?他们的作⽤?
DataSet:数据存储器。
DataCommand:执⾏语句命令。
DataAdapter:数据的集合,⽤语填充。
30.什么是装箱和拆箱?
从值类型转换到引⽤类型装箱(可隐式转换),从引⽤类型转换到值类型拆箱。
31.CTS、CLS、CLR分别作何解释?
CTS:通⽤语⾔系统。CLS:通⽤语⾔规范。CLR:公共语⾔运⾏库。
32.⽤做B/S结构的系统,您是⽤⼏层结构来开发,每⼀层之间的关系以及为什么要这样分层?⼀般为3层
数据访问层,业务层,表⽰层。
数据访问层:对数据库进⾏增删查改。
业务层⼀般分为⼆层,业务表观层实现与表⽰层的沟通,业务规则层实现⽤户密码的安全等。表⽰层:为了与⽤户交互例如⽤户添加表单。
优点:分⼯明确,条理清晰,易于调试,⽽且具有可扩展性。
缺点:增加成本。
33.描述⼀下C#中索引器的实现过程,是否只能根据数字进⾏索引?
定义⼀个索引器必须使⽤this关键字,如this[index]。可以是任意类型索引。
34.override与重载的区别
重载是⽅法的名称相同,参数或参数类型不同。Override 是进⾏基类中函数的重写。
35.C#中的委托是什么?事件是不是⼀种委托?
委托可以把⼀个⽅法作为参数代⼊另⼀个⽅法.委托可以理解为指向⼀个函数的引⽤。
事件是⼀种特殊的委托。
36.简述 private、 protected、 public、 internal 修饰符的访问权限
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同⼀命名空间内可以访问。
37.⼀列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,⽤递归算法实现 public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}
38.请编程遍历页⾯上所有TextBox控件并给它赋值为string.Empty?
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
40.在下⾯的例⼦⾥
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。
41.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表⽰更新的事务号, LastUpdateDate表⽰更新时的服务器时间,请使⽤⼀句SQL语句获得最后更新的事务号
select ID from table1 order by LastUpdateData desc
42.写出⼀条Sql语句:取出表A中第31到第40记录(SQLServer,以⾃动增长的ID作为主键,注意:ID可能不是连续的。
select top 10 * from A where id not in (select top 30 id from A)
43.接⼝是否可继承接⼝? 抽象类是否可实现(implements)接⼝? 抽象类是否可继承实体类(concrete class)?
接⼝可以继承接⼝。抽象类可以实现(implements)接⼝,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
44.构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
45.是否可以继承String类?
String类是final类故不可以继承。
46.List, Set, Map是否继承⾃Collection接⼝?
List,Set是。Map不是。
47.数组有没有length()这个⽅法? String有没有length()这个⽅法?
没有,有这个属性。String有这个⽅法。
48.sleep() 和 wait() 有什么区别?
sleep()⽅法是使线程停⽌⼀段时间的⽅法。在sleep 时间间隔期满后,线程不⼀定⽴即恢复执⾏。这是因为在那个时刻,其它线程可能正在运⾏⽽且没有被调度为放弃执⾏,除⾮(a)“醒来”的线程具有更⾼的优先级
(b)正在运⾏的线程因为其它原因⽽阻塞。
wait()是线程交互时,如果线程对⼀个同步对象x 发出⼀个wait()调⽤,该线程会暂停执⾏,被调对象进
⼊等待状态,直到被唤醒或等待时间到。
49.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
50.Session有什么重⼤BUG,微软提出了什么⽅法加以解决?
iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以⽤Sate server或SQL Server数据库的⽅式存储Session不过这种⽅式⽐较慢,⽽且⽆法捕获Session的END事件。
51.进程和线程的区别?
进程是系统进⾏资源分配和调度的单位;线程是CPU调度和分派的单位,⼀个进程可以有多个线程,这些线程共享这个进程的资源。52.产⽣⼀个int数组,长度为100,并向其中随机插⼊1-100,并且不能重复。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
53.下⾯的代码中有什么错误吗?_______
using System;
class A
{
public virtual void F()
{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论