Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

自序

這次面試的公司有一點點多,主要是因爲畢業後前兩份工作找的都很草率,這次換工作就想着,emm,畢業三年了,該找個工作好好沉澱幾年了。

先說下這次面試的結果吧: 到 hr 面的:阿里、美團、滴滴、金山雲、每日一淘、火幣、宜信、旺店通、黃包車、linkedMe

其他:

小米 (四輪技術面,大概4個小時的樣子,大數據部門,不知道是不是四面的負責人嫌棄我木有大數據的經驗,不過我確實木有哈)

京東 (電話面試一輪+現場兩輪,面試完快中午一點了,說是讓我先回家,後面讓hr 電話聯繫我 一週後一面的面試官問我還考慮京東不,如果考慮的話,就進行後續。當時已經有了更好的offer,就說不考慮了,希望以後有機會再合作,所以沒有後續了)

頭條 (二面完gg,我的算法確實菜哈,然後leetcode又只刷過10道題,去面頭條,確實有些作死的節奏,實在是對不起幫我內推的石衝大佬)

愛奇藝 (電話面試一輪+現場兩輪,到技術終面了,這個怪我,面試官也一直很忙,然後我倆就互相一直改面試時間,最後定的那個面試時間我還遲到了一個小時,還是時間到了纔給hr 打電話說一個小時後才能到 雖然我知道這樣做非常不好,但是當時情況比較複雜,自己根本忙不過來,一直在面試,也沒有辦法中途給hr 打電話說一下。一天面兩家,兩家離的還比較遠的小夥伴吸取一下教訓。 我本來是想約第二天下午的,hr 就想當天,結果就晚上7:40開始二面了,面到9點,然後木有然後了)

有贊 (電話面試一輪+現場兩輪,到技術終面了,面試官“base考慮杭州嗎”,我“啊,你們北京不是也需要人嗎,最好北京哈,杭州暫時不考慮”,然後木有然後了,哈哈。

後面面阿里的時候我就自己打臉了,面試官“base杭州考慮嗎”,我“面過阿里我就去杭州,面不過我就在北京”。愛,就要大膽的說出來。)

這次面試基本都是三~四輪技術面,很多都是每一輪都有至少一道算法題,所以準備換工作的小夥伴,算法可以搞起來了哈,leetcode easy和medium 難度的就ok了,當然如果你也要刷hard 難度的題,是更好的哈。

我作爲一名只刷過10道leetcode的渣渣,表示以後要好好刷leetcode了,拯救一下自己的智商。準備面頭條的小夥伴,那就medium 和 hard難度的搞起來吧。你們加油,我就不想了。

羣裏有很多小夥伴懷疑我是985、211或者研究生畢業,都不是的哈,渣本(但是我還是很愛我的母校的),16年畢業,我一個妹子都可以做到的,你們更可以做到,所以相信自己,去努力就好了。

這篇文章主要是記錄一下自己的面試經歷,分享一些羣裏小夥伴們都很關注的面試題,然後文章末尾我會推薦一些書,完全免費推薦的哈,我個人感覺不錯的,可以提升技術的,當然面試中也會對你有特別大的幫助。 阿里的面試題不會分享哈,這次主要分享tmdj、以及其他公司的一些面試題,把我分享的這些面試題都掌握了,對想去面阿里的小夥伴的幫助也是非常非常大的。

當然,面試題只是起一個查漏補缺的作用,並不是讓你直接去整理答案,去背答案的哈。一個合格的面試官,是會針對你的簡歷去問的,即每個人的面試題都是不一樣的。

二輪技術面,17:00~20:25,晚飯時間hr 小姐姐還特貼心的帶我體驗了一把傳說中的頭條餐廳,不超過半小時

1.聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖2.講項目中的難點、挑戰,你是如何解決的3.redis 中有幾種類型 & 各自底層怎麼實現的 & 項目中哪個地方用了什麼類型,怎麼使用的4.redis如何實現分佈式鎖,zk如何實現分佈式鎖,兩者的區別。如果service還沒執行完,分佈式鎖在redis中已經過期了,怎麼解決這種問題5.synchronized底層實現,加在方法上和加在同步代碼塊中編譯後的區別、類鎖、對象鎖6.鎖升級的過程7.java運行時區域 及 各個區域的作用、對GC的瞭解、java內存模型 及 爲什麼要這麼設計8.對索引的理解,組合索引,索引的最佳實踐9.countDownLatch用過沒有,在項目中如何使用的,對aqs 的瞭解10.寫生產者消費者問題,考慮高併發的情況,可以使用Java 類庫,白紙寫代碼11.如下圖所示

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

