2023年NET筆試面試寶典_第1頁
2023年NET筆試面試寶典_第2頁
2023年NET筆試面試寶典_第3頁
2023年NET筆試面試寶典_第4頁
2023年NET筆試面試寶典_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

培訓(xùn)班常見問題(作者:張孝祥):1.你們會帶著我們做完整個完整的項目嗎?答:小的項目會,大的項目則不也許,1.眾所周知,隨便拿出一個中檔大小的項目,也需要好多個純熟的開發(fā)人員開發(fā)好多個月才干勉強(qiáng)做得差不多,培訓(xùn)期間沒有這么多時間,并且你還要先學(xué)會了很多技術(shù)后才干開始做項目。2.一個項目中的很多東西都是反復(fù)性的工作量的累積,技術(shù)方面都大同小異。做一個項目就好比蓋一座樓房,只要告訴你整個樓房的整體結(jié)構(gòu),然后帶著你蓋上一間兩間房子,其他剩下的幾百間房子,老師想繼續(xù)蓋給你看,或者讓你自己蓋剩下的房間,你肯定也不樂意吧。以后有的是練手的機(jī)會,拿著人家發(fā)給你的工資,你再去做這些反復(fù)性的工作也不遲,豈不是更好?。?業(yè)務(wù)重要?還是編碼實戰(zhàn)更重要?答:1.對軟件公司來說,兩者都很重要,有的項目是業(yè)務(wù)為重心,有的則是以技術(shù)作為核心;以業(yè)務(wù)為重心的項目與做鞋差不多,沒有多大技術(shù)含量和壁壘,只有積累了一定的經(jīng)驗,誰都可以做,利潤很薄,例如大多數(shù)管理系統(tǒng),靠的是人海戰(zhàn)術(shù)和時間糾纏;以技術(shù)為核心的項目則很有技術(shù)壁壘,不是誰都能做的,利潤率很高,例如,360殺毒軟件、baidu,qq,迅雷下載,大型bbs項目和淘寶這樣的電子商務(wù)網(wǎng)站。2.對程序員來說,編碼實戰(zhàn)更重要,業(yè)務(wù)則不算什么!程序員和軟件公司的工作就是要把用戶的需求和業(yè)務(wù)變成代碼,即為人作嫁,一開始,需求和業(yè)務(wù)都在用戶那里,用戶最懂業(yè)務(wù),你不用了解業(yè)務(wù),你的任務(wù)就是了解用戶的業(yè)務(wù)后編寫代碼,在開始做項目前,用戶會把業(yè)務(wù)告訴給你的。一個軟件公司歷來都不是只做自己熟悉業(yè)務(wù)的項目,而是來了業(yè)務(wù)不熟悉的項目機(jī)會,肯定也會沖上去做,軟件公司通常都是在做自己以前沒做過的項目,即做以前不了解業(yè)務(wù)的項目,只有項目做完了才完全熟悉了業(yè)務(wù),這才叫做項目,否則就成了賣產(chǎn)品了,所以,軟件工程里說的需求調(diào)研和理解業(yè)務(wù)的過程,也是在從側(cè)面說明,程序員是在接到項目之后才開始了解其業(yè)務(wù)的,而在此之前,對業(yè)務(wù)可以是完全不懂的。3.是培訓(xùn)內(nèi)容和信息量大好?還是培訓(xùn)內(nèi)容少而精的好?答:內(nèi)容和信息量大培訓(xùn)課程體系,對大多人來說是更合適的。程序員做的工作總是在變化的,沒有一成不變的工作,為了適應(yīng)這種變化,你的知識面必須很廣泛。假如你學(xué)的知識內(nèi)容很少,即使你把這些內(nèi)容練的滾瓜爛熟了,除非你出去找的一份工作正好就是你以前練習(xí)的那些東西,這時候會讓人感覺你比誰都厲害,但這種千載難逢的好事怎么就被你碰上了呢?軟件開發(fā)畢竟不同于刷盤子,不是在反復(fù)干一件事情。軟件開發(fā)的工作總是要面臨不同的需求和問題,假如培訓(xùn)課程的內(nèi)容和信息量很大,即使由于時間關(guān)系,你暫時沒有完全消化和純熟這么多內(nèi)容,但是,你在工作中不管碰到什么新問題,都有那么一點(diǎn)點(diǎn)印象,知道大約的解決辦法和思緒,你就可以慢慢地通過查閱資料和最終解決這個問題,軟件開發(fā)的工作本來就是這么一種現(xiàn)狀,假如你學(xué)的知識量很少,一旦碰到了新問題,你完全就沒有了思緒,完全無從下手,這是何等痛苦,只有灰溜溜走人的份了吧。4.我們培養(yǎng)的不是IT蟻族和IT民工先看看IT蟻族和IT民工的悲慘命運(yùn)吧?。ǎ┧阉爻绦騿T的悲哀,尚有更多辛酸的故事,但是,我并不同情他們,我只是說他們自己無能!程序員這個職業(yè)能發(fā)明出許數(shù)年輕的富翁,不靠父母不靠天,尚有那個職業(yè)這么有機(jī)會和誘惑呢。但是,程序員毀壞身體是真,可是,不讓你做程序員,你去打游戲,聊QQ不也照樣壞身體嗎?.net不只是有ASP.net+SQLServer這套,我們不培養(yǎng)IT蟻族,假如你不想?yún)挓┸浖_發(fā),那就不能只學(xué)ASP.net+SQLServer,這個沒有太多技術(shù)含量的單一純熟工種。別的培訓(xùn)機(jī)構(gòu)培養(yǎng)的是技術(shù)單一的純熟技工,傳智播客培養(yǎng)的是具有很強(qiáng)學(xué)習(xí)和解決問題能力的技術(shù)高手和未來技術(shù)經(jīng)理。很多工廠說,清華畢業(yè)的學(xué)生剛進(jìn)工廠時的動手操作不如技校畢業(yè)的學(xué)生純熟,但過一段時間后,清華學(xué)生則能解決工廠生成過程出現(xiàn)中的各種新問題和弊端,甚至能提出創(chuàng)新和發(fā)明,后勁十足,由于清華培養(yǎng)的就不是一個單一工種的純熟工人,而是知識全面和具有創(chuàng)新能力的高級工程師。別的機(jī)構(gòu)和傳智播客培養(yǎng)出來的學(xué)生差別好比如此。這套面試題重要目的是幫助那些還沒有.Net軟件開發(fā)實際工作經(jīng)驗,而正在努力尋找.Net軟件開發(fā)工作的朋友在筆試時更好地贏得筆試和面試。由于這套面試題涉及的范圍很泛,很廣,很雜,大家不也許一天兩天就看完和學(xué)完這套面試寶典,即使你已經(jīng)學(xué)過了有關(guān)的技術(shù),那么至少也需要一個月的時間才干消化和掌握這套面試寶典,所以,大家應(yīng)當(dāng)早作準(zhǔn)備,從拿到這套面試寶典之日起,就要堅持在天天閑暇之余學(xué)習(xí)其中幾道題目,日積月累,等到出去面試時,一切都水到渠成,面試時就自然會游刃有余了?;卮饐栴}的思緒:先正面敘述一些基本的核心知識,然后描述一些特殊的東西,最后再來一些錦上添花的東西。要注意有些不是錦上添花,而是畫蛇添足的東西,不要隨便寫上。把答題像寫書同樣寫。我要回答一個新技術(shù)的問題大約思緒和環(huán)節(jié)是:我們想干什么,干這個碰到了什么問題,現(xiàn)在用什么方式來解決。其實我們講課也是這樣一個思緒。例如,講ajax時,我們希望不改變本來的整個網(wǎng)頁,而只是改變網(wǎng)頁中的局部內(nèi)容,例如,用戶名校驗,級聯(lián)下拉列表,下拉樹狀菜單。用傳統(tǒng)方式,就是瀏覽器自己直接向服務(wù)器發(fā)請求,服務(wù)器返回新頁面會蓋掉老頁面,這樣就不流暢了。答題時,先答是什么,再答有什么作用和要注意什么(這部分最重要,展現(xiàn)自己的心得)答案的段落分別,層次分明,條理清楚都非常重要,從這些表面的東西也可以看出一個人的習(xí)慣、辦事風(fēng)格、條理等。要講你做出答案的思緒過程,或者說你記住答案的思想都寫下來。把答題想著是辯論賽。答題就是給別人講道理、擺事實。答題不局限于什么格式和形式,就是要將自己的學(xué)識展現(xiàn)出來!別由于人家題目本來就模棱兩可,你就心里膽怯和沒底氣了,不敢回答了。你要大膽地指出對方題目很模糊和你的觀點(diǎn),不要把面試官想得有多高,其實他和你就是差不多的,你想想,假如他把你招進(jìn)去了,你們以后就是同事了,可不是差不多的嗎?關(guān)于就業(yè)薪水,假如你是應(yīng)屆生,那不能要高工資,要拿高工資,就去中關(guān)村!少數(shù)人基礎(chǔ)的確很好,在校期間的確又做過一些項目,那仍然是可以要到相對高的工資的。初級程序員薪水:2023-4500中級程序員薪水:4000-7000高級程序員薪水:7000以上公司招聘程序員更看重的要用到的編碼技術(shù)、而不是那些業(yè)務(wù)不太相關(guān)的所謂項目經(jīng)歷:1.公司想招什么樣的人2.公司面試會問什么,.3.簡歷怎么寫4如何達(dá)成簡歷上的標(biāo)準(zhǔn)(培訓(xùn)中心教項目的目的)對于一些公司接到了一些項目,想招聘一些初中級的程序員過來幫助寫代碼,完畢這個項目,你更看重的是他的專業(yè)技術(shù)功底,還是以前做過幾個項目的經(jīng)歷呢?我們先排除掉那些編碼技術(shù)功底好,又正好做過相似項目的情況,事實上,這種魚和熊掌兼得的情況并不常見。其實公司很清楚,只要招聘進(jìn)來的人技術(shù)真的很明白,那他什么項目都可以做出來,公司招人不是讓你去反復(fù)做你以前的項目,而是做一個新項目,業(yè)務(wù)方面,你只要進(jìn)了項目團(tuán)隊,自然就能掌握。所以,大多數(shù)招聘單位在招聘那些編碼級別的程序員時也沒指望能招聘到做過類似項目的人,也不會刻意去找做過類似項目的人,用人單位也不是想把你招進(jìn),然后把你以前做過的項目重做一遍,所以,用人單位更看重招進(jìn)來的人對要用到的編碼技術(shù)的功底到底如何,技術(shù)扎實不扎實,項目則只要跟著開發(fā)團(tuán)隊走,自然就沒問題。除非是一些非常專業(yè)的行業(yè),要招聘特別高級的開發(fā)人員和系統(tǒng)分析師,招聘單位才特別注重他的項目經(jīng)驗和行業(yè)經(jīng)驗,要去找到行業(yè)高手,公司才關(guān)心項目和與你聊項目的細(xì)節(jié),這樣的人通常都不是通過常規(guī)招聘渠道去招聘進(jìn)來的,而是通過各種手段挖過來的,這情況不再我今天要討論的范圍中。技術(shù)學(xué)得明白不明白,人家?guī)讉€問題就把你的深淺問出來了,只要問一些具體的技術(shù)點(diǎn),就很容易看出你是真懂還是假懂,很容看出你的技術(shù)深度和實力,所以,技術(shù)是來不得半點(diǎn)虛假的,必須扎扎實實。由于項目的種類繁多,涉及到現(xiàn)實生活中的各行各業(yè),什么五花八門的業(yè)務(wù)都有,例如,酒店房間預(yù)定管理,公司車輛調(diào)度管理,學(xué)校課程教室管理,超市進(jìn)銷存管理,知識內(nèi)容管理,等等……成千上萬等等,但是,不管是什么項目,采用的無非都是我們學(xué)習(xí)的那些目前流行和常用的技術(shù)。技術(shù)好、經(jīng)驗豐富,則項目做出來的效率高些,程序更穩(wěn)定和更容易維護(hù)些;技術(shù)差點(diǎn),碰碰磕磕最后也能把項目做出來,無非是做的周期長點(diǎn)、返工的次數(shù)多點(diǎn),程序代碼寫得差些,用的技術(shù)笨拙點(diǎn)。假如一個人不是完完全全做過某個項目,他是不太關(guān)心該項目的業(yè)務(wù)的,對其中的一些具體細(xì)節(jié)更是一竅不知,(假如我招你來做圖書管理,你項目經(jīng)歷說你做過汽車調(diào)度,那我能問你汽車調(diào)度具體怎么回事嗎?不會,所以,你很容易蒙混過去的)而一個程序員的整個職業(yè)生涯中能實實在在和完完整整做出來的項目沒幾個,更別說在多個不同行業(yè)的項目了,有的程序員更是一輩子都只是在做某一個行業(yè)的項目,結(jié)果他就成了這個行業(yè)的專家(專門干一件事的家伙)。所以,技術(shù)面試官通常沒正好親身經(jīng)歷過你簡歷寫的那些項目,他不也許去問你寫的那些項目的具體細(xì)節(jié),而是只能泛泛地問你這個項目是多少人做的,做了多長時間,開發(fā)的過程,你在做項目的過程中有什么心得和收獲,用的什么技術(shù)等面上的問題,所以,簡歷上的項目經(jīng)歷可以具有很多水分,很容易作假,技術(shù)面試官也無法在項目上甄別你的真?zhèn)?。簡歷該怎么寫:精通那些技術(shù),有一些什么項目經(jīng)歷教項目是為了鞏固和靈活整合運(yùn)用技術(shù),增強(qiáng)學(xué)習(xí)的趣味性,熟悉做項目的流程,或得一些專業(yè)課程中無法獲得的特有項目經(jīng)驗,增強(qiáng)自己面試的信心。講的項目應(yīng)當(dāng)真實可靠才有價值,否則,表面上是項目,事實上還是知識點(diǎn)的整合,對鞏固技術(shù)點(diǎn)和增強(qiáng)學(xué)習(xí)的趣味性,但無法獲得實際的項目經(jīng)驗。(項目重要是增長你經(jīng)驗的可信度,獲得更多面試機(jī)會,真正能不能找到工作,找到好工作,重要看你鍵盤上的功夫了)建議大家盡量開自己的blog,堅持天天寫技術(shù)blog。在簡歷上寫上自己的blog地址,可以多轉(zhuǎn)載一些技術(shù)文章。1.如何過簡歷關(guān)?善意的謊言我先講解幾個軟件求職相關(guān)的真實故事,以幫助大家了解大多數(shù)軟件開發(fā)公司是如何賽選簡歷和錄用新員工的。1.傳智播客學(xué)員A是大四在讀的應(yīng)屆畢業(yè)生,他自信技術(shù)學(xué)得很不錯,實質(zhì)上的確也達(dá)成用人單位的標(biāo)準(zhǔn),他不樂意編寫兩年工作經(jīng)驗的虛假簡歷,希望憑借自己的真實情況去面對求職,投遞了很多份簡歷,都沒有回應(yīng);而他周邊的很多相似背景的學(xué)員由于使用了假簡歷,都不久找到了薪水4.5k/月左右的工作,最后萬不得已,他修改了自己的簡歷,增長了一些水分,以兩年工作經(jīng)驗的身份去投遞簡歷,結(jié)果就不久找到了滿意的工作。2.一個穿著和氣質(zhì)給人的印象都很不錯的女生征詢時,問:“假如在傳智播客學(xué)完了,能找到工作嗎?”,我問了她一些基本情況后,得知她是鄭州航空工業(yè)管理學(xué)院本科畢業(yè),并且畢業(yè)時間已有兩年,談話中感覺很有工作經(jīng)驗,英語也不錯,所以,我斬釘截鐵地告訴她:“她學(xué)完后絕對能找到一份滿意的工作”,并說出了一些因素:(1)她自身的談吐氣質(zhì)就決定了她找工作沒問題,應(yīng)聘工作除了規(guī)定有那些必需的技能外,關(guān)鍵一點(diǎn)還要看這個人的性格和素養(yǎng),按她的條件,假如她要找軟件開發(fā)方面的工作,只需要把技術(shù)補(bǔ)上就可以了,這一點(diǎn)在傳智播客學(xué)習(xí)是很容易補(bǔ)上的;(2)要想找到好工作,除了掌握必需的技術(shù)外,通常都需要編寫兩年工作經(jīng)驗的簡歷,她的畢業(yè)是證的確兩年前的,編造兩年軟件開發(fā)的工作經(jīng)驗更容易,至少不用專門去做假的畢業(yè)證了。她聽完后,很贊同我的觀念,說她現(xiàn)在就在一家軟件公司做人力資源,負(fù)責(zé)挑選應(yīng)聘者的簡歷,按領(lǐng)導(dǎo)的吩咐:“凡是工作經(jīng)驗低于兩年的簡歷直接刪除到垃圾桶”,可見,假如你是以社會招聘的身份應(yīng)聘的,那么你的簡歷一方面到達(dá)了類似這個女生的人力資源之手,即使你的技術(shù)再厲害,假如你的工作經(jīng)驗一欄上寫得低于了兩年,那簡歷就永無露臉之日了,何談后來的筆試和面試呢?3.與傳智播客同一樓的一個軟件開發(fā)單位,由于項目經(jīng)理讀過傳智播客老師們的書籍和看過傳智播客的視頻,所以他們公司想到了從傳智播客學(xué)員中招聘開發(fā)人員,提出薪水在2800元左后,我們公司老師對他們誰,2800元,我們學(xué)員肯定不會去!他們公司說對于沒有實際經(jīng)驗的新手開出2800元的薪水已經(jīng)很不錯了,我們老師說,傳智播客學(xué)員通過簡歷包裝都能找到平均4500元的工資,樓下公司說假簡歷他們一聊就能聊出來,沒工作經(jīng)驗的人是騙不住他們的,我們的老師當(dāng)時就無語了,…,由于就在前幾天,我們就有一個學(xué)員成功潛伏進(jìn)了他們公司,并且工資是4500元,但我們老師不能當(dāng)他們的面來說這事,就讓他們一直蒙在鼓里還很自信吧!4.前面談到簡歷上的工作經(jīng)驗很重要,可是大多數(shù)要找工作的同學(xué)往往是沒有工作經(jīng)驗的,所以,只能在簡歷上加點(diǎn)水分。但是,只要你將簡歷上寫成了兩年以上的工作經(jīng)驗,是不是一定就能得到筆試和面試的機(jī)會呢?寫兩年工作經(jīng)驗只是有效簡歷的開始,離簡歷被用人單位相中尚有一段差距。一個好的畢業(yè)學(xué)校、優(yōu)秀的英語水平、中共黨員的政治面貌、某省或直轄市的優(yōu)秀畢業(yè)生、奧林匹克競賽獲幾等獎等榮耀都會給用人單位一個很好的印象,假如你有這些榮耀,一定要在簡歷的基本信息部分寫清楚。但是,很多人是沒有這些榮耀的,那么只能平平淡淡列出自己的一些基本信息,這也沒有很大的關(guān)系,頂多就是自己的簡歷不能脫穎而出。假如你沒有上過大學(xué),學(xué)歷一欄怎么著也不能寫為高中,起碼也要寫個大專或以上,畢業(yè)院校編個二線城市的不知名的小學(xué)院,假如你不樂意去做假證,等到別人面試你時,再說“閑棄以前上的學(xué)校不好,由于對編程太感愛好,就輟學(xué)了!”技術(shù)類面試、筆試題匯總(整理者:楊中科,部分內(nèi)容從互聯(lián)網(wǎng)中整理而來)注:標(biāo)明*的問題屬于選擇性掌握的內(nèi)容,能掌握更好,沒掌握也沒關(guān)系。下面的參考解答只是幫助大家理解,不用背,面試題、筆試題千變?nèi)f化,不要夢想著把題覆蓋了,下面的題是供大家查漏補(bǔ)缺用的,真正的把這些題搞懂了,才干“以不變應(yīng)萬變”?;卮饐栴}的時候能聯(lián)系做過項目的例子是最佳的,有的問題后面我已經(jīng)補(bǔ)充聯(lián)系到項目中的相應(yīng)的案例了。1、簡述private、protected、public、internal修飾符的訪問權(quán)限。private:私有成員,在類的內(nèi)部才可以訪問。protected:保護(hù)成員,該類內(nèi)部和繼承類中可以訪問。public:公共成員,完全公開,沒有訪問限制。internal:當(dāng)前程序集內(nèi)可以訪問。2、ADO.NET中的五個重要對象Connection:重要是啟動程序和數(shù)據(jù)庫之間的連接。沒有運(yùn)用連接對象將數(shù)據(jù)庫打開,是無法從數(shù)據(jù)庫中取得數(shù)據(jù)的。Close和Dispose的區(qū)別,Close以后還可以Open,Dispose以后則不能再用。Command:重要可以用來對數(shù)據(jù)庫發(fā)出一些指令,例如可以對數(shù)據(jù)庫下達(dá)查詢、新增、修改、刪除數(shù)據(jù)等指令,以及調(diào)用存在數(shù)據(jù)庫中的存儲過程等。這個對象是架構(gòu)在Connection對象上,也就是Command對象是透過連接到數(shù)據(jù)源。DataAdapter:重要是在數(shù)據(jù)源以及DataSet之間執(zhí)行數(shù)據(jù)傳輸?shù)墓ぷ?,它可以透過Command對象下達(dá)命令后,并將取得的數(shù)據(jù)放入DataSet對象中。這個對象是架構(gòu)在Command對象上,并提供了許多配合DataSet使用的功能。DataSet:這個對象可以視為一個暫存區(qū)(Cache),可以把從數(shù)據(jù)庫中所查詢到的數(shù)據(jù)保存起來,甚至可以將整個數(shù)據(jù)庫顯示出來,DataSet是放在內(nèi)存中的。Dat(yī)aSet的能力不只是可以儲存多個Table而已,還可以透過DataAdapter對象取得一些例如主鍵等的數(shù)據(jù)表結(jié)構(gòu),并可以記錄數(shù)據(jù)表間的關(guān)聯(lián)。Dat(yī)aSet對象可以說是ADO.NET中重量級的對象,這個對象架構(gòu)在DataAdapter?qū)ο笊?自身不具有和數(shù)據(jù)源溝通的能力;也就是說我們是將DataAdapter對象當(dāng)做DataSet對象以及數(shù)據(jù)源間傳輸數(shù)據(jù)的橋梁。DataSet包含若干DataTable、DataTableTable包含若干DataRow。DataReader:當(dāng)我們只需要循序的讀取數(shù)據(jù)而不需要其它操作時,可以使用Dat(yī)aReader?qū)ο?。DataReader對象只是一次一筆向下循序的讀取數(shù)據(jù)源中的數(shù)據(jù),這些數(shù)據(jù)是存在數(shù)據(jù)庫服務(wù)器中的,而不是一次性加載到程序的內(nèi)存中的,只能(通過游標(biāo))讀取當(dāng)前行的數(shù)據(jù),并且這些數(shù)據(jù)是只讀的,并不允許作其它的操作。由于DataReader在讀取數(shù)據(jù)的時候限制了每次只讀取一筆,并且只能只讀,所以使用起來不僅節(jié)省資源并且效率很好。使用Dat(yī)aReader對象除了效率較好之外,由于不用把數(shù)據(jù)所有傳回,故可以減少網(wǎng)絡(luò)的負(fù)載。ADO.NET使用Connection對象來連接數(shù)據(jù)庫,使用Command或DataAdapter?qū)ο髞韴?zhí)行SQL語句,并將執(zhí)行的結(jié)果返回給Dat(yī)aReader或DataAdapter,然后再使用取得的Dat(yī)aReader或DataAdapter對象操作數(shù)據(jù)結(jié)果。3、列舉ASP.NET頁面之間傳遞值的幾種方式。1.使用QueryString,如....?id=1;response.Redirect()....2.使用Session變量3.使用Server.Transfer4.Cookie傳值5.Applicat(yī)ion傳值6.PreviosPage4、C#中的委托是什么?事件是不是一種委托?事件和委托的關(guān)系。委托可以把一個方法作為參數(shù)代入另一個方法。委托可以理解為指向一個函數(shù)的指針。委托和事件沒有可比性,由于委托是類型,事件是對象,下面說的是委托的對象(用委托方式實現(xiàn)的事件)和(標(biāo)準(zhǔn)的event方式實現(xiàn))事件的區(qū)別。事件的內(nèi)部是用委托實現(xiàn)的。由于對于事件來講,外部只能“注冊自己+=、注銷自己-=”,外界不可以注銷其他的注冊者,外界不可以積極觸發(fā)事件,因此假如用Delegate就沒法進(jìn)行上面的控制,因此誕生了事件這種語法。事件是用來閹割委托實例的,類比用一個自定義類閹割List。事件只能add、remove自己,不能賦值。事件只能+=、-=,不能=。加分的補(bǔ)充回答:事件內(nèi)部就是一個privat(yī)e的委托和add、remove兩個方法面試聊:用Reflector查看.Net的類的內(nèi)部實現(xiàn),解決問題。5、override與重載(overload)的區(qū)別重載是方法的名稱相同。參數(shù)或參數(shù)類型不同,進(jìn)行多次重載以適應(yīng)不同的需要。重載(overload)是面向過程的概念。Override是進(jìn)行基類中函數(shù)的重寫。Override是面向?qū)ο蟮母拍?、C#中索引器是否只能根據(jù)數(shù)字進(jìn)行索引?是否允許多個索引器參數(shù)?參數(shù)的個數(shù)和類型都是任意的。加分的補(bǔ)充回答:用reflector反編譯可以看出,索引器的內(nèi)部本質(zhì)上就是set_item、get_item方法。加分的補(bǔ)充回答:回答傳智播客.net培訓(xùn)中講解設(shè)計模式中開發(fā)的SettingsProvider就是用的string類型的參數(shù)名做索引器參數(shù)。7、屬性和public字段的區(qū)別是什么?調(diào)用set方法為一個屬性設(shè)值,然后用get方法讀取出來的值一定是set進(jìn)去的值嗎?屬性可以對設(shè)值、取值的過程進(jìn)行非法值控制,比如年齡嚴(yán)禁設(shè)值負(fù)數(shù),而字段則不能進(jìn)行這樣的設(shè)立。雖然一般情況下get讀取的值就是set設(shè)立的值,但是可以讓get讀取的值不是set設(shè)立的值的,極端的例子。PublicAge{get{return100;}set{}}。加分的補(bǔ)充回答:用reflector反編譯可以看出,屬性內(nèi)部本質(zhì)上就是set_***、get_***方法,具體參考傳智播客.net培訓(xùn)視頻中串講.net基礎(chǔ)的部分。classPerson{publicintAge{get{return3;}set{}}}Personp1=newPerson();p1.Age=30;p1.Age++;Console.Write(p1.Age);//輸出38、三層架構(gòu)通常意義上的三層架構(gòu)就是將整個業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。區(qū)分層次的目的即為了“高內(nèi)聚,低耦合”的思想。表現(xiàn)層(UI):通俗講就是展現(xiàn)給用戶的界面,即用戶在使用一個系統(tǒng)的時候的所見所得。業(yè)務(wù)邏輯層(BLL):針對具體問題的操作,也可以說是對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)邏輯解決。數(shù)據(jù)訪問層(DAL):該層所做事務(wù)直接操作數(shù)據(jù)庫,針對數(shù)據(jù)的增添、刪除、修改、更新、查找等每層之間是一種垂直的關(guān)系。三層結(jié)構(gòu)是N層結(jié)構(gòu)的一種,一般來說,層次之間是向下依賴的,下層代碼未擬定其接口(契約)前,上層代碼是無法開發(fā)的,下層代碼接口(契約)的變化將使上層的代碼一起變化。優(yōu)點(diǎn):分工明確,條理清楚,易于調(diào)試,并且具有可擴(kuò)展性。缺陷:增長成本。9、MVC模式(*)MVC(ModelViewController)模型-視圖-控制器aspx就是View,視圖;Model:DataSet、Reader、對象;Controller:cs代碼。MVC是典型的平行關(guān)系,沒有說誰在上誰在下的關(guān)系,模型負(fù)責(zé)業(yè)務(wù)領(lǐng)域的事情,視圖負(fù)責(zé)顯示的事情,控制器把數(shù)據(jù)讀取出來填充模型后把模型交給視圖去解決。而各種驗證什么的應(yīng)當(dāng)是在模型里解決了。它強(qiáng)制性的使應(yīng)用程序的輸入、解決和輸出分開。MVC最大的好處是將邏輯和頁面分離。MVC和三層的區(qū)別:MVC是UI層的技術(shù)。10、關(guān)于拆箱裝箱:1)什么是裝箱(boxing)和拆箱(unboxing)?(*)裝箱:從值類型接口轉(zhuǎn)換到引用類型。拆箱:從引用類型轉(zhuǎn)換到值類型。objectobj=null;//引用類型obj=1;//裝箱,boxing。把值類型包裝為引用類型。inti1=(int)obj;//拆箱。unboxing2)下面三句代碼有沒有錯,以inboxing或者unboxing為例,解釋一下內(nèi)存是怎么變化的inti=10;objectobj=i;intj=obj;分析:在inboxing(裝箱)時是不需要顯式的類型轉(zhuǎn)換的,但是unboxing(拆箱)需要顯式的類型轉(zhuǎn)換,所以第三行代碼應(yīng)當(dāng)改為:3intj=(int)obj;要掌握裝箱與拆箱,就必須了解CTS及它的特點(diǎn):NET重要技術(shù)和基礎(chǔ)之一的CTS(CommonTypeSystem)。CTS是為了實現(xiàn)在應(yīng)用程序聲明和使用這些類型時必須遵循的規(guī)則而存在的通用類型系統(tǒng)。.Net將整個系統(tǒng)的類型提成兩大類:值類型和引用類型。CTS中的所有東西都是對象;所有的對象都源自一個基類——System.Object類型。值類型的一個最大的特點(diǎn)是它們不能為null,值類型的變量總有一個值。為了解決值類型不可認(rèn)為null,引用類型可認(rèn)為null的問題,微軟在.Net中引入了裝箱和拆箱:裝箱就是將值類型用引用類型包裝起來轉(zhuǎn)換為引用類型;而從引用類型中拿到被包裝的值類型數(shù)據(jù)進(jìn)行拆箱。?11、什么叫應(yīng)用程序域(AppDomain)(*)一種邊界,它由公共語言運(yùn)營庫圍繞同一應(yīng)用程序范圍內(nèi)創(chuàng)建的對象建立(即,從應(yīng)用程序入口點(diǎn)開始,沿著對象激活的序列的任何位置)。應(yīng)用程序域有助于將在一個應(yīng)用程序中創(chuàng)建的對象與在其他應(yīng)用程序中創(chuàng)建的對象隔離,以使運(yùn)營時行為可以預(yù)知。在一個單獨(dú)的進(jìn)程中可以存在多個應(yīng)用程序域。應(yīng)用程序域可以理解為一種輕量級進(jìn)程。起到安全的作用。占用資源小。classWorker:MarshalByRefObject{privat(yī)estaticintcount;publicvoidSetValue(inti){count=i;}publicintGetValue(){returncount;}}AppDomainappDomain1=AppDomain.CreateDomain("domain1");Workerworker1=(Worker)appDomain1.Creat(yī)eInstanceFromAndUnwrap("應(yīng)用程序域.exe","應(yīng)用程序域.Worker");worker1.SetValue(888);AppDomainappDomain2=AppDomain.CreateDomain("domain2");Workerworker2=(Wo(hù)rker)appDomain2.CreateInstanceFromAndUnwrap("應(yīng)用程序域.exe","應(yīng)用程序域.Worker");worker2.SetValue(999);MessageBox.Show(worker1.GetValue().ToString());MessageBox.Show(worker2.GetValue().ToString());12、CTS、CLS、CLR分別作何解釋(*)CTS:CommonTypeSystem通用系統(tǒng)類型。Int32、Int16→int、String→string、Boolean→boolCLS:CommonLanguageSpecification通用語言規(guī)范。不同語言語法的不同。CLR:CommonLanguageRuntime公共語言運(yùn)營時,就是GC、JIT等這些。13、在dotnet中類(class)與結(jié)構(gòu)(struct)的異同?Class可以被實例化,屬于引用類型,是分派在內(nèi)存的堆上的。類是引用傳遞的。Struct屬于值類型,是分派在內(nèi)存的棧上的。結(jié)構(gòu)體是復(fù)制傳遞的。加分的回答:Int32、Boolean等都屬于結(jié)構(gòu)體。14、堆和棧的區(qū)別?棧是編譯期間就分派好的內(nèi)存空間,因此你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數(shù)等都在棧內(nèi)存中。堆是程序運(yùn)營期間動態(tài)分派的內(nèi)存空間,你可以根據(jù)程序的運(yùn)營情況擬定要分派的堆內(nèi)存的大小。15、能用foreach遍歷訪問的對象的規(guī)定需要實現(xiàn)IEnumerable接口或聲明GetEnumerator方法的類型。16、GC是什么?為什么要有GC?GC是垃圾收集器。程序員不用緊張內(nèi)存管理,由于垃圾收集器會自動進(jìn)行管理。GC只能解決托管內(nèi)存資源的釋放,對于非托管資源則不能使用GC進(jìn)行回收,必須由程序員手工回收,一個例子就是FileStream或者SqlConnection需要程序員調(diào)用Dispose進(jìn)行資源的回收。要請求垃圾收集,可以調(diào)用下面的方法:GC.Collection()一般不需要手動調(diào)用GC.Collection()。加分的回答:有一次用OLEAutomation的方式操作Excel的時候,Excel經(jīng)常不能正常退出,在MSDN網(wǎng)站上找到官方解答說要調(diào)用一下GC.Collection(),至于為什么這樣就可以也沒找到答案。17、Strings=newString("xyz");創(chuàng)建了幾個StringObject?兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象。strings1="xyz";strings2="xyz";是一個string對象,由于“字符串拘留池”(由于字符串不可變,所以就可以共享同一個字符串實例)18、值類型和引用類型的區(qū)別?1.將一個值類型變量賦給另一個值類型變量時,將復(fù)制包含的值。引用類型變量的賦值只復(fù)制對對象的引用,而不復(fù)制對象自身。2.值類型不也許派生出新的類型:所有的值類型均隱式派生自System.ValueType。但與引用類型相同的是,結(jié)構(gòu)也可以實現(xiàn)接口。3.值類型不也許包含null值:然而,可空類型功能允許將null賦給值類型。4.每種值類型均有一個隱式的默認(rèn)構(gòu)造函數(shù)來初始化該類型的默認(rèn)值。19、C#中的接口和類有什么異同。不同點(diǎn):不能直接實例化接口。接口不包含方法的實現(xiàn)。接口可以多繼承,類只能單繼承。類定義可在不同的源文獻(xiàn)之間進(jìn)行拆分。相同點(diǎn):接口、類和結(jié)構(gòu)都可以從多個接口繼承。接口類似于抽象基類:繼承接口的任何非抽象類型都必須實現(xiàn)接口的所有成員。接口和類都可以包含事件、索引器、方法和屬性。20、abstractclass和interface有什么區(qū)別?相同點(diǎn):都不能被直接實例化,都可以通過繼承實現(xiàn)其抽象方法。不同點(diǎn):接口支持多繼承;抽象類不能實現(xiàn)多繼承。接口只能定義行為;抽象類既可以定義行為,還也許提供實現(xiàn)。接口可以用于支持回調(diào)(CallBack);抽象類不能實現(xiàn)回調(diào),由于繼承不支持。接口只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的署名,但不能定義字段和包含實現(xiàn)的方法;抽象類可以定義字段、屬性、包具有實現(xiàn)的方法。接口可以作用于值類型(Struct)和引用類型(Class);抽象類只能作用于引用類型。例如,Struct就可以繼承接口,而不能繼承類。加分的補(bǔ)充回答:講設(shè)計模式的時候SettingsProvider的例子。21、是否可以繼承String類?String類是sealed類故不可以繼承。22、try{}里有一個return語句,那么緊跟在這個try后的finally{}里的代碼會不會被執(zhí)行,什么時候被執(zhí)行?會執(zhí)行,在return后執(zhí)行。加分的補(bǔ)充回答(也助記):讀取數(shù)據(jù)庫中數(shù)據(jù)的條數(shù)的程序publicintQueryCount(){…..try{returncmd.ExecuteScalar();}finally{cmd.Dispose();}}先執(zhí)行cmd.ExecuteScalar(),把返回值存起來,然后再去執(zhí)行finally,然后把返回值返回。return都是最后執(zhí)行,但是return后的表達(dá)式的計算則是在finally之前。假如C#設(shè)計的是先執(zhí)行cmd.Dispose()再執(zhí)行return就會出現(xiàn)return執(zhí)行失敗了,由于cmd已經(jīng)Dispose了。23、new關(guān)鍵字用法(*)new運(yùn)算符用于創(chuàng)建對象和調(diào)用構(gòu)造函數(shù)。new修飾符用于向基類成員隱藏繼承成員。表達(dá)“我的這個方法和父類的同名方法沒關(guān)系”,new只是不讓編譯器警告而已new約束用于在泛型聲明中約束也許用作類型參數(shù)的參數(shù)的類型。24、如何把一個Array復(fù)制到ArrayList里(*)實現(xiàn)1string[]s={"111","22222"};ArrayListlist=newArrayList();list.AddRange(s);實現(xiàn)2string[]s={"111","22222"};ArrayListlist=newArrayList(s);25、描述線程與進(jìn)程的區(qū)別?(*)1.線程(Thread)與進(jìn)程(Process)兩者都定義了某種邊界,不同的是進(jìn)程定義的是應(yīng)用程序與應(yīng)用程序之間的邊界,不同的進(jìn)程之間不能共享代碼和數(shù)據(jù)空間,而線程定義的是代碼執(zhí)行堆棧和執(zhí)行上下文的邊界。2.一個進(jìn)程可以涉及若干個線程,同時創(chuàng)建多個線程來完畢某項任務(wù),便是多線程。而同一進(jìn)程中的不同線程共享代碼和數(shù)據(jù)空間。用一個比方來說,假如一個家庭代表一個進(jìn)程,在家庭內(nèi)部,各個成員就是線程,家庭中的每個成員都有義務(wù)對家庭的財富進(jìn)行積累,同時也有權(quán)利對家庭財富進(jìn)行消費(fèi),當(dāng)面對一個任務(wù)的時候,家庭也可以派出幾個成員來協(xié)同完畢,而家庭之外的人則沒有辦法直接消費(fèi)不屬于自己家庭的財產(chǎn)。26、什么是強(qiáng)類型,什么是弱類型?哪種更好些?為什么??C#中inti=3;i="a";不可以JavaScript中vari=3;i="a";可以強(qiáng)類型是在編譯的時候就擬定類型的數(shù)據(jù),在執(zhí)行時類型不能更改,而弱類型在執(zhí)行的時候才會擬定類型。沒有好不好,兩者各有好處,強(qiáng)類型安全,由于它事先已經(jīng)擬定好了,并且效率高。弱類型更靈活,但是效率低,并且犯錯概率高一般用于編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運(yùn)營的時候容易出現(xiàn)錯誤,但它靈活,多用于解釋型編程語言,如javascript,vb等27、什么是反射?程序集包含模塊,而模塊又涉及類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它可以動態(tài)的創(chuàng)建類型的實例,設(shè)立現(xiàn)有對象的類型或者獲取現(xiàn)有對象的類型,能調(diào)用類型的方法和訪問類型的字段屬性。它是在運(yùn)營時創(chuàng)建和使用類型實例加分的補(bǔ)充回答:聊用反射實現(xiàn)編輯器動態(tài)插件和如鵬網(wǎng)項目中插件體系實現(xiàn)第三方支付和定期任務(wù)的案例。28、int、DateTime、string是否可認(rèn)為null?int、DateTime不能,由于其為Struct類型,而結(jié)構(gòu)屬于值類型,值類型不能為null,只有引用類型才干被賦值null。string可認(rèn)為null。29、using關(guān)鍵字有什么用?什么是IDisposable?using可以聲明namespace的引入,還可以實現(xiàn)非托管資源的釋放,實現(xiàn)了IDisposiable的類在using中創(chuàng)建,using結(jié)束后會自動調(diào)用該對象的Dispose方法,釋放資源。加分的補(bǔ)充回答:using其實等價于try……finally,用起來更方便。int?→Nullable<int>30、XML與HTML的重要區(qū)別1.XML是區(qū)分大小寫字母的,HTML不區(qū)分。2.在HTML中,假如上下文清楚地顯示出段落或者列表鍵在何處結(jié)尾,那么你可以省略</p>或者</li>之類的結(jié)束標(biāo)記。在XML中,絕對不能省略掉結(jié)束標(biāo)記。HTML:<imgsrc="1.jpg"><br><br>XML:<imgsrc="1.jpg"></img><br/><br/>3.在XML中,擁有單個標(biāo)記而沒有匹配的結(jié)束標(biāo)記的元素必須用一個/字符作為結(jié)尾。這樣分析器就知道不用查找結(jié)束標(biāo)記了。4.在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。5.在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應(yīng)的值。XML是用來存儲和傳輸數(shù)據(jù)的HTML是用來顯示數(shù)據(jù)的31、stringstr=null與stringstr=“”說明其中的區(qū)別。答:stringstr=null是不給他分派內(nèi)存空間,而stringstr=\"\"給它分派長度為空字符串的內(nèi)存空間。stringstr=null沒有string對象,stringstr=“”有一個字符串對象。32.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增長的ID作為主鍵,注意:ID也許不是連續(xù)的。答:解1:selecttop10*fromAwhereidnotin(selecttop30idfromA)解2:selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)解答3:用ROW_NUMBER實現(xiàn)33.面向?qū)ο蟮恼Z言具有________(dá)性、__(dá)___(dá)____性、__(dá)_____(dá)_性答:封裝、繼承、多態(tài)。不要背,腦子中要有聯(lián)想。34.在.Net中所有可序列化的類都被標(biāo)記為___(dá)__?答:[serializable]35、什么是code-Behind技術(shù)。就是代碼隱藏,在ASP.NET中通過ASPX頁面指向CS文獻(xiàn)的方法實現(xiàn)顯示邏輯和解決邏輯的分離,這樣有助于web應(yīng)用程序的創(chuàng)建。比如分工,美工和編程的可以個干各的,不用再像以前asp那樣都代碼和html代碼混在一起,難以維護(hù)。code-Behind是基于部分類技術(shù)實現(xiàn)的,在我的項目的三層代碼生成器中用到了部分類。36、接口是一種引用類型,在接口中可以聲明(

