1. 程式人生 > >三年前端,面試思考(頭條螞蟻美團offer)

三年前端,面試思考(頭條螞蟻美團offer)

背景介紹

985本科,軟體工程專業,前端。

工作三年半,第一家創業公司,半年。

第二家前端技術不錯的公司,兩年半。

第三家,個人創業半年。

可以看出,我是個很喜歡折騰的人,大學期間也做過很多專案,非常願意參與到產品中去。技術上勉強合格,不過獨自負責過很複雜的前端專案,所以一般基礎面試題還有專案經歷都沒有太大問題。然而面對一些框架的實現原理、原始碼、工具等研究較少,加上技術棧比較陳舊,對 React 和 Vue 瞭解較少,導致水平一般都在阿里 P6 級,無法突破到技術專家的評級(P7)。

核心訴求

在換工作的時候,我也認真思考了下一份工作的核心訴求——踏實成長。

具體的講:

  1. 技術沉澱
  2. 視野+平臺

所以,一開始就拒絕了所有初創公司,只看大平臺,自己心中的第一優先順序是螞蟻金服、頭條。

面試過程

一共面試了四家

  • 美團新零售
  • 貝殼裝修
  • 螞蟻網商銀行
  • 頭條商業化

面試結果

  • 美團 2-3+
  • 螞蟻 6+
  • 頭條 2-1
  • 貝殼因氣場不合沒有發 offer。

這裡就不說具體的 offer 情況了,還蠻有競爭力的。

面試總結

技術面試

基礎問題永遠繞不開,前端技術面的考點無外乎:

事件原理,閉包,呼叫棧,Promise,ES6, 工程化,webpack, 效能優化,跨域,安全問題, React、Redux 思想,Virtual DOM,Diff 演算法, 移動端佈局,瀏覽器渲染原理,Event Loop 等

還有手寫程式碼,主要考察一些基本 API 和 ES6 的使用。最常見是在 Array、String prototype 上寫一個函式。

比如 'abcd'.f() => 'd-c-b-a'

還有一些常用的函式,比如 bind (好多家都考……),throttle, debounce 等

總之,這些都是前端繞不開的概念,也建議可以真正的夯實基礎,多看書,多總結。在面試的時候,面試官通常也是看人下菜,『高階』的概念不清楚,面試官也會主動降低問題的難度。從我面試來看,基本上大廠對於候選人技術的定位還是蠻準的,在面試前我也知道我自己的技術水平就是阿里的P6,結果也是,美團 2-3,頭條 2-1 評價基本一致。

至於薪水還需要考慮自己其他的軟技能,這個會在業務面的時候重點考察。

有些公司還是會考一些演算法,比如美團、頭條。但是不多也不難。

如果平常刷過 leetcode 的話應該問題不大,對於前端同學來說 leetcode 上的 medium 題目應該就可以了。

具體面試題

這裡分享一個很有意思的問題,來自頭條:

100 * 100 的 Canvas 佔記憶體多大?

感覺非常有新意,各位同學可以思考。

分享一個演算法題:

給定一個數組排序,使得奇數位的值不大於相鄰偶數位的值。

面試題解析

《100*100的 canvas 佔多少記憶體?》

業務面試

一般第二面或者第三面的時候都會結合業務聊技術

我個人非常喜歡這一面,因為自己獨自負責過非常複雜的前端專案,基本上從技術選型、前端工程化、架構、設計模式、複雜模組、效能、安全問題、團隊管理等都可以扯到。所以這一面往往聊的比較嗨,一個專案就可以面1-1.5小時左右。

以螞蟻舉例,由於我自己面過兩次螞蟻,在聊二面的時候都是這麼一個問題,從我個人的業務出發,基本上把專案開發中所有我自己認為可以展示自己思考的點都問了一遍,螞蟻的面試官也會提出很多臨時需求,主要檢視面試者面對多變需求如何靈活調整技術方案。

在二面過程中,一定要熟悉自己的專案,儘可能多的參與到專案中去,也儘可能深的瞭解專案,當然,瞭解是一方面、表達是一方面、心態又是另一方面。

這三者層層遞進,畢竟對於專案的瞭解是基礎,這個需要我們深入業務,多思考,多總結。沒事給新來的同學梳理業務,畫畫業務框架圖,主動承擔一些有技術難度的工作(比如效能優化、安全排查、工具上提升開發效率等),多分享自己的工作,多和產品經理撕逼,鍛鍊自己的表達總結能力。如果前兩步做的比較好,就可以自信的展示自己的專案了,面對變化的需求,相信也可以快速的想出更好的解決方案。

