面試大概

頭條一面

  • UTF-8 UTF-16 和 Unicode 什麼關係 【當時不會 | 編碼規則和字符集】
  • TCP三次握手能夠理解,爲何須要四次揮手 【四次揮手是2+2】
  • 常見的HTTP狀態碼 【相信大家都會】
  • GET\POST請求區別 【常規問題】
  • HTTP報文分爲幾部分,分別說了啥,頭部尤爲重要 【當時說的不全 | 3個部分,以及請求和響應報文的區別】
  • HTTPS與TLS或者SSL有了解麼,加密是對稱加密仍是非對稱加密 【當時不是特別瞭解 | 兩者都有】
  • JS內存管理機制 【標記-清除】
  • 數組和鏈表區別和應用場景 【查找-操做】
  • 動態數組如何實現,查找和插入哪一個代價大【當時不會】
  • Electron的原理,簡單描述 【Node.js+NativeApi+Chromium】
  • Vue的原理,簡單描述 【Object.defineProperty + Dep + Watcher】
  • 平時怎麼學習新知識,從什麼渠道 【博客、掘金、GitHub、StackOverflow等】
  • 開發項目中遇到最困難、最有挑戰的事 【PicGo的插件系統】
  • 算法題1,求數組裏最大和的子數組 【思路說了,沒寫出來】

頭條二面

  • 若是我是一個Leader,想要把APP裏某個頁面的首次開屏渲染時間下降,如何協調前端、服務端、客戶端同窗。【我說了緩存相關的,不過面試官說不夠】
  • 從輸入一個URL到最終用戶看到界面,經歷那些步驟【常規題】
  • 對HTTP/2有沒有了解,以及QUIC協議【都瞭解過,稍微說了一下個人認知】
  • HTTP緩存,304狀態碼如何而來【常規題】
  • 算法題2,單鏈表是否交叉,如何算重疊個數【說了一下思路,可是不是最優解】

頭條三面

  • 談項目 【簡歷上的,主要是PicGo】
  • Electron原理 【一面說過了】
  • markdown渲染原理 【正則匹配】
  • 對前端框架的想法 【從開發效率到後期維護還有工程化角度說了本身的認知】
  • 有什麼想問的 【問了之後要作啥】

 

微信一面

  • 問實習作了啥 【研究生導師的公司】
  • PicGo作了啥 【簡述了一下誕生的過程和它的做用】
  • Electron是啥,爲何選擇用Electron 【用的人多】
  • MVVM與Vue的理解 【數據驅動】
  • vue的雙向綁定的原理 【Object.defineProperty + Dep + Watcher】
  • vue的生命週期以及作了啥,用來幹嗎的 【beforeCreate、created、mounted等】
  • 講講Virtual Dom 【稍微說了一下理解】
  • 寫過render函數麼,跟template有啥區別 【寫過,說了一下區別】
  • vue的服務端渲染和客戶端渲染區別是啥,服務端渲染做用是啥 【SEO友好,首屏渲染速度等】
  • 講講this指針和箭頭函數 【常規題】
  • const和let與var的區別 【常規題】
  • 說說webpack、rollup的tree shanking 【說了tree shanking是啥以及如何實現的】
  • webpack的loader和plugin區別是啥 【loader處理某一類文件而plugin能夠作「任何」事】
  • promise的finally如何實現 【說了一下個人想法,可是後來想一想有點不對】
  • 瀏覽器和Node端的事件循環的區別 【說了一下個人印象,與setTimeout有關】

微信二面

  1. 算法題:m*n的矩陣,只有0、1,找出最大的只包含1的矩形面積。【說了最蠢的解法...面試官一直引導我也沒想出怎麼實現更優解】
  2. PicGo作了啥,爲啥star這麼多 【講了一下做用】

 

