後端工程師技術面試複習大綱

點擊上方「程序員江湖」,選擇「置頂或者星標」node

你關注的就是我關心的!程序員

 

做者:CYC2018面試

來源:公衆號【CYC2018】算法



1. 前言數據庫

面試考察的知識點多而雜,要徹底掌握須要花費大量的時間和精力。可是面試中常常被問到的知識點卻沒有多少,你徹底能夠用 20% 的時間去掌握 80% 常問的知識點。在這裏我將這 80% 常問的知識點整理出來,方便你們快速地掌握。這些知識點也標註了重要程度,從而讓你們能夠根據知識點的重要程度去制定學習計劃。設計模式

下圖列出了面試考察的九大知識點,也標出了重要程度和複習難度。固然重要程度根據不一樣的公司會有所不一樣,本文列的重要程度對大多數公司適用。緩存

 

針對上圖作如下幾點說明:安全

  • 分佈式與系統設計部分對於大廠面試來講相當重要,可是小廠面試考察的會少一點。網絡

  • 語言基礎部分,阿里喜歡問 Java、騰訊喜歡問 C++,其它大廠面試考察會少一些,小廠面試會考察多一些。負載均衡

  • 數據庫、中間件和框架部分對於大廠面試來講不是那麼重要,可是對於小廠面試會重要一些。最好在項目中使用到這些技術,才能讓這些技術成爲亮點。

  • 項目在實習招聘階段中不是特別重要,可是在校園招聘階段重要程度會增高。可是若是你的學歷很差,並且沒有博客、開源項目、競賽等加分項,那麼最好作個比較出色的項目來增長簡歷經過率。

     

2. 操做系統

2.1 基礎

 

  • ★★★  進程與線程的本質區別、以及各自的使用場景。

  • ★☆☆ 進程狀態。

  • ★★★ 進程調度算法的特色以及使用場景。

  • ★☆☆ 線程實現的方式。

  • ★★☆ 協程的做用。

  • ★★☆ 常見進程同步問題。

  • ★★★ 進程通訊方法的特色以及使用場景。

  • ★★★ 死鎖必要條件、解決死鎖策略,能寫出和分析死鎖的代碼,能說明在數據庫管理系統或者 Java 中如何解決死鎖。

  • ★★★ 虛擬內存的做用,分頁系統實現虛擬內存原理。

  • ★★★ 頁面置換算法的原理,特別是 LRU 的實現原理,最好能手寫,再說明它在 Redis 等做爲緩存置換算法。

  • ★★★ 比較分頁與分段的區別。

  • ★★★ 分析靜態連接的不足,以及動態連接的特色。

 

2.2 Linux

 

  • ★★☆ 文件系統的原理,特別是 inode 和 block。數據恢復原理。

  • ★★★ 硬連接與軟連接的區別。

  • ★★☆ 可以使用經常使用的命令,好比 cat 文件內容查看、find 搜索文件,以及 cut、sort 等管線命令。瞭解 grep 和 awk 的做用。

  • ★★★ 殭屍進程與孤兒進程的區別,從 SIGCHLD 分析產生殭屍進程的緣由。

 

3. 計算機網絡 

 

