1. 程式人生 > >前端面試知識點--5

前端面試知識點--5

內容來自牛客網面經

一面:

  1. 事件型別、繫結方式;

  2. 專案介紹;

  3. 專案中實現的某個元件的實現方式;

  4. 響應式佈局的方式;

二面:

  1. 閉包是什麼;

  2. js中的物件,物件的繼承;

  3. 我的專案中模態框表單的實現方式,如何呼叫的(這個其實專案中並沒有用的那麼高階,但是我給出了現在的思考和實現方式,臨場發揮��);

  4. 跨域瞭解多少(講了CORS、JSONP、postMessage啥的);

  5. css盒子模型(這個基本都會問到);

  6. 瀏覽器核心有哪些;

  7. 瀏覽器中從輸入url到顯示頁面都發生了什麼(經典題);

  8. 瀏覽器的渲染方式;

  9. http協議;

一面:

  1. 自我介紹,挑一個專案介紹

  2. js物件;

  3. 一個物件的例項,如何統計被幾次呼叫過,分別具體被哪些函式呼叫過,可以有哪些方法;

  4. 實現私有變數(這裡當時還沒看到相關部分,只能想到用屬性的setter、getter來做。。。��面試官各種啟發呀。。);

  5. css垂直水平居中有哪些方法;

  6. css清除浮動的原理,clear:both和clear:left的區別;

  7. 行內元素和塊級元素的區別;

二面:

  1. css盒子模型;

  2. 載入效能優化的方法;

  3. http快取控制;

  4. 瀏覽器如何匹配某個選擇器;

  5. websocket相關,輪詢,polling;

  6. ws和wss的區別;

  7. 兩列布局;

一面:

  1. 盒子模型;

  2. border的設定,border的上下左右具體範圍;

  3. css垂直水平居中的方法,flex佈局的具體實現;

  4. 兩列布局的方式;

  5. 專案中做的一個導航條點選平滑滾動到對應位置的效果,介紹它的實現方式;

  6. 閉包,塊級作用域;

  7. https的原理,加密方式,怎麼加密的(這個真不太會了。。。暈);

二面:

  1. 上來就寫個Animal類,有個Cat類繼承它,要求新建一個Cat的例項,可以呼叫catch方法輸出自己的名字“大白的貓”;

  2. 閉包;

  3. js基本資料型別,[]===[]嗎;

  4. 寫個方法判斷一個變數的型別;

  5. 事件型別,事件繫結方式;

  6. 跨域,在不支援json格式的瀏覽器中,寫方法能夠將json字串與物件互相轉換;

  7. session和cookie的區別;

  8. 簡歷上寫了react,於是給了個場景,A、B、C三個大元件,點選A中的每個小元件Ci,能在B中顯示一個form,在form的input中寫入文字,可以實時顯示在C中,點選form裡的button,可以改變Ci的顏色;

  9. 用過LESS,具體用到了什麼功能;

  10. 響應式佈局;

  11. es6中字串模版怎麼用;

  12. 用bfs實現前序遍歷;

  13. 三列布局;

  14. 盒子模型;

二面:

  1. 專案介紹;

  2. 做一些js題(考察this,作用域,變數宣告,引用型別);