12.設計一個發號器,考慮集羣和高併發的情況,要求發號器生成的id是遞增趨勢,通過id可以區分出來是今天生成的id還是昨天生成的id,但是生成的id中不能直接帶有日期,要具有一定的混淆功能,白紙寫代碼13.一個二位數組,每個元素都可以往上下左右四個方向走,尋找最長遞增路徑。如下圖所示,最長遞增路徑即紅色字體路徑。白紙寫代碼。

美團

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

電話面試(40分鐘)+現場三輪技術面試(3.5小時)+hrbp面試(30分鐘)

1.數據庫和緩存的一致性問題。先更新數據庫,再更新緩存,若更新完數據庫了,還沒有更新緩存,此時有請求過來了,訪問到了緩存中的數據,怎麼辦?2.聚簇索引/非聚簇索引,mysql索引底層實現,爲什麼不用B-tree,爲什麼不用hash,葉子結點存放的是數據還是指向數據的內存地址,使用索引需要注意的幾個地方3.mysql默認的事務隔離級別,mvcc,rr怎麼實現的,rc如何實現的4.mysql間隙鎖有沒有了解,死鎖有沒有了解,寫一段會造成死鎖的sql語句,死鎖發生瞭如何解決,mysql有沒有提供什麼機制去解決死鎖5.談下對GC的瞭解,何爲垃圾,有哪些GC算法,有哪些垃圾回收器,cms和g1的區別,emm,還有一個直擊靈魂的問題,看過cms的源碼嗎,笑cry6.有沒有排查過線上oom的問題,如何排查的7.有沒有使用過jvm自帶的工具,如何使用的8.假設有下圖所示的一個full gc 的圖,縱向是內存使用情況,橫向是時間,你如何排查這個full gc的問題,怎麼去解決你說出來的這些問題

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

9.說說對java中集合類的理解,項目中用過哪些,哪個地方用的,如何使用的10.對CAS的理解,CAS帶來的問題,如何解決這些問題11.volatile底層、synchronized底層、鎖升級的過程、MESI12.ehcache支持哪些緩存13.juc有研究沒有,講一講14.聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖15.講項目中的難點、挑戰,如何解決的,項目這一塊會問的特別細16.如何保證RocketMQ 消息的順序性,如何解決重複消費問題17.項目中如何保證接口的冪等操作18.講一講對redis 的瞭解,項目中如何使用的,哪個地方使用的,爲什麼要使用19.哨兵機制、redis兩種備份方式的區別,項目中用的哪種,爲什麼20.講一講對分佈式鎖的瞭解21.項目中系統監控怎麼做的22.如何理解Spring中的AOP 和 IOC,以及DI,讀過Spring源碼沒有23.讀過MyBatis源碼沒有24.說一個你瞭解最多的框架,說出你的理解25.如何理解分佈式事務,爲什麼會出現這個問題,如何去解決,瞭解哪些分佈式事務中間件26.聊一聊對分庫分表的理解27.hystrix功能 & 在項目中怎麼使用的 & hystrix 怎麼檢測斷路器是否要開啓/關閉 & hystrix 實現原理,除hystrix之外的其他熔斷限流中間件有了解沒有,瞭解多少說多少28.dubbo有了解沒有29.怎麼理解java 中和 mysql 中的樂觀鎖、悲觀鎖30.一致性hash

滴滴

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

現場三輪技術面試 + 一輪hrbp面(4小時5分鐘)

