前兩天北京下雪了,很冷。2022 招聘季,好像也比往年冷一些。
2021 年 K12 的大量裁員,騰訊、快手、位元組、滴滴、蘑菇街也在裁員。
- 想要換工作的同學應該準備些什麼呢?
- 面試流程是什麼樣子的?
- 如何應對面試呢?怎麼樣可以提高成功率?
如果你關心上面的問題,並且你的目標位置不超出我的能力範圍(高階工程師、阿里P6、位元組2-1)。我會以我經驗給你一些建議
面試流程
- 複習、準備
- 投遞簡歷
- 一面
- 二面
- 三面
- HR 面
- 定級、談薪
- 定入職時間、收 offer
怎麼準備面試?
前期準備
個人介紹
每一場面試第一個環節都是「請做一下自我介紹」,所以這個問題一定要提前準備好。
如何準備?個人介紹重點是什麼?
我們先從面試官角度來看一下面試官想知道什麼?
姓名
- 如果你的姓名中有生僻字、多音字叫錯還是比較尷尬的
- 確認你是否和麵試官手中簡歷匹配。我就遇到過異常情況,候選人是面試 java 開發崗位
工作情況、專案概況、技術棧。雖然一般面試官會提前看過簡歷,但是有時候簡歷並不能很好的展示所有內容,所以需要一個簡短的介紹來告訴面試官
- 比如說上家公司做音視訊的、上家公司做 ERP、上家公司做 IM 的、線上協作、協同辦公、專案管理、雲服務商。如果說你從 YY 直播跳虎牙直播,是比 YY 直播跳金山辦公要匹配的多,公司匹配的話成功率更高,業務場景也更瞭解。比如說騰訊雲、阿里雲。
- 比如說做移動端活動、做 toB 的服務平臺、做電商。你之前做移動端面移動端崗位成功率更高,比如說抖音電商跳快手電商,就要比今日頭條跳快手電商好。
- 比如說使用 JQuery、Vue、React、React、threejs。你簡歷中寫了 React、Vue,但是你更擅長 Vue,面試官無法從簡歷中看到兩個技術在你手中的掌握程度
擅長什麼?優勢是什麼?
- 比如說你善於做移動端專案,善於使用 Vue,善於和其他部門溝通
- 比如說你做過一年 Node 開發,可以獨立開發,可以獨立進行技術研發任務
- 比如說你善於對專案進行優化
- 甚至說你有過專案經理助理工作經驗都是你的優勢。
- 社群影響力,github 有開源專案,思否、掘金、CSDN 有內容產出
個人介紹案例
接下來我們就可以針對面試官寫一份合適的自我介紹
你好,我叫xxx,我在上一家公司做的專案是和 XXX 相關。
一直從事於 web 方面的工作,掌握的前端技術有 xxx。
在上一家公司中,我收穫不單單是技術方面,主要還有業務能力,自學能力和同事的溝通能力,這都是我學到的,而且我認為很重要的。
我的性格方面不算外向,也不算內向,跟朋友,同事相處,比較外向,在工作中,程式碼開發時,我是比較內向的,我喜歡全心全意的投入工作中。我也喜歡交朋友,偶爾跟朋友聚聚,聊聊。對於工作我總是抱著認真負責,有責任心,吃苦耐勞的態度工作。謝謝,以上是我的自我介紹。面試官下午好,我叫XX,今天來應聘貴公司的前端工程師崗位。我從事前端開發兩年多,有X年的XXX開發經驗,在上家公司主要從事H5頁面,後臺管理系統,混合App等專案開發。平常喜歡逛一些技術社群豐富自己的技術,像思否,掘金之類,記錄自己的工作總結和學習心得。
我的性格比較溫和,在工作中程式碼開發時我喜歡全心全意的投入,對於工作我總抱著認真負責的態度。面試官,以上是我的介紹,謝謝。面試官你好;我叫XX,16年本科畢業於XXXX;畢業後在合肥衛寧,一家醫療軟體公司工作,技術上前後端、資料庫包括專案部署都做,屬於全棧開發,18年來到上海入職京東一直到現在,做的是線下商場的後臺及介面開發;老的專案還是
mvc
,新專案都做了前後端分離,前端用到 H5、小程式JQuery
、EasyUI
、VUE
、Angular
,後端用到.Net Framwork 4.5,4.6
、NetCore
、Java
,資料庫用到SQLService
、Mysql
、MongoDB
、Redis
,中介軟體用到RabbitMQ
訊息佇列,在公司是核心開發的角色,負責老專案的維護及二次開發,和其他開發相比,我的優勢在於溝通交流能力比較強,還有我的責任心和學習能力也是比較強的,如果有幸加入XXXX,我相信我能快速融入團隊,快速掌握公司相關的技術;謝謝領導。面試官你好。我叫 XXXX。
主要技術棧是Vue
全家桶、jQuery
、原生、Node
,CSS
能力也不錯,常見佈局、偽類、過渡動畫都會。
上家公司是做音視訊泛娛樂社交這塊的,競品如:全民K歌、唱吧、YY、快手、抖音之類的。
我主要做移動端活動這塊,年度慶典、小視訊活動模版、直播間廣告位之類的, PC 端也做一些,比如 PC的 IM 系統。因為公司的使用者群體特性,對於相容低版本裝置有挺多經驗。
平時也經常在思否社群做問答,寫文章筆記之類的,對於 BUG 排查有敏銳度,也善於溝通理解問題。
知識儲備
知識儲備是我們面試成功的必需品。主要分為兩部分:護城河、擴充套件。這裡主要還是靠平時積累,面試時針對高頻且不會的加強記憶。
接下來我們還是針對前端面試來舉例。
前端護城河
什麼是護城河?這都不會幹屁前端! 沒辦法就是這麼卷,所以這裡只能去卷一些八股文。
但是我推薦還是由易到難,高頻到低頻。
HTML、CSS、JS 基礎知識
flex: 0 1 auto
是什麼意思?- css 有哪些偽元素選擇器
- HTML5 語義化標籤有哪些?
- 閉包程式設計題
- 手寫 Promise 實現
- 手寫 requestCache 實現
- 同步非同步、微任務巨集任務
- 深拷貝
Vue、React 常見基本框架
- 生命週期鉤子函式
- 如何獲取原始 DOM
- 如何獲取虛擬 DOM
- 原理是什麼?如何實現?
- 對 diff 的理解
- 資料雙向繫結如何實現?相容性?
- 狀態管理、元件通訊
- 路由跳轉
ElementUI、antd 基本框架搭配 UI 庫
- 元件化開發
- 原始碼理解程度
- 能力熟悉程度
瀏覽器基本知識
- 瀏覽器快取原理
- 本地儲存
- 基本能力(上傳、下載)
擴充套件
這裡一般就不侷限於前端,也不要求全部掌握,但是一般都會有一些擅長點。
打包構建、前端研發工具(webpack、babel、gulp、vite、eslint)
- webpack 升級。
- eslint、stylelint。
- git hook。(husky)
專案優化
- 打包速度優化
- 載入速度優化
- 產物體積優化
跨端、跨平臺、跨技術、跨語言
- Node
- Python
- nginx
git、svn。
- 如何回滾程式碼
網路
- https、http、http2,三次握手、四次揮手,如何保證安全
- websocket
- response 響應狀態碼
- 強快取、弱快取
演算法練習
演算法練習沒什麼好說的,簡單必須會,中等也要做一些,困難看個人能力,掌握常見資料結構。一般就是推薦力扣、牛客。
學習路徑的話是先了解資料結構,然後針對性做題,做不出來看題解。
連結串列、陣列、字串
- 查詢是否有環?入環點在哪裡?
- 快慢指標、雙指標
樹
- 先序遍歷、中序遍歷、後序遍歷
- 平衡二叉樹
- 棧、佇列
- 動態規劃
- 圖
專案覆盤
專案一般是為了看看你做過什麼,有什麼出色的地方,不是為了聽你說一堆沒用的。
這裡屬於一個沒有標準答案的題,也是一個可以提前準備的題。
我面試的時候準備了三個內容,並且對具體實現方法都做了細緻的應對方案。
PC IM 訊息列表優化,其中有長列表優化、排序演算法Bug及優化思考、多訊息型別支援、訊息手法機制、傳送框實現等等
- chrome 的 sort 使用了什麼演算法。chrome 低版本用的是什麼演算法。原理是什麼。
- 自己使用了什麼演算法?二分查詢+插入排序。從 xxms 優化到 xxms。
- M 直播間廣告位設計,其中有排序規則、動態載入規則、動態上線下線規則等等
- 專案載入速度優化
常見問題準備
一般來說會有一些高頻問題,我們可以提前準備一下。當然具體還是要看你的技術棧是什麼,你可以針對你的技術棧做特殊複習。
- 職業規劃
- 為什麼選擇前端
- 個人介紹、專案介紹
- promise
- 瀏覽器強快取、協商快取
- 閉包
- vue 資料雙向繫結原理
- 菲波那切數列
- 微任務、巨集任務
面試前準備
如果說我們簡歷、知識儲備、常見問題都準備就緒,那麼接下來我們就可以開始以戰養戰。
投遞崗位
不建議海投,推薦你選擇二線、一線、大廠,把自己心儀的公司放在第二三週。
- 培養題感。(我面試的時候一道簡單的題沒做出來,超級尷尬,那道題是一道我十年前就會的題,但是第一次面試的時候怎麼都想不起來。懵了)
- 培養自信、調整心態、告別緊張。如果你在面試的時候手裡已經有了保底的 offer,那麼你整個人的精神都會不一樣。而且要價的時候也更大膽。(我面試的時候拒絕了金山,因為薪資低)
- 由易到難、由低到高,慢慢提升。其實有時候小公司也挺爽的(前端10人±),太少的就不推薦了。
可以選擇適合自己的崗位投遞,並不是比如說快手所有人都在做App,也會有做面向機構的服務平臺,也會有面向電商的服務平臺,還有對內的基建中臺等等。選擇一個適合自己的崗位比亂投強太多了
面試真題(針對性搜尋)
這個就屬於玩賴了,比如說你面阿里,可以針對性去找一些阿里一面面經,最好把崗位部門帶上(會有意外驚喜喲)
根據我面過的幾家公司,網上是有真題的。
如果你常混社群的話,你甚至可以問問面過的前輩
面試後準備
面試完不代表著結束,收到 offer 才是結束。
面試覆盤
所以這口氣我們不能鬆,可以在面試後把所有題都記錄下來,然後看看自己那個題掌握不夠全面。
- 記錄所有的面試題。網上搜尋資料排查是否有回答不清晰,缺斤短兩情況
錄屏。做更完整的覆盤,包括語氣節奏、口頭語、面部表情、反應速度等等。
- 從我自己來說,我即興是不如我有準備的。同樣一份資料,在我無準備講出來會多很多口頭語,甚至我在講的時候都會注意到這個問題,但是我無法解決,也剋制不住,留給我調整的時間太少了。所以我只能做很多準備。
如果有不會的題,千萬要查一下,然後記住。因為下一面有可能會考近似題。面試官也會通過這種方式來看你的自學能力。
- 比如說你面第一個公司的時候,問了你許可權的問題。那麼你就應該重點關注一下,比如說按鈕許可權,非同步許可權,如何和服務端互動。這個問題在二面甚至說其他公司都會再次遇到。
真題整理
上面說了覆盤的重要性,也說了需要整理真題,這裡主要是需要你注意分類,而且需要看到題後的內容。
有時候面試題只是考點的一個應用場景,所以我們需要看到背後的知識,不只是把面試官問你的問題搞會。
一般來說面試題會符合部門場景,做 PC 的部門不可能問你移動端適配原理。
css
「位元組商業化」權重計算。
.a .b{color: #f00;} .b[data-role="1"]{color: #0f0}
- 「阿里」選擇器
- 「快手搜尋」「騰訊開放平臺」css 單位
網路
- 快取
- https、http、http2
面試中有哪些最最最常見的坑
簡歷
到了我個人擅長的位置了。哈哈哈,我看過成百上千的簡歷,基本沒有看錯的。
一眼假的簡歷(工作時間、經歷造價),一般針對實習生、應屆生、培訓班簡歷比較常見。
- 熟練使用 Vue + react,其實一般來說為了維護成本、學習成本,正常公司都會統一技術棧
- 熟練使用 Node xxxx,目前來看全棧工程師並不是很多,都會有可能只是半桶水
- 專案經歷不屬於同一家公司。比如說一個專案是醫療,一個專案是石油,專案跨度很大。這種一般我們考慮是否存在經驗積累,一個持續迭代的精細專案才是我們想看到的。
專案經歷一看就比較水、或者開源專案、樣子貨。比如說網易雲、餓了麼,Vue1 的時候就開始仿餓了麼,Vue3 還仿。
圖片來源於沸點:https://juejin.cn/pin/7072864...
錯別字簡歷、排版異常簡歷、雷同簡歷、異常簡歷
- 部分簡歷會存在一些錯別字,尤其是 Reat 之類的錯別字。千萬不要有錯別字,會顯得不細心。而且簡歷應該每個字都是用心寫的。
- 學歷異常、外派外包。我不歧視外包外派,但是從團隊內任務分配、穩定性等多方面來說,的確不是很理想,需要多注意。
- 雷同簡歷出現在同一學校、畢業季,上下午兩個人簡歷一模一樣。簡歷不是論文機器查重,不管是ERP的登陸許可權系統,還是後臺管理系統的登入許可權系統,都是相同的簡歷,不是改個名稱就叫不同簡歷。
異常的常見功能,對於有工作經驗的人來講反而不是常見功能。不是說常見功能,一定就是開發常開發功能
- 比如說登陸註冊、許可權、選單,登陸一般來說都是現成的功能,不會輪到你再去開發。
不是每一家公司都認為你的“玩具”很有意思。
- 比如你說你寫了 IM 相關的功能,如果你面試的也是 IM 相關的部門,那麼很大可能性會揪著這個功能深挖。
- 如果你寫了效能優化,那麼會給你一個近似的場景考你,看你有沒有去做優化的動機。
面試準備(面試題、演算法題權重問題)
建議你先準備基礎知識題,然後常見題,最後準備演算法題。一定要記住由易到難。
如果不是高階、專家崗位,演算法都可以暫時放棄。
- 我面試一面簡單演算法沒答出來,但是並不影響我面試結果。順利通過面試拿 offer。
- 有個朋友,基礎題還沒搞會,瘋狂練習演算法。到現在還分不清判斷是否有環和查詢入環點兩個題的區別。(快有十年工作經驗了,還混在中級工程師)他以為演算法好了就能換到大公司,但是演算法題一般都在比較後面考察。
面試中
- 問薪資。一般來說前幾面只是同級同事,不應該知道你的薪資。也無權決定
“攻擊”面試官。面試是否通過,就是當場面試官的一句話,很少公司有考核審查手段。所以不建議攻擊面試官,放平心態(如果你不在乎這個機會,並且覺得和這樣面試官共事比較噁心,那麼懟就懟了。無所謂哈哈哈哈哈)。
- 我就遇到過一個人,面到一半跑了,和 HR 反饋我不專業。但是對我並沒有什麼影響。
- “賄賂”面試官。雖然說當前這場面試,面試官可以幫助你,但是後面還會有其他考核(天黑路滑人心複雜呀)。所以還是靠自己真正的實力比較好。
- 拖時間。一場面試 20分鐘至 60分鐘,會存在定會議室(HR 不幫定會議室,且有時間限制),工期擠壓(面試屬於突發時間,且不計算在正常工期中)等問題。所以不建議在單個問題上拖時間,這樣會導致無法全面考察,直接判負。
- 不敢問面試官。面試官都是比較和善的,一些面試官也比較善於引導你回答問題。即使沒有引匯出來,給你個方向也是好事,面試官經驗比較豐富,如果是單獨的技術諮詢來看明顯是賺了。
面試官一般會問些什麼問題?
一面(基礎知識)
一面一般是同級同事、同級領導(斜線領導),屬於主力開發,業務經驗也比較足。一面側重基礎知識
專案考察(2個)
- 介紹一下你最近做的專案
- 介紹一下你在這個專案裡做了什麼?有什麼出色的嘛?
- 你是怎麼進行專案優化的?你是怎麼設計這塊許可權的?你是怎麼實現這裡的?你的設計思路是什麼?
- 你在專案中負責什麼?有什麼特別滿意的地方的?
- 你們團隊構成是什麼樣子?開發流程是什麼樣子?有什麼優化空間嘛?
- 印象中最深的一件事
基礎之類(6個±)
js、css、html 基礎題。(2個)
- css 樣式優先順序、權重計算、選擇器、Flex 佈局等等
- js 場景型別、陣列方法、閉包等等
- html 語義化標籤、其他能力?
js 高階開發(2個)
- Promise、await、async、非同步同步、微任務巨集任務
- 繼承、class、ES6+
- TS
- webpack、gulp、babel
- 框架知識 Vue、React
- requestCache、自動重試、異常上報
擴充套件知識(1個)
- http2、http1.1、https
- nginx
- node
- echarts、threejs、ui 等等
演算法(1個)
- 一般會出初中級難度的題,連結串列、樹、棧佇列比較常見,圖好像少一些
- 考察時間複雜度、空間複雜度
- 會讓你講一下想法
- 會讓你思考有沒有優化空間,如果有會逐步優化
- 簡歷異常點(學歷、工作變動頻繁)
普通聊天
- 為什麼離職呀?
- 為什麼選擇我們公司呀?
- 為什麼學前端呀?
- 住哪裡呀?
- 平時有什麼愛好
- 如何學習前端?
- 逛社群嘛?
- 對我們公司什麼看法?
- 覺得今天面試表現怎麼樣?
二面(專案)
二面一般是不同組同事,一般來說是跨組交叉面試,當然會有可能不是前端。二面一般更側重專案
- 專案考察(同一面,但有可能切入點不同)
- 高階應用(同一面,但是一般會和實際業務關聯)
- 演算法(同一面)
- 普通聊天(同一面)
這裡可以看到,如果一面過了,二面基本是穩的。
因為一二面本身級別差不多,有可能面試官不是同技術(java)、升職不是技術(產品)
三面
三面一般是直系領導(50人至100人團隊負責人),可能是前端,也可以是其他端,只能說肯定是個技術人員。
- 專案考察(同一面,切入點不同,會更加深入甚至擴充套件轉換)
- 演算法(同一面,但是有可能不用寫,只考思路)
擴充套件知識
- 專案如何協調
- 分支如何管理
- 任務進度如何管理
- 上線流程是什麼
- 發版流程是什麼
- 部門介紹
- 普通聊天(同一面)
一般來說高階工程師就只有三面,三面的這個人就是決定你是否能入職的那個人,三面面試官一般也是一面面試官的直系領導。
HR 面試
普通聊天(同一面)
- 職業規劃
- 為什麼選擇我們
- 你在原來公司負責什麼
- 為什麼離職
薪資期望
- 你當前的薪資
- 你期望的薪資
問面試官哪些問題?
一面
一面面試官一般就是你的同事,也是主力開發,是真正的打工人。所以這在一面環節你可以多問一些你關心的內容
- 面試官是誰?是否為你的同事。
- 工作情況
- 基建情況
- 團隊氛圍、團隊規模
- 技術方向
- 自己表現怎麼樣
- 自己沒答好的題,看看能不能給個方向。
二面
二面面試官因為存在交叉面試的情況,所以可用資訊不太多。
- 面試官是誰?是否是你的同事,還是交叉?
- 自己表現怎麼樣
- 問面試官所在的團隊氛圍
- 自己沒答好的題,看看能不能給個方向。
三面
三面面試官是你的直屬領導,能管得事也比較多,你可以問一些其他的東西。
- 晉升機制、培訓機制是否完善
- 團隊氛圍
- 所做業務
- 團隊規劃
- 有不懂的點也可以問,白嫖的交流機會啊。
本文參與了 SegmentFault 思否徵文「如何“反殺”面試官?」,歡迎正在閱讀的你也加入。