


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、net軟件工程師面試題基礎(chǔ)題:1. 簡述 stringx ArrayLists List 的區(qū)別。數(shù)組:優(yōu)點(diǎn):O數(shù)組在存中是連續(xù)存儲的,索引速度非??欤籓賦值和修改元素也很簡單;不足:O兩個數(shù)據(jù)之間插入數(shù)據(jù)比較麻煩;O聲明數(shù)組的時候,必須指明數(shù)組的長度,數(shù)組長度過長會造成存浪費(fèi),數(shù)組 的長度過短,會造成數(shù)據(jù)溢出錯誤。Array List:優(yōu)點(diǎn):o .netframework提供的用于數(shù)據(jù)存儲和檢索的專用類o大小依據(jù)存儲的數(shù)據(jù)來動態(tài)擴(kuò)展和收縮o繼承Hist,可以便的進(jìn)行數(shù)據(jù)的添加、插入和刪除缺點(diǎn):o 允插入不同類型的數(shù)據(jù),都當(dāng)做object類型處理o數(shù)據(jù)處理時可能出現(xiàn)類型不匹配的錯誤o存在裝箱(
2、值二引用)拆箱的操作,會帶來很大的性能損耗List:優(yōu)點(diǎn):O聲明List集合時,需要聲明集合數(shù)據(jù)的對象類型o避免了類型安全問題和裝箱拆箱的性能問題2簡述裝箱和拆箱操作中的性能損耗是如產(chǎn)生的。3簡述對ASP.NET中的事件機(jī)制的理解。4在一個ASP.NET的三層結(jié)構(gòu)系統(tǒng)中,以登錄操作為例,簡述在各層中如組織代碼。5簡述相比DATASET,實(shí)體類在WEB項(xiàng)目中的優(yōu)點(diǎn)與缺點(diǎn)。6簡述GC是如工作的。Jovo采用VM (Virtual Machine)機(jī)制,由VM來管理程序的運(yùn)行當(dāng)然也包括對GC管 理。90年代末期.NET出現(xiàn)了,.NET采用了和Java類似的法由CLRfCommon Language
3、Runtime)來管理。Garbage Collector (垃圾收集器,在不至于混淆的情況下也成為GC)以應(yīng)用程序的root 為基礎(chǔ),遍歷應(yīng)用程序在Heap動態(tài)分配的所有對象2,通過識別它們是否被引用來確 定哪些對象是已經(jīng)死亡的、哪些仍需要被使用。已經(jīng)不再被應(yīng)用程序的root或者別的對象 所引用的對象就是已經(jīng)死亡的對象,即所謂的垃圾,需要被回收。這就是GC工作的原理。 為了實(shí)現(xiàn)這個原理,GC有多種算法。比較常見的算法有Reference Counting, Mark Sweep, Copy Collection 等等。目前主流的虛擬系統(tǒng).NETCLR, Java VM 和 Rotor 都 是
4、采用的Mark Sweep算法。Jovo的存管理實(shí)際就是對象的管理,其中包括對像的分配和釋放。對于程序員來說,分配 對象使用new關(guān)鍵字,釋放對象時只是將對象賦值為null,讓程序員不能夠再訪問到這個 對象,該對象被稱為“不可達(dá)”。GC將負(fù)責(zé)回收所有“不可達(dá)”對象的存空間。根據(jù)GC的工作原理,可以通過一些技巧和式讓GC運(yùn)行更快,高效而又合理。編程建議 如下:O盡早釋放無用對象的引用,特別注意一些復(fù)雜對象,如數(shù)組,隊(duì)列等。對于 此類對象,GC回收它們的效率一般較低,如果程序允,應(yīng)盡早將不用的引 用對象賦為null,這樣可以加速GC的工作。o盡量少用finalize函數(shù)。finalize是java
5、提供給程序員用來釋放對象或資源 的函數(shù),但是它會加大GC的工作量,因此盡量少采用finalize函數(shù)回收資 源。當(dāng)程序有一定的等待時間,程序員可以手動執(zhí)行System.gcf),通知GC運(yùn)行,但是jovo語言規(guī)并不保證GC 一定會執(zhí)行。NET的GC機(jī)制有這樣兩個問題:o 首先,GC并不是能釋放所有的資源。它不能自動釋放非托管資源。o 第二,GC并不是實(shí)時性的,這將會造成系統(tǒng)性能上的瓶頸和不確定性。oGC并不是實(shí)時性的,這會造成系統(tǒng)性能上的瓶頸和不確定性。所以有了Disposable接口,I Dispose ble接口定義了 Dispose法,這個法用來供程 序員顯式調(diào)用以釋放非托管資源。使用u
6、sing語句可以簡化資源管理7簡述3個熟悉的設(shè)計(jì)模式。簡單工廠模式(只適用于業(yè)務(wù)簡單的情況):有三種角色組成:工廠類角色(只有一個工廠類)抽象產(chǎn)品角色具體產(chǎn)品角色工廠法模式(當(dāng)產(chǎn)品種類非常多時會出現(xiàn)大量與之對應(yīng)的工廠類):有四種角色抽象工廠角色具體工廠角色抽象產(chǎn)品角色 具體產(chǎn)品角色const into = 10; 6.private static string astr-abcd;private const string str 二 astr+efgH;1:不可以換成consto new操作符是需要執(zhí)行構(gòu)造函數(shù)的,所以無法在編譯期間確定2:可以換成consto我們也看到,Reference類型
7、的常量(除了 String)只能是Null。3:可以換成consto我們可以在編譯期間很明確的說,A等于200。4:不可以換成const.道理和1是一樣的,雖然看起來1,2,3的數(shù)組的確就是一個常量。5:不可以換成readonly, readonly只能用來修飾類的field,不能修飾局部變量,也不能 修飾property等其他類成員。6錯誤:如果在ostr前加上const或者const改為readonly即可;總結(jié):】.const、readonly和stoticreodonly定義的常量,指定初始值后(包括在構(gòu)造函 數(shù)指定的初始值)將不可更改,可讀不可寫;2. const定義時必須指定初始值
8、,而readonly定義時可以不進(jìn)行初始化(MS建議在定義時初始值),同時也可以在構(gòu)造函數(shù)指定初始值,并以構(gòu)造函數(shù)指定的值為準(zhǔn);3. const和static readonly定義的常量是靜態(tài)的,只能由類直接訪問;而readonly 定義的常量是非靜態(tài)的,只能由實(shí)例對象訪問;4. static readonly常量,如果在構(gòu)造函數(shù)指定初始值,則必須是靜態(tài)無參構(gòu)造函數(shù);5. const是編譯時常g, readonly是運(yùn)行時常量;cosnt較高效,reodonly較靈活。在應(yīng)用上以static readonly代替const,以平衡const在靈活性上的不足,同時克服 編譯器優(yōu)化cosnt性能,
9、所帶來的程序集引用不一致問題;算法題:(以下三題不用作答,想好思路面試談即可)1. 一個整數(shù)數(shù)列,元素取值可能是0-65535中的任意一個數(shù),相同數(shù)值不會重復(fù)出現(xiàn)。0 是例外,可以反復(fù)出現(xiàn)。請?jiān)O(shè)計(jì)一個算法,當(dāng)你從該數(shù)列中隨意選取5個數(shù)值,判斷這5個數(shù)值是否連續(xù)相鄰。 注意:-5個數(shù)值允是亂序的。比如:87506-0可以通配任意數(shù)值。比如:87506中的0可以通配成9或者4-0可以多次出現(xiàn)。-復(fù)雜度如果是O(n2)則不得分。解題思路:】取5個數(shù)中非0的最大數(shù)和最小數(shù),之差不大于4則連續(xù),否則不連續(xù)。2要增加兩個特例:1)全0算連續(xù),2)只有一個非0算連續(xù)代碼實(shí)例javo view plain c
10、opyprnfc_1. span style-font-size: 12px;Hinclude2. #include3. using namespace std;4.4. int check(int arry5)5. 6. int max=0,min=65535;7.int zeroco unt=0; for(int i=0;imax) max=arryi;if(arryi=4)22. return 1;23. else24. 25. if(max-min=4)26. return 1;27. else28. return 0;29. 30.
11、 31.31. intmain()32. 33. intorry ;34. cout*一個整數(shù)數(shù)列,元素取值可能是0-65535中的任息一個數(shù),相同數(shù)值不會重篦出現(xiàn); 0是例外,可以反負(fù)出現(xiàn)*endl;35. for(int i=0;i5;i+)36. cinarryi;37. int p=check(arry);38. if(p)39. coutM 連續(xù)tvendl;40. else41. coutM 不連續(xù),endl;42. system(Mpausen);43. 輸入:1 2305輸出:連續(xù)2. 設(shè)計(jì)一個在一百萬個數(shù)字中求十個最大的數(shù)算法fjavc; view plain copypri
12、nts_1. int dataM;2. inttopN + 1;3.4.5. void top_N()6. 7. top0 = std:numericjimits:max(); / Set a guard1 on the boundory to reduce comparision times.8. for (int i = 1; i = N; +i) topi = std:numericjimits:min();9. for (intj = O;jM; +j)10. 11. for (int k = N; topk data01; 一k) topk = topk -1;12. topk +
13、1 = dataU);13. 14. 3. 有如下輸入:若干個由大寫英文字母構(gòu)成的單詞,以/號隔開。女口“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB”。寫一段程序,從輸入中尋找由相同 字符構(gòu)成(重復(fù)字符出現(xiàn)次數(shù)也是一樣)的單詞組輸出。如以上輸入,則輸出:第 1 組:ABCCDCDCAB第 2 組:CDA,DCA,ADCjavoj view plain copypnnt?_1. x.OrderByfy = y);3. foreach (var item in query)4. Console.WriteLine(stringoin(n; item.ToArray();v/s
14、pon項(xiàng)目&管理:(以下兩題不用作答,想好思路面試談即可)1 假設(shè)你做為一個開發(fā)團(tuán)隊(duì)的領(lǐng)導(dǎo)者,經(jīng)過長時間的磨合,有了一只10人左右的不錯的團(tuán) 隊(duì)。其中每個成員都在其職位上有不可或缺的作用?,F(xiàn)由于一些原因,需要你辭退其中一人。 你會如處理這件事情?2有一套公司自己開發(fā)供本公司使用的CRM系統(tǒng),其中的權(quán)限控制過于簡單?,F(xiàn)需要你重 新設(shè)計(jì)其權(quán)限系統(tǒng),你會如開展這個工作?1、文件路徑文本轉(zhuǎn)換編寫一個函數(shù),輸入?yún)?shù):頁面文件的虛擬路徑(string pageVirPath,例如:/obc/def/poge.Qspx)圖片文件的虛擬路徑(string imgVirPath,例如:/ghi/image/pi
15、c .gif)處理:計(jì)算出圖片文件相對頁面文件的相對路徑,例如:././ghi/image/ pic .gif返回:相對路徑要求:。、不要求格的C#語言表述,可適當(dāng)使用偽碼,著重要表達(dá)清楚處理邏輯;b、盡量使用正則表達(dá)式2、DataTable數(shù)據(jù)轉(zhuǎn)換 編寫一個函數(shù),輸入?yún)?shù):源數(shù)據(jù)表(DataTable srcTable),該表中已包含int型數(shù)據(jù)列” isSys”,數(shù)據(jù)為0或-1,處理:直接處理源數(shù)據(jù)表,將” isSys”數(shù)據(jù)列替換為string型的”系統(tǒng)”數(shù)據(jù)列,當(dāng)” isSys”列中值為0,貝系統(tǒng)”列值為空字符串,當(dāng)” isSys”列中值為-1,貝系統(tǒng)”列值為”系統(tǒng)”。返回:操作是否成功
16、(bool);要求:。、不要求格的C#語言表述,可適當(dāng)使用偽碼,著重要表達(dá)清楚處理邏輯;b、不拋出任異常(包括.net異常)設(shè)計(jì)模式面試題:1,Windows Media Player和RealPloyer是常用的媒體播放器,它們的API結(jié)構(gòu)和調(diào)用法非常不同,現(xiàn)在你的應(yīng)用需要同時支持調(diào)用這2種播放器的API。你要怎么設(shè)計(jì)?2,現(xiàn)在有一種空調(diào),它支持3種模式:Hot Air, Cool Air和DoNothingo例如,當(dāng)選擇 Hot Ail模式時,再選擇溫度為20度,空調(diào)將輸送熱風(fēng);選擇Cool Air模式,溫度設(shè)萱為 20度時,將輸送冷風(fēng);在選擇DoNothing模式時,空調(diào)什么都不做。你將
17、考慮如為空調(diào) 設(shè)計(jì)應(yīng)用程序?如果將來空調(diào)需要增加支持新的模式呢?一、第一題的解:適配器模式+抽象工廠模式我采用了抽象工廠模式+適配器模式,先上圖:設(shè)計(jì)的重點(diǎn)是:1,首先看適配器模式。MedioPloyerClossA 和 RealPlayerClassA 都實(shí)現(xiàn)了 IMediaA 接口。MediaPlayerClassA 調(diào)用 MediaPlayer 的 APIs 來實(shí)現(xiàn) IMediaA 接口定義的功能; RealPlayerClassA 則調(diào)用 RealPlayer APIso2, 再來看抽象工廠模式。MediaPlayerFactory和RealPlayerFactory繼承自抽象類 Me
18、diaFactory 類,MediaPlayerFactory 用來創(chuàng)建 MediaPlayer 產(chǎn)品族;RealPlayerFactory用來創(chuàng)建RealPlayer產(chǎn)品族。雖然上圖中只畫出了 IMediaA接口, 但事實(shí)上我們可能需要實(shí)現(xiàn)多個接口如IMediaB, IMediaC等,這就是這里為什么使用抽 象工廠模式。3, 抽象類MediaFactory實(shí)現(xiàn)了一個靜態(tài)法CreateFactory,用來創(chuàng)建具體工廠,該法返 回MediaFactory類型的對象給Client,這樣,Client不就需要知道它操作的是那個具體 工廠。CreateFactory法采用反射技術(shù),這樣,不需要修改Cr
19、eateFactory法的代碼,就 可以支持以后添加新的具體工廠。4, 工廠類返回IMediaA接口給Client, Client操作IMediaA接口而不需要知道它具體使 用的是 MediaPlayerClassA 還是 RealPlayerClassA 的實(shí)例。序列圖如下:二、第二題的解:Flyweight模式我采用了 Flyweight (橋梁)模式,先上圖:設(shè)計(jì)的重點(diǎn)是:1, 把AirConditioner和它支持的Model分離開來,在AirConditioner類的實(shí)例中保存它 支持的所有Model類的實(shí)例,這樣做的好處是1)如果只是支持的Model有變化,不需要 去實(shí)現(xiàn)新的Air
20、Conditioner類,只要添加或刪除支持的Model即可。2)多個不同的 AirConditioner類可以便地共享共同的Model類,否則,可能需要復(fù)雜的繼承關(guān)系才能在 不同AirConditioner類之間共享Model。事實(shí)上,AirConditioner類和Model類的關(guān)系 非常類似于橋梁模式中抽象類和實(shí)現(xiàn)類的關(guān)系。2, 采用Flyweight模式。在多個AirCondition實(shí)例中,共享Model的實(shí)例,這樣可以大節(jié) 省存儲空間。ModelFoctory用于創(chuàng)建Model實(shí)例并返回給AirCondition,它保存了一個 Model池,每種類型的Model只有一個實(shí)例。在Model類中只保存蘊(yùn)狀態(tài),AirConditio ner 類保存外蘊(yùn)狀態(tài),調(diào)用Model類的Execute法時,需要把lAirCondi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZNZ 264.1-2024 重金屬中度污染農(nóng)田土壤修復(fù)和安全利用技術(shù)規(guī)范 第1部分:超積累東南景天與油葵輪作
- 二零二五年度車輛轉(zhuǎn)讓與二手車交易及金融服務(wù)協(xié)議
- 2025年度蛋糕店與體育賽事合作贊助協(xié)議
- 2025年度道路橋梁維修施工安全協(xié)議書
- 2025年度網(wǎng)絡(luò)安全產(chǎn)品銷售提成與技術(shù)服務(wù)合同
- 二零二五年度企業(yè)員工宿舍三方租賃協(xié)議
- 二零二五年度臨時廚房工作人員聘用合同
- 二零二五年度個體商戶勞動合同(體育賽事組織與運(yùn)營)
- 中學(xué)生環(huán)保行動策劃案解讀
- 監(jiān)控項(xiàng)目合作合同監(jiān)控施工合同
- DB11 489-2016 建筑基坑支護(hù)技術(shù)規(guī)程
- 2022年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試題庫及答案解析
- 2022年安全生產(chǎn)費(fèi)用投入臺賬(模版報(bào)表)
- 供水設(shè)施水池基礎(chǔ)土石方開挖施工組織方案
- 《魚類的骨骼系統(tǒng)》
- 車輛工程畢業(yè)設(shè)計(jì)(論文)-電動叉車設(shè)計(jì)
- 《建筑識圖》匯總題庫(學(xué)生用)
- 印刷制品QC工程圖
- 傳感器及檢測技術(shù)教案
- 手工焊錫知識
- 《采油工程》講義
評論
0/150
提交評論