a),但不可以聲明公有的域或私有的成員變量。

?

a)方法、屬性、索引器和事件;

b)索引器和字段;

?

c)事件和字段;

解讀:屬性、索引器和事件最終都編譯生成方法。

37.在ADO.NET中,對于Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(c)。

?

a)insert、update、delete等操作的Sql語句重要用ExecuteNonQuery()方法來執(zhí)行;

b)ExecuteNonQuery()方法返回執(zhí)行Sql語句所影響的行數(shù)。

c)Select操作的Sql語句只能由ExecuteReader()方法來執(zhí)行;

?

d)ExecuteReader()方法返回一個Dat(yī)aReder對象;

解答:ExecuteScalar→selectgetdate()。?38.下列關(guān)于C#中索引器理解對的的是(c

?

a)索引器的參數(shù)必須是兩個或兩個以上

b)索引器的參數(shù)類型必須是整數(shù)型

?

c)索引器沒有名字

?

d)以上皆非

?39.下面關(guān)于XML的描述錯誤的是(d)。

?

a)XML提供一種描述結(jié)構(gòu)化數(shù)據(jù)的方法;

?

b)XML

是一種簡樸、與平臺無關(guān)并被廣泛采用的標(biāo)準(zhǔn);

c)XML文檔可承載各種信息;

