騰訊前端工程師電話遠端面試經歷
前言
2018 年 1 月 18 日,突然接到一個來自深圳的電話,對方說從拉勾網上看到我投遞騰訊 SNG 部門的 IMWEB 團隊前端,簡單詢問了一下我的具體情況,包括前端的就職年限,過去的工作經歷。其中有一點比較有意思的是,對方問我為什麼 2016 年 7 月畢業直到 2017 年 2 月入職中國 XX 網,這之間的簡歷是空缺的?
我回答他說因為剛畢業沒有太好的就業選擇和機會,錯過了很多校招,所以在畢業的時候去一個藝術培訓學校當了半年的吉他老師,因為覺得和前端的職業經歷沒有關係,因此沒有把這段經歷寫在簡歷上。對方說,我覺得你應該把這段經歷也寫在簡歷上,我說好的謝謝。
接著問了他招聘的是什麼職位,對方說是前端工程師,我說主要負責什麼工作?他說主要負責騰訊課堂的一些前端工作,我跟對方說,我目前還在老家,可能無法及時的去深圳那邊面試,問了他可不可以遠端面試,遂對方跟我說,可以採用電話面試,並且約定了電話一面的時間,2018 年 1 月 23 日。
面試的過程及結果:
從接到電話直到第一次面試的這段時間,我在網上大量的檢索了關於騰訊電面的經驗,並且深入的針對一些常用的考點,進行梳理和總結,例如:閉包、原型、作用域鏈、Ajax、http 協議、盒模型、相容問題、xss/csrf 攻擊、瀏覽器渲染(重繪重排)等。
在 1 月 23 日的當天,5 點多回家,還一直在看複習資料,飯也顧不上吃。
7 點,從深圳打來了一個熟悉的電話。整個電話持續了 40 分鐘之久,基本上問的都是基本的原理,而後可能我的回答讓面試官也比較滿意,之後是 1 個半小時的遠端監控程式設計環節,三道程式設計題,給一個半小時的時間,騰訊面試官遠端 QQ 協助監控你的桌面,只允許用瀏覽器的 console 以及本地編輯器,不允許查詢資料,在程式設計過程中,面試官還會試圖針對一些有問題的地方給予提示。
最後,我還是很遺憾的沒有通過,因為三道程式設計題目,我磕磕巴巴基本上沒做出來,所以掛了,把檔案打包傳送給面試官後。我問面試官,像我這樣經歷不豐富,簡歷不突出的,為什麼會考慮我呢?面試官說,我們什麼階段的人選都會考慮,你入行前端一年,基礎還是不錯的,就是編碼能力需要提高...
面試完以後,大概有幾個小時,一直沉浸在剛才的面試裡,晚飯也忘了吃了,一直在反思自己哪些地方答的不夠好,這幾天的複習哪些地方有疏漏。
我的網際網路公司處女面就以失敗告終了。但是回頭想想,這次失敗的經歷是一面鏡子,讓我清楚的認識到自己幾斤幾兩,督促我在今後的學習中一步一個腳印,腳踏實地,再去仰望星空。
電話裡問到的題目
接下來,根據我當天的通話錄音
來對所問到的題目進行窮舉:
1. 接你現在的工作主要是偏前端還是偏後端?我看你大學的課程主要是偏後端一點?
A:大學課程修完以後,出來沒找到工作,幹了半年吉他老師,對自己就業比較迷茫。回 到老家以後,幹前端、運維都有,但是主要是前端。
2. 接觸前端多久了?接觸/學習的渠道是什麼?
A:滿打滿算一年。剛開始是同事輔導,慢慢入手以後,在 W3CSCHOOL、網易雲課堂、騰訊課堂、慕課網學習。
3.Ajax 傳送請求的步驟?
3.1 xhr.open()
3.2 xhr.send()
3.3 callback()
4. 瀏覽器裡面的事件都會按照一定的規則去傳遞,這個規則是什麼?
5. 事件代理,事件委託是什麼意思?
6. 閉包是怎麼回事?用在什麼場景?
6.1 變數常駐記憶體會帶來什麼問題?
6.2 如何避免這種問題?
6.3 怎麼銷燬?
7.CALL 和 Apply 是幹嘛的?
8. 在平時開發中,遇到過跨域的問題嗎?如何處理跨域呢?
8.1. 如何進行 CORS 跨域?需要什麼條件?
8.2 對伺服器來說,返回 json 資料和 JSONP 資料有什麼不一樣?
8.3 還有其他跨域方式嗎?
9. 簡單說一說盒模型,W3C 和 IE 怪異盒模型。
10. 簡要闡述 XSS 和 CSRF 攻擊及防範
10.1 XSS 指令碼劫持,如何截獲?(ps. 這裡居然把 CSRF 的概念當做 XSS 的來回答….)
10.2 CSRF 域名劫持
11. 強型別語言有繼承,在 JS 裡面如何做到繼承呢?(proto 和 prototype)
11.1 例如建構函式有一個 test() 方法,prototype 上也有一個 test(),這兩個方法有區別嗎?
12. 頁面效能優化有哪些方式?
12.1 檔案、指令碼合併是如何優化的呢?
12.2 重繪,重排是怎麼回事?有什麼區別?
12.3 請舉例說明重繪,什麼情況下會重繪?
12.4 你認為樣式是會引起重繪的嗎?什麼樣式會引起重繪/重排?什麼屬性會引起重繪/重排?
13. 瀏覽器如何知道一個檔案資源是否需要快取?
14.HTTP 狀態碼 304,502,503
14.1 1,2,3,4,5 開頭的狀態碼都表示什麼?
15.Node、Vim、angular 簡述
15.1 Node 上如何處理異常情況?(Ps. 我回答的是開發除錯。。。找 js 檔案)
15.2 已經上線的專案,出問題,怎麼樣去處理異常?
16. 構建工具除了 Webpack,還接觸過其他的嗎?
16.1 Webpack 的優點和應用場景?
程式設計大題:
1、頁面內有一個正方形元素 A 以及一個待放置區域 B,實現對其拖拽和放下到 B 區域內,並且改變 B 區域背景顏色 (不可用 html5 原生事件)。
2、實現超出整數儲存範圍的兩個大正整數相加 function add(a, b)。
注意:引數 a 和 b 以及函式的返回值都是字串。
3、頁面內有一個 input 輸入框,實現在陣列 arr 查詢命中詞並和 autocomplete 效果。
這個環節基本上就知道自己 GG 了。。。
第一題考基本功,DOM、事件、定位、jsAPI
第二題考演算法,基本邏輯
第三題考原理,基礎
不得不說面試官的技術確實比較全面,騰訊的遠端面試也是好狠,直接遠端監控寫程式碼的...滑鼠和介面都不敢靜止,靜止可能就會被認為作弊(不知道他們是不是這樣來判斷的,反正我沒有停下來過)。