經典推薦--.Net面試法寶(面試題收集)

作者: 仰天一笑  來源: 博客園  發布時間: 2010-03-05 16:19  閱讀: 5535 次  推薦: 4   原文鏈接   [收藏]  

  一不小心發現‘澤來-王者之劍’的《面試題收集》的文章,好啊,真是下了大氣力,我在此轉一把,同時也將自己收集的試題添加上去,愿從事.Net開發的同胞們,能如魚得水,應付有余。但是旨在針對性面試,全面性提高,要是很好解決了這些問題,成竹在胸,你也是DotNET的一把好手了!祝大家都有好運氣,找到好工作,拿到更多的Money! 本人將會在評論中不斷更新信息,請關注!

  .net筆試題

1.      填空: (1)面向對象的語言具有________性、_________性、________性。

        (2)能用foreach遍歷訪問的對象需要實現 ________________接口或聲明________________方法的類型。

        (3)列舉ADO.net中的五個主要對象_______________、_____________、_______________、_______________、_________________。

2. 不定項選擇:

(1) 以下敘述正確的是:

      A. 接口中可以有虛方法。     B. 一個類可以實現多個接口。
      C. 接口不能被實例化。       D. 接口中可以包含已實現的方法。

(2) 從數據庫讀取記錄,你可能用到的方法有:

      A. ExecuteNonQuery            B. ExecuteScalar

      C. Fill                        D. ExecuteReader

3. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。

4. 寫出一條Sql語句: 取出表A中第31到第40記錄(SQLServer, 以自動增長的ID作為主鍵,  注意:ID可能不是連續的。)

5 .列舉ASP.NET 頁面之間傳遞值的幾種方式。

6. 寫出程序的輸出結果

 

 
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);
}
}

7.寫出程序的輸出結果

 

 
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();
}
}

8.      寫出程序的輸出結果:

 
public class A
{

public virtual void Fun1(int i)
{
Console.WriteLine(i);
}


public void Fun2(A a)
{
a.Fun1(
1);
Fun1(
5);
}
}



public class B : A
{

public override void Fun1(int i)
{

base.Fun1 (i + 1);
}


public static void Main()
{
B b
= new B();
A a
= new A();
a.Fun2(b);
b.Fun2(a);
}
}

 

 

9. 一列數的規則如下: 1、1、2、3、5、8、13、21、34......

   求第30位數是多少, 用遞歸算法實現。(C#語言)


10.  程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)

要求:  1.要有聯動性,老鼠和主人的行為是被動的。

2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。


參考答案:
1. (1)  繼承性、封裝性、多態性。(考基本概念)
   (2)  IEnumerable 、 GetEnumerator (對foreach機制的理解,本來不想出這題的,湊分)
   (3)  ... (送分題, 對ADO.net的了解)
評分標準:一空1分,滿分10分。

2. (1) B、C (考對接口的理解)  (2)  B、C、D (考查對ADO.net的熟練程度)
  評分標準: 一題5分,不選或者錯選均不得分。漏選得2分。滿分10分。

3. . private :   私有成員, 在類的內部才可以訪問。
     protected : 保護成員,該類內部和繼承類中可以訪問。
     public :    公共成員,完全公開,沒有訪問限制。
     internal:   在同一命名空間內可以訪問。
評分標準:答對1題2分,2題5分,3題7分。全對10分。 (送分題)

4.  解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)
    評分標準: 寫對即10分。(答案不唯一,datagrid 分頁可能需要用到)

5.  1.使用QueryString,  如....?id=1; response. Redirect()....
    2.使用Session變量
    3.使用Server.Transfer
    ....等等
   評分標準: 答對1點得3分, 兩點7分, 3點10分。


6.  (考查值引用和對象引用)
10
21
0
str
string being converted.
評分標準:答對一點得2分,滿分10分。


7.  A
    B
A.Fun()
評分標準: 寫出A.B 得5分,寫出A.Fun()得5分,滿分10分。
(考查在繼承類中構造函數, 以及new 方法, )


8.  2
    5
    1
    6

評分標準: 答對一點得2分,兩點得5分,3點得7分。全對得10分。

(一些人做這題,頭都暈了.... ^_^ )

 

9.

 
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分

           (遞歸算法在樹結構建立等方面比較常用)

 