?

d)XML只是為了生成結(jié)構(gòu)化文檔;

40、以下的C#代碼,試圖用來定義一個接口:

?

public

interface

IFile

int

A;

?

int

delFile()

{

?

A

3;

?

}

?

void

disFile();

?

}

關(guān)于以上的代碼,以下描述錯誤的是(d

)。

a)以上的代碼中存在的錯誤涉及:不能在接口中定義變量,所以int

A代碼行將出現(xiàn)錯誤;

?

b)以上的代碼中存在的錯誤涉及:接口方法delFile是不允許實現(xiàn)的,所以不能編寫具體的實現(xiàn)函數(shù);

c)代碼void

disFile();聲明無錯誤,接口可以沒有返回值;

d)代碼void

disFile();應(yīng)當(dāng)編寫為void

disFile(){};

41、在ASP.NET中有Button控件myButton,要是單擊控件時,導(dǎo)航到其他頁面,

對的的代碼為(

c)。

a)private

void

myButton_Click(object

sender,

System.EventArgs

e){Redirect(“”);}

?

b)private

void

myButton_Click(object

sender,

System.EventArgs

e){Request.Redirect(“”);}

c)private

void

myButton_Click(object

sender,

System.EventArgs

e){Reponse.Redirect(“”);}

d)private

