前端面經(jīng)總結(jié)——平安科技四輪技術(shù)面+一輪HR面

前言

前段面試平安科技的前端開發(fā),四輪技術(shù)面一輪hr面,成功拿到了offer,下面總結(jié)了技術(shù)面被問到的一些題目,大家可以參考一下~

一面

一面比較順利,問的都是比較基礎(chǔ)的東西

類型檢測

列舉日常使用識別對象與基本類型的方法?

  • typeof
  • instanceof
  • object.prototype.toString.call()
  • constructor.toString()

this指向

列舉不同情境下的this指向?

  • 直接調(diào)用,this指向window
  • 在函數(shù)里調(diào)用,this指向window
  • new 調(diào)用構(gòu)造函數(shù),this指向創(chuàng)建的新對象
  • 在對象的方法里調(diào)用,this指向該對象

列舉日常使用改變this的方法?

  • new
  • call
  • apply
  • bind

閉包

什么是閉包?

  • 函數(shù)嵌套函數(shù)
  • 可以引用外部變量
  • 參數(shù)和變量不會被回收

閉包使用場景?

  • 保護(hù)變量,只有閉包函數(shù)才可以訪問
  • 在內(nèi)存中維持一個(gè)變量

EventLoop

描述事件隊(duì)列的過程?

  • js是單線程的,會出現(xiàn)阻塞問題,因此有了異步隊(duì)列的出現(xiàn)
  • 主進(jìn)程同步執(zhí)行任務(wù),異步操作將添加到異步隊(duì)列中
  • 等候主進(jìn)程執(zhí)行完畢后再執(zhí)行異步隊(duì)列中的操作

什么是宏任務(wù)什么是微任務(wù)?

  • 異步隊(duì)列中有宏任務(wù)微任務(wù)之分
  • 一次事件循環(huán):先運(yùn)行宏任務(wù)隊(duì)列中的一個(gè),然后運(yùn)行微任務(wù)隊(duì)列中的所有任務(wù)。接著開始下一次循環(huán)

哪些是宏任務(wù)哪些是微任務(wù)?

  • 宏任務(wù)
    • setTimeout
    • setImmediate
    • setIntarval
    • requestAnimationFrame
    • I/O
    • UI rendering
  • 微任務(wù)
    • process.nextTick
    • Promise.then
    • Object.observe
    • MutationObserver

http緩存

了解http緩存嗎?

談?wù)効刂苃ttp緩存的頭部字段?

  • 強(qiáng)緩存
    • cache-control
    • Expires
    • Pragma
  • 協(xié)商緩存
    • last-modified
    • Etag

走不同緩存策略的狀態(tài)碼了解過嗎?

  • 304
  • 200

對象深拷貝

平時(shí)如何處理對象深拷貝?他們之間的區(qū)別?

  • JQ
    • $.extend(true, {}, xxx)
  • lodash.cloneDeep()
    • 解決ES6一些新的內(nèi)置對象的拷貝情況
    • 解決環(huán)對象的情況
  • JSON
    • 只能處理能夠被JSON直接表示的數(shù)據(jù)結(jié)構(gòu)
  • messagechannel
    • 利用postMessage(obj)
  • history API
    • history.replaceState(obj, document.title)
  • notification API
    • new Notification(‘’, {data: obj, silent: true}).data

自己實(shí)現(xiàn)一個(gè)對象深拷貝方法的話要注意哪些問題?

  • 對正則對象,日期對象,函數(shù)的特殊處理
  • 對環(huán)形引用對象的特殊處理

vue

了解過vue插件的調(diào)用方式嗎?自己寫過vue插件嗎?

  • vue.use()

  • 插件提供公開方法install

  • 插件出現(xiàn)的形式

    • 添加全局方法或者屬性

    • 添加全局資源:指令/過濾器/過渡等

    • 通過全局 mixin 方法添加一些組件選項(xiàng)

    • 添加 Vue 實(shí)例方法,通過把它們添加到 Vue.prototype 上實(shí)現(xiàn)

