2018年前端開發校招面試總結

原文:syean.cn/2018/12/27/…javascript

2018年人生中最重要的事情之一就是找工做啦,從6月份初斷斷續續開始複習,7月內推開始,9月大批量的筆試、面試,9月初拿到了第一個offer,10月初拿到了本身比較滿意的offer,也是歷經了快4個月。
簡歷投的主要是杭州、上海的一些大廠們,分享一些面試的問題吧,考到爛的如輸入url發生了什麼、閉包是什麼,虛擬dom等,vue雙向綁定一類就不放出來了。php

不過這些面試題雖然常見,可是仍是要用心掌握,由於考到的頻率確實蠻高的。因爲當時並沒怎麼接觸nodejs和react ,因此這方面的題目基本沒有。我是個懶人,因此僅有一些提供了一下思路~~css

js相關

  • ajax和axios的不一樣(多益)
  • vue中在哪一個階段進行異步請求比較合適(阿里,百度)
  • 微信小程序底層實現的機制(jsbridge)(阿里)
  • vue中vuex的mapSetter是怎麼實現的(bilibili)
  • 什麼是尾遞歸(bilibili)
  • vue項目中使用到的優化手段(網易)
  • commonjs和ES6中的模塊化有什麼區別(網易)
    回答見阮一峯的博客
  • webstoreage若是存儲滿了會怎麼樣(報錯)(網易)
  • application cache是怎麼設置的(網易)
  • 如何獲取一個div下全部的文本節點(網易)
  • 兼容瀏覽器的一些方法(網易)
  • 爲何不一樣瀏覽器渲染出來的東西會有差異,本質是什麼(網易)
  • vue中寫一個組件要注意哪些(58)
  • js如何實現多線程,webworker怎麼通訊(美團)
  • vue的異步更新考察:(美團)

vue中如下代碼會出發幾回update生命週期(1次)前端

this.a=1
//代碼
this.a=3;
複製代碼

vue中如下代碼會出發幾回update生命週期(2次)vue

setTimout(()=>{
    this.a=1
    
},0)

//代碼
this.a=3;
複製代碼

那些紅寶書裏都有的知識點

