推薦閱讀:
一。朋友面的一家公司
1.說下let,var,const。
var定義的變量,沒有塊的概念,可以跨塊訪問, 不能跨函數訪問。
let定義的變量,只能在塊作用域里訪問,不能跨塊訪問,也不能跨函數訪問。
const用來定義常量,使用時必須初始化(即必須賦值),只能在塊作用域里訪問,而且不能修改。
2.如何保證this的指向是正確的。
分析:先從原理上說明this指向問題為什么會出現,什么情況下會出現,然后再說做法唄
為了防止作用域變化,閉包問題。把this保存 傳遞過去,或者用bind傳進去。
3.如何寫出高質量的代碼。
讓函數成為編碼的基本單位,每個函數只做 1 件事情;
省略不必要的代碼;
使用主動式;
避免連串的松散表達式;
把相關的代碼放在一起;
多用肯定語句;
善用平行結構;
詳細解釋
4.怎么查內存泄漏,怎么防止內存泄漏?
分析:performance可以持續追蹤,是最宏觀的分析;然后用memory,可以細化定位,用source可以斷點排查
5.說一下什么是websocket。什么是三次握手?為什么需要三次握手。
WebSocket是一種網絡通信協議,服務端有新消息可以自動推送。
HTTP協議:通信只能由客戶端發起。
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與服務器就可以開始傳送數據了
6.做一個成長系統的前端需要幾天的工作量?
7.說下用合圖有什么好處。
合圖是減少Http請求數。合圖的時候提個建議:png不要與jpg混合在一起合,否則,合圖后圖片的大小將可能比不合圖時所有圖資源大小大,另外,合圖寬與高不能超過2048px,否則,極有可能出現渲染上的問題~~
8.如何實現一個循環鏈表。
9.