10          

 要點: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 void Main(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 void Main(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. C# property attribute的區別,他們各有什么用處,這種機制的好處在哪里?

 

2. 講一講你理解的web service,dot net framework中,怎么很好的結合xml?(講概念就行了)

3. C#, Java c++的特點,有什么相同的地方,不同的地方,C#分別從c++java中吸取了他們那些優點?

4. C#可否對內存進行直接的操作?(這可是個難點哦?要注意!)

5. Visual C++ 6.0編寫的代碼(unmanaged code),如何在CLR下和其他dot net component結合?

6. 以前作過的一些項目?介紹一下自己的編程經驗。(這是蒙混不過去的,基本一問就知道是真是假)

7. 你對公司有什么期望?你的薪水期望值?為什么學計算機?以前的工作經驗(這非常重要)?

 

Q3: 維護數據庫的完整性、一致性、你喜歡用觸發器還是自寫業務邏輯?為什么

Q4ADONET相對于ADO等主要有什么改進?

Q5ASPNETASP相比,主要有哪些進步?

Q6C#中的委托是什么?事件是不是一種委托?

Q7:描述一下C#中索引器的實現過程,是否只能根據數字進行索引?

Q8C#中要使一個類支持FOREACH遍歷,實現過程怎樣?

Q10:寫一個HTML頁面,實現以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。并在2分鐘后自動關閉頁面。

Q11:你對XMLHTTPWEBSERVICE 了解嗎?簡單描述其特點、作用

Q12:接口和抽象類有什么區別?你選擇使用接口和抽象類的依據是什么?

Q13:自定義控件和一般用戶控件的異同?如果要用這兩者之一,你會選擇哪種?為什么

Q14:大概描述一下ASPNET服務器控件的生命周期

Q15UML

Q16:面向對象的概念,主要特點

Q17:類劃分的依據。類粒度問題

Q18:事物管理問題

第一,談談final, finally, finalize的區別。

第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?

第三,Static Nested Class Inner Class的不同,說得越多越好(面試題有的很籠統)

第四,&&&的區別。

第五,HashMapHashtable的區別。

第六,Collection Collections的區別。

第七,什么時候用assert

第八,GC是什么? 為什么要有GC?

第九,String s = new String("xyz");創建了幾個String Object?

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?

第十二,sleep() wait() 有什么區別?

第十三,Java有沒有goto?

第十四,數組有沒有length()這個方法? String有沒有length()這個方法?

第十五,OverloadOverride的區別。Overloaded的方法是否可以改變返回值的類型?

第十六,Set里的元素是不能重復的,那么用什么方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?

第十七,給我一個你最常見到的runtime exception

第十八,errorexception有什么區別?

第十九,List, Set, Map是否繼承自Collection接口?

第二十,abstract classinterface有什么區別?

第二十一,abstractmethod是否可同時是static,是否可同時是native,是否可同時是synchronized?

第二十二,接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?

第二十三,啟動一個線程是用run()還是start()?

第二十四,構造器Constructor是否可被override?

第二十五,是否可以繼承String?

第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?

第二十七,try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執行,什么時候被執行,在return前還是后?

第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?

第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

第三十,當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?

第三十二,編程題: 寫一個Singleton出來。

 

數據庫方面:

1.存儲過程和函數的區別

2.事務是什么?

3.游標的作用?如何知道游標已經到了最后?

4.觸發器分為事前觸發和事后觸發,這兩種觸發有和區別。語句級觸發和行級觸發有何區別。

 

1。用C#實現以下功能

   a 產生一個int數組,長度為100,并向其中隨機插入1-100,并且不能重復。

   b 對上面生成的數組排序,需要支持升序、降序兩種順序

2。請說明在.net中常用的幾種頁面間傳遞參數的方法,并說出他們的優缺點。

3。請說明.net中的錯誤處理機制,并舉例

4。請說出強名的含義

5。請列出c#中幾種循環的方法,并指出他們的不同

6。請指出.net中所有類型的基類

7。請指出GAC的含義

8SQL SREVER中,向一個表中插入了新數據,如何快捷的得到自增量字段的當前值

 

您在什么情況下會用到虛方法?它與接口有什么不同?

QOverride與重載有什么區別?

Q:值類型與引用類型有什么區別?

Q:怎樣理解靜態變量?

Q:向服務器發送請求有幾種方式?

QDataReaderDataset有什么區別?

Q:如果在一個B/S結構的系統中需要傳遞變量值,但是又不能使用SessionCookieApplication,您有幾種方法進行處理?

Q:用.netB/S結構的系統,您是用幾層結構來開發,每一層之間的關系以及為什么要這樣分層?

Q:軟件開發過程一般有幾個階段?每個階段的作用?

Q:微軟推出了一系列的Application Block,請舉出您所知道的Application Block并說明其作用?

Q:請列舉一些您用到過的設計模式以及在什么情況下使用該模式?

Q:您對WebService的體會?

Q:您對編程的興趣如何?工作中遇到不懂的問題是怎樣去解決的?您一般怎樣去提高自己的編程水平?

Q:您離職的原因是什么?

Q:通過超鏈接怎樣傳遞中文參數?

Q:請編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty

Q:請編程實現一個冒泡排序算法?

 

1override與重載的區別

2.net的錯誤處理機制是什么

3C#中接口和類的異同

4DataReaderDataSet的異同

 

1.有哪幾種方法可以實現一個類存取另外一個類的成員函數及屬性,并請舉列來加以說明和分析.

2.如果需記錄類的實例個數,該如何實現,請寫一個簡單的類于以證明.

3.A類是B類的基類,并且都有自己的構造,析構函數,請舉例證明B類從實例化到消亡過程中構造,析構函數的執行過程.

4.需要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續空格的話,僅保留一個空格,即允許字符串中間有多個空格,但連續的空格數不可超過一個.

 

.填空題

1.c#中的三元運算符是__?:___?

2.當整數a賦值給一個object對象時,整數a將會被__裝箱(封裝)___?

3.類成員有_____種可訪問形式?  this.;new Class().Method;

4.public static const int A=1;這段代碼有錯誤么?是什么?  const不能用static修飾

5.float f=-123.567F;

  int i=(int)f;

i的值現在是_____?   123 

6.利用operator聲明且僅聲明了“==”,有什么錯誤么? 

7.委托聲明的關鍵字是______? delagete

8.sealed修飾的類有什么特點?密封,不能繼承

9.Asp.net中所有的自定義用戶控件都必須繼承自________?Control

10..Net中所有可序列化的類都被標記為_____? 

11..Net托管代碼中我們不用擔心內存漏洞,這是因為有了______?gc

12.下面的代碼中有什么錯誤嗎?_______

 

 
using System;

class A

{

public virtual void F(){
Console.WriteLine(
"A.F");
}
}

abstract class B:A
{

public abstract override void F(); // new public abstract void F();  
}

 

 

13.當類T只聲明了私有實例構造函數時,則在T的程序文本外部,___可以___(可以 or 不可以)從T派生出新的類,不可以____(可以 or 不可以)直接創建T的任何實例。

14.下面這段代碼有錯誤么?

 

 
switch (i){
case():
CaseZero();

break;
case 1:
CaseOne();

break;
case 2:
dufault;
//wrong 
CaseTwo();
break;
}

 

15..Net中,類System.Web.UI.Page 可以被繼承么?可以

 

.簡答題

1.c#usingnew這兩個關鍵字有什么意義,請寫出你所知道的意義?using 指令 和語句 new 創建實例 new 隱藏基類中方法

4.談談類和結構的區別?類是引用類型、結構是值類型

5.一個長度為10000的字符串,通過隨機從a-z中抽取10000個字符組成。請用c#語言編寫主要程序來實現。

6.對于這樣的一個枚舉類型:

      enum Color:byte{

          Red,

          Green,

          Blue,

          Orange

       }

     string[] ss=Enum.GetNames(typeof(Color));

     byte[]   bb=Enum.GetValues(typeof(Color));

試寫一段程序顯示出枚舉類型中定義的所有符號名稱以及它們對應的數值。

7.您了解設計模式么?請列出您所知道的設計模式的名稱。 //

8.請在SQL Server中設計表來保存一個樹狀結構的組織結構圖(假設結構圖中只有名稱這一項內容需要保存),如果我想查詢某一職位下的所有職位,用一個存儲過程來實現,你有什么思路?

9.什么叫做SQL注入,如何防止?請舉例說明。

10.下面這段代碼輸出什么?為什么?

     int i=5;

     int j=5;

     if (Object.ReferenceEquals(i,j))

          Console.WriteLine("Equal");

     else

          Console.WriteLine("Not Equal");

//不相等,因為比較的是對象

 

1.寫一個實現對一段字符串翻轉的方法,附加一些條件,如其中包括“,”、“.”,對其設計測試用 例 。

2.對一支紙杯設計測試用例(可以是廣義的杯,不一定是某一支特定功能的杯)

開發語言概念題

3.什么是反射?

4.Singleton如何寫設計模式

5.C#中的垃圾回收機制是怎樣的?

6.什么是Application Pool

7.鏈表和數組的區別,各有什么優缺點.

8.Remoting在客戶端服務器怎么實現 ?

9.什么是友元函數?

10.用標準C如何實現多態?

11.什么是虛函數?

12.什么是抽象函數?

13.什么是內存泄漏,怎樣最簡單的方法判斷被存泄漏 ?

 

英語題

14.用英文介紹一下使用C#/C++做的項目,主要功能

15.如果要與美國開電話會議,會如何與美國的工程師溝通

16.如果老板認為你的技術落后,你會怎么回答  

數據庫知識題

17.使用什么工具來調用存儲過程

18.SQL Server的兩種索引是何形式?索引的作用?索引的優缺點?

19.觸發器的作用  

其它知識題及問題

20.什么是Web Service

21.什么是XML

22.Socket怎么實現?

4
0
 
標簽:面試題集
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()