經(jīng)過昨天大量的簡歷投遞,今天陸續(xù)收到面試邀約,明日準(zhǔn)備大戰(zhàn)一場,是死是活一試便知
1.數(shù)據(jù)庫的范式
這算入門問題了吧,但凡是個(gè)數(shù)據(jù)庫類的,都得問吧,
但我們?cè)诨卮鸬臅r(shí)候開始背書啦
還有什么BCNF,是不是看了好像十分清楚,但不看又好像懵懵懂懂的。
說個(gè)我的記憶方式吧
第一范式,1NF,無重復(fù)列,字段不冗余且必不可少。這必須得記住
第二范式,2NF,滿足第一范式且表必須有主鍵
第三范式,3NF,滿足第二范式且表引用其他表必須通過主鍵引用
以上是不是好些了呢,這個(gè)時(shí)候你以為回答完畢就又被面試官給逮著了,你提到了主鍵了吧
開始擴(kuò)展問了,數(shù)據(jù)庫建立主鍵的原則
我們常常會(huì)蒙,原則,什么原則,不就是我們常常用到的ID,自增長嗎,唯一性,好像沒什么原則吧。
其實(shí)很多在日常的工作中我們已經(jīng)注意了,只是不知道如何描述
關(guān)于原則內(nèi)容內(nèi)容,可以拜讀:http://www.survivalescaperooms.com/studyzy/p/3309350.html
分析得十分透徹,特別是其中提到的 《數(shù)據(jù)庫主鍵與業(yè)務(wù)主鍵》。可以用此和面試官好好談?wù)?,這樣會(huì)顯得你對(duì)此有深入的研究,提升自己的實(shí)力形象
提到主鍵,就會(huì)繼續(xù)發(fā)展到索引,隨便問個(gè)數(shù)據(jù)庫有哪幾種索引,這個(gè)基礎(chǔ)吧
A)聚集索引,表數(shù)據(jù)按照索引的順序來存儲(chǔ)的。
B)非聚集索引,表數(shù)據(jù)存儲(chǔ)順序與索引順序無關(guān)。
關(guān)于索引:http://kb.VEVb.com/page/45712/
繼續(xù)往下問的話就是數(shù)據(jù)庫優(yōu)化方面來,橫向分區(qū),縱向分表
這可以參考:http://www.survivalescaperooms.com/yukaizhao/archive/2010/05/31/sql-server-table-split-partition.html
以上我都點(diǎn)到即止,會(huì)的同學(xué),會(huì)心一笑即可,不會(huì)的同學(xué),愿意的,復(fù)制鏈接去看看吧,能增強(qiáng)內(nèi)力的
最后推薦一篇SQL Server高性能寫入方面的文章:http://kb.VEVb.com/page/156213/
2.C#中,值類型和引用類型的區(qū)別
很多時(shí)候,我們由于沒有把這個(gè)底層問題搞清楚,導(dǎo)致我們的程序看起來好像是對(duì)的,但運(yùn)行的結(jié)果不符合我們的期望
百度的這篇文章:http://jingyan.baidu.com/article/7082dc1c524b14e40b89bd6d.html
很形象的解釋了值類型和引用類型以及堆和棧,你還記不住什么是堆的話,文章中的三角形一樣的圖片,那是個(gè)堆的形狀吧,形意結(jié)合,是不是清楚了很多。
記得要補(bǔ)充,不同的值類型,在棧中分配的空間大小不一樣。不同的引用類型,在棧中分配的空間上一樣的,在堆中空間不一樣
C#的所有值類型均隱式派生自System.ValueType:
如 Sbyte,byte,short,int,long,DateTime,ushort,unit,ulong,char,float,double,decimal,bool,struct,enum,還有可空類型,如int?是值類型
引用類型:數(shù)組,類,接口,委托,Object,String
例外情況來了,一定要說:值類型的實(shí)例會(huì)存儲(chǔ)在棧上,但是,當(dāng)某個(gè)類的實(shí)例有個(gè)字段是值類型,那么實(shí)際該字段會(huì)和類的實(shí)例保持在同一個(gè)地方,即堆上。是不是突然高大上了
別慌,這個(gè)只是入門,面試官開始擴(kuò)展了
String 能不能繼承?。。?/p>
F12我們發(fā)現(xiàn),string是被sealed修飾的。
英文不好了吧
sealed :密封,
故名思義,就是由它修飾的類或方法將不能被繼承或是重寫。
再繼續(xù)追問下去就可以擴(kuò)展到諸如override,和overload等等方面的關(guān)鍵字上面了
關(guān)于override 和 overload 參考:http://www.survivalescaperooms.com/netlyf/archive/2009/09/08/1562642.html
還有如Final,finaly,finallize的區(qū)別
final 修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。 一句話:final修飾類時(shí):沒有祖先的光棍(不能繼承也不能被繼承),final修飾變量或者方法時(shí):固定的,只能拿來用,不能改。
finally 在異常處理時(shí)提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)
3、finalize 方法名。使用 finalize() 方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。
PS,摘自網(wǎng)絡(luò)
Final并不是一個(gè)C#中的關(guān)鍵字,但經(jīng)常在C#面試題中出現(xiàn),例如說說“Final、Finally、finalize的區(qū)別”,其實(shí)這已經(jīng)超出C#的范疇,這三個(gè)關(guān)鍵字分別考核了J#、.Net 容錯(cuò)方法、.Net垃圾收集機(jī)制,奇怪的是,每次我面試C#程序人員時(shí),大部分人員對(duì)Final這個(gè)關(guān)鍵字并無陌生之感,相反卻答得頭頭是道,看來來面試之前,早在網(wǎng)上有所預(yù)習(xí),呵呵。
以上,只為博君一笑,明天加油!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注