前言
當你開始開始去跳槽面試的時候,明明只是一份15K的工作,卻問你會不會多線程,懂不懂高並發,火箭造得讓你猝及不防,結果就是涼涼;現如今市場,多線程、高並發編程、分布式、負載均衡、集群等可以說是現在高級後端開發求職的必備技能。
早期的鳥兒有蟲吃,現如今做開發的門檻越來越高
但是,術業有專攻,總有一些技術牛逼的程式設計師可以吊打、碾壓面試官!
本人經常隔段時間就偷偷投點簡歷,請假出去面試幾次,目的不是想跳槽,主要是為了看看市場上的技術流行趨勢,順便檢驗一下自己的水平,當然,如果面到了心儀的公司或者大廠,那不是更好嘛,哈哈哈!
前段時間收到了字節跳動的面試,雖然有點小震驚,但還是用平常心對待了。結果一不小心,面試的時候就吊打了面試官。
前後一個半小時的面試過程全程沒卡殼,項目和算法全部搞定,甚至聊到了面試官的盲點…
結果……當然是順利的接到了字節跳動的Offer,定級為2-2資深研發人員。
個人經歷
其實我有好長一段時間沒有正規的面試過了。三年前從數雲換到GIO的時候,因為簡歷上的相關技術太過於匹配,所以基本上就和CTO聊了聊就確定過去了;後來在回數雲的時候,也就和總監喝了一下咖啡就回來了。也就是大約5年的時間裡面,我沒有正規地接受過面試。
所以在準備投字節跳動之前,我投了幾個公司做了一下熱身活動。記住,這個時候其實不需要有啥心理包袱。因為本身候選人面試成功的可能性比較低,一個合適的可以面試的人選他們也很樂意看看,而且萬一你確實想換工作,但是心儀的公司面不上,而熱身活動的公司拿到了offer,你也可以考慮考慮去看下。並且這個時候你沒有任何的心理包袱,因為反正你也就是來面試看看的,所以面試時候的發揮可能也會更好點,因此說不定最終拿的offer會比最後想去的那家更好呢?
面試準備
老實說,我自己平常沒事就會看一些面試題,所以我都是直接去面的(當然過程也非常慘)。
建議大家如果準備面試的話,需要做以下準備
1.背題
看一看最近的面經文,了解現在公司都在面什麼類型的題,準備一些常見題,開背吧!如果一些基礎的 js 都不會那問題就有點小大了。
2.算法
做一些算法題,leetcode 上面的一二三星就夠了,前端算法很簡單,基本都是初中數學的難度吧。
3.項目
項目回顧,把你做的項目從技術架構到源碼都要做到足夠了解,至少面試的時候不要被面試官問住了。並且要體現出你在工作中的作用,體現出自驅性。(大公司都很看中自驅性)。
4.亮點
準備亮點,回答問題的時候不用全部回答上來,但是在面試的過程中一定要有亮點(不然你就會得到反饋,面試官說你還行,但是沒有過~) 我一般會準備幾個點,每個點都保證可以說上半小時。另外一定要了解的很深入,並且能夠用自己的話流暢的表達出來!!(我準備的幾點,性能優化、工程化、緩存、http)
5.內推
最好找人內推,成功率會提高一些
6.練手
先找幾家不太想去的公司(規模差不多)練練手,如果第一次面試就去心儀的公司面試,淘汰率會非常高。
7.心態
心態很重要,面試不過很正常,不證明你不優秀,只是不適合,總結面試經驗,為下一次做準備。
如何回答問題?
怎麼把自己會的問題說好,這個很關鍵
1.邏輯清晰
一定要邏輯清晰,不然即使你知道這個問題的答案,面試官也不會滿意,如果你邏輯清晰,即使這個答案不會,面試官也會給你加分。
2.獨特理解
現在的面試題大同小異,那麼如何體現出你的優勢就很重要。結合業務以及你自身的知識儲備來講。
3.深入思考
對每個問題一定要有深入的思考,不然就很難進入大公司了,深度上要有一個拔高才能在面試中獲得好的成績
4.流暢表達
面試就是一個表達的過程,一些問題心裡明白不行,還要流暢的表述出來,基本上如果面試官覺得你表達的很流暢,當你講到一半就不會再讓你說下去了,證明已經通過了
還能記住的面試題
手寫繼承instanceof 實現原理promise 限制並發數箭頭函數跟普通函數的區別flex 1 全寫vue 雙向綁定原理https 實現原理(越詳細越好)node 進程之間如何通訊graghgl 如何優化請求速度node 跟瀏覽器的 event loop 區別瀏覽器渲染頁面過程如何性能優化CDN 優化有哪些webpack 插件原理,如何寫一個插件緩存有哪些,區別是什麼手寫 bind、reduce防抖截流遍歷樹,求樹的最大層數。求某層最多的節點數node 開啟進程的方法有哪些,區別是什麼node 如何部署的node check 階段做了什麼,觸發了什麼事件前端模塊化的理解node 如何處理錯誤的隱式轉換數字在計算機怎麼儲存的webpack 優化webpack 的 require 是如何查找依賴的webpack 如何實現動態加載給你一個項目,從頭開始你怎麼考慮工作流做了哪些事情如何提升效率與性能未來的規劃是什麼跨域有哪些網絡安全鍊表與數組的區別變量提升 let const var 區別鍊表如何遍歷script 標籤中 async 跟 defer 的區別刷題當然也是最重要的,畢竟我是有好幾年沒有過正規面試的經歷了,於是問我在阿里的同學要來了一份他們公司P8整理的一系列大廠面試題,刷到天昏地暗,如今我也已經入職了字節跳動,這些面試題對於我來說也沒什麼太大的用處,所以在這裡無償的分享給大家。
字節跳動面試經歷
字節跳動一面
首先自我介紹,balabala……(此處省略三分鐘)
1、找一個你的項目說一下,首先你的項目介紹,承擔了什麼職責,做了哪些工作,難點
因人而異,這就不再贅述了,balabal……(省略三分鐘)
2、從你項目中看出,你使用的是mysql,mysql的int數據類型都有哪些?從小到大說一下,各佔多少字節?
3、java中的int都有哪些?字節佔多少
4、問你一個關於計算機網絡的,tcp的三次握手說一下?
5、tcp和udp的區別
6、你說你熟悉linux,我給你一個案例,搜索出log文本中出現次數最多的IP,並且給出次數
7、說下java的gc
8、說一下hashmap這個數據結構
9、進行一次查找的話haspmap的時間複雜度是多少
10、給你一個算法你看一下,有一個無限長的整型數組,從小到大排序,非遞增。那麼怎麼找到數組中一個key
閒聊
之後就問了我最近看了哪本書,學到了什麼,最近還在學的什麼技術呢?問了我職業規劃,興趣愛好,還說了說公司的語言選型,我後來問了下對於我的面試表現評價,人家不方便說,又問了新人培養等問題。
字節跳動二面
自我介紹
balabla
1.然後說一說mysql的索引結構吧
2.看一道題吧,這個題怎麼建立索引
mysql訂單表有幾個屬性:訂單id,用戶user_id、下單日期date(精確到天)等,請問索引怎樣建立
a. 查詢某個用戶的所有訂單
b. 查詢某一天的所有訂單
c. 查詢某一天某個用戶的所有訂單
看第二道題
10G文件,每一行一個 uint32 數字。有一臺1G內存的機器
- A. 找出最大的 k 個數
- B. 找出重複數字
第三道題
我手中有一堆撲克牌, 但是觀眾不知道它的順序。
第一步, 我從牌頂拿出一張牌, 放到桌子上。
第二步, 我從牌頂再拿一張牌, 放在手上牌的底部。
第三步, 重複第一/二步的操作, 直到我手中所有的牌都放到了桌子上。
最後, 觀眾可以看到桌子上牌的順序是:13\12\11\10\9\8\7\6\5\4\3\2\1 請問, 我剛開始拿在手裡的牌的順序是什麼?用代碼實現以下
字節跳動三面
這個面試官應該是一個總監級別的,說話非常的硬氣,肯定是一個資深大佬,一共面了40多分鐘。常規的面試基礎都沒問,純懟項目和算法了。
1. 自我介紹
balbala
2. 你覺得你目前遇到的困難有哪些?項目上的難點?
3. 你的項目資料庫多大?QPS多少?哪些sql比較慢?
項目上的事我就不說了……balaba
4. 那你覺得以後qps更大的話,你該怎麼設計?
5.給你一個算法題,你來看一下思路
那留兩分鐘咱們聊一聊,你有什麼想問我的
balabala
四面(HR面,大約35分鐘,主要是問個人職業規劃、薪資待遇,以及對字節跳動的期許等等)
Java核心知識點
面試成功其實是必然的,因為我做足了充分的準備工作,包括刷題啊,看一些Java核心的知識點,看一些面試的博客吸取大家面試的一些經驗,下面這份PDF是我翻閱了差不多1個月左右一些Java大博主的博客從他們那裡取其精華去其糟泊所整理出來的一些Java的核心知識點,全部都是精華中的精華,我能面試到現在2-2資深開發人員跟我整理的這本Java核心知識點有密不可分的關係,在這裡本著共贏的心態分享給各位朋友。
這份PDF囊括了JVM,Java集合,Java多線程並發,Java基礎,spring原理,微服務,netty與RPC,網絡,日誌,zookeeper,kafka,rabbitMQ,hbase,mongoDB,cassandra,設計模式,負載均衡,資料庫,一致性算法,Java算法,數據結構,加密算法,分布式緩存,Hadoop,spark,storm,YARN,機器算法,雲計算。
由於篇幅有限,就不做過多的介紹,大家請自行腦補,需要這份Java核心知識點及大廠面試題答案的朋友請轉發+關注後私信博主「學習」來得到獲取方式
放在最後
總的來說,自己如果有想要去的大公司,一定要提升好自己,讓自己的能力和素質與公司匹配的上,我也一直相信,機會永遠是留給有準備的人。無論是學習還是工作,都應該有主動性,所以如果擁有大廠夢,那麼就要自己努力去實現它。
以上學習資料均免費放送,最後祝願各位身體健康,順利拿到心儀的offer!