021 年 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 面試
- 普通聊天(同一面)
- 職業規劃
- 為什麼選擇我們
- 你在原來公司負責什麼
- 為什麼離職
- 薪資期望
- 你當前的薪資
- 你期望的薪資
問面試官哪些問題?
一面
一面面試官一般就是你的同事,也是主力開發,是真正的打工人。所以這在一面環節你可以多問一些你關心的內容
- 面試官是誰?是否為你的同事。
- 工作情況
- 基建情況
- 團隊氛圍、團隊規模
- 技術方向
- 自己表現怎麼樣
- 自己沒答好的題,看看能不能給個方向。
二面
二面面試官因為存在交叉面試的情況,所以可用信息不太多。
- 面試官是誰?是否是你的同事,還是交叉?
- 自己表現怎麼樣
- 問面試官所在的團隊氛圍
- 自己沒答好的題,看看能不能給個方向。
三面
三面面試官是你的直屬領導,能管得事也比較多,你可以問一些其他的東西。
- 晉升機制、培訓機制是否完善
- 團隊氛圍
- 所做業務
- 團隊規劃
- 有不懂的點也可以問,白嫖的交流機會啊
如果感覺小編寫得不錯,請素質三連:點讚+轉發+關注。我會努力寫出更好的作品分享給大家。更多JAVA進階學習資料小編已打包好,文中資料可以關注私信找我領取哦!