天天看點

Java經典面試題詳解:帶你手撸紅黑樹總結

面試前的準備

老實說,我自己平常沒事就會看一些面試題,是以我都是直接去面的。不過我還是要建議大家如果準備面試的話,需要做以下準備

  1. 背題:看一看最近的面經文,了解現在公司都在面什麼類型的題,準備一些常見題,開背吧!如果一些基礎的 js 都不會那問題就有點小大了。
  2. 算法:做一些算法題,leetcode 上面的一二三星就夠了,前端算法很簡單,基本都是國中數學的難度吧。
  3. 項目:項目回顧,把你做的項目從技術架構到源碼都要做到足夠了解,至少面試的時候不要被面試官問住了。并且要展現出你在工作中的作用,展現出自驅性(大公司都很看重自驅性)
  4. 亮點:準備亮點,回答問題的時候不用全部回答上來,但是在面試的過程中一定要有亮點(不然你就會得到回報,面試官說你還行,但是沒有過~) 我一般會準備幾個點,每個點都保證可以睡上半小時。另外一定要了解得很深入,并且能夠用自己的話流暢的表達出來!!(我準備的幾點,性能優化、工程化、緩存、http)
  5. 内推:最好找人内推,成功率會提高一些
  6. 練手:先找幾家不太想去的公司(規模差不多)練練手,如果第一次面試就去心儀的公司面試,淘汰率會非常高。
  7. 心态:心态很重要,面試不過很正常,不證明你不優秀,隻是不适合,總結面試經驗,為下一次做準備。
  8. 答題:怎麼把自己會的問題說好,這個很關鍵
  • 邏輯清晰:一定要邏輯清晰,不然即使你知道這個問題的答案,面試官也不會滿意,如果你邏輯清晰,即使這個答案不會,面試官也會給你加分
  • 獨特了解:現在的面試題大同小異,那麼如何展現出你的優勢就很重要。結合業務以及你自身的知識儲備來講
  • 深入思考:對每個問題一定要有深入的思考,不然就很難進入大公司了,深度上要有一個拔高才能在面試中獲得好的成績
  • 流暢表達:面試就是一個表達的過程,一些問題心裡明白不行,還要流暢的表述出來,基本上如果面試官覺得你表達的很流暢,當你講到一半就不會再讓你說下去了,證明已經通過了

刷題絕對是最重要的,于是問了我在阿裡的同學要來了一全套他們公司P8整理的系列大廠面試題,刷到天昏地暗,如今既完美收官了,這些面試題還有自己之前收集整理的一份核心架構進階知識點。存在網盤也沒太大的用處,是以在這裡免費分享出來給有需要的朋友

Java經典面試題詳解:帶你手撸紅黑樹總結

位元組跳動4面(3面技術+1面HR)面試經曆

1.1 位元組跳動一面

  1. 首先自我介紹,balabala……(此處省略三分鐘)
  2. 找一個你的項目說一下,首先你的項目介紹,承擔了什麼職責,做了哪些工作,難點(因人而異,這就不再贅述了,balabal……(省略三分鐘))
  3. 從你項目中看出,你使用的是mysql,mysql的int資料類型都有哪些?從小到大說一下,各占多少位元組?
  4. java中的int都有哪些?位元組占多少
  5. 問你一個關于計算機網絡的,tcp的三次握手說一下?
  6. tcp和udp的差別?
  7. 你說你熟悉linux,我給你一個案例,搜尋出log文本中出現次數最多的IP,并且給出次數
  8. 說下java的gc?
  9. 說一下hashmap這個資料結構?
  10. 進行一次查找的話haspmap的時間複雜度是多少?
  11. 給你一個算法你看一下,有一個無限長的整型數組,從小到大排序,非遞增。那麼怎麼找到數組中一個key?
  12. 閑聊
之後就問了我最近看了哪本書,學到了什麼,最近還在學的什麼技術呢?問了我職業規劃,興趣愛好,還說了說公司的語言選型,我後來問了下對于我的面試表現評價,人家不友善說,又問了新人培養等問題。

1.2 位元組跳動二面

  1. 自我介紹(balabla)
  2. 然後說一說mysql的索引結構吧
  3. 看一道題吧,這個題怎麼建立索引
(1)第一道題: mysql訂單表有幾個屬性:訂單id,使用者user_id、下單日期date(精确到天)等,請問索引怎樣建立 a. 查詢某個使用者的所有訂單 b. 查詢某一天的所有訂單 c. 查詢某一天某個使用者的所有訂單 (2)第二道題: 10G檔案,每一行一個 uint32 數字。有一台1G記憶體的機器 - A. 找出最大的 k 個數 - B. 找出重複數字 (3)第三道題: 我手中有一堆撲克牌, 但是觀衆不知道它的順序。 第一步, 我從牌頂拿出一張牌, 放到桌子上。 第二步, 我從牌頂再拿一張牌, 放在手上牌的底部。 第三步, 重複第一/二步的操作, 直到我手中所有的牌都放到了桌子上。 最後, 觀衆可以看到桌子上牌的順序是:13\12\11\10\9\8\7\6\5\4\3\2\1 請問, 我剛開始拿在手裡的牌的順序是什麼?用代碼實作以下

1.3 位元組跳動三面

這個面試官應該是一個總監級别的,說話非常的硬氣,肯定是一個資深大佬,一共面了40多分鐘。正常的面試基礎都沒問,純怼項目和算法了。
  1. 自我介紹
  2. 你覺得你目前遇到的困難有哪些?項目上的難點?
  3. 你的項目資料庫多大?QPS多少?哪些sql比較慢?(項目上的事我就不說了……balaba)
  4. 那你覺得以後qps更大的話,你該怎麼設計?
  5. 給你一個算法題,你來看一下思路
  6. 那留兩分鐘咱們聊一聊,你有什麼想問我的

1.4 位元組跳動四面

HR面,大約35分鐘,主要是問個人職業規劃、薪資待遇,以及對位元組跳動的期許等等

總結

雖然面試套路衆多,但對于技術面試來說,主要還是考察一個人的技術能力和溝通能力。不同類型的面試官根據自身的了解問的問題也不盡相同,沒有規律可循。

Java經典面試題詳解:帶你手撸紅黑樹總結
Java經典面試題詳解:帶你手撸紅黑樹總結

上面提到的關于這些JAVA基礎、三大架構、項目經驗、并發程式設計、JVM及調優、網絡、設計模式、spring+mybatis源碼解讀、Mysql調優、分布式監控、消息隊列、分布式存儲等等面試題筆記及資料都是免費分享的,有需要學習的小夥伴可以直接點點點點點這裡免費下載下傳

布式監控、消息隊列、分布式存儲等等面試題筆記及資料都是免費分享的,有需要學習的小夥伴可以直接點點點點點這裡免費下載下傳**

有些面試官喜歡問自己擅長的問題,比如在實際程式設計中遇到的或者他自己一直在琢磨的這方面的問題,還有些面試官,尤其是大廠的比如 BAT 的面試官喜歡問面試者認為自己擅長的,然後通過提問的方式深挖細節,刨根到底。

繼續閱讀