void

myButton_Click(object

sender,

System.EventArgs

e){Request.Redirect(“”);return

true;}

?42.聲明一個委托public

delegate

int

myCallBack(int

x);

則用該委托產(chǎn)生的回調(diào)方法的原型應(yīng)當(dāng)是(b

)。

?

a)void

myCallBack(int

x)

;

?

b)int

receive(int

num)

?

c)string

receive(int

x)

;

?

d)不擬定的;

43.StringBuilder和String的區(qū)別?答:String在進(jìn)行運(yùn)算時(如賦值、拼接等)會產(chǎn)生一個新的實例,而StringBuilder

則不會。所以在大量字符串拼接或頻繁對某一字符串進(jìn)行操作時最佳使用StringBuilder,不要使用String

假如要操作一個不斷增長的字符串,盡量不用String類,改用StringBuilder類。兩個類的工作原理不同:String類是一種傳統(tǒng)的修改字符串的方式,它的確可以完畢把一個字符串添加到另一個字符串上的工作沒錯,但是在.NET框架下,這個操作實在是劃不來。由于系統(tǒng)先是把兩個字符串寫入內(nèi)存,接著刪除本來的String對象,然后創(chuàng)建一個String對象,并讀取內(nèi)存中的數(shù)據(jù)賦給該對象。這一來二去的,耗了不少時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進(jìn)行字符串的修改,簡樸并且直接。當(dāng)然,一般情況下覺察不到這兩者效率的差異,但假如你要對某個字符串進(jìn)行大量的添加操作,那么StringBuilder類所花費(fèi)的時間和String類簡直不是一個數(shù)量級的。

