.net面試題3
.NET面試題3
1.介面的特點是什麼?什麼情況下應用?
介面的作用就是定義規範,定義了要求繼承於它的類必須實現的屬性或方法。 C#中,一個類只能有一個父類,但是可以多個父介面;
介面是方法的抽象,如果不同的類有同樣的方法,那麼就應該考慮使用介面。
2.面向對象的語言具有________性、_________性、________性。
繼承性、封裝性、多態性。
3.簡述 private、 protected、 public、 internal 修飾符的訪問許可權?
private : 私有成員, 在類的內部才可以訪問。 protected : 保護成員,該類內部和繼承類中可以訪問。 public : 公共成員,完全公開,沒有訪問限制。 internal: 在同一命名空間內可以訪問。
4. .Net與Java的對比,.Net安全嗎(說出為什麼)?
對比: Java .Net
( 跨平台 ) JDK .Net Framework
OS OS C#代碼 編譯器 MSIL CLR 平台專用代碼5.重載與構造函數的用法(舉例說明)?
參數不同的重載。參數個數不同的重載。(註:兩種只是返回類型不同的方法不能重載)
構造函數是一種特殊的成員函數,它主要用於為對象分配存儲空間,對數據成員進行初始化.構造函數的名字必須與類同名;構造函數沒有返回類型,它可以帶參數,也可以不帶參數;構造函數的主要作用是完成對類的初始化工作;在創建一個類的新對象(使用new關鍵字)時,系統會自動調用給類的構造函數初始化新對象;
6.抽象類和抽象方法(含義與注意事項)?
抽象類:含有一個或多個抽象方法的類稱為抽象類,在聲明時,類名前須添加「abstract」關鍵字 抽象方法:只包含方法定義,但沒有具體實現的方法,需要其子類或者子類的子類來具體實現。
抽象方法必須寫在抽象類當中抽象方法中不能有方法體子類繼承抽象父類後,使用override關鍵字覆蓋父類中的抽象方法,並做具體的實現。抽象類不能是靜態或者密封的抽象類不能被實例化,這是因為它包含了沒有具體實現的方法 子類繼承抽象父類後,可以使用override關鍵字覆蓋父類中的抽象方法,並做具體的實現。也可以不實現抽象方法,留給後代實現,這時子類仍舊是一個抽象類,必須聲明為abstract 。抽象方法和抽象類必須用abstract聲明
7. 什麼情況下使用虛方法及關鍵字?
具體方法能否重寫。virtual
8.虛方法抽象方法的區別?
虛方法 抽象方法用virtual修飾 用abstract要有方法體 不允許有方法體可以被子類重寫 必須被子類重寫除了密封類外都可以只能在抽象類中
9.抽象類與介面的區別?
抽象類 介面
不同點用abstract定義 用interface定義只能繼承一個類 可以實現多個介面非抽象派生類必須實現抽象方法實現介面的類必須實現所有的成員需要override實現抽象方法直接實現
相似點不能被實例化包含未實現的方法派生類必須實現未實現的方法
10.你認為泛型最大得優點在那及關鍵字?
安全。不用裝、拆箱。註:泛型集合可以作為類中的一個屬性。使用泛型集合必須實例化
泛型集合List<T>泛型集合Dictionary<k,v>
11.文件讀寫創建與序列化反序列化的區別(僅限代碼)?
(序)二進位 BinaryFormatter bf=new BinaryFormatter(); bf.Serialize(fileSteram,Profile);(文)創建讀寫器 Streamwriter bf=new Streamwriter(fileSteram); bf.write(contemt);
12.看代碼回答。public class A5 { public virtual void MethodA() { Console.WriteLine("A5.MethodA"); Console.Read(); } public virtual void MethodB() { MethodA(); } } public class B5 : A5 { public new void MethodA() { Console.WriteLine("B5.MethodA"); Console.Read(); } }
public class virtul5test { public static void run() { B5 a = new B5(); a.MethodB(); //顯示A5.MethodA } }
a.MethodB()不是調用B5中的繼承MethodA而來的方法么,而B5中的MethodA不是隱藏A5中的MethodA了么,結果怎麼不是B5.MethodA?
因為你使用的是 new 覆蓋,而不是使用 override 重寫!關鍵就在於那個 new 關鍵字,如果把 new 換成 override,結果就是 B5.MethodA 所謂繼承,是先查找派生類中有沒有重寫方法,如果有,則調用派生類中重寫後的方法,否則調用基類的方法。所以你這裡 a.MethodB(),調的是 base.MethodB(),然後又調用 MethodA,B5 沒有重寫基類的 MethodA ,所以就顯示 A5.MethodA 了。
13.程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒.
1. 聯動效果,運行代碼只要執行Cat.Cryed()方法。2. 對老鼠和主人進行抽象 <1>.構造出Cat、Mouse、Master三個類,並能使程序運行 <2>從Mouse和Master中提取抽象<3>聯動效應,只要執行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。
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(); } }口述: 14.你對類和對象的理解?簡單工廠的理解? 10 15.在你印象中組長的形象好嗎?有能力領導這個組嗎?缺陷在那裡?1016.你最討厭的人有困難你會給以幫助嗎?10
推薦閱讀:
※面試有沒有戲,其實你當場就能知道
※當HR問出這句話,你的面試成功率瞬間上升!
※哪些情況意味著你該跳槽啦
※面試悲劇,你被拒絕的9大理由
※總結一下在金山面試ios開發時問到的問題
TAG:面試 |