vue的數(shù)據(jù)綁定原理了解過嗎?

  • Object.defineProperty()

  • 依賴集Dep

  • 觀察者watcher

webpack

描述一下項(xiàng)目中使用過的webpack的一些優(yōu)化配置和相關(guān)插件?

  • happypack
  • dllplugin
  • commons-chunk-plugin
  • html-webpack-plugin
  • extract-text-webpack-plugin
  • optimize-css-assets-webpack-plugin
  • uglifyjs-webpack-plugin
  • imagemin-webapack-plugin
  • copy-webpack-plugin

二面

二面也是問基礎(chǔ),也考察了項(xiàng)目經(jīng)歷和個(gè)人軟實(shí)力

項(xiàng)目經(jīng)歷考察

做過的項(xiàng)目?有亮點(diǎn)?遇到了什么困難?如何解決的?你在里面是什么角色?

個(gè)人軟實(shí)力考察

你平時(shí)的學(xué)習(xí)途徑是什么?看過什么書?有木有自己造過輪子?

  • 筆者看的書不算多,知識更多的是從網(wǎng)絡(luò)上而來,而且平時(shí)也有寫博客總結(jié)啥的。。馬馬虎虎算是蒙騙過關(guān)了-.-

你們團(tuán)隊(duì)有什么提高效率的方法和措施?有什么代碼規(guī)范約定?

網(wǎng)絡(luò)基礎(chǔ)

說說Etag的缺點(diǎn)?

  • 服務(wù)器需要計(jì)算Etag,會有性能損失

  • 不同操作系統(tǒng),web服務(wù)器對于ETag的計(jì)算方法也不同,當(dāng)使用不同操作系統(tǒng),不同類型的web服務(wù)器做負(fù)載均衡的時(shí)候,如果用ETag作為判斷條件,在被負(fù)載均衡到不同服務(wù)器后,則很容易導(dǎo)致緩存失效。

協(xié)商緩存304發(fā)生了什么事情?

  • 緩存過期后向服務(wù)器發(fā)起請求驗(yàn)證緩存是否有效,有效的話則返回304,不包含任何主體部分,直接使用緩存資源。

了解https的原理和過程嗎?

  • SSL
  • CA證書
  • 非對稱密鑰對對稱密鑰加密,對稱密鑰加密對話內(nèi)容

情景:公司的網(wǎng)站遇到劫持,頁面在上面?出現(xiàn)一些未知的內(nèi)容,原因會是啥?

  • 運(yùn)營商劫持?不是

  • 做https了嗎?做了

  • 做CSP了嗎?做了

跨域了解過嗎?為什么會存在跨域問題?為什么瀏覽器會有同源策略?跨域的方式有哪些?

  • 同源策略限制了從同一個(gè)源加載的文檔或腳本如何與來自另一個(gè)源的資源進(jìn)行交互。這是一個(gè)用于隔離潛在惡意文件的重要安全機(jī)制。

  • CORS

  • JSONP

  • iframe

    • document.domain
    • window.name
    • location.hash
    • postMessage

vue

vue的異步隊(duì)列更新機(jī)制了解過嗎?

  • 基于JS的EventLoop

vuex怎么做到全局共享的?原理是什么?為什么要使用vuex?

  • 全局注入vuex

  • 內(nèi)部使用vue進(jìn)行數(shù)據(jù)綁定

  • 獲取options中的store,假如是根組件,則賦值給store;假如是子組件則獲取父組件的store,這樣就保證所有組件引用同一份store實(shí)例啦。

JSBridge

項(xiàng)目中JSBridge是如何實(shí)現(xiàn)的?有哪幾種方法?利弊是什么?

  • 全局注入API

  • 偽協(xié)議URL scheme-使用iframe

  • 監(jiān)聽prompt/alert/console

事件

事件捕捉和冒泡了解是嗎?事件委托呢?

移動(dòng)端的點(diǎn)擊事件有300ms的延遲,了解過嗎?原因是什么?有采取過什么解決方法嗎?

  • fastClick使用原理

三面