> 1.聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖,講數據庫設計> > 2.處理過線上oom問題沒有,如何處理的> > 3.遇到過線上服務器cpu飆高的情況沒有,如何處理的> > 4.線上有沒有遇到其他問題,如何處理的> > 5.對線程池的理解,項目中哪個地方使用了,如何使用的,用的Excutor框架中的哪個實現類,爲什麼用這個> > 6.對CAS的理解,CAS帶來的問題,如何解決這些問題> > 7.volatile底層、synchronized底層、鎖升級的過程、MESI> > 8.對mysql索引的理解、對組合索引的理解、索引的最佳實踐> > 9.分佈式鎖的實現、對比redis分佈式鎖 & zk分佈式鎖> > 10.唯一id如何實現的,snowflake實現原理,snowflake有哪些問題,如何11.避免根據訂單號可以推算出今天的訂單量> > 12.如果線上一個功能是用棧結構實現的,使用過程中要注意哪些問題,爲什麼> > 13.怎麼理解線程安全> > 14.怎麼理解接口冪等,項目中如何保證的接口冪等> > 15.怎麼理解微服務,服務如何劃分,可以從哪幾個方面去劃分,爲什麼這樣劃分,微服務帶來了哪些好處,哪些壞處,如何看待這個問題> > 16.如何理解網關,網關帶來的好處和壞處,如何解決> > 17.hystrix功能 & 在項目中怎麼使用的 & hystrix 怎麼檢測斷路器是否要開啓/關閉 & hystrix 實現原理> > 18.怎麼理解命令模式和觀察者模式,手寫一個觀察者模式或者命令模式的代碼,策略模式也行> > 19.掌握哪些設計模式,常用哪些,項目中如何使用的,爲什麼用這個,不用那個,手寫一個線程安全的單例模式> > 20.如何設計一個秒殺系統> > 21.如果我現在就是要實現每秒10w請求,不能熔斷限流,如何去設計> > 22.假設現在雙十一零點,大量下單請求,如何對這些訂單進行分庫分表,爲什麼> > 23.服務A調用服務B中一個接口,服務B調用服務C中一個接口,如何實現若服務B響應服務A成功,則服務C一定響應服務B成功,需要考慮系統性能問題> > 24.遞歸使用中有什麼需要注意的地方,遞歸寫法一般可以用什麼去替換> > 25.有兩個表,table a,table b,寫sql查詢出僅在table a中的數據、僅在table b中的數據、既在table a 又在table b 中的數據> > 26.spring 源碼有了解沒有> > 27.myBatis源碼有了解沒有> > 28.mysql事務隔離級別、mvcc

我:既然現在很多業務線都是Go了,有沒有考慮把剩餘的業務線也轉成Go呀?面試官:我認爲,語言只是工具,語言不應該是影響開發的一個因素吧。面試官說的很有道理。

京東

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

電話面試(30分鐘)+現場兩輪技術面試(1小時40分鐘),面完12:50,說讓我先回來,後續hr 電話和我聯繫 一週後一面的面試官問我還考慮京東嗎?,回覆不考慮了,希望以後有機會再合作

1.一個final修飾的屬性,定義的時候沒有初始化,在無參構造函數中初始化,可以嗎,爲什麼2.說說對java中集合類的理解,項目中用過哪些,哪個地方用的,如何使用的,爲什麼不用其他的集合類3.hashMap,concurrentHashMap底層實現,4.list刪除是怎麼實現的,遍歷的時候可以刪除嗎,爲什麼5.redis中有哪些數據結構,瞭解過其底層怎麼實現的嗎,和java中相似的數據結構的對比6.redis是單線程的還是多線程的,爲什麼這麼快7.redis hash中某個key過大,變爲String類型的大key,怎麼處理,使用中如何避免出現這種問題8.設計模式在項目中哪個地方用到了,怎麼使用的,能不能畫一個你熟悉的設計模式的UML圖,手寫單例模式,手寫靜態內部類實現的單例模式9.講一講mysql索引,實際工作中,哪些場景用了b+tree索引,哪些場景用了hash索引10.explain 可以看到哪些信息,什麼信息說明什麼,explain的結果列講一下11.Spring源碼看過沒有,會多少講多少12.MyBatis源碼看過沒有,會多少講多少13.cas,cas的缺點,如何解決14.aqs,countDownLatch如何實現15.線程池如何實現,核心線程數和最大線程數設置成多少,爲什麼這麼設置,項目中哪個地方使用了線程池,使用時需要注意什麼16.mysql事務隔離級別,幻讀,髒讀,項目中用什麼事務隔離級別,爲什麼17.volatile底層原理、synchronized實現機制,18.對XA、TCC的理解,瞭解哪些分佈式事務框架,有什麼缺點19.feign 和 dubbo,瞭解多少說多少20.eureka 和 zookeeper,瞭解多少說多少21.hystrix 和 sentinel,瞭解多少說多少22.Spring cloud alibaba,瞭解多少說多少23.對分庫分表、讀寫分離的瞭解,瞭解多少說多少24.畫一下java 線程幾個狀態 及 狀態之間互相轉換的圖25.聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖,講數據庫設計 具體到部分表中有哪些字段26.emm 我們部門體量比較大,可能需要加班,到凌晨兩三點的那種,也可能通宵,通宵是大促期間,你能接受嗎27.emm 也會加班到十點,這個不是大促期間,但也不是每天,非常態情況,你能接受嗎,你在哪裏住,過來要多久,有男朋友嗎?一起去喫午飯吧,我們這邊有員工餐廳,不了不了,我回家喫飯吧

