前言
之前投遞了騰訊的實習生前端崗,一直沒有電話,查了下狀態說不合適,以為涼涼了,今天卻收到了電話,出乎意料... 然後就開始了一面,一開始面試官說時間不會太久,大概30分鐘吧,結果整個過程也就持續了30分鐘吧。
下面是面試的過程:
自我介紹
- 簡單介紹了自己所在的學校和專業,以及學習的過程。
能不能來深圳工作(簡歷意向寫的廣州)
JavaScript作用域瞭解嗎?有多少種
- 全域性作用域
- 函式作用域
問:JavaScript有塊級作用域嗎
答:ES5之前沒有塊級作用域,ES6提出了這個概念
let和var的區別
- var能重複宣告,let不能
- let的變數作用範圍不同,不存在變數提升
問:還有其他嗎
答:...
ES6瞭解多少,用過哪些特性
- 簡單說了下自己用過的一些特性
- 箭頭函式
- 模板字串
- Class
- module
- 物件解構
- Promise
- ......
Promise瞭解嗎?有多少種狀態
- 三個狀態:
- pending
- fulfilled
- reject
- 兩個過程:
- pending -> fulfilled
- pending -> rejectd
問:promise什麼時候會進入catch 答:當pending為rejectd時
講一下你簡歷上的react專案
- 簡歷上的專案,簡單的闡述了一下
react的生命週期有哪些
- 初始化
- constructor
- getInitialProps
- getDefaultState
- componentWillMount
- render
- componentDidMount
- 更新過程
- componentWillReceiveProps
- shouldComponentUpdate
- componentWillUpdate
- render
- componentDidUpdate
- 解除安裝過程(這個沒答出來)
- componentWillUnmount
什麼時候會用到componentwillreceiveprops
- 用的不多,沒答上來
- 網上解釋
使用過構建工具嗎?webpack的loader是幹什麼的?
- 專案中使用了webpack
- loader是用來編譯和處理資源的
問:用過其他構建工具嗎?
答:沒有...(gg)
vue和react使用起來有什麼區別
- 開放性題目,自由發揮
vue資料雙向繫結的原理
- 主要講了實現是基於
Object.defineProperty
- 另外也大概闡述了下發布-訂閱者模式,主要是Observer,Dep,Watcher等
專案中用到的ajax是原生的,還是用到了什麼庫?
- 都是用到了封裝的庫,主要用的是
axios
http的狀態碼瞭解嗎?
- 簡單說了下2xx,3xx,4xx,5xx分別是幹嘛的
- 在這裡說到了304,於是有了下面的http快取
什麼情況下會返回304狀態碼?
- 這個問題比較複雜吧,這裡回答了一個Etag
- ETag是HTTP1.1產物,伺服器通過某種演算法,給資源計算出一個唯一的標誌符,可能是一個資源的MD5值,在把資源響應給客戶端的時候,會在實體首部加上"ETag: 值",一起返回給客戶端
- 客戶端會保留這個欄位,並在下次請求的時候一併帶過去給服務端,服務端接受客戶端傳來的ETag的值,然後進行比較前後的ETag的值是否一致,就能判斷資源相對客戶端是否被修改了
- 如果匹配上了,服務端會返回304狀態碼,並告訴客戶端直接使用本地快取即可,反之,則以正常的GET200形式返回資源
- 對應的首部欄位
- If-None-Match:ETag-value
- If-Match:ETag-value
- 還有一種就是下面問的
Last-Modified
http快取,cache-control和etag有什麼區別
- 這裡雖然答上了,但感覺也答的不是很好
- Cache-Control的首部欄位較多
- 倘若Cache-Control設定的快取沒過期,那直接從本地讀取快取即可,返回200(from cache),不需要向服務端發起請求
- 使用ETag會向服務端發起請求,校驗後服務端再決定是否返回資源
- ...
除了etag,last-modified知道嗎?
- 這個沒答上來,忘記了
- 伺服器將資源傳遞給客戶端時,會將資源最後更改的時間以"Last-Modified: GMT"的形式加在實體首部上一起返回給客戶端
- 客戶端為該資源標記上資訊,下次請求時,會將該資訊帶在請求報文中一起返回給服務端,服務端去做檢查,若伺服器上該資源最終修改時間是一致的,則資源沒有被修改過,直接返回304狀態碼,不返回內容
- 對應的首部欄位
- If-Modified-Since: Last-Modified-value
- If-Unmodified-Since: Last-Modified-value
跨域有什麼處理方法?
- JSONP
- CORS
- 服務端代理
- and more then...
JSONP的原理是什麼?
- 利用
script
標籤支援跨域的屬性,用script標籤拿到包裹了資料的方法(相當於是返回了一段js程式碼),在請求中包含callback,服務端注入引數後返回這個回撥函式,然後script標籤拿到返回的js程式碼跨域直接執行回撥,需要前後端的配合。
JSONP可以用post請求嗎?為什麼?
- 不支援
- 因為script標籤只支援get請求...
cookie和localstorage有什麼區別?
- cookie資料大小不能超過4k
- cookie在服務端和客戶端之間來回傳遞
- cookie可以設定很多屬性,max-age,path,expires等
- localStorage儲存持久資料,瀏覽器關閉後資料不丟失除非主動刪除資料
- localStorage儲存的資料容量更大
問:還有其他嗎
答:.....(gg)
描述一下css的盒模型
- 講了下標準盒模型和怪異模式
實現垂直水平居中有哪些方法
- flexbox
- 絕對定位+margin負值(已知寬高)
- 絕對定位+transfrom負值(未知寬高)
- 絕對定位top left right bottom 0 + margin auto
問:絕對定位top left right bottom 0 + margin auto是在已知寬高的情況下使用嗎?
答:我....忘記了
總結
大概30分鐘後,面試官就說暫時到這裡,有訊息會盡快通知你,然後就結束了。以上問題問的還是很基礎,有一些沒答上來,還是得繼續加油。
4.20更新
掘金技術徵文:juejin.im/post/5aaf2a…