三面應(yīng)該是前端leader了,考察項(xiàng)目經(jīng)歷和一些實(shí)際場景的解決方案。

設(shè)計(jì)模式的了解

  • 嘩嘩嘩說了一大堆設(shè)計(jì)模式名字,,

閉包

閉包的使用情景?寫一個(gè)你剛提到的單例模式,里面使用閉包實(shí)現(xiàn)

  • 經(jīng)過引導(dǎo)了一下,寫出來了

promise

情景: 發(fā)起一個(gè)請求,若請求在1秒內(nèi)成功返回,則顯示loading菊花圖直到1秒結(jié)束,若請求超過1秒返回,返回成功后loading菊花圖直接消失

  • new Date() 計(jì)時(shí),計(jì)算時(shí)間差來判斷菊花圖是否關(guān)閉(這是我回答的也是最蠢的答案)

  • 使用setTimeout優(yōu)化一下(這是引導(dǎo)后的做法)

// 菊花圖
let loading = true
// 請求標(biāo)志
let pending = true
// 定時(shí)標(biāo)志
let timer = true

setTimeout(() => {
    // 定時(shí)結(jié)束
    timer = false
    // 若請求已結(jié)束,則關(guān)閉菊花圖
    if (!pending) {
        loading = false
    }
}, 1000)

p.then(() => {
    // 請求結(jié)束
    pending = false
    // 若定時(shí)已結(jié)束,則關(guān)閉菊花圖
    if (!timer) {
        loading = false
    }
})
  • 使用promise.all(經(jīng)過引導(dǎo)后,原來面試官是想我從這個(gè)角度出發(fā))
// 菊花圖
let loading = true

let p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve()
    }, 1000)
})

let p2 = function (resolve, reject) {
    return fetch(...).then((res) => {
        return res
    })
}

Promise.all([p1, p2]).then(() => {
    loading = false
})

四面

我猜應(yīng)該是web端leader,,問了好多網(wǎng)絡(luò)基礎(chǔ)的知識,有部分和前面三輪重復(fù)的知識就不再贅述了。

網(wǎng)絡(luò)基礎(chǔ)

DNS協(xié)議了解過嗎?DNS劫持了解過嗎?

  • DNS服務(wù)器通過多層查詢將解析域名為IP地址

  • 域名劫持是指在劫持的網(wǎng)絡(luò)范圍內(nèi)攔截域名解析的請求,分析請求的域名,把審查范圍以外的請求放行,否則返回假的IP地址或者什么都不做使請求失去響應(yīng),其效果就是對特定的網(wǎng)絡(luò)不能訪問或訪問的是假網(wǎng)址。

TCP握手過程了解過嗎?說說TCP握手滑動(dòng)窗口?

  • 三次握手原理

  • 滑動(dòng)窗口真的不熟悉。。大家可以根據(jù)以下方面回答一下

    • 滑動(dòng)窗口機(jī)制提供的功能,解決的問題

    • 發(fā)送方窗口分為4類,接收方窗口分為3類

    • 窗口縮放原理

談?wù)凾CP/IP?網(wǎng)絡(luò)層了解過嗎?數(shù)據(jù)鏈路層了解過嗎?從傳輸層拿到IP地址后發(fā)生了什么?

  • 網(wǎng)絡(luò)層的協(xié)議
    • IP
    • ICMP
    • ARP 與 RARP

職業(yè)規(guī)劃

最后

hr面沒啥分享的,就是討論一下職業(yè)規(guī)劃,跳槽原因和期望薪酬,大家不要撒謊就行啦~

在hr面試通過后拿到了offer,整個(gè)過程下來還是比較順利的,考察了很多基礎(chǔ)知識,特別是網(wǎng)絡(luò)方面的;有一點(diǎn)就是,全程沒有問到數(shù)據(jù)結(jié)構(gòu)和算法。

最后提醒一下大家一定要注重web基礎(chǔ)知識和數(shù)據(jù)結(jié)構(gòu)算法,這些幾乎是每個(gè)公司每場面試的考察點(diǎn)噢~!

完。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,976評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內(nèi)容