支付寶一面

  • 介紹一下作的項目 【實驗室項目+我的項目】
  • 前端工程化的理解 【流程+規範+自動化等】
  • 對Webpack作了哪些配置來提速 【不少,具體能夠參考我這篇文章
  • 一段代碼輸入babel,把結果再輸入babel,結果同樣麼 【我說應該不同,可是沒說出爲何】
  • 配置過babel哪些屬性 【presets,plugins,env等】
  • PicGo的插件如何發佈、安裝,如何確保插件安全性 【經過npm發佈,安全性沒有考慮很徹底,而後跟面試官聊了安全方面的考量】
  • Electron如何實現跨進程通訊。還有哪些其餘跨進程通訊的例子 【ipcMain和ipcRenderer,跨進程通訊的好比socket等,我瞭解的很少】
  • Electron打包體積、編譯速度相關如何考量,怎麼優化或者怎麼作的 【我是經過CI打包,沒經過本身的機器。因此沒有特別考慮這方面的。不過不須要用babel轉譯能節省一些時間】
  • 爲何選TypeScript來開發,說說對TS的理解 【靜態類型、語法檢查等】
  • TypeScript的interface編譯後會佔用空間麼,enum呢?(運行時和開發時不同)【前者答出來了,後者不肯定】
  • 說說什麼是服務端渲染以及Vue的服務端渲染如何實現 【直出HTML,經過render函數將VirtualDom渲染模板】
  • 若是Vue2沒有實現VirtualDOM,能夠作到服務端渲染嗎 【能夠】
  • Vue的diff算法如何實現 【說了一下以前本身看過的實現】
  • 【算法題】求兩個序列裏的最長公共子序列 【稀裏糊塗說了一通,好像沒錯,後來想一想其實不對】
  • 簡單說說Vue的響應式原理 【Object.defineProperty + Dep + Watcher】
  • 你有什麼要問個人嗎 【主要作什麼?答:螞蟻森林,螞蟻莊園等】

支付寶二面

  • 學前端的經歷? 【15年開始自學,簡單說了一下】
  • 對計算機的體系結構的認知 【懵了,不知道說啥】
  • 有沒有經歷過jQuery時代 【有】
  • Webpack優化是怎麼作的 【跟一面說的差很少】
  • 上述的優化是基於什麼方向去作的 【從cache、減小文件搜索路徑、多進程優化等作的】
  • 上述的優化有沒有量化出問題(好比看看每塊耗時多久等等)再針對性地作優化 【用了profile查看了開發階段的編譯耗時,作了一個簡單的插件作了開發階段的速度提高,可是原理我也沒說地太清楚】
  • vue-hot-reload原理是啥 【我只打上來websocket+jsonp作的更新,可是實際上更復雜】
  • 在vue項目裏若是我更新了一個js腳本可是頁面不更新,我要怎麼讓vue-hot-reload去更新 【真不會】
  • 在vue項目裏若是我更新了一個js,可是不想讓頁面從新刷新,而只是更新我js的執行部分,我要怎麼讓vue-hot-reload去更新【真不會】
  • vue的template是如何轉換成render functions的 【說了一下正則匹配,AST,可是不知道是如何有機串起來的】
  • 接上一問,光是正則匹配是沒法解決全部問題的,還須要啥,而後怎麼作,要哪些階段?(AST)【說了大概,可是不知道是如何有機串起來的】
  • AST相關知識掌握程度是多少,去哪裏瞭解的 【很少,相關博客,跑了一些DEMO】
  • 寫Electron的時候遇到了哪些問題(解決的或者沒解決的都說說)【系統級別的右鍵菜單實現、插件系統等】
  • base64怎麼編碼的 【常規題】
  • 從輸入一個地址到瀏覽器展示網頁的過程 【常規題】
  • DNS查詢用TCP來作能夠麼 【能夠,可是慢】
  • HTTPS握手加密過程 【常規題,此次會了,面頭條的時候還不全會】
  • setTimeout和Promise的異步的區別,在瀏覽器和Node下的區別 【事件循環的區別,我說了具體的例子】
  • 如何用Jest作的Koa和Vue的測試 【對Koa作了api的測試,對Vue作了界面的單元測試】
  • CSS和JS哪一個更熟悉?【JS】
  • 接上問,CSS的transform有哪些屬性 【rotate,translate等】
  • 接上問如何實現一個div既平移又變色?transform的矩陣有了解過麼 【沒答出transform能夠帶多個屬性,知道矩陣,沒寫過】
  • Vue的響應式原理,以及若是一個變量不在頁面上出現過(或者使用過),響應式系統是怎麼應對的 【render Watcher沒有get到這個變量就不會收集它的依賴】
  • 父子組件如何分開收集依賴,或者說父子組件如何確保父組件只收集本身的依賴,子組件只收集本身的依賴 【父子組件有本身的生命週期】
  • 在Watcher內再new一個Watcher後,如何保證依賴收集不會出錯 【同一時刻只有一個Watcher在工做】
  • 問一下算法和數據結構掌握程度 → 說一下快排吧 【說了一下快排原理】
  • 你上面跟前端無關的知識都是從哪裏獲取的 【實驗室項目、同窗、本身搗鼓、博客等】
  • 你有什麼要問個人嗎 【這個組杭州和北京的部門作的東西同樣麼,作什麼】

