掃描下方海報二維碼,試聽課程:
java
(課程詳細大綱,請參見文末)mysql
=================================面試
本文來自公衆號讀者Bella醬的面試經歷分享
redis
==================================算法
目錄:spring
自序sql
今日頭條數據庫
美團編程
滴滴設計模式
京東
others
算法題
HR面
tips
此次面試的公司有一點點多,主要是由於畢業後前兩份工做找的都很草率,此次換工做就想着,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難度的搞起來吧。大家加油,我就不想了。
羣裏有不少小夥伴懷疑我是98五、211或者研究生畢業,都不是的哈,渣本(可是我仍是很愛個人母校的),16年畢業,我一個妹子均可以作到的,大家更能夠作到,因此相信本身,去努力就行了。
這篇文章主要是記錄一下本身的面試經歷,分享一些羣裏小夥伴們都很關注的面試題,而後文章末尾我會推薦一些書,徹底免費推薦的哈,我我的感受不錯的,能夠提高技術的,固然面試中也會對你有特別大的幫助。
阿里的面試題不會分享哈,此次主要分享tmdj、以及其餘公司的一些面試題,把我分享的這些面試題都掌握了,對想去面阿里的小夥伴的幫助也是很是很是大的。
固然,面試題只是起一個查漏補缺的做用,並非讓你直接去整理答案,去背答案的哈。一個合格的面試官,是會針對你的簡歷去問的,即每一個人的面試題都是不同的。
二輪技術面,17:00~20:25,晚飯時間hr 小姐姐還特貼心的帶我體驗了一把傳說中的頭條餐廳,不超過半小時
聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間通過哪些服務 每一個服務作什麼事情 的流程圖
講項目中的難點、挑戰,你是如何解決的
redis 中有幾種類型 & 各自底層怎麼實現的 & 項目中哪一個地方用了什麼類型,怎麼使用的
redis如何實現分佈式鎖,zk如何實現分佈式鎖,二者的區別。若是service還沒執行完,分佈式鎖在redis中已通過期了,怎麼解決這種問題
synchronized底層實現,加在方法上和加在同步代碼塊中編譯後的區別、類鎖、對象鎖
鎖升級的過程
java運行時區域 及 各個區域的做用、對GC的瞭解、java內存模型 及 爲何要這麼設計
對索引的理解,組合索引,索引的最佳實踐
countDownLatch用過沒有,在項目中如何使用的,對aqs 的瞭解
寫生產者消費者問題,考慮高併發的狀況,可使用Java 類庫,白紙寫代碼
以下圖所示
設計一個發號器,考慮集羣和高併發的狀況,要求發號器生成的id是遞增趨勢,經過id能夠區分出來是今天生成的id仍是昨天生成的id,可是生成的id中不能直接帶有日期,要具備必定的混淆功能,白紙寫代碼
一個二位數組,每一個元素均可以往上下左右四個方向走,尋找最長遞增路徑。以下圖所示,最長遞增路徑即紅色字體路徑。白紙寫代碼。
電話面試(40分鐘)+現場三輪技術面試(3.5小時)+hrbp面試(30分鐘)
數據庫和緩存的一致性問題。先更新數據庫,再更新緩存,若更新完數據庫了,尚未更新緩存,此時有請求過來了,訪問到了緩存中的數據,怎麼辦?
聚簇索引/非聚簇索引,mysql索引底層實現,爲何不用B-tree,爲何不用hash,葉子結點存放的是數據仍是指向數據的內存地址,使用索引須要注意的幾個地方
mysql默認的事務隔離級別,mvcc,rr怎麼實現的,rc如何實現的
mysql間隙鎖有沒有了解,死鎖有沒有了解,寫一段會形成死鎖的sql語句,死鎖發生瞭如何解決,mysql有沒有提供什麼機制去解決死鎖
談下對GC的瞭解,何爲垃圾,有哪些GC算法,有哪些垃圾回收器,cms和g1的區別,emm,還有一個直擊靈魂的問題,看過cms的源碼嗎,笑cry
有沒有排查過線上oom的問題,如何排查的
有沒有使用過jvm自帶的工具,如何使用的
假設有下圖所示的一個full gc 的圖,縱向是內存使用狀況,橫向是時間,你如何排查這個full gc的問題,怎麼去解決你說出來的這些問題【原創公衆號:Bella的技術輪子】
說說對java中集合類的理解,項目中用過哪些,哪一個地方用的,如何使用的
對CAS的理解,CAS帶來的問題,如何解決這些問題
volatile底層、synchronized底層、鎖升級的過程、MESI
ehcache支持哪些緩存
juc有研究沒有,講一講
聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間通過哪些服務 每一個服務作什麼事情 的流程圖
講項目中的難點、挑戰,如何解決的,項目這一塊會問的特別細
如何保證RocketMQ 消息的順序性,如何解決重複消費問題
項目中如何保證接口的冪等操做
講一講對redis 的瞭解,項目中如何使用的,哪一個地方使用的,爲何要使用
哨兵機制、redis兩種備份方式的區別,項目中用的哪一種,爲何
講一講對分佈式鎖的瞭解
項目中系統監控怎麼作的
如何理解Spring中的AOP 和 IOC,以及DI,讀過Spring源碼沒有
讀過MyBatis源碼沒有
說一個你瞭解最多的框架,說出你的理解
如何理解分佈式事務,爲何會出現這個問題,如何去解決,瞭解哪些分佈式事務中間件
聊一聊對分庫分表的理解
hystrix功能 & 在項目中怎麼使用的 & hystrix 怎麼檢測斷路器是否要開啓/關閉 & hystrix 實現原理,除hystrix以外的其餘熔斷限流中間件有了解沒有,瞭解多少說多少
dubbo有了解沒有
怎麼理解java 中和 mysql 中的樂觀鎖、悲觀鎖
一致性hash
現場三輪技術面試 + 一輪hrbp面(4小時5分鐘)
聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間通過哪些服務 每一個服務作什麼事情 的流程圖,講數據庫設計
處理過線上oom問題沒有,如何處理的
遇到過線上服務器cpu飆高的狀況沒有,如何處理的
線上有沒有遇到其餘問題,如何處理的
對線程池的理解,項目中哪一個地方使用了,如何使用的,用的Excutor框架中的哪一個實現類,爲何用這個
對CAS的理解,CAS帶來的問題,如何解決這些問題
volatile底層、synchronized底層、鎖升級的過程、MESI
對mysql索引的理解、對組合索引的理解、索引的最佳實踐
分佈式鎖的實現、對比redis分佈式鎖 & zk分佈式鎖
惟一id如何實現的,snowflake實現原理,snowflake有哪些問題,如何避免根據訂單號能夠推算出今天的訂單量
若是線上一個功能是用棧結構實現的,使用過程當中要注意哪些問題,爲何
怎麼理解線程安全
怎麼理解接口冪等,項目中如何保證的接口冪等
怎麼理解微服務,服務如何劃分,能夠從哪幾個方面去劃分,爲何這樣劃分,微服務帶來了哪些好處,哪些壞處,如何看待這個問題
如何理解網關,網關帶來的好處和壞處,如何解決
hystrix功能 & 在項目中怎麼使用的 & hystrix 怎麼檢測斷路器是否要開啓/關閉 & hystrix 實現原理
怎麼理解命令模式和觀察者模式,手寫一個觀察者模式或者命令模式的代碼,策略模式也行
掌握哪些設計模式,經常使用哪些,項目中如何使用的,爲何用這個,不用那個,手寫一個線程安全的單例模式
如何設計一個秒殺系統
若是我如今就是要實現每秒10w請求,不能熔斷限流,如何去設計
假設如今雙十一零點,大量下單請求,如何對這些訂單進行分庫分表,爲何
服務A調用服務B中一個接口,服務B調用服務C中一個接口,如何實現若服務B響應服務A成功,則服務C必定響應服務B成功,須要考慮系統性能問題
遞歸使用中有什麼須要注意的地方,遞歸寫法通常能夠用什麼去替換
有兩個表,table a,table b,寫sql查詢出僅在table a中的數據、僅在table b中的數據、既在table a 又在table b 中的數據
spring 源碼有了解沒有
myBatis源碼有了解沒有
mysql事務隔離級別、mvcc
我:既然如今不少業務線都是Go了,有沒有考慮把剩餘的業務線也轉成Go呀?
面試官:我認爲,語言只是工具,語言不該該是影響開發的一個因素吧。
面試官說的頗有道理。
電話面試(30分鐘)+現場兩輪技術面試(1小時40分鐘),面完12:50,說讓我先回來,後續hr 電話和我聯繫
一週後一面的面試官問我還考慮京東嗎?,回覆不考慮了,但願之後有機會再合做
一個final修飾的屬性,定義的時候沒有初始化,在無參構造函數中初始化,能夠嗎,爲何
說說對java中集合類的理解,項目中用過哪些,哪一個地方用的,如何使用的,爲何不用其餘的集合類
hashMap,concurrentHashMap底層實現,
list刪除是怎麼實現的,遍歷的時候能夠刪除嗎,爲何
redis中有哪些數據結構,瞭解過其底層怎麼實現的嗎,和java中類似的數據結構的對比
redis是單線程的仍是多線程的,爲何這麼快
redis hash中某個key過大,變爲String類型的大key,怎麼處理,使用中如何避免出現這種問題
設計模式在項目中哪一個地方用到了,怎麼使用的,能不能畫一個你熟悉的設計模式的UML圖,手寫單例模式,手寫靜態內部類實現的單例模式
講一講mysql索引,實際工做中,哪些場景用了b+tree索引,哪些場景用了hash索引
explain 能夠看到哪些信息,什麼信息說明什麼,explain的結果列講一下
Spring源碼看過沒有,會多少講多少
MyBatis源碼看過沒有,會多少講多少
cas,cas的缺點,如何解決
aqs,countDownLatch如何實現
線程池如何實現,核心線程數和最大線程數設置成多少,爲何這麼設置,項目中哪一個地方使用了線程池,使用時須要注意什麼
mysql事務隔離級別,幻讀,髒讀,項目中用什麼事務隔離級別,爲何
volatile底層原理、synchronized實現機制,
對XA、TCC的理解,瞭解哪些分佈式事務框架,有什麼缺點
feign 和 dubbo,瞭解多少說多少
eureka 和 zookeeper,瞭解多少說多少
hystrix 和 sentinel,瞭解多少說多少
Spring cloud alibaba,瞭解多少說多少
對分庫分表、讀寫分離的瞭解,瞭解多少說多少
畫一下java 線程幾個狀態 及 狀態之間互相轉換的圖
聊項目,畫項目架構圖,畫一個用戶從發起請求 到接收到響應 中間通過哪些服務 每一個服務作什麼事情 的流程圖,講數據庫設計 具體到部分表中有哪些字段【原創公衆號:Bella的技術輪子】
emm 咱們部門體量比較大,可能須要加班,到凌晨兩三點的那種,也可能通宵,通宵是大促期間,你能接受嗎
emm 也會加班到十點,這個不是大促期間,但也不是天天,很是態狀況,你能接受嗎,你在哪裏住,過來要多久,有男友嗎?一塊兒去吃午餐吧,咱們這邊有員工餐廳,不了不了,我回家吃飯吧
下面是面試tmdj 以外的公司中遇到的一些問題哈,tmdj 中已經被問到的就再也不重複寫了,只寫一下個別公司中我還記得的面試題
火幣:
四輪技術面試+一輪hr 面試(4小時),後來hr 小姐姐和我說,她們正常是兩輪技術面試,由於技術面試完面試官一直沒有找到她,而後,emm,就又來了一輪技術面試,又來了一輪技術面試,笑cry
kafka 如何保證消息順序消費、在consumer group 中新增一個consumer 會提升消費消息的速度嗎、那若是我想提升消息消費的速度,我要怎麼辦
redis幾種數據結構 及 底層,項目中如何使用的redis
哨兵機制、選舉算法
一致性hash
redis是單線程的仍是多線程的,爲何速度這麼快
多路複用的幾種方式以及區別
對線程池的理解,在項目中如何使用的,多個線程之間如何共享數據,多個進程之間如何共享數據
hashMap、concurrentHashMap的區別 及 底層實現、hashMap和hashTable 的區別
什麼是紅黑樹,什麼是b-tree,爲何hashMap中用紅黑樹不用其餘樹
對mysql 索引的理解,爲何mysql索引中用b+tree,不用b-tree 或者其餘樹,爲何不用hash 索引
數據庫和緩存的雙寫一致性問題
每日一淘:
三輪技術面試+一輪hrbp 面
用過哪些Object類的方法,如何使用的
java如何實現序列化的,Serialization底層如何實現的
countDownLatch如何實現的
項目中監控報警機制如何作的,說說你的瞭解
線上服務器cpu飆高,如何處理這個問題
服務A調用服務B,用戶請求服務A,發現返回較慢,如何定位這個問題
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],求哪一天買入哪一天賣出,可得到最大收益,最大收益爲多少 (愛奇藝)
按照箭頭方向查找二叉樹 (金山雲)
表a b c之間用id關聯,求陰影部分的數據 (金山雲)【原創公衆號:Bella的技術輪子】
一個整形無序數組,裏面三個數只和等於一個目標值,求這三個數 (小米)
鏈表問題 (小米)
撲克牌問題 (小米)
有十張撲克牌,從上面開始抽,抽出一張放桌子上,而後再抽出一張放撲克牌的最下面,這樣循環往復的操做,直到手裏的牌都沒有了。這時,桌子上牌的順序正好是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 問什麼問題,如實回答便可。在回拒offer 時候,也請好好說話。
其實面試過程當中,你是能夠感覺到哪些面試官是真的很欣賞你,哪些只是想找一個能夠幹活的人的,最後必定要去一個欣賞你的面試官那裏,由於待遇真的會不同
(僞裝我體驗過只是想找我幹活的leader哈,很感激之前遇到的每一位leader 都很欣賞我,給我我想要的空間去作本身想作的事情,真的很是感謝大家)
嗯,免費安利環節到了,學不了吃虧學不了上當哈
《深刻理解Java虛擬機》
《Java併發編程的藝術》
《Java併發編程實戰》
《MySQL技術內幕 InnoDB存儲引擎》
《Redis設計與實現》
《JVM G1源碼分析和調優》
《從新定義Spring Cloud實戰》
《Redis深度歷險:核心原理與應用實踐》
《Spring技術內幕》《myBatis技術內幕》
《深刻拆解Java虛擬機》
等等等等
我的感受極客時間和掘金小冊仍是有不少很是不錯的專欄的,emm,不裝了,上面這些書/專欄,有些我本身都木有看完呢,溜了溜了
END
《21天互聯網Java進階面試訓練營(分佈式篇)》詳細目錄,掃描圖片末尾的二維碼,試聽課程