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. 請談談你個人的最大特色。
我的堅持度很高,事情沒有做到一個令人滿意的結果,絕不罷手。