校招面經

原文做者自述:mysql

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

 

1、計算機網絡nginx


基礎部分面試

  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解析過程


深刻部分 redis

 

  1. TCP如何保證數據的可靠傳輸的(這個問題能夠引伸出不少子問題,擁塞控制慢開始、擁塞避免、快重傳、滑動窗口協議、中止等待協議、超時重傳機制,最好都能掌握)
  2. 地址解析協議ARP
  3. 交換機和路由器的區別

 

2、數據庫
基礎部分算法

  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.  內鏈接、外鏈接、交叉鏈接、笛卡兒積等


深刻sql

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


Redisshell

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

 


3、操做系統數據庫

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


4、算法
基礎編程

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

深刻

  1. 紅黑樹性質
  2. 分治法和動態規劃的區別
  3. 計算時間複雜度
  4. 二叉樹和哈希表查找的時間複雜度

具體題目記錄

  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的持久化

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


做者:重口味AC
原文:https://blog.csdn.net/acingdreamer/article/details/78479476

相關文章
相關標籤/搜索