基本上前兩(三)面就可以對一個同學的技術水平有一個比較全面的瞭解,也方便公司進行技術評級。

終面

第三面一般都是老生常談:過往工作的選擇,換工作的原因,自己的職業規劃,自己平常是如何提高自己的等。

這個雖然都差不多,但還是希望各位同學可以多多思考這些問題,畢畢竟工作的目的都是為了自己可以更好的成長,更多的創造價值,順便獲得一份不錯的薪水。工作本身就是一種生活的態度,還是要認真面對自己的選擇。

終面的時候,一般都會留有一個向面試官詢問的階段。 我自己總結了幾個問題,可以分享給大家。

  • 目前咱們的業務,有一個什麼樣時間規劃,這期間有哪些milestone?
  • 我的過往工作經歷,有哪些是對咱們團隊有幫助的?
  • 您對我在團隊中的定位是怎麼樣的?
  • 對於團隊成員的成長,您有哪些方案?

第一個問題主要是看一下目前的業務是處於一個什麼階段,也看一下業務負責人是否靠譜,畢竟面試時雙向選擇嘛。

第二個問題,主要是想讓面試官誇誇自己……

第三個問題,主要是看一下面試官對自己的評價,定位又比評價來的更委婉而又深入一點,看看自己未來在團隊中大概是什麼定位,一位面試官對我說:我希望你在深入業務的同時,承擔一些橫向的職責。這就說明面試官對於我的協調能力很欣賞,我也可以暫且推斷出我在面試官心中分量也蠻重的。

第四個問題,關係到日常工作中如何平衡業務開發和個人成長,看看這個老闆是否真正關心下屬的成長,也蠻重要的。

最後,最好留下每一位面試官的微信,畢竟面試時間有限,面試結束後,發一段感謝的話,感謝這次面試,肯定面試的內容很有水平,希望以後可以多多交流。一是表現自己的素養,二是可以看出面試官對於自己的態度。實在不去這家公司,也方便以後挖人嘛……

面試技巧

  1. 確定核心訴求、篩選目標公司
  2. 一份確保可以拿到 offer 的簡歷
  3. 打磨自我介紹
  4. 打磨專案介紹
  5. 面試錄音(徵得許可後)、面後覆盤
  6. 私下與業務負責人互動
  7. offer 談判

關於這些內容先不展開,下次接著聊~

一些思考

總結完了自己的面試過程,我也想說一下自己的一些其他思考。

每個程式設計師都是同學中的佼佼者,學習能力都應該是出類拔萃的。 工作中需要的知識技能又相對固定,面對每次工作和麵試中碰到的問題,還是要踏踏實實的去理解和總結。

廣度深度兩手抓,一是主動承擔業務,主動解決問題。二是技術棧也不要給自己設限,React, Vue, 客戶端開發,Node,Canvas ... 擼起袖子就是幹,當然拓展廣度的同時,對於目前緊迫的業務涉及的技術也需要深入瞭解,買書,買視訊,多多投資自己。

多多思考和總結平常的工作和技術。

樂於分享,一是督促學習,二是鍛鍊自己的表達總結能力,三是這些分享的材料都是自己學習能力的證明,四是找到同類,擴大影響力。

不要排斥獵頭,在換工作前,我拜託女朋友挑選了一個口碑很不錯的獵頭,全程輔導。

更重要的是,有了第三方的介入,可以客觀的幫助自己梳理自己的優勢劣勢,模擬面試,安排面試節奏,穩定情緒,還有談價格的時候可以避免尷尬。總之,一個靠譜的獵頭是個很不錯的選擇。

評論區的小玉是輔導我的獵頭,非常 nice,推薦哦。

至於最後的選擇,由於我的三份 offer 都很有競爭力,我自己也非常糾結,這個時候就應該不斷的問自己:

  • 下一份工作,你想獲得什麼?
  • 幾個選擇,分別工作三年,你認為哪個更值得?
  • 你想在哪個領域深耕?

如果對於業務不是很瞭解,之前要到的聯絡方式就很重要,主動約終面的業務負責人再進行一些深入的溝通,真正做到沒有疑慮了,再做出選擇吧。

尾聲

自己也即將加入新的團隊,開始新的工作生活。希望自己可以不忘初心踏實成長。

也祝你找到心儀的工作~

我自己寫完這篇小文,也讀了很多遍,發現行文囉嗦,也希望大家可以提提建議,我也方便修改~

讚賞碼.jpeg

加群的同學可以加這兩位同學的微信,備註『面試進群』即可

系列文章