net高級工程師面試題_第1頁
net高級工程師面試題_第2頁
net高級工程師面試題_第3頁
net高級工程師面試題_第4頁
net高級工程師面試題_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.net軟件工程師面試題基礎題:1.簡述 string口、ArrayList、List 的區(qū)別。數組:優(yōu)點:o 數組在內存中是連續(xù)存儲的,索引速度非??欤籵 賦值和修改元素也很簡單;不足:o 兩個數據之間插入數據比較麻煩;o 聲明數組的時候,必須指明數組的長度,數組長度過長會造成內存浪費,數 組的長度過短,會造成數據溢出錯誤。ArrayList :優(yōu)點:o .net framework提供的用于數據存儲和檢索的專用類o 大小依據存儲的數據來動態(tài)擴展和收縮o 繼承IList ,可以方便的進行數據的添加、插入和刪除缺點:o 允許插入不同類型的數據,都當做 object類型處理o數據處理時可能出現類

2、型不匹配的錯誤o 存在裝箱(值=»引用)拆箱的操作,會帶來很大的性能損耗List :優(yōu)點:o 聲明List集合時,需要聲明集合內數據的對象類型o 避免了類型安全問題和裝箱拆箱的性能問題2 .簡述裝箱和拆箱操作中的性能損耗是如何產生的。3 .簡述對ASP.NET中的事件機制的理解。4 .在一個ASP.NET的三層結構系統(tǒng)中,以登錄操作為例,簡述在各層中如何組織代碼。5 .簡述相比DATASET ,實體類在 WEB項目中的優(yōu)點與缺點。6 .簡述GC是如何工作的。Java采用VM (Virtual Machine )機制,由VM來管理程序的運行當然也包括對GC管理。90年代末期.NET出現

3、了,.NET采用了和 Java類似的方法由 CLR(Common Language Runtime)來管理。Garbage Collector(垃圾收集器,在不至于混淆的情況下也成為GC)以應用程序的root為基礎,遍歷應用程序在 Heap上動態(tài)分配的所有對象2,通過識別它們是否被引用來確定哪些對象是已經死亡的、哪些仍需要被使用。已經不再被應用程序的root或者別的對象所引用的對象就是已經死亡的對象,即所謂的垃圾,需要被回收。這就是 GC工作的原理。為了實現這個原理,GC有多種算法。比較常見的算法有Reference Counting , MarkSweep , Copy Collection

4、 等等。目前主流的虛擬系統(tǒng) .NET CLR , Java VM 和Rotor都是 采用的Mark Sweep 算法。Java的內存管理實際就是對象的管理,其中包括對像的分配和釋放。對于程序員來說,分配對象使用new關鍵字,釋放對象時只是將對象賦值為null ,讓程序員不能夠再訪問到這個對象,該對象被稱為“不可達”。GC將負責回收所有“不可達”對象的內存空間。根據GC的工作原理,可以通過一些技巧和方式讓GC運行更快,高效而又合理。編程建議如下:o 盡早釋放無用對象的引用,特別注意一些復雜對象,如數組,隊列等。對于 此類對象,GC回收它們的效率一般較低,如果程序允許,應盡早將不用的 引用對象賦為

5、null ,這樣可以加速 GC的工作。o 盡量少用finalize函數。finalize是java提供給程序員用來釋放對象或資源 的函數,但是它會加大 GC的工作量,因此盡量少采用finalize函數回收資源。當程序有一定的等待時間,程序員可以手動執(zhí)行System.gc(),通知GC運行,但是java語言規(guī)范并不保證 GC 一定會執(zhí)行。.NET的GC機制有這樣兩個問題:o 首先,GC并不是能釋放所有的資源。它不能自動釋放非托管資源。o 第二,GC并不是實時性的,這將會造成系統(tǒng)性能上的瓶頸和不確定性。o GC并不是實時性的,這會造成系統(tǒng)性能上的瓶頸和不確定性。所以有了 IDisposable 接

