東大碩士分享面經:被頭條回撈,B+、二叉樹都問了,沒問紅黑樹

2019-12-30     網際網路坊間八卦

前言:

職場就像圍城,我們每一個職場人總是以「牆外」的視角羨慕著「牆內」的世界,而也許你的生活也出現在別人的夢中。希望「網際網路坊間八卦」能成為一個分享和了解不同生活的平台。

今天,筆者給大家分享一位程式設計師面試位元組跳動後端的技術面面經。讓我們一起了解一下程式設計師最原始的生活狀態。希望這些「乾貨」能讓你認識到不一樣的程式設計師的職場生活。

我是被撈起來面的,一面1個小時,休息了5分鐘之後直接二面,也是1個小時。第二天三面,應該是leader面,就面了半小時左右。過了兩天之後進入HR面,全程沒有問紅黑樹。

一面:

計算機網絡

  • 三次握手
  • 握手時產生的序列號幹什麼用的
  • 講一下接收窗口
  • TCP和UDP的本質區別
  • 什麼時候選擇TCP/UDP
  • HTTPS的連接過程
  • 7層模型和4層模型,每一層有哪些常見協議?
  • 路由器/交換機是哪一層
  • 網絡層用來幹嘛?傳輸層用來幹嘛?
  • HTTP可以使用UDP嗎
  • HTTPS怎麼確認收到的包就是伺服器發來的
  • 確定發送窗口的大小,如何最大利用帶寬,假設延遲100ms,發送端10Mb/s,接收端100Mb/s

資料庫

  • 事務的四大特性
  • 四種隔離級別
  • 什麼是幻讀
  • InnoDB 怎麼防止幻讀
  • B+樹原理,為什麼使用B+而不是二叉平衡樹

作業系統

  • 用戶態如何切換到內核態
  • 進程間通信的方式,哪種最快
  • 信號量怎麼實現對共享資源的訪問

語言

  • 什麼是Python生成器,疊代器;
  • 什麼是裝飾器;
  • 元組和list的區別;
  • Python中的dict底層怎麼實現的
  • list的底層怎麼實現的;
  • 雙等於和is有什麼區別

算法

  • 求x的y次方,想出比直接for循環更好的方案
  • 求絕對眾數

二面

設計題:一個資料庫存了以下數據:用戶id,登錄時間,登出時間;如何找到一天當中的用戶峰值(用一個hash map存所有秒數的在線人數)

為什麼要分用戶態和內核態

Git 切換分支,提交,具體如何合併分支

Python多線程用了幾個CPU

算法:二叉樹,輸出所有和為n的路徑(可以從中間結點到中間結點)


三面

和其他同學相比,你覺得自己有什麼優勢

自己的不足有哪些

GitHub和博客上分享過哪些東西

TCP的流量控制和擁塞控制

瀏覽器中輸入網址到獲得頁面的全過程

輸入 www.baidu.com,怎麼變成 https://www.baidu.com 的,怎麼確定用HTTP還是HTTPS

接觸過哪些後端框架

知道redis嗎

你用Django的時候,覺得它有哪些好的特性

除了Python還接觸過哪些語言

多久入職

文章來源: https://twgreatdaily.com/_iiuVm8BMH2_cNUgHgEl.html