2018秋招面經-後端開發

博主渣渣本科,掙扎到十一月秋招終於結束了。面過百度/騰訊/小米/網易/搜狗/知乎/京東/360/瓜子。期間總結了一些面試題目,現在放上來。由於是博主自己的面經記錄,所以涵蓋不全面的話諸位請諒解。
根據博主的面試經驗來看,面試有一定的層次性,如bat級別公司每個點都會深入,而有些公司則只會問到表層,所以將每個領域都分爲必須掌握和深入瞭解這兩個部分。

一、計算機網絡

基礎部分

  1. TCP報頭格式
  2. UDP報頭格式
  3. TCP/UDP區別(不僅是宏觀上的,最好能根據各自的機制講解清楚)
  4. HTTP狀態碼(最好結合使用場景,比如在緩存命中時使用哪個)
  5. HTTP協議(一些報頭字段的作用,如cace-control、keep-alive)
  6. OSI協議、TCP/IP協議以及每層對應的協議。
  7. SESSION機制、cookie機制
  8. TCP三次握手、四次揮手(這個問題真的要回答吐了,不過真的是面試官最喜歡問的,建議每天手擼一遍,而且不只是每次請求的過程,各種FIN_WAIT、TIME_WAIT狀態也要掌握)。
  9. 打開網頁到頁面顯示之間的過程(涵蓋了各個方面,DNS解析過程,Nginx請求轉發、連接建立和保持過程、瀏覽器內容渲染過程,考慮的越詳細越好)。
  10. http和https區別,https在請求時額外的過程,https是如何保證數據安全的
  11. IP地址子網劃分
  12. POST和GET區別
  13. DNS解析過程

深入部分
13. TCP如何保證數據的可靠傳輸的(這個問題可以引申出很多子問題,擁塞控制慢開始、擁塞避免、快重傳、滑動窗口協議、停止等待協議、超時重傳機制,最好都能掌握)
14. 地址解析協議ARP
15. 交換機和路由器的區別

二、數據庫

基礎部分

  1. 事務四大特性(ACID)
  2. 數據庫隔離級別,每個級別會引發什麼問題,mysql默認是哪個級別
  3. MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景
  4. 數據庫的優化(從sql語句優化和索引兩個部分回答)
  5. 索引有B+索引和hash索引,各自的區別
  6. B+索引數據結構,和B樹的區別
  7. 索引的分類(主鍵索引、唯一索引),最左前綴原則,哪些情況索引會失效
  8. 聚集索引和非聚集索引區別。
  9. 有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖
  10. 關係型數據庫和非關係型數據庫區別
  11. 瞭解nosql
  12. 數據庫三範式,根據某個場景設計數據表(可以通過手繪ER圖)
  13. 數據庫的主從複製
  14. 使用explain優化sql和索引
  15. long_query怎麼解決
  16. 內連接、外連接、交叉連接、笛卡兒積等

深入

  1. MVCC機制
  2. 根據具體場景,說明版本控制機制
  3. 死鎖怎麼解決
  4. varchar和char的使用場景。
  5. mysql併發情況下怎麼解決(通過事務、隔離級別、鎖)

Redis

  1. redis數據結構有哪些
  2. redis隊列應用場景
  3. redis和Memcached(支持數據持久化)
  4. 分佈式使用場景(儲存session等)
  5. 發佈/訂閱使用場景

三、操作系統

  1. 內存的頁面置換算法
  2. 進程調度算法
  3. 進程間通信方式
  4. 進程線程區別
  5. 進程之間的通信
  6. 父子進程、孤兒進程
  7. fork進程時的操作,
    這個部分我回答的都不好,只能是死記硬背,建議基礎好的同學多看看操作系統這部分,能大大加分。

四、算法

基礎

  1. 劍指OFFER的各個題目是最常見的,即使不是原題也是題目的變體,因爲面試不像筆試,一般不會出特別困難的題目,所以劍指OFFER上小而精的題目就非常適合。建議手刷一遍。PHP的同學可以參考專欄劍指OFFER
  2. 二叉樹相關(層次遍歷、求深度、求兩個節點距離、翻轉二叉樹、前中後序遍歷)
  3. 鏈表相關(插入節點、鏈表逆置、使用鏈表進行大數字的加減,雙向鏈表實現隊列、尋找鏈表中的環)
  4. 堆(大量數據中尋找最大N個數字幾乎每次都會問,還有堆在插入時進行的調整)
  5. 排序(八大排序,各自的時間複雜度、排序算法的穩定性。快排幾乎每次都問)
  6. 二分查找(一般會深入,如尋找數組總和爲K的兩個數字)
  7. 兩個棧實現隊列。
  8. 圖(深度廣度優先遍歷、單源最短路徑、最小生成樹)
  9. 動態規劃問題。

    深入

  10. 紅黑樹性質

  11. 分治法和動態規劃的區別
  12. 計算時間複雜度
  13. 二叉樹和哈希表查找的時間複雜度

