遇到的和没遇到的面试题

Readonly 和 Const 的区别
一:概念
const 关键字用于定义常量。它在赋初始值后不能被修改。常量字段是隐式静态的。不允许在常数声明中使用 static 修饰符。
readonly 关键字是只读字段数据。和常量相似,不能在赋初始值后改变。和常量不同的是只读字段可以在运行时决定,因此在构造函数作用域中进行赋值时合法的(其他地方不行)。
static readonly 静态只读字段,只读字段不是隐式静态的,所以要在类级别公开,就必须显式使用static关键字。
二:区别
1.const是一个包含不能修改的值的变量,是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。readonly是在运行时执行的,因此能从一个变量中提取的值来初始化常量。
2.const只能被声明为简单的数据类型(内建的int和浮点型)、枚举或字符串,不能用new关键字初始化一个静态常量,即便是对一个值类型来说。 readonly 可以是任意的数据类型。
//这样是错误的
public const DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
//这样是可以的
public static readonly DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
总结:const外部不能对其赋值,而readonly外部可以(只能在构造函数中)对其赋值。
===============================================================
Static
区别

Static什么地方用到
static三种用法:
1.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数:
private void s()
{
static int a=1;
a++;
}
方法第一次调用结束后a在内存内值为2;
方法第一次调用结束后a在内存内值为3;
2.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法:
情况一:非静态方法:
class t
{
t(….(参数,下面同))
{
~~~~(方法内容,下面同)
}
void s(….)
{
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(….);
再在t里调用方法:sd.s(….);
情况2:静态方法:
class t
{
t(….(参数,下面同))
{
~~~~(方法内容,下面同)
}
static void s(….)
{
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(….);
3.用于class前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类:
static class t
{
~~~~
}
~~~~
class d
{
~~~~
void f(….)
{
~~~~
t v = new t();//此时程序会出现错误
}
}
===============================================================

操作数据集

哈希表
一,哈希表(Hashtable)简述
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.
二,哈希表的简单操作
在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);
在哈希表中去除某个keyvalue键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);
下面控制台程序将包含以上所有操作:
using System;
using System.Collections; file使用Hashtable时,必须引入这个命名空间
class hashtable
{
public static void Main()
{
Hashtable ht=new Hashtable(); file创建一个Hashtable实例
ht.Add(E,e);添加keyvalue键值对
ht.Add(A,a);
ht.Add(C,c);
ht.Add(B,b);
string s=(string)ht[A];
if(ht.Contains(E)) file判断哈希表是否包含特定键,其返回值为true或false
Console.WriteLine(the E keyexist);
ht.Remove(C);移除一个keyvalue键值对
Console.WriteLine(ht[A]);此处输出a
ht.Clear();移除所有元素
Console.WriteLine(ht[A]); file此处将不会有任何输出
}
}
三,遍历哈希表
遍历哈希表需要用到DictionaryEntry Object,代码如下:
for(DictionaryEntry de in ht) fileht为一个Hashtable实例
{
Console.WriteLine(de.Key);de.Key对应于keyvalue键值对key
Console.WriteLine(de.Value);de.Key对应于keyvalue键值对value
}
四,对哈希表进行排序
对哈希表进行排序在这里的定义是对keyvalue键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
ArrayList akeys=new ArrayList(ht.Keys); file别忘了导入System.Collections
akeys.Sort(); file按字母顺序进行排序
for(string skey in akeys)
{
Console.Write(skey + );
Console.WriteLine(ht[skey]);排序后输出
}

===============================================================

抽象类和接口的区别
什么地方会用到

===============================================================
Application 全局的变量
session
cookis
server.transfrom

===============================================================
重写和重载

以上这些问题感觉经常会问道。

一面的时候有些题目没搞懂,别留疑点
XML,
面向对象的三大特征,
构造函数,
死锁的代码题,
子类父类间构造函数和方法调用的顺序,
asp.net隐藏文件,
HTML代码错误时需要跳转到自定义页面,
事务的概念,
范式和函数依赖关系

二面
首先自我介绍,然后进入正题
你现在的工作单位,用到一些什么技术,大概设计模式是什么?
做过什么项目,用了哪些技术?
学习了哪些课程?
你做的最成功和最失败的项目是什么?
你3年后想做什么?
你认为软件开发的流程是怎么样的?
你认为一个项目失败有什么原因造成?
你认为中国的软件行业是怎么样的?
当你和你的组长发生冲突时怎么解决?
你设想的工作环境是怎么样的?
用三个词来形容你自己?
别人对你的工作的看法是如何的?

发表评论