天天看點

【搜集】前端面試題總結CVTE面試(一面)CVTE面試(二面)CVTE HR面試騰訊面試順豐HR面試順豐科技前端(一面)阿裡一面多益網絡一面拼多多前端(一面)拼多多前端(二面)猿輔導前端(一面)老虎證券網易考拉前端(一面、二面)美團外賣前端(一面)美團外賣前端(二面)位元組跳動前端面試(一面)位元組跳動前端面試(二面、三面)快手前端面試(一面、二面)小米前端面試(一面)

【搜集】前端面試總結

CVTE面試(一面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/88897?toCommentId=1514882

來源:牛客網

  1. 自我介紹
  2. 介紹項目,以及項目中遇到的難點
  3. 對閉包的了解,以及哪些地方用過閉包,以及閉包的缺點
  4. 對跨域了解嗎,jsonp 的限制
  5. 浏覽器哪些地方用到了異步(這個沒答上來)
  6. CSS 彈性布局,哪些地方用到過
  7. position 屬性有哪些值,分别什麼含義
  8. ES6 用到過嗎,新增了哪些東西,你用到過什麼
  9. const 和 let 差別,可以改變 const 定義的某個對象的屬性嗎
  10. 箭頭函數,箭頭函數的特點,應該是 this 的指向
  11. 因為我說項目中用到 cookie,是以她也問了 cookie 有哪些限制
  12. 除了 cookie 還有那些東西辨識使用者身份的
  13. 事件機制
  14. settimeout 的機制
  15. 遇到過相容性問題嗎,怎麼處理的
  16. 項目中有用過建構工具嗎
  17. 平時怎麼學習前端,最近在看的一本書

CVTE面試(二面)

  1. 先讓說了一下項目,主要負責的部分,然後有沒有使用什麼新技術 平時的學習途徑,說了有寫部落格,然後問了部落格位址,從什麼時候開始寫之類的。
  2. 一道楊輝三角形的題

    1

    1 1

    1 2 1

    輸入 n ,輸出數組

    假設輸入 3,輸出數組 [[1],[1,1],[1,2,1]]

CVTE HR面試

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/92649

來源:牛客網

  1. 對自己前兩輪面試打個分
  2. 做的最成功的一件事
  3. 有沒有什麼主動争取的東西
  4. 特别困難的時候
  5. 家裡的情況
  6. 影響最大的一個人
  7. 期望薪資
  8. 如果一起進去的人薪資比你高你怎麼看
  9. 業餘有什麼愛好
  10. 加班怎麼看
  11. 工作地點怎麼看
  12. 有沒有 offer
  13. 特别想去的公司
  14. 會因為什麼放棄 cvte 的 offer
  15. 提問

騰訊面試

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/89360?type=2&order=0&pos=4&page=0

來源:牛客網

  1. 自我介紹
  2. 項目及項目難點
  3. 跨域的方式( JSOP 和 CORS )還有其他的嗎( 不知道 )
  4. 你覺得 vue 有哪些特點
  5. 因為自己是跨專業的是以他問我學過哪些計算機的課程
  6. 用過 git 是吧( 項目中沒用過,自己維護個人 github 用過 ),在項目怎麼用 git 知道嗎( 就是分支,合并,合并的時候出現沖突怎麼辦,沒答上來 ) 然後問了 a^n 怎麼用小于 O(n) 的算法實作 ( 沒答上來 )
  7. 假設有這麼一張表,學生姓名,課程,成績,怎麼查出每個學生成績最高的那門課程的成績
  8. TCP 和 UDP 的差別 因為說了 tcp

    是可靠傳輸,是以他問為什麼是可靠傳輸傳輸,其實就是三次握手,但是當時不知道是因為這個,是以沒答上來 前端性能優化

順豐HR面試

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/90658

來源:牛客網

  1. 自我介紹,說項目比較多,然後讓我聊聊其他方面
  2. 說了說自己的性格,興趣
  3. 性格裡面說了自己能吃苦,自制力比較強。讓舉幾個例子
  4. 因為大學不是這個專業的問了為什麼跨考
  5. 為什麼選擇前端
  6. 履歷提到寫部落格,寫部落格的目的
  7. 期望薪資
  8. 有沒有想去的公司或者地方
  9. 有其他 offer 嗎
  10. 對順豐科技的了解
  11. 找工作的話最想獲得的是什麼(能力的提升)

順豐科技前端(一面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/89356?type=2&order=0&pos=5&page=1

來源:牛客網

  1. 自我介紹
  2. 項目及項目中用了哪些架構
  3. 項目中的難點
  4. 了解 MVVM 嗎,和 MVC 的差別
  5. 對象和類的差別,舉個現實中的例子
  6. 你了解的面向對象
  7. 說一下原型鍊吧
  8. 閉包的原理
  9. 資料庫了解嗎( 不了解 )
  10. css 響應式布局
  11. 履歷中寫着了解 node 是吧( 用 node 寫過幾個爬蟲,具體的不是太了解 )
  12. ES6 新增的 set() 和 map() 有什麼差別
  13. 說一下快排的原理

阿裡一面

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/92258?toCommentId=1565498

來源:牛客網

  1. 你會哪些東西(javascript 對象,原型,閉包)
  2. js 數組有哪些方法(基本把所有數組方法說了一遍)
  3. 哪些會改變原數組
  4. every 和 some 的差別
  5. 數組去重
  6. 寫一個函數判斷是否存在循環引用(沒答上來)
  7. 深拷貝和淺拷貝
  8. 繼承,原型鍊繼承怎麼實作
  9. ES6 用過哪些新特性
  10. 箭頭函數和之前的差別,說了 this,然後提到了閉包,講了一下閉包
  11. 函數中的 rest 參數可以用别的名字代替嗎(這裡不熟,說了不可以,其實是可以)
  12. promise 函數了解嗎,如何實作一個 A->B->C 說了 Promise.then,然後又問了如果 事情的個數不知道呢(沒答上來)
  13. async 和 await 了解嗎,不太了解,隻知道傳回的是 promsie 對象
  14. 用過 webpack(項目中沒用過,自己了解過)講一下 webpack,有什麼作用,講到 了性能優化,有哪些性能優化的地方,壓縮胡亂代碼,其他沒答上來
  15. AMD 和 commonjs 怎麼使用,怎麼配置,有哪些好處

多益網絡一面

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/96296

來源:牛客網

  1. 自我介紹
  2. 項目(項目中問的問題比較多,抓住幾個點來問你為什麼這樣做)
  3. 事件模型
  4. 怎麼在事件捕獲階段觸發事件
  5. 平時有關注一些部落格什麼的嗎,講一個最近看的(講了一下 base64 編解碼的)
  6. spa 了解嗎,隻知道是單頁面應用程式,但是不是特别了解
  7. 函數防抖和函數節流(之前看過但忘記了,隻說出了防抖)
  8. 前端路由的實作了解嗎
  9. 排序算法,時間複雜度
  10. 平衡二叉樹
  11. 網絡七層協定
  12. 加班的看法

拼多多前端(一面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/96907

來源:牛客網

  1. 項目
  2. vue 的優點
  3. vue 父子元件通信
  4. vue 生命周期(并不怎麼了解 vue 啊,隻是用過)
  5. 用 meta 怎麼實作不從緩存中擷取資源
  6. 閉包
  7. ES6 了解什麼
  8. promise 和 async await
  9. 事件模型和事件委托
  10. 箭頭函數 this 指向
  11. this 綁定(說了預設綁定,隐式綁定,顯式綁定,new 綁定)淺析 Javascript 中 this 的指向 ( 箭頭函數 )
  12. 函數柯裡化(這裡不是特别會,他講給我聽了)sum(4)()()(3) 結果等于 7 這樣
  13. 原型鍊
  14. class
  15. nodejs 了解什麼(做過幾個小爬蟲)
  16. 具體用了哪些東西
  17. webpack 怎麼配置
  18. babel 怎麼配置

拼多多前端(二面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/98470

來源:牛客網

  1. 介紹一下項目,問了一下項目中具體的細節
  2. 原型鍊,proto 和 prototype 的差別
  3. 判斷數組的方法 應該有 5 個吧,都說了,然後讓說一下不同,Array.isArray() 沒說出來,其他的都說了,順便說了下 instance 的實作原理(上次被問到不會)
  4. http 和 https 的差別,說了一下傳輸過程和對稱非對稱加密
  5. attribute 和 property 的差別
  6. css 僞類是什麼(沒答出來)
  7. 常見的布局方式,flex 布局三列等寬,flex:1 的意義
  8. inline 和 inline-block 的差別
  9. 正則 ? 的用法有哪些(正向預查和 0 次或一次)?:有使用過嗎,沒有 get 和 post 的差別,說了 post更消耗資源,又問那為什麼不用 get 發送資料(沒答出來)
  10. cookie 和 localstorage 差別,為什麼不用 localstorage 驗證使用者身份(也沒答上來)
  11. promise 使用場景有哪些。promise 裡面 return 一個 string,和在 resolve 一個 string的差別,這題也答錯了,說成了 return string 傳回的也是 promise 對象。然後又問在 then 裡面 throw 一個 error,怎麼捕捉,說了第二個參數和 catch,也說錯了,用第二個參數捕捉不到這個 error,讓我面完試試,果然捕捉不到。
  12. 匿名函數的使用場景,說了回調函數,箭頭函數,或者閉包,然後就沒繼續問了,是答得有問題嗎?
  13. 前端路由和服務端路由
  14. 深拷貝和淺拷貝,深拷貝的實作以及應用場景
  15. jsonp 的原理

猿輔導前端(一面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/97744

來源:牛客網

function ClassA()
{
    this.name = 'classA'
}
const classA = new ClassA ()
ClassA.prototype =
classA.__proto__ =
classA instanceof ClassA
true
false
           
  • new 出來的執行個體 this 指向哪
  • 怎麼修改 new 出來的 this 的指向(當時說的 new 出來的指向不能修改)
  • 換了個問法,怎麼在構造函數中修改 this 的指向。說了個借用構造函數也沒說對不對
  • ClassA 的 prototype 是啥,有啥
  • classA 的 proto 是啥
  • 原型鍊講一下
  • instanceof 什麼時候傳回 true,什麼時候傳回 false
  • 怎麼讓 classA instanceof ClassA 傳回 false
  • js 裡面異步的方式有哪些
  • 寫一個 cb2promise 函數,參數是一個函數,将 getUrl 轉換成 getUrlPromise
// callback (error, data)
function getUrl(callback)
function getUrlPromise(){}
function cb2promise(fn)
const getUrlPromise = cb2promise(getUrl);
getUrlPromise.then(data=>{}).catch(err=>{})
// 寫一個函數,将傳進去的數組按深度展開
list:[1,2,[3,4],[5,6,[7,8],9],10,11]
// depth 等于 1 時輸出
depth = 1 :[1,2,3,4,5,6,[7,8],9,10,11]
// depth 等于 2 時輸出
depth = 2 :[1,2,3,4,5,6,7,8,9,10,11]
function flattern(list,depth){
}
           
  • 對架構有了解嗎,對 css3 有了解嗎,移動端适配講了一下。平時除了看書還有哪些學習途徑

老虎證券

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/99056

來源:牛客網

  1. position 有哪些屬性,分别有哪些意思
  2. 清單有哪些
  3. form 送出表單的形式有哪些
  4. 盒模型(标準盒模型和怪異盒模型)怪異盒模型的觸發條件
  5. bfc 及觸發條件
  6. 高度塌陷及解決方案
  7. input 怎麼擷取 value
  8. css 的權重
  9. js 基本資料類型,說了 symbol 但是問是啥就不清楚了
  10. typeof 傳回值
  11. let const var 差別,這裡又問了 typeof 沒定義的會報錯嗎(不會,undefined)那 typeof let 定義的呢,提到了暫時性死區,由于沒試過是以說覺得因為暫時性死區應該會報錯(剛試了一下說對了)
  12. es6 的箭頭函數,主要講了一下 this 的綁定
  13. http get 和 post 差別,一個擷取,一個發送,get 請求能被緩存,儲存為書簽,有長度限制
  14. 性能優化的方案(基本的沒說)
  15. 說了一個文檔碎片
  16. dns 預解析,哪些方式
  17. 然後他問到了 js 放在哪,問了下原因
  18. 圖檔懶加載,怎麼判斷什麼時候加載,說了一個 offsettop 好像不對,不過說具體思路沒問題
  19. dns 了解嗎。。。不是特别了解
  20. cdn 知道嗎,怎麼判斷要去哪裡擷取(他應該覺得問的太深了,是以自己也說了等以後用到再說)
  21. 跨域,同源政策講了一下,jsonp 的具體實作。假設 a 網站請求 b 網站的一個 js,這個 js 中請求了 b 網站的内容算跨域嗎。
  22. 重繪和回流,一個 absolute 的 div 在 js 中,将 left 從 1 變為 100 會觸發嗎,說了應該會,一閃一閃,答錯了,讓我回去試一下,試了一下是直接閃到 100 的位置。
  23. xss 攻擊了解嗎,防禦方式有哪些(浏覽器自帶防禦,特殊字元轉義,哪些特殊字元,黑白名單,csp)

網易考拉前端(一面、二面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/99069

來源:牛客網

一面:

  1. 因為提到了 weex 是以問了點 weex 的問題就不說了
  2. 然後就是封裝一個 url promise
function(url,option){ // option裡面的内容是自定義的,說是你可以自己定義
var promise = new Promise({
    var xhr = new XMLHttpRequest();
    xhr.open(option.method,url,false);
    xhr.onreadystatechange = handler;
    xhr.setRequestHeader(option.Header,option.Value);
    if(option.method == 'get'){ // 寫到這裡讓别寫了,說下思路
        xhr.send(null);
    }else{
        xhr.send(option.data);
    }
    function handler(){
        if(this.readyState === 4){
            if(this.status >= 200 && this.status < 300 || this.status == 304){
               resolve(this.responseText);
             }else{
                reject(New Error(this.statusText))
            }
           }
    }        
    })
return promise;
}
           
  1. 防抖和節流,簡單實作
// 防抖
function debounce(func,wait){
    var timeout; return ()=>{ var self = this;
        var args = arguments;
        if(timeout) clearTimeout(timeout);
        timeout = setTimeout(()=>{
                func.apply(self,args);
            },wait)
        } }
// 節流
function throttle(func,wait){
    var timeout;
    return ()=>{
        var self = this;
        var args = arguments;
        if(!timeout){
            timeout = setTimeout(()=>{
                    timeout = null;
                    func.apply(self,args)
                },wait)
        }   
    }
}
           
  1. 一個場景題,兩欄布局左邊定寬,裡面的内容居中,右邊自适應,然後右邊是一個類似購物車一樣的東西,可以随意添加删除

    怎麼實作布局,說了 flex,居中有 justify-content,還有一個 align 什麼的(align-items)當時忘了。

    flex 1 的意思

    然後右邊怎麼做,事件代理,怎麼知道是哪個觸發,有個 target

  2. 代碼裡面的性能優化,說了個文檔碎片和利用 requestAnimationFrame 實作延遲加載
  3. 跨域,jsonp 的實作原理
  4. 數組的周遊方法,reduce 使用場景,這裡舉了一個自己不是很熟的例子,沒圓好
  5. $emit 用過嗎(沒有。。。)
  6. 強緩存和協商緩存

二面:

  1. 子產品化的東西了解哪些
  2. AMD CMD commonjs es6 子產品化的差別,CMD 和 ES6 的子產品化沒怎麼了解
  3. 說下 ES6 的 Map,Set,Promise,Class。說下 Map 和對象的差別,為啥有了對象還要 Map(沒答好)
  4. 寫過動畫嗎(沒有)
  5. webwoker 的作用
  6. 函數柯裡化
  7. 防抖和節流及應用場景
  8. 怎麼實作一個 tab 吸頂。說了擷取位置,根據位置改變 css。
  9. 怎麼用原生 js 添加類,.className,setAttribute

美團外賣前端(一面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/99519

來源:牛客網

  1. 簡單自我介紹
  2. 學前端多長時間,平時怎麼學的
  3. html 語義化,對語義化的了解,有哪些好處,哪些标簽,什麼用,提了 seo
  4. html 盒模型,怪異盒模型和标準盒模型的應用場景
  5. css 不定寬高垂直居中(就說了兩個)定寬高呢
  6. array 方法有哪些,分成兩類的話怎麼分
  7. 兩個數組比較,判斷是否有相同元素。說了一個 set,一個 obj

    假設裡面有對象,隻要對象屬性相同就算相同該怎麼做,說了一個 JSON.stringify 轉換為字元串,不過好像不是他要的答案,不知道還有更好的方式嗎

  8. 數組的方法有哪些,讓你分兩類怎麼分,是否改變原數組
  9. 深拷貝和淺拷貝,深拷貝有哪些原生的方法嗎,沒有。有 JSON 的序列化和反序列化,遞歸兩種。object.assign 不是嗎(object.assign 是淺拷貝)
  10. JSON 序列化的缺點(不能複制函數,正則,date 這些對象,還有循環引用的問題)
  11. 設計外賣的購物車,有哪些功能。如果外賣份數不夠了該怎麼做。(請求背景資料時儲存下來,然後選擇的時候判斷,大于 disabled)

    還有嗎(說了一個用節流擷取資料判斷)然後問了他是正常開發中是怎麼解決的,就是上面說的那樣

  12. 使用者點外賣的份數怎麼和背景通信,一開始了解錯了,說送出的時候才通信,然後他說使用者萬一中斷了再進了怎麼擷取,說了 localStorage,然後問了下為什麼不用 cookie
  13. 前端需要哪些技能,了解哪些東西。提到了 node,問了下 node 在前端的用處,commonjs 和服務端渲染(隻是知道有這麼個東西)
  14. 設計模式(履歷上的)說一下訂閱者模式
  15. git (履歷上的)怎麼删除一個遠端分支

美團外賣前端(二面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/99736

來源:牛客網

  1. 自我介紹
  2. 設計一個證券清單,有證券号,證券名,價格,按鈕,點選按鈕顯示價格(提到了事件委托,target)

    事件委托和 onclick 的差別

    tagegt 有哪些對象

  3. getElementsByClassName 和 querySelectorAll 的差別,說了一個傳的選擇器,一個字元串,然後問傳回值呢,沒有答上來,查了一下一個傳回的是 Static Node List,一個傳回的是 Live Node List。
  4. 如果使用者瘋狂點選送出按鈕怎麼辦(點選以後禁用或者事件節流)
  5. 如果使用者用腳本點選呢(驗證碼等一系列驗證使用者身份的東西)

    考慮所有的情況完整的說一遍

    用什麼請求擷取(get)

  6. 輸入 url 到顯示的過程
  7. 為啥 js 放在 body 最後(阻塞渲染)
  8. cookie 和 localstorage 的差別
  9. 一個場景:雲筆記,使用者手機端,pc 端,pad 端分别同步了,然後 pc 端,pad 端斷網,分别修改,然後一個先聯網一個後聯網,沖突怎麼處理。(提示從資料結構考慮,感覺可能用棧處理好一點,然後又問設計哪幾張表,分别有哪些字段,這個真不會,然後說自己可能不太清楚)
  10. es6 箭頭函數
  11. 平時用美團的産品嗎,說一下對美團的看法

位元組跳動前端面試(一面)

來源:CSDN

原文:https://blog.csdn.net/zhang6223284/article/details/87926458

版權聲明:本文為部落客原創文章,轉載請附上博文連結!

  1. 項目相關
  2. 跨域方式
  3. 安全相關 XSS 及解決方案
  4. compose 函數實作
  5. koa 中間件機制
  6. node 爬蟲過程(履歷)
  7. react 和 vue 差別
  8. 虛拟 dom
  9. https 連接配接過程
  10. react 性能優化
  11. node Event 實作(釋出訂閱實作)
  12. 寫一個函數,實作
['a','0'],['b','1'],['c','2']] => ['abc','ab2','a1c','a12','0bc','0b2','01c','012'']
           
  1. node 事件循環機制
  2. commonjs 及 ES6 Module 的差別

位元組跳動前端面試(二面、三面)

作者:[Object object]

來源:CSDN

原文:https://blog.csdn.net/zhang6223284/article/details/88188612

版權聲明:本文為部落客原創文章,轉載請附上博文連結!

二面

  1. 對函數式程式設計了解說一下 純函數,偏應用,柯裡化,compose 分别是什麼

    寫一下柯裡化

  2. apply,call,bind 的差別
  3. 一段代碼, 為什麼 3 不列印(這裡說錯了,應該是列印的),1 最後列印
setTimeout(function() {
    console.log(1)
}, 0);
new Promise(function executor(resolve) {
    console.log(2);
    for (var i = 0; i < 10000; i++) {
        i == 9999 && resolve();
    }
    console.log(3);
}).then(function() {
    console.log(4);
});
console.log(5);
           
  1. 說一下事件循環
  2. BFC 和 IFC 有了解嗎,BFC 特性及條件
  3. 盒模型
  4. css 畫一個平行四邊形,translate
  5. 浏覽器輸入 url 到渲染
  6. 緩存
  7. 狀态碼了解哪些,301 和 302 差別
  8. option 方法知道嗎
  9. 排序算法,事件複雜度,歸并,快排,堆排的應用場景
  10. CSRF 原理及防禦
  11. ES6 用過哪些
  12. 最近收獲較大的一篇文章及收獲
  13. 設計消息通知,比如點贊,評論這些通知

三面

  1. 順時針列印矩陣 (如果沒過肯定就是因為這題,面試官都快把答案說出來了我還是沒做出來)
  2. http 和 https 差別及建立連接配接的過程
  3. instanceof 原理(代碼)
  4. 尋找二叉樹中路徑是否存在某條值等給定值的路徑,看我算法比較差就讓我說了思路
  5. 自己寫的爬蟲裡面的一些細節及如何處理反爬
  6. 最有成就感的一件事

快手前端面試(一面、二面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/101914

來源:牛客網

一面

  1. CSS3 選擇器有哪些(不太了解)
  2. 那你了解的選擇器有哪些(僞類僞元素,兄弟,子元素,後代)怎麼寫(h1 h2,h1>h2)
  3. CSS 兩欄布局(float table flex)兩列等高布局
  4. 浏覽器渲染的過程(html 建構 dom,css 建構 cssom,這兩個建構 render tree,渲染)
  5. 怎麼判斷一個檔案是 html(content-type? 有哪些值 json JavaScript,其他的不太了解)
  6. http 緩存(強緩存和協商緩存,中間有些自己了解的問題,面試官指出來了)
  7. 301 和 302 狀态碼
  8. js 基本資料類型
  9. typeof 的值有哪些
  10. 還有哪些判斷類型的 api (instanceof Array.isArray constructor Object.prototype.toString.call)
  11. bfc 的特性(說了塊和靠邊)
  12. 科學計數法,将 24315436 轉換成 24,315,436

    之前看過這個的正則就用正則寫了

function change(num){
    var str = num + "";
    str.replace(/\B(?=((\d{3})+)$)/g,',');
    // str.replace(/\B(?=(\d{3}+)$)/g,','); 當時是這麼寫的,少加了個括号,沒改完他就說思路是對的
    return str;
}
           
  1. ?= 的作用(正向預檢)

// 寫出一個數組展開函數, 如輸入:[1,[2,[3,4,2],2],5,[6]], 則輸出:[1,2,3,4,2,2,5,6]

// 因為和深度無關,是以說最簡單可以這樣

function flatten(arr){
    var res = arr.join().split(',');
    res = res.map( ele => +ele)
    return res;
}
// 還有嗎,遞歸,寫一下
function flatten(arr){
    var array = [];
    arr.forEach(ele => {
        if(Array.isArray(ele)){
            array.push(...flatten(ele));
        } else {
            array.push(ele);
        }
    })
    return array;
}
           
  1. let var 差別(var 存在變量提升,let 塊級作用域,暫時性死區,let 可以重複定義嗎,不可以)
  2. 事件模型及事件委托
  3. 寫一下深拷貝(這個就不寫了,網上有)還有哪些方式(JSON 序列化)還有嗎(我知道的就這兩種,還有其他的嗎)你的答案是對的,但是想看看你知識的廣度
  4. 軟體工程方面看過哪些書(進階軟體工程,人月神話看過嗎,不清楚)
  5. 設計模式(單例和裝飾者講一下,單例模式用處,AOP 知道嗎,不太了解,好像是 before 函數和 after 函數)
  6. 排序算法時間最優(nlogn 的吧,哪些?快排,堆排,歸并)

    快排最壞 n2,什麼情況下,基本有序

二面

  1. 實作一個函數 findLastIndex(), 傳回指定數在“有序”數組中最後一次出現的位置findLastIndex([1,2,3,3,3,4,5], 3), 傳回 4

    // 剛開始寫的有點問題,沒有判斷全部相等的情況,後面提醒寫上了,寫的比較粗糙,如果有更好的可以分享一下。

function findLastIndex(arr,num){
    var mid,left,right,pos = -1;
    mid = Math.floor(arr.length/2);
    left = 0;
    right = arr.length - 1;
    if(arr[left] != arr[right]){
        while(Math.abs(left - right)!= 1){
            if(arr[mid] === num){
                pos = mid;
                left = mid;
                mid = Math.floor((left + right)/2);
            }else if(arr[mid] > num){
                right = mid;
                mid = Math.floor((right + left)/2);
            }else if( arr[mid] < num){
                left = mid;
                mid = Math.floor((left + right)/2);
            }
        }
    }else{
       pos = arr.length - 1;
   }
    return pos;
}
           
  1. 請實作一個函數,功能為合并兩個升序數組為一個升序數組
  2. instanceof 實作原理

    其他還有哪些方式判斷,跟一面差不多

  3. 工程化的東西有用過嗎(自己有學過,然後讓講一下過程,講的不好,可以說很差)
  4. 子產品化(ES6 Module AMD CommonJS 差別)import 和 require 差別(一個值的拷貝,一個值的引用,還有嗎,不清楚)
  5. 事件綁定哪些(onclick addeventlistener 還有 html 頁面裡面 onclick)dom0 級和 dom2 級事件有哪些(一開始了解錯了,後面提醒是其實就是 onclick 和addeventlistener 的差別)什麼情況下用到事件委托
  6. css 移動端适配有哪些(viewport,media query,rem)
  7. 移動端有哪些機關(px,rem)還有嗎(em,好像不适合移動端,而且他是疊加計算的)
  8. 那 em 和 rem 是什麼,rem 就是 :root { font-size: 16px },em 根據父元素的 font-size。預設值多少 16px;

小米前端面試(一面)

作者:靈活的死胖子

連結:https://www.nowcoder.com/discuss/109130

來源:牛客網

  1. https 具體的傳輸過程,其實不是問題,他接觸的不太多,是以讓我講一下
  2. dns 解析過程,也是接觸的不太多,讓講一下
  3. 緩存,expire 和 cache-control 差別(都是用的系統時間,但是一個用的絕對時間可以設定,後者用的相對時間)
  4. 跨域,主要讓講了一下 jsonp
  5. html 語義化的了解
  6. 引入 css 有哪幾種方式
  7. css 的機關有哪些,你常用的有哪些
  8. css 優先級
  9. bfc 特點,建立方式
  10. js 原型鍊
  11. js 解包拆包,就是字元串調用 String 對象方法的過程,一開始沒了解,後面才懂
  12. js 類型轉換,比如 object 和 string 做加法運算

繼續閱讀