.Net面試經驗總結(.Net/C#)


首先是簡歷

 

 

簡歷一定要認真對待,不能隨隨便便找個模板,它是你能不能得到面試的一個關鍵。
簡歷的模板可以參考該網站超級簡歷的程序員簡歷模板。

自我介紹

 

 

這里說一下我的一個主要模板,需要根據不同的公司有針對的准備不同的自我介紹。各位面試官,您們好,很高興得到這次面試機會,我叫XXX,畢業於XXX,具有較強的自學能力,在校期間通過自學掌握了相關的編程技術,
參加工作以來,先后獨立開發了幾個項目模塊,主要包括XXX等,其中讓我收獲最大的一個項目是XXX,當時接到的任務就是XXX,在此期間我的主要任務參與前期的一些設計討論以及后面的開發和維護,…………(這里可以介紹你通過什么技術解決了什么,完成了什么任務等)。經過這個項目開發使我在技術的掌握和問題的處理上都有了很大的進步。
我今天求職的崗位是.Net開發工程師,在XXX兩年的.Net開發中,一直從事企業級應用管理系統的開發維護,使我擁有了扎實的編程基礎和良好的編碼習慣,並能夠熟練的使用C#語言開發基於Web Form和Asp.Net MVC架構的應用程序。也使我清楚的知道這個崗位的主要工作內容,並使我在這方面有了一定的能力和經驗積累,我相信我能夠勝任該職位的工作,我非常認可並喜歡貴公司的理念,也希望貴公司能夠給我一次機會,讓我加入到貴公司中。謝謝

 

常見的面試題

 

 

面試時大部分都會有筆試題的,下面列舉一些遇到的一些筆試題

.Net

 

 

.Net簡述面向對象中封裝、多態、繼承的概念
答:封裝:把一些功能的實現寫在一個文件中,對外只開放一個接口,調用者通過這個接口來調用方法
繼承:子類繼承父類中的方法和屬性,並且子類可以擁有自己的一些方法和屬性
多態:通過繼承實現不同對象在調用相同的方法時,產生不同的結果,這就是多態,重寫或者重載

簡述private、protected、public修飾符的訪問權限
答:private : 私有成員, 在類的內部才可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 當前程序集內可以訪問。

abstract、class、interface有什么區別
答:相同點:都不能被實例化,都可以通過繼承來實現其抽象方法。
不同點:接口支持多繼承,抽象類不能實現多繼承;
接口只包含方法、屬性、索引器、事件的簽名,但不能定義字段和包含它們的實現;抽象類可以定義字段、屬性、包含有實現的方法。
接口可以作用於值類型和引用類型;抽象類只能作用於引用類型。例如,Struct就可以繼承接口,而不能繼承類。

寫一段C#訪問SqlServer數據庫的代碼(來列舉出ADO.Net中五個主要對象)
答:

 

 

列舉兩種你所使用過的設計模式,簡述他們的概念和好處
答:單例模式:確保一個類只有一個實例,並提供一個訪問它的全局訪問點

C#中值類型與引用類型的區別,作為參數傳遞時有何不同
賦值區別:將一個值類型變量賦給另一個值類型變量時,將復制包含的值。引用類型變量的賦值只把對象的引用的指針賦值給變量,使得變量引用與對象共享同一個內存地址。
繼承區別:值類型不能派生出新的類型:所有的值類型均隱式派生自 System.ValueType。引用類型一般都有繼承性。
內存分配區別:值類型通常分配在棧上,引用類型通常分配在托管堆上
值類型不可能包含 null 值,然而,可空類型功能允許將 null 賦給值類型。
值類型傳遞的是值的副本,引用類型傳遞的是對象引用,所以值參數的修改不影響原始值,引用類型的修改影響原始值;

C#中使用StringBuilder拼接字符串時有何優點
StringBuilder是動態對象,允許擴充他所封裝的字符串中的字符數量,在生成string對象之前,不會產生任何string對象,所以在進行大量的字符串拼接或者頻繁的堆某一個字符串進行操作時最好使用StringBuilder,而不要使用string

C#委托與與泛型的概念,事件是不是一種委托
委托是一種可用於封裝命名和匿名方法的引用類型,委托類似於指針,但是委托是類型安全和可靠的,委托類都繼承於System.Delegate類型,委托類型的聲明和方法簽名類似,有一個返回值和任意數目任意類型的參數。
泛型是C#語言和公共語言運行庫(CLR)中的一個新功能,它將類型參數的概念引入了.NET Framework,通過使用泛型可以大大的簡化強制類型轉換或裝箱操作的過程。

一列數的規則如下:1、1、2、3、5、8、13、21、34……求第30位數是多少,用遞歸算法實現
解答:總結遞歸規律:F(n)=F(n-2)+F(n-1) Fibonacci數列

圖片

簡述進程和線程的區別,以及寫出多線程常用的對象和方法
進程是系統進行資源分配和調度的單位;線程是進程內部的一個執行單元,是CPU調度和分派的單位,一個線程可以創建和撤銷另一個線程,同一個進程中的多個線程也可以並發執行

圖片

簡述WebService、WebApi、WCF的區別,以及使用場景

列舉Asp.Net頁面之間傳遞值的幾種方式

1.使用QueryString, 如…?id=1; response. Redirect()…
2.使用Session變量
3.使用Server.Transfer
4.Cookie傳值

Asp.Net Session有什么作用,請描述你對Session的理解

簡述重載和重寫的概念,並手寫一個簡易的重載和重寫
重載是方法的名稱相同。參數或參數類型不同,進行多次重載以適應不同的需要。重載是面向過程的概念

圖片

重寫(Override)是對基類中的虛方法進行重寫。Override是面向對象的概念

圖片

C#如何捕獲代碼異常
try
{
可能會出現異常的代碼;
}
cath
{
出現異常后要執行的代碼;
}現有集合:List collection = new List();
User類定義如下:

圖片

請使用Linq或者Lambda一種實現以下查詢

1.查詢姓名中包含“張”的所有人

2.查詢年齡在20到30歲之間的人(包含)

3.查詢出2008年三月出生的所有人

4.查詢姓名等於“張三”年齡最大的第一個人

5.按年齡分組查詢每段年齡有多少人

是否使用過EF、Dapper等ORM、框架,簡述這些框架的好處
提高開發效率,降低開發成本
使開發更加對象化
可移植
可以很方便地引入數據緩存之類的附加功能

 

 

WEB端的

 

 

JavaScript中的基礎類型有哪些
Undefined、Null、Boolean、Number和String

簡述函數與閉包的概念
函數:就是封裝了一段可被重復調用執行的代碼塊,通過此代碼塊可以實現大量代碼的重復使用
閉包就是能夠讀取其他函數內部變量的函數,由於在Javascript語言中,只有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成“定義在一個函數內部的函數”

請寫出jQuery id class 屬性 標簽選擇器語法
id選擇器:KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲ids')、類選擇器:(’.myClass’)、元素選擇器:$(‘div’)

Ajax的概念,ajax請求的五個步驟
AJAX(即:異步的JavaScript和XML),是一種實現無頁面刷新獲取服務器數據的混合技術。

 

 

SQL方面的

 

 

用一條SQL語句查詢出每門課程都大於80的學生的姓名

圖片

答:

圖片

使用SQL實現分頁查詢

圖片

寫一條sql語句取出表A中第31到40的記錄(SqlServer,以自動增長的ID作為主鍵,注意:ID可能不是連續的)
答:

圖片

編寫SQL根據部門信息T_Org中的部門編號OrgCD、部門名稱字段OrgName、以及員工信息表T_Employee中所屬部門編號字段OrgCD、來更新員工信息表T_Employee中的所屬部門字段OrgName

找出教師表(表名Teacher)中姓名(字段名Name)重復的數據,然后刪除多余重復的記錄,只留ID小的那個。

什么叫Sql注入,如何防止?
答:
用戶根據系統的程序構造非法的參數從而導致程序執行不是程序員期望的惡意SQL語句。使用參數化的SQL就可以避免SQL注入。

介紹存儲過程的基本概念和它的優缺點
答:
存儲過程是一套已經預先編譯好的SQL代碼

1.運行速度:存儲過程一旦執行,在內存中就會保留一份這個存儲過程,這樣下次再執行同樣的存儲過程時,可以從內存中直接調用,所以執行速度會比普通sql快。

2.減少網絡傳輸:存儲過程直接就在數據庫服務器上跑,所有的數據訪問都在數據庫服務器內部進行,不需要傳輸數據到其它服務器,所以會減少一定的網絡傳輸。

3.可維護性

4.增強安全性

5.可擴展性:應用程序和數據庫操作分開,獨立進行

現有一學生表如下:

圖片

請編寫Sql查詢出如下結果:

6.獲取每個班級的English的平均成績,並按照降序排序

7.獲取有一門不及格的人,並統計每個班級的不及格人數(小於60分不及格)

注意:上面是找工作期間常遇到的部分面試題,其中設計模式基本都會考到

 

項目經驗

 

 

這個是面試中最重要的了,基本都會根據你做的項目來進行詢問里面遇到的一些技術,遇到的一些問題怎么解決的等等,這就要根據自己的項目來回答了

 

開放性問題

 

 

在工作中學習到了什么?
首先技術方面每個項目都會學到一些特定的技術知識,我在與同事的溝通合作中,注重團隊內部的團結,在工作中學習認識到合作的寶貴,以及實踐的重要性。

你有沒有帶領團隊的經驗
我在以往的項目中與團隊成員都能夠融洽相處,我們每周都會有技術培享會,我也會分享一些技術來相互學習,我們有時候周六會有技術的培訓,我也針對自己掌握的技術做了幾次培訓,雖然我沒有帶隊的經驗,但我相信我自己是能夠做到的

為什么選擇這家公司?
我了解到貴公司在ERP行業屬於領頭行業,業務方面最為全面,研發實力也最為雄厚,通過公司的官方博客我還了解到公司的企業文化,我非常希望能加入到這樣一個優秀的企業中,讓我能夠實戰研發能力,我會女里的工作,證明自身的價值

對本公司了解多少?
我了解到貴公司是中國最早的互聯網即時通信軟件開發商,是我國互聯網服務以及移動增值服務的提供商,並一直致力於即時通信以及相關的增值業務的服務運營

你曾經面臨最大的專業挑戰是什么?你是怎么戰勝它的?
在項目開發過程中也遇到了很多問題,其中讓我印象比較深刻的一個問題是XXX,通過這個問題也是我認識到,在編寫代碼時不僅要注意代碼的邏輯和可讀性,同時也要考慮一下這些代碼有沒有可能會出現某些問題。

你認為自己的技術水平怎么樣?
經過這兩年的積累和成長,我對自己的技術很有信心,我覺得我算一個中級的開發者,我感覺我可以勝任相關的各種開發任務

你對加班的看法?
如果是工作需要,我會義不容辭的加班,我本身沒有什么負擔,可以全身心的投入到工作中,同時我也會提高工作效率,減少不必要的加班

如何評價你上家公司,你為什么從上家公司離職?
上一家公司在項目管理和系統集成方面較為突出,從中也學習到了很多的東西,經過這兩年對ERP中一些系統的研發,使我了解了相關的業務流程並掌握了很多開發上的技巧,以及相關的一些技術,
以前的行業發展空間比較有限
原來的工作與自己的職業規划不合
原來的業務相對傳統,我想做一些偏向互聯網方面的一些產品,
公司在新的研發方向上沒有一個明確的信息,
自己在過去的幾年中也有了一定的經驗積累,所以想尋求更適合自己發揮的一個平台
並且公司所用的技術棧不夠豐富,
我對XXX類系統的前景更看好,我也希望能夠擴展自己的技能和對業務的了解,因此我希望尋找一家做專業的B2B系統的企業,所以做了離職的決定

你有什么優點?
我的優點是有足夠的專業能力,工作認真負責,比如在項目的開發過程中,我作為項目的主要開發人員,每天都會認真規划和編寫開發日程,方便其他成員了解開發進度並及時跟進項目進度

你有什么缺點?
缺點的話,比較執着把,比如有時候會因為一個技術問題導致很長時間或者可能加班到很晚都在研究怎么處理這個問題,這樣有時候也會誤了其他方面的工作,工作比較按部就班吧,總是按照主管的要求去完成任務,還有就是自己的工作范圍內有創新意識,但是沒有及時的分享給其他的同事,這些問題我也一直在改善,我也相信我能夠很快的解決

你的職業規划是什么?
現在最大的願望就是能入職貴公司,虛心向周圍優秀的同事學習,追趕他們,讓自己變得更專業,然后三到五年的一個計划就是達到高級工程師的水平,在此期間我也會注重自己管理方面知識的積累,如果三年以后在管理方面有一些能力的話,我會向技術主管和項目經理的方向努力發展

如果你離職,你的老板有什么反應?
我和現任公司的老板關系非常好,我在項目中也承擔了一個核心的研發工作,因此我離開時,他非常的不舍,但我更希望有自己的一些職業發展,所以我們經過友好的交談,他也尊重我離職的這個決定,我也非常感謝他的理解和支持

END

推薦一個公眾號:dotNET編程大全,掃碼關注!

 

 

 

需加微信交流群的,請加小編微信號z438679770,切記備注 加群,小編將會第一時間邀請你進群!

 


免責聲明!

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



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