44、.請敘述屬性與索引器的區(qū)別。

(*)屬性

索引器

通過名稱標(biāo)記。

通過署名標(biāo)記。

通過簡樸名稱或成員訪問來訪問。

通過元素訪問來訪問。

可認(rèn)為靜態(tài)成員或?qū)嵗蓡T。

必須為實例成員。

屬性的

get

訪問器沒有參數(shù)。

索引器的

get

訪問器具有與索引器相同的形參表。

屬性的

set

訪問器包含隱式

value

參數(shù)。

除了

value

參數(shù)外,索引器的

set

訪問器還具有與索引器相同的形參表。

45.請敘述const與readonly的區(qū)別。(*)

const關(guān)鍵字用于修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數(shù)聲明引入給定類型的一個或多個常數(shù)。

const數(shù)據(jù)成員的聲明式必須包含初值,且初值必須是一個常量表達(dá)式。由于它是在編譯時就需要完全評估。

const成員可以使用另一個const成員來初始化,前提是兩者之間沒有循環(huán)依賴。

readonly在運(yùn)營期評估賦值,使我們得以在保證“只讀訪問”的前提下,把object的初始化動作推遲到運(yùn)營期進(jìn)行。

readonly關(guān)鍵字與const關(guān)鍵字不同:const字段只能在該字段的聲明中初始化。readonly字段可以在聲明或構(gòu)造函數(shù)中初始化。因此,根據(jù)所使用的構(gòu)造函數(shù),readonly字段也許具有不同的值。此外,const字段是編譯時常數(shù),而readonly字段可用于運(yùn)營時常數(shù)。const不能是“算出來的”readonly只能在聲明時或者構(gòu)造函數(shù)里面初始化,并且不能在static修飾的構(gòu)造函數(shù)里面。參考資料:46.

請解釋ASP。NET中的web頁面與其隱藏類之間的關(guān)系?一個ASP.NET頁面一般都相應(yīng)一個隱藏類,一般都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.a(chǎn)spx的頁面聲明如下<%@Pagelanguage="c#"Codebehind="Tst1.a(chǎn)spx.cs"AutoEventWireup="false"Inherits="T1.Tst1"%>Codebehind="Tst1.a(chǎn)spx.cs"表白經(jīng)編譯此頁面時使用哪一個代碼文獻(xiàn)Inherits="T1.Tst1"表用運(yùn)營時使用哪一個隱藏類aspx頁面會編譯生成一個類,這個類從隱藏類繼承。47.

什么是viewstate,能否禁用?是否所用控件都可以禁用?Viewstate是保存狀態(tài)的一種機(jī)制,EnableViewState屬性設(shè)立為false即可禁用。最有力的舉例子:Label、TextBox在禁用ViewState后不同的表現(xiàn)來說明。48、你對webservice的體會?答:假如自己寫的一些程序也希望別人可以通過Web服務(wù)來使用,也可以把自己編寫的方法貼上標(biāo)簽[WebMethed]來實現(xiàn)Web服務(wù)。[是當(dāng)編寫程序時,希望實現(xiàn)一些別的網(wǎng)站已經(jīng)實現(xiàn)過的,也用Web服務(wù)可視成XML語言的編碼??梢允褂脛e人的編碼生成的XML找到自己需要的信息,來實現(xiàn)自己編寫的程序的一些功能。把傳智播客.net培訓(xùn)的如鵬網(wǎng)項目中用WebService實現(xiàn)管理客戶端的例子說出來。SOAP、WSDL。49、您在什么情況下會用到虛方法?它與接口有什么不同?答案:子類重新定義父類的某一個方法時,必須把父類的方法定義為virtual在定義接口中不能有方法體,虛方法可以。實現(xiàn)時,子類可以不重新定義虛方法,但假如一個類繼承接口,那必須實現(xiàn)這個接口。50.不定項選擇:(1)以下敘述對的的是:BCA.接口中可以有虛方法。B.一個類可以實現(xiàn)多個接口。

C.接口不能被實例化。D.接口中可以包含已實現(xiàn)的方法。(2)從數(shù)據(jù)庫讀取記錄,你也許用到的方法有:BCD

A.ExecuteNonQuery

B.ExecuteScalar

C.Fill

D.ExecuteReader(3).對于一個實現(xiàn)了IDisposable接口的類,以下哪些項可以執(zhí)行與釋放或重置非托管資源相關(guān)的應(yīng)用程序定義的任務(wù)?(多選)

(

ABC

)

A.CloseB.DisposeC.Finalize

D.usingE.Quit

(4)以下關(guān)于ref和out的描述哪些項是對的的?(多選)

(

ACD

)

A.使用ref參數(shù),傳遞到ref參數(shù)的參數(shù)必須最先初始化。

B.使用out參數(shù),傳遞到out參數(shù)的參數(shù)必須最先初始化。

C.使用ref參數(shù),必須將參數(shù)作為ref參數(shù)顯式傳遞到方法。

D.使用out參數(shù),必須將參數(shù)作為out參數(shù)顯式傳遞到方法。

51.單項選擇:(1)下列選項中,(C)是引用類型。a)enum類型

b)struct類型

c)string類型