6、口,IDisposable 接口定義了 Dispose 方法,這個方法用來供程序員顯式調用以釋放非托管資源。使用using語句可以簡化資源管理7 .簡述3個熟悉的設計模式。簡單工廠模式(只適用于業(yè)務簡單的情況):有三種角色組成:?工廠類角色(只有一個工廠類)?抽象產品角色?具體產品角色工廠方法模式(當產品種類非常多時會出現大量與之對應的工廠類):有四種角色?抽象工廠角色?具體工廠角色?抽象產品角色?具體產品角色簡單工廠和工廠方法結合能夠減少工廠類。使用這兩種模式能夠提高擴展性和維護性 抽象工廠模式(需要創(chuàng)建的對象比較復雜):滿足條件:?系統(tǒng)中有多個產品族,而系統(tǒng)一次只可能消費其中一族產品?同屬

7、于同一個產品族的產品一起使用時。組成角色:?抽象工廠角色?具體工廠角色?抽象產品角色 ?具體產品角色8 .簡述UDP協(xié)議特點,以及如何提高 UDP傳輸可靠性。9 .簡述.NET2.0 , .NET3.0 , .NET3.5各版本中推出的新特性。10 . const 和 readonly 的區(qū)別我們都知道,const和static readonly的確很像:通過類名而不是對象名進行訪問,在程序中只讀等等。在多數情況下可以混用。二者本質的區(qū)別在于,const的值是在編譯期間確定的,因此只能在聲明時通過常量表達式指定其值。而 static readonly 是在運行時計算出其值的,所以還可以通過靜態(tài)

8、構造函數來賦值。明白了這個本質區(qū)別,我們就不難看出下面的語句中static readonly 和const能否互換了:1. static readonly MyClass myins = new MyClass();2. static readonly MyClass myins = null;3. static readonly B = 10; static readonly A = B * 20;4. static readonly int constIntArray = new int口 1,2, 3;5. void SomeFunction()const int a = 10;. 6.

9、 private static string astr="abcd"private const string str = astr+"efg"1:不可以換成const。new操作符是需要執(zhí)行構造函數的,所以無法在編譯期間確定2 :可以換成const o我們也看到,Reference 類型的常量(除了 String )只能是Null。3:可以換成const o我們可以在編譯期間很明確的說,A等于200 。4:不可以換成const。道理和1是一樣的,雖然看起來 1,2,3的數組的確就是一個常量。5:不可以換成readonly , readonly 只能用來修

10、飾類的field ,不能修飾局部變量,也不能修飾property 等其他類成員。6.錯誤:如果在 astr前加上const或者const改為readonly 即可;總結:1.const、readonly 和static readonly 定義的常量,指定初始值后 (包括在構造函數 內指定的初始值)將不可更改,可讀不可寫;2 .const定義時必須指定初始值,而 readonly定義時可以不進行初始化 (MS建議 在定義時初始值工同時也可以在構造函數內指定初始值,并以構造函數內指定的值為準;3 .const和static readonly定義的常量是靜態(tài)的,只能由類直接訪問;而readonly定

11、義的常量是非靜態(tài)的,只能由實例對象訪問;4 .static readonly 常量,如果在構造函數內指定初始值,則必須是靜態(tài)無參構造函 數;5.const是編譯時常量,readonly 是運行時常量;cosnt較高效,readonly 較靈活。 在應用上以static readonly 代替const ,以平衡const在靈活性上的不足, 同時克服編譯 器優(yōu)化cosnt性能,所帶來的程序集引用不一致問題;算法題:(以下三題不用作答,想好思路面試談即可)1. 一個整數數列,元素取值可能是065535中的任意一個數,相同數值不會重復出現。0是例外,可以反復出現。請設計一個算法,當你從該數列中隨意選

12、取 5個數值,判斷這5個數值是否連續(xù)相鄰。注意:- 5個數值允許是亂序的。比如:8 7 5 0 6- 0可以通配任意數值。比如: 8 7 5 0 6 中的0可以通配成9或者4- 0可以多次出現。- 復雜度如果是O(n2)則不得分。解題思路:1 .取5個數中非0的最大數和最小數,之差不大于4則連續(xù),否則不連續(xù)。2 .要增加兩個特例: 1)全0算連續(xù),2)只有一個非0算連續(xù)代碼實例java view plain copyprint? C1. <span style= "font-size:14px;" ><span style= "font-fami

13、ly:Microsoft YaHei;font- size:12px;color:#333333;" ><span style= "font-size:12px;" >#include<iostream>2. #include<stdlib.h>3. using namespace std;4.5. int check( int arry 5)6. 7. intmax= 0,min=65535;8. intzerocount=0;9. for( int i= 0;i<5;i+)10. 11. if (arryi=0)

