頭條研發秋招補招-後端開發工程師視訊面試雜記
引子
秋意濃
面試 (~60min)
一開始就被倆演算法題騎臉, 大概佔了整個面試一半的時間
-
查詢第一個缺失的正整數。 時間複雜度O(n) ,空間複雜度 O(1)
Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1] Output: 2 Example 3: Input: [7,8,9,11,12] Output: 1Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1] Output: 2 Example 3: Input: [7,8,9,11,12] Output: 1 -
給定一個連結串列,每隔k個元素做一次反轉
Example: Inputs: 1->2->3->4->5->6->7->8->NULL and k = 3 Output: 3->2->1->6->5->4->8->7->NULL. Inputs: 1->2->3->4->5->6->7->8->NULL and k = 5 Output: 5->4->3->2->1->8->7->6->NULL. Example: Inputs: 1->2->3->4->5->6->7->8->NULL and k = 3 Output: 3->2->1->6->5->4->8->7->NULL. Inputs: 1->2->3->4->5->6->7->8->NULL and k = 5 Output: 5->4->3->2->1->8->7->6->NULL.
全部沒答上, 基本操作, 面試官趕緊說我問你幾個問題吧(-_-||)
3. 問: 淺拷貝和深拷貝的區別是什麼 答: 我不知道具體的原理, 我認為就像軟連結和硬連結一樣
4. 問: Python 的垃圾回收有了解嗎, 就是 GC 答: PHP 的我比較熟一點, 是基於 ref_count 做的 追問: 如果有互相引用的情況怎麼辦 答: 沒有了解
5. 問: 有了解過樂觀鎖和悲觀鎖嗎 答: 樂觀鎖我比較熟悉, 以前做專案開發經常用到, 就是在 update 操作之前先查一下該資料當前的狀態並且作為此次 update 的 where 條件, 悲觀鎖只知道一點點概念, 不是很熟
6. 問: 看你對 web 比較瞭解, 請講一下 HTTP 狀態碼 2xx 3xx 4xx 5xx 的含義 答: 200 ok, 3 開頭的大多是跳轉, 4 開頭的大多是 webserver 層的錯誤比如找不到檔案, 5 開頭的大多是 backend server 層的錯誤比如 fpm 記憶體滿了
7. 問: 發起一個 HTTP 請求都有哪些過程 答: 首先會去查請求域名的 dns 然後向對應 ip 發請求比如 get 或者 post 報文
8. 問: 那 get 和 post 有什麼區別 答: 跨域, 瀏覽器歷史記錄, 引數長度限制, 應用(涉及安全要求比較高的場合用 post)
9. 問: tcp 的三次握手和四次揮手在什麼情況下會發生 答: 建立連線和斷開連線的時候
10. 問: 四次揮手你說一下 答: 首先需要斷開連線的一方(下稱客戶端)傳送第一次揮手, 收到請求的一方(下稱伺服器端)回覆一個請求, 等待資料傳輸完畢後再回復一個請求, 然後客戶端也回覆一個請求之後便斷開連線
11. 問: 中間有個 time_wait 狀態是幹嘛用的 答: 因為 tcp 是基於網路通訊不可靠這個原則, 當超時了則丟棄這個請求, 這就是 time_wait 的作用
12. 問: 看你簡歷寫了 lnmp, Linux 你都用過哪些 答: Linux 下的 php 生態, 從 Nginx 到 fpm 都很熟悉
13. 問: 你配置過 Nginx 的 upstream 嗎, 如果有多個 upstream 他是怎麼選的 答: 用過, 平均分配 追問: 只有公平分配嗎 答: 是(這裡答錯了