以下內容不是 net 面試的全部,而是寫一些我認為可能會遺漏的。
一、面試總結
避坑:深圳龍崗李朗 yh 股份會鴿 offer
因為 offer 被鴿重新找工作,從 8 號開始面試到 12 號(11 家公司),整體感覺面試難度不大,就是很多公司都是走流程,並不是真的需要人,有些甚至聊一兩句就讓回去等通知。值得注意的是面試之前要了解公司是做什麼的,大概的業務是怎麼樣的,因為簡歷通過一般是技術符合或者某個項目是類似的,這樣可以避免在二面的時候回答不了,而且同一個城市的面試儘量真誠,因為彼此的 hr 和管理可能都是認識的。
二、面試內容總結:
後端技術要點:面向對象、常見算法和實現、常見設計模式、c#基礎、.. net core(中間件、與.net 異同、ioc/di、aop、國產框架(furion))、efcore 和 orm 相關、多線程、性能優化、緩存(redis、mongodb )、mq、微服務、分布式(少)、docker(少)、ci/cd(少)、linux(少)、分庫分表(少)。
資料庫技術要點:sql 語法、索引、查詢優化、存儲過程、主流資料庫的異同(sql server、mysql、postgresql(少))、死鎖、事務、函數、b+樹、紅黑樹、b 樹(這部分很少)。
前端技術要點:vue、jquery、uniapp。
業務相關:1.是否和客戶或者現場直接溝通需求,是怎麼做的。2.講解一下項目的功能和場景,是否遇到問題,是怎麼解決的。
面試題(記得的部分):
- 說一下你對面向對象的理解,有什麼特點
參考答案:https://blog.csdn.net/weixin_51201930/article/details/122652397
答:面向對象指的是將現實世界中的事物抽象為一個個對象,每個對象都用對應的方法和屬性,面向對象的三大特性:繼承、封裝、多態
- 平時工作中有用到什麼算法嗎?
參考答案:https://blog.csdn.net/dreame_life/article/details/104342490https://www.runoob.com/w3cnote/ten-sorting-algorithm.html
答:遞歸、冒泡、二分。(這個問題我覺得是在問數據結構,可以參考這個https://blog.csdn.net/heyuchang666/article/details/49891635)
- 常見設計模式有哪些?工作中用到了哪些?
參考答案:https://www.cnblogs.com/abcdwxc/archive/2007/10/30/942834.html
答:適配器、裝飾器、抽象工廠
- c#的值類型和引用類型有哪些?區別是什麼
參考:https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/value-types 答:值類型有整數型、浮點型、布爾型、結構、枚舉、元組、char,引用類型有 class、interface、delegate、record、dynamic、object、string。
值類型的變量包含類型的實例。它不同於引用類型的變量,後者包含對類型實例的引用。
值類型均隱式派生自 system.valuetype
- c#集合有哪些,區別是什麼?
參考:https://learn.microsoft.com/zh-cn/dotnet/standard/collections/commonly-used-collection-types
答:用的比較多的是:arraylist、list、queue、hashtable、dictionary,區別是在線程安全和應用場景上,像 list 的讀取是線程安全而 arraylist 不是,list 可以用於泛型進行排序,搜索,dictionary 用於鍵值對的字典集合。queue 代表了一個先進先出的對象集合。當需要對各項進行先進先出的訪問時,則使用隊列。哈希表中的每一項都有一個鍵/值對。可以直接用哈希鍵訪問集合中的項目。
- char、string、stringbuild 有什麼區別。
參考:https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/strings/https://blog.csdn.net/qq_44034384/article/details/106739003
答:char 用於存儲單個字符,string 是 char 對象的依序只讀集合,每次對 string 的修改都會創建一個新的 string 對象,stringbuilder 類則不同,每次操作都是對自身對象進行操作,而不是生成新的對象,其所占空間會隨著內容的增加而擴充,在做大量的修改操作時,不會因生成大量匿名對象而影響系統性能。
- net framework、.net standard、 .. net core、.net 5/6/7 區別
答:.net framework 和.net core 都可以用於生成多種類型的應用程式。. net framework 框架只能在 windows 上運行。
net core 是一個:適用於 windows、linux、macos 作業系統的免費開源託管的框架。
net5/6/7 是.net core 的穩定版本。
net standard 是一套規範,相當於一個關係表,把.net framework 的某些程式集對應到.. net core
- 談談你對.net core 中間件和管道的理解
參考:https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/? view=aspnetcore-6.0
答:應用的完整請求處理稱為管道,中間件是一種裝配到應用管道以處理請求和響應的組件,常用於日誌記錄、異常捕獲、請求攔截、緩存處理
- ioc、di、aop 是什麼,為什麼使用,怎麼用
參考:https://learn.microsoft.com/zh-cn/dotnet/core/extensions/dependency-injection
ioc 為控制反轉,它是一種思想,把類的具體實現交給外部容器,而不是由類直接實例化,通過這個反轉,把控制權交給了外部容器,降低了類與類之間的耦合性。
di 為依賴注入,它是 ioc 的具體實現,它負責把類與類之間的依賴關係結合起來,有三個生命周期:
- transient 服務始終不同,每次檢索服務時都會創建一個新實例。
- scoped 服務僅隨新範圍更改,但在某個範圍內是同一實例。
- singleton 服務始終相同,新實例僅創建一次。
原生 di 支持構造注入或 serviceprovider.createscope.getservice 獲取實例,如果需要拓展注入可以使用 autofac aop 面向切面編程,通過預編譯方式和運行期間動態代理實現程式功能的統一維護的一種技術。我的理解是在運行時動態映射 dll 獲取類實例
- ef core 和 orm 相關
參考:https://blog.csdn.net/u011854789/article/details/72783902
答:orm 指的是面向對象的對象模型和關係型資料庫的數據結構之間的互相轉換,ef 三種編程方式:database first、model first、code first。
多線程看這個https://www.yuque.com/zhanglin-l1ak6/ll06t7/tkq97k
redis 面試看這個:https://blog.csdn.net/adminpd/article/details/122934938
什麼是索引,索引有哪幾類(sql server)
參考:https://learn.microsoft.com/zh-cn/sql/relational-databases/indexes/indexes? view=sql-server-ver16
答:索引用於加速查詢的性能。它可以更快地從表中檢索數據
- 什麼是存儲過程?有哪些優缺點?
答:存儲過程是一組為了完成特定功能的 sql 語句集,存儲在資料庫中。
存儲過程的優點:
-
- 效率高
存儲過程編譯一次後,就會存到資料庫,每次調用時都直接執行。而普通的 sql 語句我們要保存到其他地方(例如:記事本 上),都要先分析編譯才會執行。所以想對而言存儲過程效率更高。
-
- 降低網絡流量
存儲過程編譯好會放在資料庫,我們在遠程調用時,不會傳輸大量的字符串類型的 sql 語句。
-
- 復用性高
存儲過程往往是針對一個特定的功能編寫的,當再需要完成這個特定的功能時,可以再次調用該存儲過程。
-
- 可維護性高
當功能要求發生小的變化時,修改之前的存儲過程比較容易,花費精力少。
-
- 安全性高
完成某個特定功能的存儲過程一般只有特定的用戶可以使用,具有使用身份限制,更安全。
存儲過程的缺點:
- 每個資料庫的存儲過程語法幾乎都不一樣,十分難以維護(不通用)
- 業務邏輯放在資料庫上,難以疊代
手寫:
create proc StuProc
@sname varchar(100)
begin
select S#,Sname,Sage,Ssex from student where sname=@sname
end
go
exec StuProc '赵雷' //执行语句
- 什麼是死鎖,如何避免。
答:死鎖是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。按同一順序訪問對象、避免事務中的用戶交互,保持事務簡短並在一個批處理中,合理設計索引避免全表掃描
sqlserver 函數創建:https://www.cnblogs.com/Brambling/p/6686947.html
什麼是事務,有哪些特點
答:事務是一種機制、一個操作序列,包含了一組資料庫操作命令。事務把所有的命令作為一個整體一起向系統提交或撤銷操作請求,即這一組資料庫命令要麼都執行,要麼都不執行,因此事務是一個不可分割的工作邏輯單元。具有 4 個特性,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability),這 4 個特性通常簡稱為 acid。
前端部分:vue 相關基礎知識、組件通信和復用、與 jquery 的區別、js 語法、js 基礎、常用 ui 框架等。
還會問到緩存中間件、消息中間件、日誌中間件(日誌上報和統計)、分表分庫、緩存持久性和一致性、主從同步、數據讀寫分離、資料庫的 b+樹、紅黑樹、b 樹等。