具體題目記錄
1. 一個文本文件中每一行中有一個URL,最多一萬行,統計每一個URL的次數,輸出到另外一個文件中,每一行前面是URL,後面是個數。
2. 單鏈表的逆序
3. 一個函數實現給定字符串,去除前面和後面的空格,比如“ ab cd ”,最後得到的結果是”ab cd”,不能改變字符串的地址。
4. 對比cookie和session,有一個值錯誤則不正確
5. 查找10的階乘後面有幾個0
6. 字符串匹配
7. 字符串移位,給出字符串abc##dfg##gh,實現將所有#移至字符串串頭。輸出####abcdfggh(個人認爲可以用後向移位,減少移位次數)
8. 給出一顆二叉樹,兩個葉節點,找到這兩個葉節點互連通的一條最短路徑。
9. 兩個日期計算天數差
10. 100個有序數組合並
11. 矩陣的最大子矩陣和
12. 給定一棵多叉樹,每個節點有一個編號,現在要對節點排序,要求對於每個節點,它的父節點排在它後面,如果一棵樹有N個節點,那麼肯定有N-1條邊。輸入的數據形式爲:Map.Entry

LINUX

  1. 硬鏈接和軟連接區別
  2. kill用法,某個進程殺不掉的原因(進入內核態,忽略kill信號)
  3. linux用過的命令
  4. 系統管理命令(如查看內存使用、網絡情況)
  5. 管道的使用 |
  6. grep的使用,一定要掌握,每次都會問在文件中查找
  7. shell腳本
  8. find命令
  9. awk使用

語言部分(PHP)

  1. 數組操作函數
  2. 字符串操作函數(數組和字符串的函數是最常問的,非常多,一定不要記混了)
  3. 指針和引用區別
  4. 堆和棧的區別
  5. == ===區別
  6. PHP的垃圾回收機制
  7. zval結構
  8. 防sql注入
  9. 跨域問題
  10. 長鏈接和長輪詢

面向對象、設計模式

  1. 接口和抽象類區別
  2. 單繼承
  3. construct的調用順序(子類父類之間)
  4. 設計模式(工廠模式、策略模式、單例模式、裝飾模式比較常見)
  5. OOP特性,通過哪些機制實現的
  6. 重寫和重載區別
  7. 靜態類靜態方法
  8. 根據某個需求設計一個類(主要考慮類之間的繼承關係和屬性的權限設置)

項目

  1. 項目中遇到的困難(提前想好,並且把實現或者優化方法說清楚)
  2. 系統的量級、pv、uv等
  3. 應對高併發的解決辦法(分佈式)
  4. 在項目中主要負責了哪些工作。
  5. nginx的負載均衡
  6. 分佈式緩存的一致性,服務器如何擴容(哈希環)
  7. 項目中用到了哪些技術
  8. 服務器性能如何測試
  9. 項目中印象深刻的東西
  10. 項目中遇到過哪些坑,怎麼解決的
  11. 項目中爲什麼用redis以及怎麼實現相關功能
  12. 用過的開源框架(路由問題),框架的原理
  13. 消息隊列的應用場景(想一個)
  14. 有沒有用到非關係型數據庫
  15. 網站負載變大時怎麼辦
  16. SOA?
  17. WebService?
  18. 《大型網站技術架構:核心原理與案例分析》
  19. redis的消息隊列 redis的數據類型
  20. OAuth認證過程
  21. 單點登陸系統 分佈式緩存的使用場景
  22. 一個Controller調用兩個Service,這兩Service又都分別調用兩個Dao,問其中用到了幾個數據庫連接池的連接?
  23. 圖片是怎麼存儲的
  24. 分佈式一致性協議、分佈式鎖(應用場景)
  25. 項目中的網絡編程
  26. 劃一下項目的架構
  27. MVC的路由機制怎麼實現的(路由很重要)
  28. 爲什麼要用hadoop
  29. 自己寫的接口如何防止被別人惡意調用?印象筆記
  30. 如何實現數據容災,
  31. 怎樣實現負載均衡
  32. 如何解決單節點負載過
  33. Redis和memcache區別
  34. redis的持久化

總之要把寫在簡歷上的項目部分熟悉一遍,技術棧、項目功能、難點都要考慮好。

總結

秋招真的是一場曠日持久的戰爭,祝各位都能拿到想要的OFFER。

PS:之前把一些難點找到答案做成了PDF,放在手機上每天看一點,效果不錯。還有ANKI這個工具對於複習效果也很好。不過裏邊除了我自己的一點還有大牛總結的哈,感覺挺好用的,就一起發給大家。發郵件的時候說明了,不要以這點噴我哈。多謝!

2017.11.14 PPS:無語了。CSDN把積分提高成11了,我自己不能修改,大家可以私信/留下郵箱吧。那些用11積分下載的同學實在抱歉

2017.11.10 PDF更新了一下,之前通過資源下載的私信我郵箱給你發過去哈。留郵箱的小夥伴我都補充上了

2018-08-02 因爲工作最近好多都沒回,發到百度雲上了,鏈接: https://pan.baidu.com/s/1bXE6YfswcRgwFBVfEQIerQ 密碼: ap5v。

還有大牛們的資料:
PHP面試解讀:鏈接: https://pan.baidu.com/s/1skY7dG5 密碼: 7htu
面試指南系列+算法系列:鏈接: https://pan.baidu.com/s/1kVd2T0N 密碼: 5b86
侵刪。
祝大家心想事成,需要內推的私我哈,拜拜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章