d)int類型(2).關(guān)于ASP.NET中的代碼隱藏文獻(xiàn)的描述對的的是(C)a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的創(chuàng)建用于與窗體交互。編程邏輯唯一與用戶界面不同的文獻(xiàn)中。該文獻(xiàn)稱作為“代碼隱藏”文獻(xiàn),假如用C#創(chuàng)建,該文獻(xiàn)將具有“.a(chǎn)scx.cs”擴(kuò)展名。b)項目中所有Web窗體頁的代碼隱藏文獻(xiàn)都被編譯成.EXE文獻(xiàn)。c)項目中所有的Web窗體頁的代碼隱藏文獻(xiàn)都被編譯成項目動態(tài)鏈接庫(.dll)文獻(xiàn)。d)以上都不對的。(3).下列描述錯誤的是(D)a)類不可以多重繼承而接口可以;b)抽象類自身可以定義成員而接口不可以;c)抽象類和接口都不能被實例化;d)一個類可以有多個基類和多個基接口;52、Dat(yī)aReader和DataSet的異同?DataReader使用時始終占用SqlConnection,在線操作數(shù)據(jù)庫每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的是只進(jìn)的、只讀的DataSet則是將數(shù)據(jù)一次性加載在內(nèi)存中.拋棄數(shù)據(jù)庫連接..讀取完畢即放棄數(shù)據(jù)庫連接(非連接模式)DataSet將數(shù)據(jù)所有加載在內(nèi)存中.所以比較消耗內(nèi)存...但是確比DataReader要靈活..可以動態(tài)的添加行,列,數(shù)據(jù).對數(shù)據(jù)庫進(jìn)行回傳更新操作(動態(tài)操作讀入到內(nèi)存的數(shù)據(jù))53、publicstaticconst;intA=1;這段代碼有錯誤么?錯誤:const不能被修飾為static;由于定義為常量(const)后就是靜態(tài)的(static)。54、傳入某個屬性的set方法的隱含參數(shù)的名稱是什么?value,它的類型和屬性所聲名的類型相同。55、C#支持多重繼承么?類之間不支持,接口之間支持。類對接口叫做實現(xiàn),不叫繼承。56、C#中所有對象共同的基類是什么?System.Object57、通過超鏈接如何傳遞中文參數(shù)?答:用URL編碼,通過QueryString傳遞,用urlencode編碼用urldecode解碼58、string、String;int、Int32;Boolean、bool的區(qū)別String、Int32、Boolean等都屬于.Net中定義的類,而string、int、bool相稱于C#中對這些類定義的別名。CTS。59、Server.Transfer和Response.Redirect的區(qū)別是什么?(??迹┐穑篠erver.Transfer僅是服務(wù)器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址;Response.Redirect則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。Server.Transfer是服務(wù)器請求資源,服務(wù)器直接訪問目的地址的URL,把那個URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器主線不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是本來的地址。這個過程中瀏覽器和Web服務(wù)器之間通過了一次交互。Response.Redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新請求。這個過程中瀏覽器和Web服務(wù)器之間通過了兩次交互。60、不是說字符串是不可變的嗎?strings="abc";s="123"不就是變了嗎?(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)String是不可變的在這段代碼中,s原先指向一個String對象,內(nèi)容是"abc",然后我們將s指向"123",那么s所指向的那個對象是否發(fā)生了改變呢?答案是沒有。這時,s不指向本來那個對象了,而指向了另一個String對象,內(nèi)容為"123",本來那個對象還存在于內(nèi)存之中,只是s這個引用變量不再指向它了。61、是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用?不可以。由于非static方法是要與對象關(guān)聯(lián)在一起的,必須創(chuàng)建一個對象后,才可以在該對象上進(jìn)行方法調(diào)用,而static方法調(diào)用時不需要創(chuàng)建對象,可以直接調(diào)用。也就是說,當(dāng)一個stat(yī)ic方法被調(diào)用時,也許還沒有創(chuàng)建任何實例對象,假如從一個static方法中發(fā)出對非stat(yī)ic方法的調(diào)用,那個非static方法是關(guān)聯(lián)到哪個對象上的呢?這個邏輯無法成立,所以,一個static方法內(nèi)部不能發(fā)出對非static方法的調(diào)用。62、.Net中會存在內(nèi)存泄漏嗎,請簡樸描述。(*)所謂內(nèi)存泄露就是指一個不再被程序使用的對象或變量一直被占據(jù)在內(nèi)存中。.Net中有垃圾回收機(jī)制,它可以保證一對象不再被引用的時候,即對象編程了孤兒的時候,對象將自動被垃圾回收器從內(nèi)存中清除掉。雖然.Net可以回收無用的對象,但是.Net仍然存在由于使用不妥導(dǎo)致的內(nèi)存泄露問題。.Net中的內(nèi)存泄露的情況:長生命周期的對象持有短生命周期對象的引用就很也許發(fā)生內(nèi)存泄露,盡管短生命周期對象已經(jīng)不再需要,但是由于長生命周期對象持有它的引用而導(dǎo)致不能被回收,這就是.Net中內(nèi)存泄露的發(fā)生場景,通俗地說,就是程序員也許創(chuàng)建了一個對象,以后一直不再使用這個對象,這個對象卻一直被引用,即這個對象無用但是卻無法被垃圾回收器回收的,這就是.Net中也許出現(xiàn)內(nèi)存泄露的情況,例如,緩存系統(tǒng),我們加載了一個對象放在緩存中(例如放在一個全局Dictionary對象中),然后一直不再使用它,這個對象一直被緩存引用,但卻不再被使用。formManager{publicstaticIList<Form>forms=new;}擴(kuò)展:使用弱引用那么及時被引用也可以被回收。63、說出一些常用的類、接口,請各舉5個要讓人家感覺你對.Net開發(fā)很熟,所以,不能僅僅只列誰都能想到的那些東西,要多列你在做項目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。常用的類:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>常用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary要出乎意料!不要僅僅完畢任務(wù)!64、BS與CS的聯(lián)系與區(qū)別。C/S是Client/Server的縮寫??蛻舳诵枰惭b專用的客戶端軟件。B/S是Brower/Server的縮寫,客戶機(jī)上只要安裝一個瀏覽器。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),但是重要邏輯在服務(wù)器端實現(xiàn)。瀏覽器通過WebServer同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。C/S與B/S區(qū)別:1).硬件環(huán)境不同:C/S一般建立在專用的網(wǎng)絡(luò)上,小范圍里的網(wǎng)絡(luò)環(huán)境,局域網(wǎng)之間再通過專門服務(wù)器提供連接和數(shù)據(jù)互換服務(wù).B/S建立在廣域網(wǎng)之上的,不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例與電話上網(wǎng),租用設(shè)備.信息自己管理.有比C/S更強(qiáng)的適應(yīng)范圍,一般只要有操作系統(tǒng)和瀏覽器就行2).對安全規(guī)定不同C/S一般面向相對固定的用戶群,對信息安全的控制能力很強(qiáng).一般高度機(jī)密的信息系統(tǒng)采用C/S結(jié)構(gòu)適宜.可以通過B/S發(fā)布部分可公開信息.B/S建立在廣域網(wǎng)之上,對安全的控制能力相對弱,也許面向不可知的用戶。3).解決問題不同C/S程序可以解決用戶面固定,并且在相同區(qū)域,安全規(guī)定高需求,與操作系統(tǒng)相關(guān).應(yīng)當(dāng)都是相同的系統(tǒng)。C/S的客戶端由于是本地程序,因此和本地硬件、程序的交互性很強(qiáng),比如可以控制本機(jī)的其他程序、可以讀寫本地磁盤文獻(xiàn)、可以與硬件交互。B/S建立在廣域網(wǎng)上,面向不同的用戶群,分散地區(qū),這是C/S無法作到的.與操作系統(tǒng)平臺關(guān)系最小,正應(yīng)為如此B/S很難和本地硬件、程序、文獻(xiàn)進(jìn)行交互,比如很難控制本機(jī)的其他程序、很難讀寫本地磁盤文獻(xiàn)、很難與硬件交互,當(dāng)然可以用ActiveX技術(shù)解決,比如網(wǎng)銀等就是這么解決的,這樣做的問題就是也許會被客戶拒絕,并且只局限于Windows操作系統(tǒng)。65、編寫一個單例(Singleton)類。參考復(fù)習(xí)ppt。把構(gòu)造函數(shù)設(shè)立為private,設(shè)立一個public、static的對象實例publicFileManager{privateFileManager(){}publicstaticFileManagerInstance=newFileManager();}擴(kuò)展:搜“C#Singleton”,有線程安全的更牛B的實現(xiàn)

