ASP.NET程序员面试试题(一)
姓名:_________班级:__________
一、填空题:(10分,每空1分)
1. 面向对象的语言具有______性、________性、_______性。
2. 能用foreach遍历访问的对象需要实现 ________接口或声明___________方法的类型。
3. 列举ADO.net中的五个主要对象________、__________、____________、_____________、_____________。
二、不定向选择题(10分)
1. 以下叙述正确的是:
A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
2. 从数据库读取记录,你可能用到的方法有:
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
三、程序题(40分):
1. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)
答:
2. 有一组数字:20 , 10 ,8, 30, 5, 1, 2, 22 请用编程的方式冒泡排序法进行由小到大的方式排序。
答:
3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......
求第30位数是多少, 用递归算法实现。
答:
4. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
答:
四、问答题:(40分)
1. 数组有没有length()这个方法? String有没有length()这个方法?
答:
2. Asp.Net中读写XML的类都归属于哪些命名空间?
答:
3. 概述三层架构的体系
答:
4. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答:.
5. 列举ASP.NET 页面之间传递值的几种方式。
答:
6.你找工作时,最重要的考虑因素为何?
答:
7. 为什么我们应该录取你?
答:
8. 请谈谈你个人的最大特色。
答:
ASP.NET程序员面试试题答案(一)
一、填空题:
1. 面向对象的语言具有_继承_性、__封装___性、__多态___性。
2. 能用foreach遍历访问的对象需要实现 ___IEnumerable ___接口或声明____GetEnumerator___方法的类型。
3. 列举ADO.net中的五个主要对象___Connection__、__Command___、___DataReader___、___DataAdapter____、___DataSet____。
二、不定向选择题
1. 以下叙述正确的是: B C
A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
2. 从数据库读取记录,你可能用到的方法有:BCD
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
三、程序题:
1. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)
答:
解1: 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)
2. 有一组数字:20 , 10 ,8, 30, 5, 1, 2, 22 请用编程的方式冒泡排序法进行由小到大的方式排序。
答:
从小到大的排序
class Program
{
public static void Sort(int[] myArray)
{
// 取长度最长的词组 -- 冒泡法
for (int j = 1; j < myArray.Length;j++)
{
for (int i = 0; i < myArray.Length - 1; i++)
{
// 如果 myArray[i] > myArray[i+1] ,则 myArray[i] 上浮一位
if (myArray[i] >myArray[i + 1])
{
int temp = myArray[i];
myArray[i] = myArray[i + 1];
myArray[i + 1] = temp;
}
}
}
}
static voidMain(string[] args)
{
int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22};
Sort(myArray);
for (int m = 0; m < myArray.Length; m++)
{
Console.WriteLine(myArray[m]);
}
}
从大到小的排序
class Program
{
public static void Sort(int[] myArray)
{
// 取长度最长的词组 -- 冒泡法
for (int j = 1; j < myArray.Length;j++)
{
for (int i = 0; i < myArray.Length - 1; i++)
{
// 如果 myArray[i] < myArray[i+1] ,则 myArray[i] 下沉一位
if (myArray[i] < myArray[i + 1])
{
int temp = myArray[i];
myArray[i] = myArray[i + 1];
myArray[i + 1] = temp;
}
}
}
}
static voidMain(string[] args)
{
int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22 };
Sort(myArray);
for (int m = 0; m < myArray.Length; m++)
{
Console.WriteLine(myArray[m]);
}
}
3. 一列数的规则如下: 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);
}
}
评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。
写出if(i > 0 && i <= 2) return 1; 得5分。
方法参数过多需要扣分(扣除分数 = 参数个数 - 1)
不用递归算法扣5分
(递归算法在树结构建立等方面比较常用)
4. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
答:
要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准:
<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
public interface Observer
{
void Response(); //观察者的响应,如是老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static voidMain(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
//---------------------------------------------------------------------------------------------
设计方法二: 使用event -- delegate设计..
public delegate void SubEventHandler();
public abstract class Subject
{
public event SubEventHandler SubEvent;
protected void FireAway()
{
if (this.SubEvent != null)
this.SubEvent();
}
}
public class Cat : Subject
{
public void Cry()
{
Console.WriteLine("cat cryed.");
this.FireAway();
}
}
public abstract class Observer
{
public Observer(Subject sub)
{
sub.SubEvent += new SubEventHandler(Response);
}
public abstract void Response();
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject sub) : base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject sub) : base(sub){}
public override void Response()
{
Console.WriteLine("host waken");
}
}
class Class1
{
static voidMain(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
四、问答题:
1. 数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String没有length()这个方法。
2. Asp.Net中读写XML的类都归属于哪些命名空间?
答:System.Xml
3. 概述三层架构的体系
答:
MVC是一种目前广泛流行的软件设计模式,MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出
流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三
个层——模型层、视图层、控制层。
(1)表现层(View):
代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML、Applet。
(2)模型层(Model):
就是业务流程/状态的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。
业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
(3)控制层(Controller ):
可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。
MVC优缺点
优点:适用于团队开发合作,增强了应用的可拓展性,使得应用程序更加健壮,更加有弹性,更加个性化。
4. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答:. private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
5. 列举ASP.NET 页面之间传递值的几种方式。
答:
1.使用QueryString 问号传参, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
4.Cookie传值
5.ViewState状态传值
6.Application
7.Cache
8.WebService
6.你找工作时,最重要的考虑因素为何?
工作的性质和内容是否能让我发挥所长,并不断成长。
7. 为什么我们应该录取你?
您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。
8. 请谈谈你个人的最大特色。
我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。
ASP.NET程序员面试试题答案(一)
一、填空题:
1. 面向对象的语言具有_继承_性、__封装___性、__多态___性。
2. 能用foreach遍历访问的对象需要实现 ___IEnumerable ___接口或声明____GetEnumerator___方法的类型。
3. 列举ADO.net中的五个主要对象___Connection__、__Command___、___DataReader___、___DataAdapter____、___DataSet____。
二、不定向选择题
1. 以下叙述正确的是: B C
A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
2. 从数据库读取记录,你可能用到的方法有:BCD
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
三、程序题:
1. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)
答:
解1: 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)
2. 有一组数字:20 , 10 ,8, 30, 5, 1, 2, 22 请用编程的方式冒泡排序法进行由小到大的方式排序。
答:
从小到大的排序
class Program
{
public static void Sort(int[] myArray)
{
// 取长度最长的词组 -- 冒泡法
for (int j = 1; j < myArray.Length;j++)
{
for (int i = 0; i < myArray.Length - 1; i++)
{
// 如果 myArray[i] > myArray[i+1] ,则 myArray[i] 上浮一位
if (myArray[i] >myArray[i + 1])
{
int temp = myArray[i];
myArray[i] = myArray[i + 1];
myArray[i + 1] = temp;
}
}
}
}
static voidMain(string[] args)
{
int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22};
Sort(myArray);
for (int m = 0; m < myArray.Length; m++)
{
Console.WriteLine(myArray[m]);
}
}
从大到小的排序
class Program
{
public static void Sort(int[] myArray)
{
// 取长度最长的词组 -- 冒泡法
for (int j = 1; j < myArray.Length;j++)
{
for (int i = 0; i < myArray.Length - 1; i++)
{
// 如果 myArray[i] < myArray[i+1] ,则 myArray[i] 下沉一位
if (myArray[i] < myArray[i + 1])
{
int temp = myArray[i];
myArray[i] = myArray[i + 1];
myArray[i + 1] = temp;
}
}
}
}
static voidMain(string[] args)
{
int[] myArray = new int[] { 20 , 10 ,8, 30, 5, 1, 2, 22 };
Sort(myArray);
for (int m = 0; m < myArray.Length; m++)
{
Console.WriteLine(myArray[m]);
}
}
3. 一列数的规则如下: 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);
}
}
评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。
写出if(i > 0 && i <= 2) return 1; 得5分。
方法参数过多需要扣分(扣除分数 = 参数个数 - 1)
不用递归算法扣5分
(递归算法在树结构建立等方面比较常用)
4. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
答:
要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准:
<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
public interface Observer
{
void Response(); //观察者的响应,如是老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static voidMain(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
//---------------------------------------------------------------------------------------------
设计方法二: 使用event -- delegate设计..
public delegate void SubEventHandler();
public abstract class Subject
{
public event SubEventHandler SubEvent;
protected void FireAway()
{
if (this.SubEvent != null)
this.SubEvent();
}
}
public class Cat : Subject
{
public void Cry()
{
Console.WriteLine("cat cryed.");
this.FireAway();
}
}
public abstract class Observer
{
public Observer(Subject sub)
{
sub.SubEvent += new SubEventHandler(Response);
}
public abstract void Response();
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject sub) : base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject sub) : base(sub){}
public override void Response()
{
Console.WriteLine("host waken");
}
}
class Class1
{
static voidMain(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
四、问答题:
1. 数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String没有length()这个方法。
2. Asp.Net中读写XML的类都归属于哪些命名空间?
答:System.Xml
3. 概述三层架构的体系
答:
MVC是一种目前广泛流行的软件设计模式,MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出
流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三
个层——模型层、视图层、控制层。
(1)表现层(View):
代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML、Applet。
(2)模型层(Model):
就是业务流程/状态的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。
业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
(3)控制层(Controller ):
可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。
MVC优缺点
优点:适用于团队开发合作,增强了应用的可拓展性,使得应用程序更加健壮,更加有弹性,更加个性化。
4. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答:. private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
5. 列举ASP.NET 页面之间传递值的几种方式。
答:
1.使用QueryString 问号传参, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
4.Cookie传值
5.ViewState状态传值
6.Application
7.Cache
8.WebService
6.你找工作时,最重要的考虑因素为何?
工作的性质和内容是否能让我发挥所长,并不断成长。
7. 为什么我们应该录取你?
您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。
8. 请谈谈你个人的最大特色。
我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。