三面:

  1. 感覺自己優勢在哪裡;

  2. 前端框架了解哪些,vue和react對比;

  3. 對自己有何職業規劃;

  4. 感覺自己需要如何提高;

  5. 演算法題,給千萬量級的珠子,共上百種顏色,圍成一個圈,求連續的包含所有顏色的最短子串的長度,並分析時間複雜度;

  6. 介紹MVVM模式;

  7. grunt用過哪些功能;

  8. 介紹某個專案;

  9. 如果要你設計一個元件,你會如何設計(這個不確定是不是百度問的了);

  10. 哪方面學的比較好,哪方面比較薄弱(我直接坦白說演算法資料結構等計算機基礎可能相對更好點,但是js不太深入,於是後面他就懂了,全問的演算法��);

  11. 實現洗牌演算法;

  12. 實現一個列表中每個li裡有一個input和button,點選button刪除對應的li節點;

  13. 最短路演算法(dijkstra),有負環怎麼辦(spfa);

  14. js中的閉包概念?濫用閉包有什麼副作用?

  15. js裡的基本資料型別?有幾種方式可以判斷資料型別?
  16. jQuery原始碼有看過嗎?請說出jQuery內部判斷資料型別的巧妙方式。
  17. 字串“1”加上數字1的結果是? (也許是看我前一題答不上來,沉默半天突然問了這個……這是在動態調整難度?)
  18. ajax的內部原理?
  19. 你都用過哪些前端框架?為什麼選擇這個框架?
  20. 你在專案中創新性地解決了哪些難題?
  21. 你在專案中都有哪些效能優化的經驗?

    jQuery原始碼有看過嗎?請說出你印象最深刻部分的原理。 (還好我一面過後惡補了這方面內容……)

  22. 你對目前流行的前端框架都有什麼瞭解,有沒有應用經驗? (一面時面試官推薦我多瞭解一下 Vue.js ,我回去也惡補了,二面時便說了一些對Vue.js的理解,二面面試官也說Vue.js是他們常用的,這個資訊很重要)
  23. 你是從哪些途徑學習前端新知識的? (我說是看文件和大牛部落格,她又問我“你能說出一些知名博主的名字嗎?”,看來平時也是要多留心的)
  24. 你在專案中創新性地解決了哪些難題?

  25. 閉包的作用,用法。

  26. ES6有用過哪些特性?

  27. 給了段程式碼,問輸出什麼。主要是考作用域鏈和this

  28. 實現左定寬右撐滿的佈局。盒子模型。要使盒子表現與IE一致該如何?

  29. 事件機制,如何繫結事件處理函式。

  30. js非同步模式如何實現?

  31. 如何獲取某個DOM節點,節點遍歷方式?

  32. 用LESS如何給某些屬性加瀏覽器字首?

. js類的繼承方式,並實現。

  1. 要實現函式內每隔5秒呼叫自己這個函式,100次以後停止,怎麼辦。

第一個問題是我最不想被問到的問題,一緊張全忘光亂套了,被鄙視;第二個問題其實靜下心來想應該是可以做好的,但是由於第一題的影響,哎還是亂了陣腳。可能面試官也覺得我很low吧。。。= =。。但是可能看我等了這麼久,還是放我去hr面了。
我問的問題:
為什麼不問我別的知識點?比如css之類的?他說css和js是前端的兩個大頭,然後貌似說css他也不太熟。。。??(可能我聽差了吧。。��)
團隊中尤其是新人,一般都做些什麼工作?
用什麼技術框架?

首先介紹下做過的自我感覺最好的專案
我就只能拿槍彈櫃這個說了,只是因為我全程都參與這個專案,最為了解,但是其實說實話它雖然體量還算龐大,用到了好些個相關技術,但是卻不深,感覺並沒有太大說服力。面試官也沒有太多地深入問。所以感覺最好要有一個自己從頭開發的有難度的小專案就好了,若是在github上有star或者fork肯定更加分~
css的margin重疊問題
說實話,之前並沒有系統地瞭解過,只有個大概的映像,答的不好,詳細答案在這裡。
javascript的事件繫結
效能優化問題
這個不太瞭解,沒說
安全性問題
這個不太瞭解,沒說

如果一個頁面打開了之後空白,你會如何定位問題?如果不是網路、伺服器的問題,就是前端問題,該如何定位?
平常用什麼瀏覽器?怎麼除錯的?chrome開發者工具平常都用到了什麼?關於效能的除錯用到了啥?
我說主要是chrome;用chrome的開發者工具;除了效能,我其它的基本都有了��。
關於HTTP,cache怎麼控制的?如果允許快取,一個頁面訪問快取的流程是怎樣的?
我說用cache-control,pragma;
關於專案:php用的什麼版本?nodejs的websocket是自己實現的還是用的元件?如何劃分模組?開發環境是windows還是linux?
這個基本上就照實說了。
用了什麼前端構建工具?
grunt,介紹了用過什麼功能,是否自己搭建。
js中setTimeout的函式執行時間?觸發了setTimeout後會立即執行嗎?
關於前端效能、安全性問題?提到了CSIF
H5的移動端和PC端頁面開發有什麼區別?
window.onload 是什麼時候觸發的?
啊這個問題前兩天才看過T^T…然後不確定,本來想說是在完全載入完成後執行的,結果最後還是答了個錯的答案。。QAQ。。。window.onload與document.ready的區別.
jquery的入口函式寫在哪裡?為什麼?
我說寫在頁面的body結束前,因為這樣頁面都會載入完再執行js程式碼。應該少說了個 頁面的載入不會被js程式碼阻塞 吧。