14、12. zerocount+;13. else14. 15. if (arryi>max)16. max=arryi;17. if (arryi卜min)18. min=arryi;21. if (zerocount>=4)22. return 1;23. else24. 25. if (max-min<= 4)26. return1;27. else28. return0;29. 30. 31.32. int main()33. 34. int arry 5;35. cout<<"一個整數數列,元素取值可能是065535中的任意一個數,相同數值不會重復

15、出現;0是例外,可以反復出現"<<endl;36. for ( int i= 0;i< 5;i+)37. cin>>arryi;38. int p=check(arry);"連續(xù)"<<endl;"不連續(xù)"<<endl;pause");39. if (p)40. cout<<41. else42. cout<<43. system(44. </span></span></span>輸入:1 2 3 0 5輸出:連續(xù)2.設計一

16、個在一百萬個數字中求十個最大的數算法java view plain copyprint? t1. <span style= "font-size:14px;" ><span style= "font-family:Microsoft YaHei;font- size:12px;color:#333333;" ><span style= "font-size:12px;" >int dataM;2. int topN +1 ;3.7. top 0 = std:numeric_limits<int

17、 >二max();/ Set a "guard" on the boundary to reduce comparision times.8. for ( int i =1; i <= N; +i) topi = std:numeric_limits<int >:min();9. for ( int j =0; j < M; +j)10. 11. for ( int k = N; topk < dataj; -k) topk = topk -1;12. topk +1 = dataj;13. 14. </span></s

18、pan></span>3.有如下輸入:若干個由大寫英文字母構成的單詞,以 ,號隔開。如“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB”。寫一段程序,從輸入中尋找由相同字符構成(重復字符出現次數也是一樣)的單詞組輸出。如以上輸入,則輸出:第 1 組:ABCCD,CDCAB第 2 組:CDA,DCA,ADCjava view plain copy print?1. <span style= "font-size:14px;" ><span style= "font-family:Microsoft YaHei;f

19、ont- size:12px;color:#333333;" ><span style= "font-size:12px;" >string s = "ABCCD,CD A,BCDD,DCA,ADC,BCD,CDCAB"2. var query = s.Split( ',' ).GroupBy(x => x.OrderBy(y => y);3. foreach (var item in query)4. Console.WriteLine(string.Join("," , it

20、em.ToArray();</span></span></span>項目&管理:(以下兩題不用作答,想好思路面試談即可)1 .假設你做為一個開發(fā)團隊的領導者,經過長時間的磨合,有了一只10人左右的不錯的團隊。其中每個成員都在其職位上有不可或缺的作用。現由于一些原因,需要你辭退其中一人。你會如何處理這件事情?2 .有一套公司自己開發(fā)供本公司使用的CRM系統(tǒng),其中的權限控制過于簡單?,F需要你重新設計其權限系統(tǒng),你會如何開展這個工作?1、文件路徑文本轉換編寫一個函數,輸入參數: 頁面文件的虛擬路徑(string pageVirPath ,例如:/abc/d

21、ef/page.aspx ) 圖片文件的虛擬路徑(string imgVirPath ,例如:/ghi/image/pic .gif )處理:計算出圖片文件相對頁面文件的相對路徑,例如:././ghi/image/ pic .gif返回:相對路徑要求:a、不要求嚴格的 C#語言表述,可適當使用偽碼,著重要表達清楚處理邏輯;b、盡量使用正則表達式2、DataTable內數據轉換 編寫一個函數,輸入參數: 源數據表(DataTable srcTable ),該表中已包含int型數據列“isSys”,數據為0或-1 ,處理:直接處理源數據表,將" isSys”數據列替換為string型的“

22、系統(tǒng)”數據列,當" isSys”列中值為0,則“系統(tǒng)”列值為空字符串,當" isSys”列中值為-1 ,則"系統(tǒng)“列值為“系統(tǒng)”。返回:操作是否成功(bool);要求:a、不要求嚴格的 C#語言表述,可適當使用偽碼,著重要表達清楚處理邏輯;b、不拋出任何異常(包括.net異常)設計模式面試題:1, Windows Media Player 和RealPlayer是常用的媒體播放器,它們的API結構和調用方法非常不同,現在你的應用需要同時支持調用這2種播放器的API。你要怎么設計?2,現在有一種空調,它支持 3種模式:Hot Air , Cool Air 和DoNo

23、thing 。例如,當選擇Hot Air模式時,再選擇溫度為 20度,空調將輸送熱風;選擇 Cool Air模式,溫度設置為20度時,將輸送冷風;在選擇 DoNothing 模式時,空調什么都不做。 你將考慮如何為空調設計應用程序?如果將來空調需要增加支持新的模式呢?一、第一題的解:適配器模式 +抽象工廠模式我采用了抽象工廠模式 +適配器模式,先上圖:Us e Refleclion目感3lPlayerf*tbrvV-#di AA(| : JMprilrJtA«intwfjce»OpenjiKfnAj)MetiiaFctofyI','J . I 、I &quo

24、t;J 3 I ,r 3. : .1 / 1、也重訓J : IMtdiiAtQpefJtiOhAMcdtaPlay erf actor y Crentp: lKv-d*aA設計的重點是:1,首先看適配器模式。MediaPlayerClassA 和 RealPlayerClassA 都實現了 IMediaA 接口。MediaPlayerClassA 調用 MediaPlayer 的 APIs 來實現 IMediaA 接口定義的功能; RealPlayerClassA 貝U調用 RealPlayer APIs 。2,再來看抽象工廠模式。MediaPlayerFactory 和RealPlayerF

25、actory 繼承自抽象類MediaFactory 類,MediaPlayerFactory用來創(chuàng)建 MediaPlayer 產品族;RealPlayerFactory用來創(chuàng)建 RealPlayer 產品族。雖然上圖中只畫出了IMediaA 接口,但第二題的解:Flyweight 模式我采用了 Flyweight (橋梁)模式,先上圖凱 raritfehfinodri *Ijrw jjEmtl*rt前 ITkMWIli' rirxiH SJn«|)ehe+£4-i UcxMhkte呻: McdLf6rhfojfli tMrnalrt tamifOelt ntktft

26、i mddal)Eertaw”MnCondilxwEjmaw加 eoMMoiw . tMp wfmip. MJ1 fjrKu”斯L% fi ot:AirCwidbTift-ierA l4JpDrtKlMDdlK :DKtMHHTtcUnf<llArtonjarwr州 |iEucirivf<n msdlriltirw 1 strip mtHThp irat'igftCH 刊/13-4£且*3/|n temp: iH4a*n jc . lAjFCsndnwMf JGwUTMgl中 謳ejtWin tsp 二 M in 興.lArCoEi*巾 neO設計的重點是:1,把

