



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.net軟件工程師面試題基礎題:1. 簡述 string 、 ArrayList 、 List 的區別。數組:優點 :o 數組在內存中是連續存儲的,索引速度非常快;o 賦值和修改元素也很簡單;不足:o 兩個數據之間插入數據比較麻煩;o 聲明數組的時候,必須指明數組的長度,數組長度過長會造成內存浪費,數組的長度過短,會造成數據溢出錯誤。ArrayList:優點:o .net framework提供的用于數據存儲和檢索的專用類o大小依據存儲的數據來動態擴展和收縮o 繼承 IList ,可以方便的進行數據的添加、插入和刪除缺點:o允許插入不同類型的數據,都當做object類型處理o 數據處理時可能出
2、現類型不匹配的錯誤o 存在裝箱(值 =引用)拆箱的操作,會帶來很大的性能損耗List :優點:.o 聲明 List 集合時,需要聲明集合內數據的對象類型o 避免了類型安全問題和裝箱拆箱的性能問題2. 簡述裝箱和拆箱操作中的性能損耗是如何產生的。3. 簡述對 ASP.NET中的事件機制的理解。4. 在一個 ASP.NET的三層結構系統中,以登錄操作為例,簡述在各層中如何組織代碼。5. 簡述相比 DATASET,實體類在 WEB項目中的優點與缺點。6. 簡述 GC是如何工作的。Java 采用 VM( VirtualMachine )機制,由VM來管理程序的運行當然也包括對GC管理。 90年代末期
3、.NET 出現了, .NET 采用了和 Java 類似的方法由CLR(Common Language Runtime)來管理。Garbage Collector(垃圾收集器,在不至于混淆的情況下也成為GC)以應用程序的root為基礎, 遍歷應用程序在Heap 上動態分配的所有對象2 ,通過識別它們是否被引用來確定哪些對象是已經死亡的、哪些仍需要被使用。已經不再被應用程序的root或者別的對象所引用的對象就是已經死亡的對象,即所謂的垃圾,需要被回收。這就是GC工作的原理。為了實現這個原理,GC有多種算法。比較常見的算法有Reference Counting,Mark Sweep,Copy Col
4、lection等等。目前主流的虛擬系統.NET CLR, Java VM 和 Rotor 都是采用的MarkSweep算法。Java 的內存管理實際就是對象的管理,其中包括對像的分配和釋放。對于程序員來說,分配對象使用new 關鍵字,釋放對象時只是將對象賦值為null ,讓程序員不能夠再訪問到這個對象,該對象被稱為“不可達”。GC將負責回收所有“不可達”對象的內存空間。根據 GC的工作原理, 可以通過一些技巧和方式讓GC運行更快, 高效而又合理。 編程建議如下:.o 盡早釋放無用對象的引用,特別注意一些復雜對象,如數組,隊列等。對于此類對象, GC回收它們的效率一般較低,如果程序允許,應盡早將
5、不用的引用對象賦為null,這樣可以加速GC的工作。o盡量少用finalize函數。 finalize是 java 提供給程序員用來釋放對象或資源的函數, 但是它會加大GC的工作量, 因此盡量少采用finalize函數回收資源。當程序有一定的等待時間,程序員可以手動執行System.gc(),通知 GC運行,但是java語言規范并不保證GC一定會執行。.NET 的 GC機制有這樣兩個問題:o 首先, GC并不是能釋放所有的資源。它不能自動釋放非托管資源。o 第二, GC并不是實時性的,這將會造成系統性能上的瓶頸和不確定性。o GC并不是實時性的,這會造成系統性能上的瓶頸和不確定性。所以有了ID
6、isposable接口, IDisposable接口定義了Dispose 方法,這個方法用來供程序員顯式調用以釋放非托管資源。使用using 語句可以簡化資源管理7. 簡述 3 個熟悉的設計模式。簡單工廠模式(只適用于業務簡單的情況):有三種角色組成:工廠類角色(只有一個工廠類)抽象產品角色具體產品角色工廠方法模式(當產品種類非常多時會出現大量與之對應的工廠類):有四種角色抽象工廠角色具體工廠角色抽象產品角色具體產品角色.簡單工廠和工廠方法結合能夠減少工廠類。使用這兩種模式能夠提高擴展性和維護性抽象工廠模式(需要創建的對象比較復雜):滿足條件:系統中有多個產品族,而系統一次只可能消費其中一族產
7、品同屬于同一個產品族的產品一起使用時。組成角色:抽象工廠角色具體工廠角色抽象產品角色具體產品角色8. 簡述 UDP協議特點,以及如何提高 UDP傳輸可靠性。9. 簡述 .NET2.0 , .NET3.0 , .NET3.5 各版本中推出的新特性。10. const 和 readonly 的區別我們都知道, const 和 staticreadonly的確很像:通過類名而不是對象名進行訪問,在程序中只讀等等。在多數情況下可以混用。二者本質的區別在于,const 的值是在編譯期間確定的,因此只能在聲明時通過常量表達式指定其值。而staticreadonly 是在運行時計算出其值的, 所以還可以通過
8、靜態構造函數來賦值。明白了這個本質區別, 我們就不難看出下面的語句中 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
9、;.6.private static string astr="abcd"private const string str = astr+"efg"1:不可以換成const 。 new 操作符是需要執行構造函數的,所以無法在編譯期間確定2:可以換成const 。我們也看到,Reference 類型的常量(除了String )只能是Null 。3:可以換成 const 。我們可以在編譯期間很明確的說,A 等于 200。4:不可以換成const 。道理和 1 是一樣的,雖然看起來1,2,3的數組的確就是一個常量。5:不可以換成readonly ,readon
10、ly只能用來修飾類的field,不能修飾局部變量,也不能修飾 property等其他類成員。6. 錯誤:如果在astr 前加上 const或者 const 改為 readonly即可;總結: 1.const、 readonly 和 static readonly定義的常量,指定初始值后( 包括在構造函數內指定的初始值) 將不可更改,可讀不可寫;2.const定義時必須指定初始值,而 readonly定義時可以不進行初始化(MS建議在定義時初始值 ), 同時也可以在構造函數內指定初始值,并以構造函數內指定的值為準;3.const和 staticreadonly定義的常量是靜態的,只能由類直接訪問
11、;而 readonly定義的常量是非靜態的,只能由實例對象訪問;4.staticreadonly常量,如果在構造函數內指定初始值,則必須是靜態無參構造函數;5.const是編譯時常量,readonly是運行時常量;cosnt 較高效, readonly較靈活。在應用上以staticreadonly代替 const ,以平衡 const 在靈活性上的不足,同時克服編譯器優化 cosnt 性能,所帶來的程序集引用不一致問題;算法題: ( 以下三題不用作答,想好思路面試談即可).1.一個整數數列,元素取值可能是065535 中的任意一個數,相同數值不會重復出現。0是例外,可以反復出現。請設計一個算法
12、,當你從該數列中隨意選取5 個數值,判斷這5 個數值是否連續相鄰。注意:- 5個數值允許是亂序的。比如:87506- 0可以通配任意數值。比如:87506中的 0可以通配成9或者 4- 0 可以多次出現。- 復雜度如果是 O(n2) 則不得分。解題思路:1.取 5 個數中非0 的最大數和最小數,之差不大于4 則連續,否則不連續。2.要增加兩個特例:1 )全 0 算連續, 2)只有一個非 0 算連續代碼實例javaview plaincopyprint?1.<span style= "font-size:14px;"><span style= "f
13、ont-family:MicrosoftYaHei;font-size:12px;color:#333333;"><span style= "font-size:12px;">#include<iostream>2. #include<stdlib.h>3. using namespace std;4.5.intcheck( intarry5)6. 7.intmax=0,min= 65535;8. int zerocount= 0;9.for ( inti= 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;19.20. 21. if (zerocount>= 4)22.return1;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 ( inti= 0;i< 5;i+)37.cin>>arryi;38. int p=check(arry);39. if (p)40.cout<< " 連續 " <<endl;41. else42.cout<< " 不連續 "<<endl;43. system( "pause" );44. </span></span></span>輸入: 12305輸
16、出:連續2. 設計一個在一百萬個數字中求十個最大的數算法javaview plaincopyprint?1.<span style= "font-size:14px;"><span style= "font-family:MicrosoftYaHei;font-size:12px;color:#333333;"><spanstyle= "font-size:12px;">int dataM;2.inttopN + 1;3.4.5.voidtop_N().6. 7.top 0= std:numeric
17、_limits<int >:max();/ Set a "guard"onthe boundary toreducecomparisiontimes.8.for( inti=1;i<= N;+i)topi= std:numeric_limits<int>:min();9.for( intj=0;j< M;+j)10. 11.for( intk=N; topk < dataj;-k) topk= topk - 1;12.topk+1=dataj;13. 14. </span></span></span&g
18、t;3.有如下輸入:若干個由大寫英文字母構成的單詞,以, 號隔開。如“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB”。 寫一段程序, 從輸入中尋找由相同字符構成( 重復字符出現次數也是一樣) 的單詞組輸出。如以上輸入,則輸出:第 1 組: ABCCD,CDCAB第 2 組: CDA,DCA,ADCjavaview plaincopyprint?1.<span style= "font-size:14px;"><span style= "font-family:MicrosoftYaHei;font-size:12px;colo
19、r:#333333;"><span style= "font-size:12px;">strings = "ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB"2.varquery= s.Split(',').GroupBy(x=> x.OrderBy(y=> y);3.foreach(variteminquery)4.Console.WriteLine(string.Join("," ,item.ToArray();</span></span&g
20、t;</span>項目 &管理: ( 以下兩題不用作答,想好思路面試談即可)1. 假設你做為一個開發團隊的領導者,經過長時間的磨合,有了一只10 人左右的不錯的團隊。其中每個成員都在其職位上有不可或缺的作用。現由于一些原因, 需要你辭退其中一人。你會如何處理這件事情?.2. 有一套公司自己開發供本公司使用的CRM系統,其中的權限控制過于簡單。 現需要你重新設計其權限系統,你會如何開展這個工作?1、文件路徑文本轉換編寫一個函數,輸入參數:·頁面文件的虛擬路徑(string pageVirPath,例如: /abc/def/page.aspx)·圖片文件的虛
21、擬路徑(string imgVirPath,例如: /ghi/image/pic .gif)處理:計算出圖片文件相對頁面文件的相對路徑,例如:././ghi/image/ pic .gif返回:相對路徑要求:a、不要求嚴格的C#語言表述,可適當使用偽碼,著重要表達清楚處理邏輯;b、盡量使用正則表達式2、 DataTable 內數據轉換編寫一個函數,輸入參數:·源數據表( DataTablesrcTable ),該表中已包含int型數據列” isSys ”,數據為0 或-1 ,處理:直接處理源數據表,將”isSys ” 數據列替換為string型的”系統”數據列,當” isSys ”
22、列中值為0,則”系統”列值為空字符串,當” isSys ” 列中值為 -1 ,則”系統”列值為”系統”。返回:操作是否成功(bool);要求:a、不要求嚴格的C#語言表述,可適當使用偽碼,著重要表達清楚處理邏輯;b、不拋出任何異常(包括.net異常)設計模式面試題:1, Windows Media Player和 RealPlayer是常用的媒體播放器,它們的API 結構和調用方法非常不同,現在你的應用需要同時支持調用這2 種播放器的API。你要怎么設計?.2,現在有一種空調,它支持3 種模式: Hot Air, Cool Air和 DoNothing 。例如,當選擇Hot Air 模式時,再
23、選擇溫度為20 度,空調將輸送熱風;選擇CoolAir模式,溫度設置為20 度時,將輸送冷風;在選擇DoNothing 模式時,空調什么都不做。你將考慮如何為空調設計應用程序?如果將來空調需要增加支持新的模式呢?一、第一題的解:適配器模式+抽象工廠模式我采用了抽象工廠模式+適配器模式,先上圖:設計的重點是:1, 首先看適配器模式。MediaPlayerClassA和 RealPlayerClassA都實現了IMediaA 接口。.MediaPlayerClassA調用 MediaPlayer的 APIs 來實現 IMediaA 接口定義的功能;RealPlayerClassA則調用 RealP
24、layer APIs。2, 再來看抽象工廠模式。MediaPlayerFactory和 RealPlayerFactory繼承自抽象類MediaFactory類,MediaPlayerFactory用來創建MediaPlayer產品族; RealPlayerFactory用來創建RealPlayer產品族。雖然上圖中只畫出了IMediaA 接口,但事實上我們可能需要實現多個接口如IMediaB , IMediaC 等,這就是這里為什么使用抽象工廠模式。3, 抽象類 MediaFactory實現了一個靜態方法CreateFactory,用來創建具體工廠,該方法返回 MediaFactory類型的
25、對象給Client,這樣, Client不就需要知道它操作的是那個具體工廠。 CreateFactory方法采用反射技術,這樣,不需要修改CreateFactory方法的代碼,就可以支持以后添加新的具體工廠。4, 工廠類返回IMediaA 接口給 Client, Client操作 IMediaA 接口而不需要知道它具體使用的是 MediaPlayerClassA還是 RealPlayerClassA的實例。序列圖如下:.二、第二題的解:Flyweight模式我采用了Flyweight(橋梁)模式,先上圖:.設計的重點是:1, 把 AirConditioner和它支持的Model 分離開來,在
26、AirConditioner類的實例中保存它支持的所有Model 類的實例,這樣做的好處是1) 如果只是支持的Model 有變化,不需要去實現新的 AirConditioner類,只要添加或刪除支持的Model 即可。 2) 多個不同的AirConditioner類可以方便地共享共同的Model 類,否則,可能需要復雜的繼承關系才能在不同 AirConditioner類之間共享Model。事實上, AirConditioner類和 Model 類的關系非常類似于橋梁模式中抽象類和實現類的關系。2, 采用 Flyweight模式。在多個AirCondition實例中,共享Model 的實例,這樣可以大大地節省存儲空間。ModelFactory用于創建Model 實例并返回給AirCondition,它保存了一個 Model 池,每種類型的Model 只有一個實例。在Model 類中只保存內蘊狀態,AirConditioner類保存外蘊狀態, 調用 Model 類的 Execute 方法時,需要把 IAirConditioner作為外蘊狀態傳遞給方法(或者也可以使用專門的狀態類作為外蘊狀態)。.序列圖如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 綿陽師范學院《ERP沙盤模擬》2023-2024學年第二學期期末試卷
- 長春金融高等專科學校《綠色營銷》2023-2024學年第二學期期末試卷
- 2025物業管理服務合同書
- 2025年戶外裝備租賃合同協議書
- 2025授權公司設備租賃合同范本
- 2025建筑公司裝飾工程內部承包經營合同范本
- 2025年高考歷史總復習高中歷史130個關鍵概念一篇搞定
- 【7道期中】安徽省淮北市“五校聯盟”2023-2024學年七年級下學期期中道德與法治試題(含解析)
- 2025房地產合作開發合同
- 山西省晉中市介休市2024-2025學年七年級下學期期中考試生物試題
- 勞務分包合同架子工
- 關于物業管理的論文(通用10篇)
- 小腸系膜腫瘤的CT表現及其鑒別診斷
- 國際疾病分類ICD11編碼庫
- 龍虎山正一日誦早晚課
- 風電場道路施工作業指導書方案
- 租賃房屋長住房合約合同
- 心理健康與身體健康
- 2022-2023學年北京市海淀區高二下學期期中練習數學試題【含答案】
- 01改變世界:計算機發展史趣談
- 七年級數學期末考試答題卡
評論
0/150
提交評論