Node.js 面試題總結
ofollow,noindex">原文連結
筆者前段時間(2018.09-2018.10)參加面試,地點深圳,面試的崗位是NodeJS後臺開發,工作年限是1 ~ 3年,面過的公司有1000人以上的大公司,一百人左右的中等公司,及20 ~ 50人的創業公司。
以下是一些對問到的問題的小結,希望對也要參加面試的朋友有些幫助,也歡迎補充。
文件的內容分為以下幾部分:
- 技術類問題
- 人事問題
- 最後
技術類問題
主要分為JavaScript語言層面的、網路及規範、資料庫、快取、訊息佇列、開發流程等,有些問題相互交叉、水乳相融可能涉及到多項知識
JavaScript、Node.js
-
有沒有用過
apply()
,bind()
,call()
這些方法,他們之間的區別 -
Promise
的幾種狀態、如何實現的、什麼情況下catch
不到錯誤 -
有沒有用過
async
、await
-
流程控制庫
async
,自己在專案中常用到哪些方法;什麼情況下會選擇async
庫,什麼情況下選擇Promise
;async
庫是如何實現的(要閱讀原始碼) -
Node.js
單執行緒、其應用場景,如何實現高併發,講講非同步I/O、事件迴圈以及其優先順序 -
Node.js
後臺影響效能的瓶頸,如何避免,如何實現擴充套件 - 常用到哪些庫(原生模組、第三方庫)、模組載入的機制
-
常用到哪些框架,
express
、koa
的異同,選擇用哪個框架的標準是什麼
網路及規範
資料庫
- 用過哪些資料庫(SQL/">MySQL、MongoDB、Redis)
- MySQL查詢優化、索引、索引的原理
- MySQL庫設計一個簡單的論壇系統,畫出使用者表、帖子表、評論表的er圖, 當用戶量很大時,如何優化,快取最多存一萬條資料時如何優化
- MySQL的配置檔案改過哪些引數
- MySQL及MongoDB如何選擇,選擇的標準是什麼
- MongoDB的聚合函式,用到過哪些引數
- MongoDB的幾種索引,資料量特別大時的分片
- 資料庫的災備(MySQL、MongoDB)
快取(Redis)
- Redis的幾種資料型別(string、set、list、sorted set、hash等)
- Redis主要用到哪些API
- 快取在專案中的具體應用(主要針對專案經驗來談)
- Redis如何拓展(叢集)
- 快取更新的問題,當大量快取同時過期時如何處理,快取雪崩的問題
- Redis的持久化
- Redis為什麼這麼快、單執行緒
訊息佇列
- RabbitMQ的幾種應用場景
- RabbitMQ交換機有幾種型別,*號與#號的區別,舉個例子
- Redis的訂閱釋出
開發流程
- 用到的測試框架(mocha)
- 程式碼覆蓋率
- bug缺陷管理(JIRA)
- 版本控制(git、gitlab)
- 持續整合
- 敏捷開發
其他
- 公司技術方面的人員分配(前端、後臺、運維、DBA、原生)
- 你認為你目前的團隊或公司存在的問題(這是個坑,接下一個)
- 為什麼沒有試圖去改變
- 目前你們公司4個node開發的,你認為你的水平在這四個人中排第幾,依據是什麼(這個問題好蛋疼)
人事問題
除了技術面試,人事的面試也是很重要,有些問題也不一定是人事問,可能是經理、或者老闆問。
- 對我們公司有什麼瞭解(雖然是海量投簡歷...但是收到面試的通知,還是應該對這家公司進行一些調查,查一下主營業務,看看其他人的面試評價,也可以評判下自己適合不適合)
- 上家公司為什麼離職
- 期望進入什麼樣的公司(這個問題最好提離職時就能想好,不只是應付面試,更多的為了自己)
- 未來的職業規劃(同上,要認真考慮,可以先有個短期的)
- 目前的薪資(有些公司可能需要提供銀行流水,所以水分不要太大)
- 期望的薪資(直接給個確切的數吧)
- 平常喜歡做什麼
- 能不能接受加班、最晚能加班到幾點(這個問題感覺好虛)
- 什麼時候到崗(巴不得第二天就去報道的,要考慮清楚,一般都會等一個月)
最後
換工作前還是要弄明白自己想要什麼,期望在下家可以收穫什麼,跳槽雖然能漲工資,但是不要過於頻繁。
找工作真的是一件很辛苦的事情,簡歷被拒、筆試沒過都是很令人受打擊的,等待面試結果的過程也很受煎熬。但確實是一個學習,瞭解自身不足的契機。
希望這篇文章能給準備面試的你有一些幫助。