記一年前端小白麪經

起點

從去年2017年7月畢業至今將近快1年的時間了,2018年5月底6月初開始面試,一共面了快手,滴滴,頭條。很幸運每家都面完了3輪技術+1輪hr,能跟這麼多大牛聊天真是太有收穫了,對基礎是一次查漏補缺,對技術視野也是一次提高,因而就想記錄一下這些面試的問題與收穫,有一些問題值得更加深刻的研究的。html

問題

因爲已通過了些時日,僅記錄問題而不分哪家也不分幾輪面試。前端

  • 計算機基礎類vue

    • TCP和UDP區別以及各自的應用
    • TCP3次握手與4次揮手,爲何要這麼作
    • keep-alive是對應接口複用仍是對應的域名複用
    • HTTP與HTTPS區別,HTTPS握手過程,包含對稱非對稱加密,在哪步作,爲何要包含兩種加密
    • 是否瞭解HTTP2
    • 進程與線程的區別
    • 物理地址與虛擬地址
    • websocket協議握手以及對nignx須要進行什麼配置
  • 智力類jquery

    • 海盜分金
    • 機率論抽撲克牌問題
  • 算法類linux

    • 快排算法,並說出你寫快排的時間與空間複雜度(若是是阮大神快排就要注意空間複雜度了)
    • 遞歸反轉二叉樹
    • 檢測字符串迴文,並說出時間與空間複雜度
    • 寫一個函數,簡化linux相對路徑(如 /a/b/.././c => /a/c)
  • 前端類webpack

    • JS的六大基本類型以及判斷方法(5+symbol)
    • JS判斷數組以及對象的方法
      即 typeof instanceof Object.prototype.toString.call 適用範圍
    • apply和call的區別
    • 原生bind的做用 實現一個bind的polyfill
      須要瞭解bind和new在一塊兒用的時候的優先級,真正的polyfill是須要考慮到這一點的
    • 寫一個數組去重
      天然回答經過哈希記錄,存在的就不放入。可是漏掉了一個NaN的狀況,被面試官指出來了。由於不管如何NaN作key的話string的NaN與真實的NaN是一致的
    • == 與 === 區別
      其實考察的是==的隱式類型轉換,還好以前看過規範也寫過一篇文章,仍是比較熟悉的。https://segmentfault.com/a/11...
    • isNaN(null)返回什麼?爲何?
      一開始想的很簡單,直接回答返回false。後來面試官問isNaN不該該是在不是一個數字的時候返回true嗎,那null也不是一個數字,爲何會返回false呢。而後意識到事情並無這麼簡單,而後按照基礎知識推理了一下,isNaN應該會先執行抽象操做toNumber, 而null toNumber就是0,因此是一個數字,故返回false。
    • 對原型鏈的理解以及繼承的實現
    • 實現一個函數,2個參數爲兩個構造函數,A的實例繼承B
    • 若是讓你實現一個Promise,要如何去作
      看過幾遍Promise/A+規範,簡單說了下重點實現構造函數,狀態機制,鏈式機制,解決程序,then方法。
    • 實現 Promise.all
      本身想得有點偏激,想用鏈式來作,不過在reject的時候會有問題。面試官提出了一個用計數法resolve的方案,簡單易懂。
    • 說出幾種解決跨域的解決方案
      CORS,jsonp,iframe,proxy
    • 配置CORS是時候注意的點
      除了正常的頭配置以外,複雜請求會發一個OPTIONS,能夠經過配置類緩存這個OPTIONS請求,而不是每次都發送,其餘具體描述見阮神http://www.ruanyifeng.com/blo...
    • cookie session localStorage區別
    • 說說對eventloop的理解
    • 節流與防抖的區別,實現一個防抖
    • 用promise包裝一下xhr
    • vue數據綁定的原理
      主要是依賴收集,Object.defineProperty,getter,setter,watcher
    • vue與原先jquery時代的區別
    • vue父子組件如何傳遞數據
    • vue非父子組件如何傳遞數據,不用vuex
      event bus
    • 實現一個事件的機制
      簡單實現emit on
    • vue v-model實現的原理
    • vue :xxx.sync實現的原理
    • vuex的實現及其原理
      沒答出滿意的答案,看過部分源碼只是爲了確認dispatch哪部分是異步的
    • vue-router守衛類別
    • vue-router的實現
    • webpack loader與plugin的區別
    • webpack用過哪些plugin,列舉並說明做用
    • 說說cmd amd區別
    • 模塊依賴分析以及加載
      看過webpack打包事後的代碼,把__webpack__require__的加載機制以及模塊緩存講了一下。再底層一些靜態分析創建模塊依賴樹,從最底層開始加載。這一部分本身答得也不是很好,還須要繼續研究。
    • webpack + vue-router異步組件加載的原理
    • 對於具體分包依賴打包事後的代碼
      a組件依賴c b組件依賴c 若單獨打包了ab做爲單js,會不會單獨打包c
    • 本身項目的路徑及其做用
    • display: none; visibility: hidden; opacity: 1; 區別
    • 外邊距合併的問題,如何解決
    • 如何清除浮動
    • 對BFC的理解
    • 移動端適配的解決方案 rem vw vh
    • 300ms點擊延遲的原由及其解決辦法
    • 對重繪和重排的理解
    • 從接收到html到繪製完整頁面的過程
    • 對script標籤的理解
      主要是下載可使同步併發的,而執行必須是按照script標籤的位置有序執行的
    • 對前端緩存的理解
      強緩存和協商緩存
    • requestAnimationFrame的理解與如何模擬
    • 對瀏覽器優化方面有哪些方案與理解
    • 箭頭函數與普通函數的區別
    • 對ES7與ES8的瞭解
      ES7基本就是async await ES8就真的不瞭解拉

結語

基本還有記憶的就是這些問題,大多數是一些基礎問題,有的問題當時回答的並很差,回來也查了資料加深了理解,能跟大牛對話收貨就是不少,也已經拿到了滿意的offer,但願在找工做的你們加油~祝早日拿到滿意的offer~web

相關文章
相關標籤/搜索