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