66、什么是sql注入?如何避免sql注入?用戶根據(jù)系統(tǒng)的程序構(gòu)造非法的參數(shù)從而導(dǎo)致程序執(zhí)行不是程序員盼望的惡意SQL語句。使用參數(shù)化的SQL就可以避免SQL注入。具體參考復(fù)習(xí)ppt。舉例子,擺事實!1'or1=167、數(shù)據(jù)庫三范式是什么?用自己的話解釋,而不是背概念。傳智播客風(fēng)格的非嚴(yán)謹(jǐn)卻一下子明了的解答方式:第一范式:字段不能有冗余信息,所有字段都是必不可少的。第二范式:表必須有主鍵。第三范式:表引用其他的表必須通過主鍵引用。1)不一定滿足第一范式,比如拼音檢索中增長一個“拼音”字段。68、說出一些數(shù)據(jù)庫優(yōu)化方面的經(jīng)驗?(1)在經(jīng)常檢索的字段上(select*fromPersonwhereName=@Name)使用索引提高查詢速度。索引內(nèi)部原理:想象成Dictionary,插入、刪除、更新的速度慢了,加上索引也多占用了空間,查詢的速度快了,加上索引以后速度提高非常明顯。(2)select中只列出必要的字段,而不是*。(3)避免隱式類型轉(zhuǎn)換導(dǎo)致的全表掃描,在索引上使用函數(shù)也會導(dǎo)致全表掃描(由于索引只是為字段建立的,一旦使用表達(dá)式或者函數(shù),那么索引就是失效了,當(dāng)然也可以使用“函數(shù)索引”、“表達(dá)式索引”解決這個問題),使用索引不一定能提高查詢速度。比如對于Name字段使用SubStr進(jìn)行過濾就會導(dǎo)致全表掃描。(4)避免在索引列上使用計算(whereName+'A'=@MyName)加分的回答:不進(jìn)行無意義優(yōu)化,根據(jù)性能查看器的報表,對最耗時的SQL進(jìn)行優(yōu)化。(5)分表。T_Comments,T_Comments_1,T_Comments_2、T_Comments_3,不同的表放到不同的服務(wù)器上、磁盤上。需要程序進(jìn)行解決。69、什么是數(shù)據(jù)庫事務(wù)?事務(wù)三個特性:一致性、原子性、隔離性。幾個SQL語句,要么所有執(zhí)行成功,要么所有執(zhí)行失敗。舉例就用最經(jīng)典的銀行轉(zhuǎn)賬的例子就行,然后再舉一個項目中用的例子:傳智播客.net培訓(xùn)中批量導(dǎo)入客戶數(shù)據(jù)的時候要么所有導(dǎo)入成功,要么所有導(dǎo)入失敗。事務(wù)的三個操作:Begin、Commit、RollBack。取剛插入數(shù)據(jù)的id值,就要用事務(wù)來隔離:Insert和selecttop1idfrom70、談?wù)勀銓υO(shè)計模式的理解(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)世界上本沒有模式,用的人多了,也就有了模式。不用刻意記每種模式的名字,手中無模式,心中有模式。大部分設(shè)計模式就是接口、抽象類的一個組合。ADO.Net基于接口編程,SafeDbCommand、SafeConnection。SettingsProvider。沒必要記模式的名字。舉例:傳智播客.net培訓(xùn)時SettingsProvider的例子、工廠模式的例子。71、談?wù)刅iewState。談?wù)剬SP.Net原理的理解。談?wù)凙SP.Net生命周期。Label、Textbox在禁用ViewState的時候自增的不同表現(xiàn)Http是無狀態(tài)的,WebForm為了實現(xiàn)基于http的“有狀態(tài)”從而簡化開發(fā),ViewState用來在兩次請求間保持狀態(tài)。頁面返回前將界面的狀態(tài)序列化到ViewState中,這樣就將狀態(tài)保存在了瀏覽器中,下次頁面提交的時候會順便再將ViewState提交到服務(wù)器,這樣服務(wù)器就根據(jù)ViewState還原了狀態(tài),這樣WebForm開發(fā)就像有狀態(tài)同樣了。談?wù)勛远xAutoInc控件。72、post、get的區(qū)別get的參數(shù)會顯示在瀏覽器地址欄中,而post的參數(shù)不會顯示在瀏覽器地址欄中;使用post提交的頁面在點(diǎn)擊【刷新】按鈕的時候瀏覽器一般會提醒“是否重新提交”,而get則不會;用get的頁面可以被搜索引擎抓取,而用post的則不可以;用post可以提交的數(shù)據(jù)量非常大,而用get可以提交的數(shù)據(jù)量則非常小(2k),受限于網(wǎng)頁地址的長度。用post可以進(jìn)行文獻(xiàn)的提交,而用get則不可以。參考閱讀:73、下面的程序執(zhí)行結(jié)果是什么?(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)classPerson{publiAge{get;set;}}inti1=20;inti2=i1;i1++;Console.WriteLine(i2);Personp1=newPerson();p1.Age=20;Personp2=p1;p1.Age++;Console.WriteLine(p2.Age);答案:2021解釋:引用類型和值類型的區(qū)別。74、Http默認(rèn)的端標(biāo)語是(80)、Ftp默認(rèn)的端標(biāo)語是(21)、SQLServer的默認(rèn)端標(biāo)語是(1433)(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)75、運(yùn)算符++a表達(dá)(先將a加1,然后表達(dá)式的值為a加1后的值),i++表達(dá)(表達(dá)式的值為a,然后a加1)。76、下面程序的執(zhí)行結(jié)果是什么?(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)inti=10;Console.WriteLine(i++);Console.WriteLine(++i);Console.WriteLine(i=20);答案:101220解答:前兩個參考第80題,i++表達(dá)式的值為i自增之前的值,所以打印10,執(zhí)行完畢后i變成11,執(zhí)行++i的時候表達(dá)式的值為自增以后的值12。C#中賦值表達(dá)式的值為變量被賦值的值,因此最后一個就輸出i賦值后的值20while((line=reader.ReadLine())?。絥ull){}77、假如不用VisualStudio,用哪個命令行編譯C#程序?(*)(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)答:csc.exe。格式:csc.exeTest.cs78、下列哪個名詞和WebService不直接相關(guān)?(B)(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)A、UDDIB、GUIDC、WSDLD、SOAPSOAP和HTTP的關(guān)系:SOAP基于Http協(xié)議的,和普通網(wǎng)頁不同的是網(wǎng)頁返回HTML,SOAP則是符合SOAP協(xié)議的XML數(shù)據(jù)。79、.NetFramework中的類是專門供C#調(diào)用的是嗎?(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)答:錯。VB.Net等語言都可以調(diào)用.NetFramework中的類。CTS、CLS。80、開放性問題:說出盡也許多的基于.NetFramework的語言。(*)(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)參考解答:C#、VB.Net、F#、PowerShell、IronPython、J#、Ruby.Net81、.Net、ASP.Net、C#、VisualStudio之間的關(guān)系是什么?(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)答:.Net一般指的是.NetFramework,提供了基礎(chǔ)的.Net類,這些類可以被任何一種.Net編程語言調(diào)用,.NetFramework還提供了CLR、JIT、GC等基礎(chǔ)功能。ASP.Net是.Net中用來進(jìn)行Web開發(fā)的一種技術(shù),ASP.Net的頁面部分寫在aspx

文獻(xiàn)中,邏輯代碼通常通過Code-behind的方式用C#、VB.Net等支持.Net的語言編寫。C#是使用最廣泛的支持.Net的編程語言。除了C#尚有VB.Net、IronPython等。VisualStudio是微軟提供的用來進(jìn)行.Net開發(fā)的集成開發(fā)環(huán)境(IDE),使用VisualStudio可以簡化很多工作,不用程序員直接調(diào)用csc.exe等命令行進(jìn)行程序的編譯,并且VisualStudio提供了代碼自動完畢、代碼高亮等功能方便開發(fā)。除了VisualStudio,尚有SharpDevelop、MonoDevelop等免費(fèi)、開源的IDE,VisualStudioExpress版這個免費(fèi)版本。82、AJAX解決什么問題?如何使用AJAX?AJAX有什么問題需要注意?項目中哪里用到了AJAX?(傳智播客.Net培訓(xùn)班原創(chuàng)模擬題)答:AJAX解決的問題就是“無刷新更新頁面”,用傳統(tǒng)的HTML表單方式進(jìn)行頁面的更新時,每次都要將請求提交到服務(wù)器,服務(wù)器返回后再重繪界面,這樣界面就會經(jīng)歷:提交→變白→重新顯示這樣一個過程,用戶體驗非常差,使用AJAX則不會導(dǎo)致頁面重新提交、刷新。AJAX最本質(zhì)的實現(xiàn)是在Javascript中使用XMLHttpRequest進(jìn)行Http的請求,開發(fā)中通常使用UpdatePanel、JQuery等方式簡化AJAX的開發(fā),Updat(yī)ePanel的方式實現(xiàn)AJAX最簡樸,但是數(shù)據(jù)通訊量比較大,由于要來回傳整個ViewState,并且不靈活,對于復(fù)雜的需求則可以使用JQu

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論