紅寶書(javascript高級程序設計必定要好好看呀~~~ )java

  • BOM有哪些東西(網易)
  • requestAnimationFrame和setTimeout寫動畫的區別 (網易)
  • 若是獲得今天是星期幾(getDay()(網易)
    【我回答出來後,網易面試官說你怎麼記得那麼清楚 - -|||】

css相關

  • 如何實現小於12px的字體效果(大疆)
  • css匹配的算法(從右向左)(大疆)
  • animation和transition的區別(阿里)
  • 一個div從一個地方挪到另外一個地方的動畫如何實現,若是還要求鼠標放上去時,該div還要旋轉怎麼寫(美團)
  • 浮動和清除浮動考察(58): 如何5個div,其中第三個變成浮動的,會怎麼樣 怎麼讓他變回去——清除浮動
  • 如何實現一個進度條(新浪)

手寫代碼

  • 數組去重怎麼作,若是是數組是這樣的[1,[2],[3]],該如何去重(bilibili)
  • 寫一個函數 實現test(a)(b),若是b>0 返回a+b,若是b<0,返回a-b(柯里化考察)(bilibili)
function test(){
    var a= [...arguments][0];
    return function(){
        var b = [...arguments][0];
        if(b>0){
            return a+b;
        }else{
            return a-b
        }
    }
}
複製代碼
  • 實現鏈式調用(百度)
coder.sleep().print1().print2()

class Coder{
    sleep(){
        console.log("sleep");
        return this;//鏈式調用的關鍵
    }
    print1(){
        console.log(1);
        return this;//鏈式調用的關鍵
    }
    print2(){
        console.log(2);
        return this;//鏈式調用的關鍵
    }
}
複製代碼
  • 若是sleep函數要等待3秒鐘再打印而後在執行以後的操做呢?
class Coder {
  sleep(){
    var date = new Date();
    while((new Date() - date) < 3000) {
      //經過這裏進行阻塞sleep
    }
    console.log("sleep");
    return this;//鏈式調用的關鍵
  }
  print1(){
    console.log(1);
    return this;//鏈式調用的關鍵
  }
  print2(){
    console.log(2);
    return this;//鏈式調用的關鍵
  }
}

var b = new Coder()
b.sleep().print1().print2()
複製代碼
  • 如下代碼會輸出什麼(百度)
var date = new Date();
setTimeout(()=>{
    console.log(new Date()-date)
},1000)
while((new Date()-date)<3000){
    
}
//輸出3000+的值
複製代碼
  • 事件代理考察:(百度) 若是有一個頁面,有許多a標籤,在上面寫點擊事件的事件代理怎麼寫。 若是a標籤裏面也有不少子節點,點擊了這些子節點也要實現上面效果?
    思路:循環判斷e.target.parentNode.tagName==="a"node

  • 跳臺階算法(美團)mysql

  • 火車運煤算法(美團)react

  • [1,[2],[3,[4]]]這種無限嵌套數組 變成[1,2,3,4]怎麼作(58)jquery

數據庫

  • 項目中爲何使用mongodb,數據庫的三大範式(百度)
  • mongodb的aggregate介紹一下(阿里)
  • mysql的優化手段(美團)
  • mysql索引的原理(問的較多)

計算機網絡

常見問題

  • get和post的區別
  • 狀態碼
  • http和https的區別

其餘

  • dns請求過程
  • dns是基於什麼協議(美團)
  • TCP和UDP的使用場景和區別(美團)
  • url除了http https之類的協議,能夠有本身自定義麼。(58) 思路:能夠,例如微信小程序底層Js Bridge原理就是利用url scheme攔截等

其餘

  • 操做系統的功能(百度)

  • 頁面置換的算法有哪些(bilibili)

  • 前端安全(xss,csrf)(幾乎每一個大廠都問到了)

  • AES和MD5的區別

  • git的stage,三個區是什麼(工做區,暫存區,版本庫)(阿里) 若是要寫實現一個搶紅包頁面,如何防止有人惡意一直玩搶紅包或者發包模擬搶紅包請求(網易)
    我的思路:
    一、判斷一段時間內同一個IP的請求數量
    二、設置驗證碼
    三、看頁面訪問順序,通常有一個入口頁面再是搶紅包頁面。惡意發包多是直接的頁面請求
    四、達到必定次數或者紅包額度,直接丟包

  • js和c語言編譯的差異

  • 有一個用戶登陸的表單,你會如何作使達到安全。(美團)

  • etag的原理(文件名時間hash)(美團)

  • 一個微博api,提供top10的數據,可是每次去請求並不必定更新,因此每次這樣請求返回數據會浪費流量,但願有一個api能夠返回是否更新,要怎麼操做。(美團) 思路:將數據進行hash,每次判斷一下和上一次的hash值。

  • jquery和vue的區別(美團)

一些面試心得

  • 熟悉簡歷上寫的任何東西
  • 回答問題時引到本身熟悉的東西上 好比問你ES6掌握狀況,挑本身熟悉的講 好比前端優化回答時,挑本身理解原理的講,好比避免重排重繪,以後通常還會繼續問哪些會引發重繪重排
  • 對方提不知道如何回答的問題時
一、引到本身會的:好比問php的繼承,講將js的繼承,問mysql的優化手段時,講mongodb的優化手段
二、講大概思路
三、請面試官給提示
四、不會就跳過,不要耽擱太多
複製代碼
  • 展現本身的博客
  • 熟悉的問題能夠回答的深刻一些
  • 手寫代碼時考慮封裝、數據類型判斷等
  • 面試後總結 面試時有些問題以爲面試官問的很奇怪,要好好想一想人家問問題背後的動機、想考察的知識點。

祝你們都能拿到心儀的offer,喲呼~~

相關文章
相關標籤/搜索