本書的 GitHub 地址:https://github.com/todayqq/PH…
對於大公司,很少會有全棧工程師這個崗位,全棧是個花哨的詞,對於現在比較熱門的技術,不論是 Vue 還是 Laravel,只要智商不差,看著文件,都能寫出一個 CURD 來,但是這就叫全棧了嗎?
比如 Vue 中的 MVVM,其中 VM 檢視的原理是什麼?Laravel 為什麼要這麼設計?
會用這種技術棧,其實只是學到的只是皮毛,可以會用,但是必須要有自己精通擅長的一面,一定要做到人無我有,人有我優。
面試題
- 談談對 Web 語義化的理解
語義化的含義就是用正確的標籤做正確的事情,語義化讓頁面的內容結構化,結構更清晰,便於對瀏覽器、搜尋引擎解析,利於 SEO,也有利於程式碼閱讀、便於維護。
- 簡述 HTTP 協議的工作流程「重要」
- 地址解析;
在瀏覽器中輸入 URL,瀏覽器會從中分解出協議名、主機名、埠、物件路徑等部分
- 封裝 HTTP 請求資料包
- 瀏覽器獲取主機 IP 地址,建立 TCP 連結(TCP 的三次握手)
- TCP 連結建立後傳送 HTTP 請求
請求方式的格式為:統一資源識別符號(URL)、協議版本號,後邊是 MIME 資訊包括請求修飾符、客戶機資訊和可內容。
- 伺服器接到請求後,給予相應的響應資訊
其格式為一個狀態行,包括資訊的協議版本號、一個成功或錯誤的程式碼,後邊是 MIME 資訊包括伺服器資訊、實體資訊和可能的內容
- 伺服器斷開 TCP 連線
- 為什麼使用 HTTPS?實現原理是什麼?
HTTPS(超文字傳輸安全協議)是一種通過計算機網路進行安全通訊的傳輸協議,提供對網站伺服器的身份認證,保護資料傳輸的完整性、安全性。
實現過程如下:
- 客戶端通過 TCP 和伺服器建立連線之後,第一次握手的時候請求證照,伺服器向客戶端返回證照
- 客戶端在收到服務端證照後,確認證照是否有效,生成對稱祕鑰並使用伺服器的公共祕鑰進行加密,然後傳送給伺服器。
- 伺服器使用它的私鑰對它進行解密,這樣兩臺計算機可以開始進行對稱加密進行通訊。
- 寫出一個使用 flex 佈局,在 div 垂直居中的 css 程式碼
div {
display: flex;
justify-content: center;
align-items: center;
}
- 為什麼把 JavaScript 檔案放在 Html 底部
- 因為瀏覽器渲染 HTML 檔案是從上往下渲染的,JavaScript 放在 Html 頭部,會阻礙瀏覽器的渲染速度,增加使用者的等待時間
- 瀏覽器載入 JavaScript 指令碼之後會自動執行,如果放在頭部,此時的 Dom 樹還沒有載入完,很容易出 Bug
- 談談對 JavaScript 閉包的理解
閉包是 JavaScript 函式的一種,宣告即執行,可以在函式內部呼叫外部變數。
- 如何處理 Ajax 跨域問題
- 代理
- JsonP
- iframe 等等……
前端的知識比較多,一些比較基礎的問題,就不再整理了,比如給 Http 常見狀態碼,Html5 多了那些標籤,CSS 如何清除浮動等等。
如果大家有興趣,可以閱讀這些前端的常見面試題和資料。