27、AirConditioner和它支持的Model分離開來,在 AirConditioner 類的實例中保存它支持的所有Model類的實例,這樣做的好處是1)如果只是支持的 Model有變化,不需要去實現新的AirConditioner 類,只要添加或刪除支持的Model即可。2)多個不同的AirConditioner類可以方便地共享共同的Model類,否則,可能需要復雜的繼承關系才能在不同AirConditioner類之間共享 Model 。事實上,AirConditioner 類和Model類的關系非常類似于橋梁模式中抽象類和實現類的關系。2,采用Flyweight模式。在多個 AirCon

28、dition 實例中,共享 Model的實例,這樣可以大大地節(jié)省存儲空間。ModelFactory 用于創(chuàng)建Model實例并返回給AirCondition ,它保存了一個 Model池,每種類型的 Model只有一個實例。在 Model類中只保存內蘊狀態(tài),AirConditioner類保存外蘊狀態(tài),調用 Model類的Execute方法時,需要把lAirConditioner作為外蘊狀態(tài)傳遞給方法(或者也可以使用專門的狀態(tài)類作為外蘊狀態(tài))序列圖如下:* >Settirwi Deh uHt 5ucipcxted Mode iStrCoilecthonuMM odel$cni tt|=m&drtI 1utTMAMWodHr的 ENwcuttt2Q.thHI數據庫基礎面試題w htch AirCmdili crnerA m u ppwt from enfiEuHicml&OfLlgOparte. 3nt1.教師號星期號是否有課有、1 2 有寫一條sql語句讓你變?yōu)檫@樣的表教師號星期一星期二星期三2 213 14 1各星期下的數字表示:對應的教師在星期幾已經排的課數T-SQL實現:sql view plain copy1. <span style= "font-size:14px;"print?><span sty

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論