.net程序員面試小結(內附一些面試題和答案)


  今天下午去面試,面試官和HR小姐姐都很好,沒有做面試題,用聊天的方式來交流技術,整個過程很輕松,從中也學到了很多知識。

下面就來總結一下面試過程。

一、深刻了解自己的簡歷

無論是HR還是技術面試人,首先都從簡歷里面了解你,我的這個面試題都是圍繞着我的簡歷中提到的技術來開展的,令我不好意思的是有好多問題我並不能給出很好的深層次的答案。

二、生活業余時間也要擴展自己

平時多關注技術類新聞,多寫博客注意積累,這個也有問到哦。

三、問題總結

1、三層架構是哪三層?各自干什么?三層架構有什么優缺點?(鏈接:http://blog.163.com/jlkjwjh_changfeng/blog/static/3633782620108269504961/

三層指

表現層(UI):用戶看到的界面

業務邏輯層(BLL):對數據層的操作,對數據業務邏輯的處理。

數據訪問層(DAL):直接操作數據庫,對數據進行查找、增添、修改、刪除等操作。

優點:

1)、開發人員可以只專注於整個結構中的某一層

2)、可以很容易用新的實現來替換原有層次的實現

3)、安全性高

4)、降低層與層之間的依賴,高內聚,低耦合

(內聚:一個模塊內各個元素彼此結合的緊密程度;耦合:一個軟件結構內不同模塊之間互連程度的度量)

5)、有利於標准化

6)、利於各層邏輯的復用。

7)、擴展性強

8)、項目結構更清楚,分工更明確,有利於后期的升級和維護

缺點:

1)、降低了系統的性能,比如操作數據庫需要中間層,而不是直連

2)、有可能會導致級聯的修改,比如新加一個模塊,需要三個層都新加。

3)、增加了成本,增加了代碼量

=================================================================================

2、EF(entityFramework)和ADO.NET的對比(鏈接:http://blog.csdn.net/wangzl1163/article/details/72897170

1)、使用EF開發只需要操作對象,使開發更對象化,拋棄了數據庫為中心的思想,完全的面向對象的思想。ADO.NET以數據庫為中心來開發數據訪問層。

2)、采用EF減少了數據處理工作,可以簡化開發,達到快速開發的目的。采用ADO.NET開發需要編寫sql語句,並處理數據與對象的轉換,開發效率低。

3)、EF消耗內存較大,ADO.NET消耗內存較小。EF的性能不如ADO.NET。

4)、EF處理數據庫的方式是針對單個對象的,對數據庫的增刪改都是對一條記錄而言。ADO.NET既適合逐條語句處理數據也適合批量刪除、修改數據。

5)、EF不適合數據庫中有大量存儲過程、觸發器的開關,此時ADO.NET適合。

6)、EF適用於表與表關系比較明確的環境中。如本應有外鍵關系,但又沒建外鍵的,這是適用EF會增加工作量。ADO.NET對此沒有要求。

===================================================================================

3、UEditor(百度富文本編輯器)和KindEditor的區別(鏈接:https://www.zzidc.com/info/biancheng/2508.htmlhttp://blog.csdn.net/u013987661/article/details/54378005

1)、Ke(KindEditor)要比Ue(UEditor)小

2)、Ke和Ue的容器不同,一個是textarea標簽,一個是script標簽,如果是ke的textarea標簽的話,表單的參數名可以通過name指定,而ue提交表單的默認參數名是editorValue,可以通過創建對象的時候傳入textarea參數解決。

KindEditor:

<textarea name="content"></textarea>

UEditor:

<script type="text/javascript">
 var ue = UE.getEditor('editor',{toolbars: [
    ['fullscreen', 'source', 'undo', 'redo'],
    ['bold', 'italic']
],textarea:"content"});
</script>

====================================================================================

4、重載(overload)和重寫(override)的區別(鏈接:https://www.cnblogs.com/lonelyDog/archive/2011/11/16/2251011.html

overload是重載,一般是用於在一個類內實現若干重載的方法,這些方法的名稱相同而參數形式不同。

重載的規則:

   1、在使用重載時只能通過相同的方法名、不同的參數形式實現。不同的參數類型可以是不同的參數類型,不同的參數個數,不同的參數順序(參數類型必須不一樣);

   2、不能通過訪問權限、返回類型、拋出的異常進行重載;

   3、方法的異常類型和數目不會對重載造成影響;

override是重寫(覆蓋)了一個方法,以實現不同的功能。一般是用於子類在繼承父類時,重寫(重新實現)父類中的方法。

重寫(覆蓋)的規則:

   1、重寫方法的參數列表必須完全與被重寫的方法的相同,否則不能稱其為重寫而是重載.

   2、重寫方法的訪問修飾符一定要大於被重寫方法的訪問修飾符(public>protected>default>private)。

   3、重寫的方法的返回值必須和被重寫的方法的返回一致;

   4、重寫的方法所拋出的異常必須和被重寫方法的所拋出的異常一致,或者是其子類;

   5、被重寫的方法不能為private,否則在其子類中只是新定義了一個方法,並沒s有對其進行重寫。

   6、靜態方法不能被重寫為非靜態的方法(會編譯出錯)。

===================================================================================

5、對委托和事件怎么理解(鏈接:http://www.tracefact.net/tech/009.html

委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性。使用委托可以將多個方法綁定到同一個委托變量,當調用此變量時(這里用“調用”這個詞,是因為此變量代表一個方法),可以依次調用所有綁定的方法。

事件是一種特殊的委托的實例,或者說是受限制的委托,是委托一種特殊應用,在類的外部只能施加+=,-=操作符。

===================================================================================

6、快速開發的工具有哪些?(這個我沒有接觸過T_T,希望有用過的能夠告知一下,謝謝)

===================================================================================

7、sqlite和MS Sql server有什么不同

sqlite 是文件型數據庫,是輕量級數據庫,對小數據量的數據存儲方便。

sqlserver是關系型數據庫,是大型數據庫,常用於企業級應用的后台數據存儲。

語法的不同參考鏈接:http://blog.csdn.net/xsl1990/article/details/16851593

====================================================================================

好啦,就先總結這么多吧,以后慢慢再添,其實還有設計模式還有前端的一些問題沒有寫。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM