騰訊一面(2019前端實習崗)| 掘金技術徵文

WATER_發表於2018-03-26

前言

之前投遞了騰訊的實習生前端崗,一直沒有電話,查了下狀態說不合適,以為涼涼了,今天卻收到了電話,出乎意料... 然後就開始了一面,一開始面試官說時間不會太久,大概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

  • 用的不多,沒答上來
  • 網上解釋

騰訊一面(2019前端實習崗)| 掘金技術徵文

使用過構建工具嗎?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/5ad952…

掘金技術徵文:juejin.im/post/5aaf2a…

相關文章