兩年前端頭條面試記

今年還不曾面試過,若是不是頭條的某個 HR 順手把個人簡歷從簡歷庫中撈起來的話。頭條是大小周,這就意味着我能夠週末去面試,不佔用工做時間也不用請假,對於這點我仍是很滿意的。前端

面試約到了週日早上十點,但過後我有點後悔,週日面試官極可能會晚點。面試一直持續到下午三點左右結束。node

頭條的效率確實很高,週日面試結束後,次日 hr 就通知了面試經過。react

原文連接linux

另外,我把本次面試也記錄在個人每日一問: shfshanyue/Daily-Question 中,歡迎討論與 starwebpack

本篇文章寫於一八年底,機遇巧合下放了出來,另外一七年面試與一九年面試見 2017面試記2019面試記git

背景

到今年年末,我已經有了將近兩年半的經驗。而這兩年來的時間能夠一分爲二,第一段時間我在整前端,用的 react,第二段時間我在整後端,用的 node,咱們用 node 直接操做數據庫,而非做爲中間層。而因爲人事的過多調整,我在這時也作過一小段時間的 leader。作後端改BUG老是要調線上數據庫的,再加上我對運維的興趣,所以我擁有了線上數據庫以及k8s集羣的權限,並直接維護咱們項目組業務代碼的 k8s resource。(固然,後來改到 helm 維護)github

因爲 node 與前端千絲萬縷的聯繫,以及我在頭條的簡歷沒有更新,所以此次接收到的仍是前端面試邀請,不會也有一些 node 的知識。web

面試

面試整個過程持續了四個多小時,聊的東西仍是不少面試

  • 簡單的自我介紹與項目經驗
  • 一道算法題
  • 一道 setTimeout/Promise 輸出順序問題的題
  • 什麼是事件循環
  • react 中的 key 用來作什麼
  • 什麼是 virtual DOM
    • 就是虛擬的DOM,提升渲染的性能,數據與UI分離,而且有利於服務器渲染
  • webpack 的原理是什麼,loader 和 plugin 的做用是什麼
  • ssr 的原理是什麼,解決了什麼問題
    • renderToString,hydrate;首屏時間與SEO
  • ssr 會有那些坑
    • cpu/memory 可能爆了,出現異常很差定位調試,帶權限接口與非權限接口有可能須要剝離(爲了緩存),TTFB慢了(若是不加緩存,之前多是骨架屏,如今直接白屏),因爲須要起http服務工程上也複雜了不少
  • 你如何看待前端和後端
    • 吧啦吧啦吧啦...
  • 有沒有了解過 shell
    • 這個確定得了解過
  • 如何替換一個文件中的內容
    • sed;那還有沒有其它命令;cut
  • 有沒有用過 awk
    • 只能說有了,不過沒具體問用法
  • 對一個文件如何只查看特定行的內容
    • 用 head 應該能夠吧...(不太確認)
  • 大家的 node 的服務端應用如何部署
    • 而後講了講咱們node部署的歷史,從之前的 pm2 到 docker,到 openshift 再到 k8s
  • docker 部署有什麼好處
    • 各類好處,吧啦吧啦吧啦
  • docker 的底層原理是什麼
    • namespace 和 cgroups,一個隔離環境,一個控制資源配額。多虧我看 docker 的時候多看了一遍簡介...
  • 那隔離環境主要隔離什麼環境
    • 根據我對 docker 的映像說了網絡,memory,進程,volume。回去以後看了看才知道是在問 linux namespcaces 有哪些..
  • 有沒有了解過 ufs
    • 沒有...回去以後發現這就是 docker 的分層存儲,雖然一直知道它是分層存儲,但不知道叫 ufs
  • 部署 node 時如何充分利用服務器的多核
    • 好比用node 的 cluster,用 k8s 也能部分利用多核性能
  • 若是你要讀取一個特別大的文件應該如何作
    • 那時候還不知道 stream...因而就說了不停地 seek offset
  • 大家有沒有對服務端的異常進行監控
    • 好比用 sentry 監控異常,elk 打日誌,prometheus 監控性能並用 alertmanager 報警,再寫一個webhook到釘釘
  • 那大家在線上出現問題時如何在應用層面監控 cpu 和 memory 的信息
    • 雖然線上出現過問題,,但這個確實不清楚。cpuheapdump
  • 如何查看一個 node 的服務端應用的內存和CPU
    • ps / pidstat
  • 當服務端的內存發生了 OOM 問題如何排查
    • 好比看 promethues,查看監控的忽然高峯,看日誌那段時候發生了什麼,看有沒有提交代碼
  • 數據庫中什麼是 left join 和 right join 有什麼區別
  • 數據庫索引中爲何要用 Btree
    • 減小與磁盤的IO次數
  • 什麼是聚簇索引
    • 這是啥...
  • redis 如何作持久化
    • 我還在想持久化好像不過重要,有一次咱們線上的 redis 刷了一遍,也僅僅是用戶掉線了而已...持久化有兩種方案,具體忘了叫啥了。一種是隔一段時間備份數據,另外一種是備份命令,按照命令備份數據。回來一查是 RDB 和 AOF
  • 如何實現一個分佈式鎖
    • set key value EX 60 NX
  • 有沒有用過 LUA
    • 並無,但不能說沒有啊。因而說我看過一個關於 rate limit 的庫的源碼,裏邊的 redis 就是用的 lua 腳本
  • 當一個地址從輸入到展現在瀏覽器中有哪些步驟
    • 吧啦吧啦吧啦
  • 遞歸解析的過程是什麼樣的,什麼叫遞歸 DNS 和權威 DNS
    • (問這麼偏...)
  • TCP 爲何是可靠的
    • 由於它有 ACK
  • 那 tpc 和 udp 相比的話,udp 有什麼好處,雖然不可靠,可是爲何還有不少基於 udp 的協議
    • 由於 upd 報文小,udp 頭部8個字節,tcp 頭部20個字節,並且有些協議也不須要太可靠。面試官看我把報文 header 大小答出來了,而後看了下簡歷發現我是學網絡工程的。其實我網絡工程學的也忘的差很少了 (剛開始都能記住TCP的六個標誌位)
  • 爲何要換工做
  • 之前經過了面試怎麼沒有來
    • 由於沒 hc 了......
  • 你有什麼要問的嗎

總結

通過本次面試後,愈發感受本身一些底層知識的薄弱。另外也感嘆於面試官技術面的廣度與深度,深知拓展技術棧也是至關重要。redis


我是山月,我會按期分享全棧文章在我的公衆號中。若是你對全棧面試,前端工程化,graphql,devops,我的服務器運維以及微服務感興趣的話,能夠關注我。若是想進羣交流,能夠添加我微信 shanyue94,備註加羣。

若是你對全棧面試,前端工程化,graphql,devops,我的服務器運維以及微服務感興趣的話,能夠關注我
相關文章
相關標籤/搜索