支付寶三面

  • 【算法+前端】給定必定數目的粒子,每一個粒子有4個屬性【位置座標,半徑,速度,加速度】。求問在以下數量下,用什麼方式繪製這些運動粒子,用什麼數據結構來存儲。
    1. 20個 【DOM,Canvas】
    2. 500個 【DOM,Canvas】
    3. 20000個 → 200w個 【Canvas,可是不夠,由於沒有必要把200w個點都渲染出來,只須要渲染可視區的。因此問題的關鍵是如何找到只在可視區出現的圓,這是一道數據結構+算法題。】
  • 接上一題,若是是500個用DOM來繪製的粒子,請問使用Vue或者React的VirtualDom技術來實現,對比用原生操做DOM(假設極致優化)來實現,哪一種方案的性能更好。【我說了原生操做,並給出VirtualDom不適合這個例子的理由】
  • 給定一個APP內的營銷頁面,用戶可能在離線狀態下打開APP。若是營銷頁面的圖片已通過期了,應該要被撤下,不然會引發歧義。請問用什麼辦法可以撤下。若是不能用JS,若是用戶修改了客戶端時間呢?【問題難度一步步加深,先問常規離線模式實現,而後開始不讓用JS,而且客戶端時間不許確怎麼作。沒答全。】

微信·小程序一面

  • 對着筆試題的一些提問,好比第一題的this指針問題,第二題的思路問題 【一遍過】
  • HTTPS創建鏈接過程 【常規題】
  • 前端緩存的認知 【常規題,緩存的類型,不一樣緩存的做用等等】
  • 前端安全的認知 【XSS,CSRF等】
  • 有什麼想問的嗎 【爲啥小程序開發者工具用NW.js而不是Electron】

微信·小程序二面

  • 爲何選擇Electron而不是用網頁實現PicGo 【由於須要作配置、插件化、須要用到Node.js的API等】
  • 介紹一下PicGo
  • PicGo如何作的更新策略,如何實現靜默更新,如何實現代碼級別熱更新,如何在讀寫文件權限不夠的狀況下熱更新 【更新策略其實很簡單,後面面試官問的更新策略是我未實現的,可是跟他一塊兒談了一下思路】
  • 寫PicGo遇到的最大的問題 【插件系統】
  • 插件系統如何實現 【讀配置、加載、生命週期函數等等】
  • 寫PicGo遇到過安全相關的問題麼,如何處理 【插件的安全相關】
  • 寫PicGo遇到過性能相關的問題麼 【有,相冊頁圖片多會卡頓,說了如何處理等】
  • 有什麼想問的嗎 【沒啥了】
相關文章
相關標籤/搜索