下面是面試tmdj 之外的公司中遇到的一些問題哈,tmdj 中已經被問到的就不再重複寫了,只寫一下個別公司中我還記得的面試題

others

火幣 :四輪技術面試+一輪hr 面試(4小時),後來hr 小姐姐和我說,她們正常是兩輪技術面試,因爲技術面試完面試官一直沒有找到她,然後,emm,就又來了一輪技術面試,又來了一輪技術面試,笑cry

1.kafka 如何保證消息順序消費、在consumer group 中新增一個consumer 會提高消費消息的速度嗎、那如果我想提高消息消費的速度,我要怎麼辦2.redis幾種數據結構 及 底層,項目中如何使用的redis3.哨兵機制、選舉算法4.一致性hash5.redis是單線程的還是多線程的,爲什麼速度這麼快6.多路複用的幾種方式以及區別7.對線程池的理解,在項目中如何使用的,多個線程之間如何共享數據,多個進程之間如何共享數據8.hashMap、concurrentHashMap的區別 及 底層實現、hashMap和hashTable 的區別9.什麼是紅黑樹,什麼是b-tree,爲什麼hashMap中用紅黑樹不用其他樹10.對mysql 索引的理解,爲什麼mysql索引中用b+tree,不用b-tree 或者其他樹,爲什麼不用hash 索引11.數據庫和緩存的雙寫一致性問題

每日一淘 :三輪技術面試+一輪hrbp 面

1.用過哪些Object類的方法,如何使用的2.java如何實現序列化的,Serialization底層如何實現的3.countDownLatch如何實現的4.項目中監控報警機制如何做的,說說你的瞭解5.線上服務器cpu飆高,如何處理這個問題6.服務A調用服務B,用戶請求服務A,發現返回較慢,如何定位這個問題7.TIME_WAIT是什麼狀態還記得嗎,什麼情況下網絡會出現這個狀態

linkedMe :二輪技術面試+一輪hr面試 1.內核態 和 用戶態、cas 和 sout 哪個用到了內核態和用戶態的切換 2.哪些典型的應用用的是udp 3.線程池有了解嗎,項目中如何使用的 4.計算密集型/IO密集型 任務 分別如何設置線程池的核心線程數和最大線程數,爲什麼這麼設置 5.假如我下午5點要和5個人一起開會,但是這5個人現在都出去了,不在公司,但是今天會回來,問,我如何開這場會,用java 併發方面的知識回答

旺店****通 :5小時+,中午我還木有喫飯,下午面試時候真是餓的要死,而且下午腦細胞死了好多好多

  • 先機試(50分鐘時間,三選二,不聯網,明確告知機試不通過沒有後續)
  • 一面給面試官講一下自己機試題的思路,面試官運行看結果,然後問了幾個問題(什麼是B-tree,什麼是B+tree之類的)
  • 筆試(10道選擇題+2道數據庫+2道算法題,30分鐘)
  • 二面給面試官講自己的機試題的思路,面試官運行看結果,然後給面試官講筆試題,一道一道講爲什麼這麼寫,過程中面試官可能會改題,然後問你怎麼解決修改後的題,然後又問了幾個題
  • 三面開始正常面試,但不是看簡歷問,一部分是簡歷上的,一部分是看面試官心情
  • hr面 當場給了offer,但是啊,從他家出來的時候的想法就是,早知道下午這個樣子,不如中午喫個午飯,回家好好睡一覺 想去他家的小夥伴就好好寫代碼吧,多看java 中一些方法的實現,因爲機試的題目都要求不能用java 中提供的方法,要自己寫,然後還要好好準備算法

