【面試題】2018秋招後臺開發

2018秋招面經-後端開發mysql

1、計算機網絡

基礎部分

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

深刻部分

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

深刻部分

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

Redis

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

3、操做系統

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

4、算法

基礎部分

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

深刻部分

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

具體題目記錄

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.Entrylinux

5、LINUX

  • 硬連接和軟鏈接區別
  • kill用法,某個進程殺不掉的緣由(進入內核態,忽略kill信號)
  • linux用過的命令
  • 系統管理命令(如查看內存使用、網絡狀況)
  • 管道的使用 |
  • grep的使用,必定要掌握,每次都會問在文件中查找
  • shell腳本
  • find命令
  • awk使用

6、語言部分(PHP)

  • 數組操做函數
  • 字符串操做函數(數組和字符串的函數是最常問的,很是多,必定不要記混了)
  • 指針和引用區別
  • 堆和棧的區別
  • == ===區別
  • PHP的垃圾回收機制
  • zval結構
  • 防sql注入
  • 跨域問題
  • 長連接和長輪詢
  • 面向對象、設計模式
  • 接口和抽象類區別
  • 單繼承
  • construct的調用順序(子類父類之間)
  • 設計模式(工廠模式、策略模式、單例模式、裝飾模式比較常見)
  • OOP特性,經過哪些機制實現的
  • 重寫和重載區別
  • 靜態類靜態方法
  • 根據某個需求設計一個類(主要考慮類之間的繼承關係和屬性的權限設置)

7、項目

  • 項目中遇到的困難(提早想好,而且把實現或者優化方法說清楚)
  • 系統的量級、pv、uv等
  • 應對高併發的解決辦法(分佈式)
  • 在項目中主要負責了哪些工做。
  • nginx的負載均衡
  • 分佈式緩存的一致性,服務器如何擴容(哈希環)
  • 項目中用到了哪些技術
  • 服務器性能如何測試
  • 項目中印象深入的東西
  • 項目中遇到過哪些坑,怎麼解決的
  • 項目中爲何用redis以及怎麼實現相關功能
  • 用過的開源框架(路由問題),框架的原理
  • 消息隊列的應用場景(想一個)
  • 有沒有用到非關係型數據庫
  • 網站負載變大時怎麼辦
  • SOA?
  • WebService?
  • 《大型網站技術架構:核心原理與案例分析》
  • redis的消息隊列 redis的數據類型
  • OAuth認證過程
  • 單點登錄系統 分佈式緩存的使用場景
  • 一個Controller調用兩個Service,這兩Service又都分別調用兩個Dao,問其中用到了幾個數據庫鏈接池的鏈接?
  • 圖片是怎麼存儲的
  • 分佈式一致性協議、分佈式鎖(應用場景)
  • 項目中的網絡編程
  • 劃一下項目的架構
  • MVC的路由機制怎麼實現的(路由很重要)
  • 爲何要用hadoop
  • 本身寫的接口如何防止被別人惡意調用?印象筆記
  • 如何實現數據容災,
  • 怎樣實現負載均衡
  • 如何解決單節點負載過
  • Redis和memcache區別
  • redis的持久化

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

轉自:http://blog.csdn.net/acingdreamer/article/details/78479476面試

相關文章
相關標籤/搜索