笔试题集二
51. 接口是否可继承接口?抽象类是否而已实现接口?抽象类是否可继承实体类?
答:接口可以继承接口,抽象类也可以实现接口,在实体类有明确的构造函数的前提下,抽象类可以继承实体类
52. 两个对象值相同(x.equals(y)==true)但却可有不同的hash code,这句话对不对?
不对,哈希值是对原有的值做哈希,原有的值相同,那么他们的哈希值也相同。
53. switch 能否作用在byte上?能否作用在long上?能否作用在String上?
switch(exp1),exp1是一个整数表达式,因此传递给swich的参数可以是 int 、short、char、或者 byte ,这些都可以向上转换为 int ,但是 long和String却不能,long所占的字节大于int转换的过程中,程序就会报错,就像是将一大桶水导入一小桶一样,会丢失。(仅限C#之外的语言)
54. 常见的视图引擎有哪些,说说他们的优缺点?
⑴ Aspx View Engine 一个呈现Web Forms页面的视图引擎
缺点:乱、MVC不支持了
⑵ Razor View MVC3中引入
缺点:随简单易学,但还是乱
⑶ Hasic
缺点:性能差,因为它要构建整个Dom给客户端
⑷ Bellevue 一款Asp.net MVC框架的开源模板
缺点:不错
55. HTTP 请求的几种方式(几种方法)?
⑴ Get 向服务器的资源发出简单的请求,也是HTTP默认的请求方式(安全)
⑵ Head 返回的响应内容中除了报文头部外,没有其他内容(安全)
⑶ Post 用于发送包含用户提交数据的请求,例如表单数据
⑷ Put 向服务器中资源写入数据
⑸ Delete 发送一个用来删除指定文本的请求
⑹ Trace 发送请求的一个副本,以跟踪其处理进程
⑺ Options 返回所有可用的方法,用来检查服务器支持哪些方法
⑻ Connect 用于SSL隧道的基于代理的请求
扩展:
① Lock 允许用户锁定资源
② Mkcol 允许用户创建资源
③ Copy 永允许用户创建资源
④ Move 允许用户在服务器上移动资源
56. 对一个字符串做处理,只允许字符串中间最多出现一个空格(多个只保留一个)
string inputStr="xx xx"; inputStr=Regex.Replace(inputStr.Trim()," *"," ");
57. 什么事SQL注入,如何防止?
利用SQL关键字对数据库进行攻击,对关键字进行替换。
58. 什么是反射?
动态获取程序集信息
59. C# 中 property 与 attribute 的区别,他们各有什么用处?
property :属性,用于存储类的字段
attribute :特性,用来标识类或方法,使之附加性质
60. Asp.net 中所有用户自定义控件都必须继承自?
Control
61. 在 .net 中所有可序列化的类都被标记为?
[Serializable]
62. net 的错误处理机制是什么样的?
try-catch-finally 发生错误时,一层一层往上抛,知道被catch抓住;这就叫堆错误。
63. 大概描述一下 Asp.net 服务器控件的生命周期
初始化、加载视图状态、处理回发数据、加载、发送回发更改通知、处理回发事件、预呈现、保存状态、呈现、处置、卸载
64. 匿名类是否可以被继承?是否可以实现接口?
都不能
65. & 与 && 的区别?
& 是按位与运算,&& 是逻辑与运算
66. HashMap 、HashTable、Dictionary、List的比较?
首先C#模仿Java的过程中已经去掉了 HashMap
对比 HashTable 和 Dic :如果增删的动作比较多,那么使用Dic,如果查询的动作比较多,那么使用 HashTable;这和他们的处理碰撞的方法不同。
对比 Dic 和 List:List 是对 数组的一层包装,继承了泛型接口。遍历多建议使用List,因为它的内存是连续的,而Dic的存储内存不是连续的
对比 HashTable 和 List:需要序列化,建议使用List;根据条件查询比较多,则建议使用HashTable,当然List在强大的linq下查询也很方便
67. 以下代码执行结果是?
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
解析:首先从带有 Main() 的类进入,执行 Y = A.X +1; ,此时会调用A类,执行A的构造方法 X = B.Y +1; 此时 Y是等于0的,那么算的 X=1,再回到B的构造函数得出 Y=2
68. <%#%>、<%=%>、<%%>有什么区别?
<%#%>:绑定数据源
<%=%>:赋值
<%%>:加载代码块
69. 你再什么情况下会考虑使用虚方法?
实现多态时,虚方法在基类中实现,在子类中重写。
70. 请列举你曾经用过的设计模式,并说明在什么情况下使用该模式?
简单工厂模式、工厂方法模式、抽象工厂模式、单利模式、观察者模式、仓储模式
71. 通过超链接怎么传输中文的参数?
UrlEncode、UrlDecode 编码解码
72. 请指出.net中所有类型的基类
object
73. 下面代码输出什么?
int i = 5; int j = 5; if (Object.ReferenceEquals(i, j)) Console.WriteLine("Equal"); else Console.WriteLine("Not Equal");
Not Equal
74. 如何实现设计模式中的单例模式
public class Singleton { private static Singleton singleton; private Singleton() {} }
75. 不使用数据库,如何通过程序实现快速重排计算
采用快速排序等排序算法,或者直接使用泛型的方法OrderBy,再或者使用排序字典
76. Guid 的哈希值是否会重复;同一字符串,在两个不同的程序和两个不同的服务器中,哈希值是否一样
可能,因为Guid是有限的。一样,和服务器无关。
77. 多线程和并行的区别
多线程其实还是顺序执行(串行),而并行更能高效的使用CPU;多线程使用的是时间碎片,CPU同一时刻只能执行一条指令,而并行是交给多个CPU同时完成,就是说,同一时间多个CPU在执行指令。
78. 如何快速的讲内存中1000万行数据写入到文本文件中,有哪些注意事项,并行能否提高写的速度
使用 FileStream 从内存读取流,一次性写入文件。注意设置大小,可能会出现内存溢出等问题。并行不会提高写的速度(猜的)。
79. 如何解决一个网站运行过慢的问题
80. public static const int A=1;这段代码有什么错?
const 不能用 static 来修饰
81. 列举以下你所了解的XML技术及应用
一般用作配置文件,用于保存静态的数据类型,接触到的应用有 WebService 、Config文件等
82. .net 中XML的类归属哪个命名空间
System.XML 类
83. 运行以下代码,调用Test()方法,当 i>10 时是否会引起死锁?并简述理由
private static void Test(int i) { lock (_obj) { if (i > 10) { i--; Test(i); } } }
不会,Test函数再次调用,无论 i 是值类型还是引用类型,再进去的 i 值都会发生变化,不信的话拷贝到控制台程序试试,奶奶的
84. 给定下面的XML文件,完成算法流程图
<FileSystem> < DriverC > <Dir DirName=”MSDOS622”> <File FileName =” Command.com” ></File> </Dir> <File FileName =”MSDOS.SYS” ></File> <File FileName =” IO.SYS” ></File> </DriverC> </FileSystem>
请画出遍历所有文件名(FileName)的流程图,使用递归算法更好
void GetNodeFileName(dir)
{
var nodes=dir.GetAllNodes();
if(nodes.Count==0)return null;
foreach(var node in nodes)
{
if(node.HasChildNodes)
GetNodeFileName(node);
else
Console.Write(node.Attribute("FileName"));
}
}
85. 数组有没有 Length() 方法,String 有没有 Length() 方法
数组没有 Length() 方法,但是有Length属性,String 有Length方法
86. 请解释什么是上下文对象,在什么情况下要使用上下文对象?
上下文对象是指 HttpContext 类的 Current 属性,当我们在一个普通类中要访问(Response、Request、Session、Server)等时就需要用到此对象
87. 请简述配置文件中的重要节点
systemWeb:系统配置
customErrors :自定义错误信息设置
authentication:身份验证,此节点设置应用程序的身份验证策略
httpHandlers:
httpModules:
88. 对象能否调用静态方法
不能,静态方法只属于这个类
89. 简述 UDP 和 TCP的异同点
UDP传输速度快,但不安全; TCP传输速度慢,但是安全。
90. 请输出下列代码的运行结果
public class Father { public void Show() { Console.WriteLine("Father"); } } public class Child :Father { public void Show() { Console.WriteLine("Child"); } private static void Main(string[] args) { var obj = new Child(); obj.Show(); } }
这段代码很重要 var obj =newChild(); var 在声明的时候没有指明哪个类, 故默认为后面实例的类,这是第一点 ;其次,如果子类和父类有同名方法,在没有使用关键字 overide 重写父类的方法时,这两个方法分属各自的类,实例化的对象。调用同名的方法取决于 var 位置的这个类是谁。
91. 请输出下列代码的运行结果
class Class1 { private string str = "Class1.str"; private int i = 0; static void StringConvert(string str) { str = "string being converted."; } static void StringConvert(Class1 c) { c.str = "string being converted."; } static void Add(int i) { i++; } static void AddWithRef(ref int i) { i++; } static void Main() { int i1 = 10; int i2 = 20; string str = "str"; Class1 c = new Class1(); Add(i1); AddWithRef(ref i2); Add(c.i); StringConvert(str); StringConvert(c); Console.WriteLine(i1); Console.WriteLine(i2); Console.WriteLine(c.i); Console.WriteLine(str); Console.WriteLine(c.str); } }
92. 以下代码运行结果是
public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B : A { public B() { Console.WriteLine('B'); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new B(); a.Fun(); } }
A B A.Fun()
原理和题90一样,不再赘述。
93. 以下代码执行结果是
class Class1 { public static int Count = 0; static Class1() { Count++; } public Class1() { Count++; } static void Main(string[] args) { Class1 o1 = new Class1(); Class1 o2 = new Class1(); Console.WriteLine(Count); } }
3
94. 以下代码运行结果是
class Program { public static void Main(string[] args) { int i = 2000; object o = i; i = 2001; int j = (int) o; Console.WriteLine("i={0},o={1}, j={2}", i, o, j); } }
i=2001,o=2000,j=2000
95. 用C#编程实现:从给定字符串 String="dhdkjhdhoiqlhdncugvygwjvbhxbhxj";中找出重复最多的字符
Dictionary<char, int> charBucket = new Dictionary<char, int>(); string str = "dhdkjhdhoiqlhdncugvygwjvbhxbhxj"; foreach (char item in str) { if (charBucket.Keys.Contains(item)) charBucket[item]++; else charBucket.Add(item, 1); } charBucket = charBucket.OrderBy(o => o.Value).ToDictionary(o=>o.Key,p=>p.Value); foreach (var item in charBucket) Console.WriteLine("Key:{0}-Value:{1}",item.Key,item.Value);
真正的大师永远怀着一颗学徒的心。

浙公网安备 33010602011771号