算法題

  • [1,1,2,2,3,4,4,5,5,5] 找出不重複的元素(黃包車)
  • 反轉鏈表,要求時間複雜度O(N),空間複雜度O(1) (火幣)
  • 非遞歸實現斐波那契數列 (愛奇藝)
  • 這一週股市價格爲[2,6,1,4,8],求哪一天買入哪一天賣出,可獲得最大收益,最大收益爲多少 (愛奇 - 藝)
  • 按照箭頭方向查找二叉樹 (金山雲)

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

  • 表a b c之間用id關聯,求陰影部分的數據 (金山雲)

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

  • 一個整形無序數組,裏面三個數只和等於一個目標值,求這三個數 (小米) 鏈表問題 (小米)

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

  • 撲克牌問題 (小米) 有十張撲克牌,從上面開始抽,抽出一張放桌子上,然後再抽出一張放撲克牌的最下面,這樣循環往復的操作,直到手裏的牌都沒有了。這時,桌子上牌的順序正好是1 2 3 4 5 6 7 8 9 10。要求寫代碼求出原順序
  • 手寫大頂堆 (linkedMe)
  • 手寫LRU 算法 (火幣)
  • 字符串相加 (滴滴) 兩個數字類型的字符串,直接轉int或者double肯定都放不下,然後求這兩個數的和,返回值還是字符串,15分鐘時間,要求無bug
  • 尋找目標值位置 (滴滴) 有一個二維數組,數組橫向有序,縱向有序,求目標值的位置,10分鐘時間
  • 求字符串“efabcbaefehiabcba”中最長的迴文數,不去重(美團)
  • 反轉int類型的值x,不要借用String,只用int 即可。&& 針對該程序,寫出其應有的測試用例 (美團)
  • top K 問題(每日一淘) HR面

真誠待人,以真心換真心,不要弄虛作假,HR 問什麼問題,如實回答即可。在回拒offer 時候,也請好好說話。

tips

其實面試過程中,你是可以感受到哪些面試官是真的很欣賞你,哪些只是想找一個可以幹活的人的,最後一定要去一個欣賞你的面試官那裏,因爲待遇真的會不一樣 (假裝我體驗過只是想找我幹活的leader哈,很感激以前遇到的每一位leader 都很欣賞我,給我我想要的空間去做自己想做的事情,真的非常感謝你們)

我去面試的所有公司問到的題目基本上全都包含在這些面試題裏。對於要找工作的朋友們來說很值得短期快速突擊一下。

解惑資料與福利

容我先絮叨一下,製作這個面試手冊差不多花了3個多星期時間,過程還是比較磨人的,但是也很期待。要是因爲我做的手冊,幫助到了大家,那就真的開心啊!這就是這篇文章的目的,幫你搜集了大量的面試題,已經整理成了一個Java面試手冊PDF,《互聯網面試2400頁》,目前有65份PDF,共有2400多頁,後續還會不斷的完善更新。

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

有需要的朋友麻煩點擊這裏即可獲取資料免費領取方式!

Java後端核心面試知識點文檔

這份Java後端核心面試知識點文檔包括了有基礎知識、Java集合、JVM、多線程併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java算法、數據庫、Zookeeper、分佈式緩存、數據結構等等

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

源碼解析及性能調優實戰文檔

這些文檔包括:Spring系列源碼解析,性能調優,MySQL架構,Tomcat架構,MyBatis源碼解析,RocketMQ源碼解析及實戰講解等

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

Java開發3年的妹子,橫掃美團,全靠這份厚厚的 2400 道面試題

有需要的朋友麻煩點擊這裏即可獲取資料免費領取方式!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章