3.1 基礎

 

  • ★★★ 各層協議的做用,以及 TCP/IP 協議的特色。

  • ★★☆ 以太網的特色,以及幀結構。

  • ★★☆ 集線器、交換機、路由器的做用,以及所屬的網絡層。

  • ★★☆ IP 數據數據報常見字段的做用。

  • ★☆☆ ARP 協議的做用,以及維護 ARP 緩存的過程。

  • ★★☆ ICMP 報文種類以及做用;和 IP 數據報的關係;Ping 和 Traceroute 的具體原理。

  • ★★★ UDP 與 TCP 比較,分析上層協議應該使用 UDP 仍是 TCP。

  • ★★★ 理解三次握手以及四次揮手具體過程,三次握手的緣由、四次揮手緣由、TIME_WAIT 的做用。

  • ★★★ 可靠傳輸原理,並設計可靠 UDP 協議。

  • ★★☆ TCP 擁塞控制的做用,理解具體原理。

  • ★★☆ DNS 的端口號;TCP 仍是 UDP;做爲緩存、負載均衡。

     

     

    3.2 HTTP

     

     

  • ★★★ GET 與 POST 比較:做用、參數、安全性、冪等性、可緩存。

  • ★★☆ HTTP 狀態碼。

  • ★★★ Cookie 做用、安全性問題、和 Session 的比較。

  • ★★☆ 緩存 的 Cache-Control 字段,特別是 Expires 和 max-age 的區別。ETag 驗證原理。

  • ★★★ 長鏈接與短鏈接原理以及使用場景,流水線。

  • ★★★ HTTP 存在的安全性問題,以及 HTTPs 的加密、認證和完整性保護做用。

  • ★★☆ HTTP/1.x 的缺陷,以及 HTTP/2 的特色。

  • ★★★ HTTP/1.1 的特性。

  • ★★☆ HTTP 與 FTP 的比較。

 

 

3.3 Socket

 

  • ★★☆ 五種 IO 模型的特色以及比較。

  • ★★★ select、poll、epoll 的原理、比較、以及使用場景;epoll 的水平觸發與邊緣觸發。

 

4. 數據庫
4.1 SQL

 

  • ★★☆ 手寫 SQL 語句,特別是鏈接查詢與分組查詢。

  • ★★☆ 鏈接查詢與子查詢的比較。

  • ★★☆ drop、delete、truncate 比較。

  • ★★☆ 視圖的做用,以及什麼時候能更新視圖。

  • ★☆☆ 理解存儲過程、觸發器等做用。

 

 

 

4.2 系統原理

 

  • ★★★ ACID 的做用以及實現原理。

  • ★★★ 四大隔離級別,以及不可重複讀和幻影讀的出現緣由。

  • ★★☆ 封鎖的類型以及粒度,兩段鎖協議,隱式和顯示鎖定。

  • ★★★ 樂觀鎖與悲觀鎖。

  • ★★★ MVCC 原理,當前讀以及快照讀,Next-Key Locks 解決幻影讀。

  • ★★☆ 範式理論。

  • ★★★ SQL 與 NoSQL 的比較。

 

 

4.3 MySQL

 

  • ★★★ B+ Tree 原理,與其它查找樹的比較。

  • ★★★ MySQL 索引以及優化。

  • ★★★ 查詢優化。

  • ★★★ InnoDB 與 MyISAM 比較。

  • ★★☆ 水平切分與垂直切分。

  • ★★☆ 主從複製原理、做用、實現。

  • ★☆☆ redo、undo、binlog 日誌的做用。

 

 

4.4 Redis

 

  • ★★☆ 字典和跳躍表原理分析。

  • ★★★ 使用場景。

  • ★★★ 與 Memchached 的比較。

  • ★☆☆ 數據淘汰機制。

  • ★★☆ RDB 和 AOF 持久化機制。

  • ★★☆ 事件驅動模型。

  • ★☆☆ 主從複製原理。

  • ★★★ 集羣與分佈式。

  • ★★☆ 事務原理。

  • ★★★ 線程安全問題。

 

 

5. 面向對象
5.1 思想

 

  • ★★★  面向對象三大特性

  • ★☆☆ 設計原則

 

 

5.2 設計模式

 

  • ★★☆ 設計模式的做用。

  • ★★★ 手寫單例模式,特別是雙重檢驗鎖以及靜態內部類。

  • ★★★ 手寫工廠模式。

  • ★★★ 理解 MVC,結合 SpringMVC 回答。

  • ★★★ 理解代理模式,結合 Spring 中的 AOP 回答。

  • ★★★ 分析 JDK 中經常使用的設計模式,例如裝飾者模式、適配器模式、迭代器模式等。

 

 

 

 

推薦閱讀:

應聘騰訊,面試官和我聊了一個小時的人生

職場半年,我犯過的錯

 

  



你點的每一個好看,我都認真當成了喜歡

相關文章
相關標籤/搜索