2020最新阿里、百度、京東、餓了麼秋招面經總結
我感覺今年的寒冬有點冷。後續的面試過程中多做一些準備,看了幾篇不錯的面試經驗分享篇,給大家分享下我的求職體會,希望能給大家一些參考
阿里面試題
- 多個執行緒同時讀寫,讀執行緒的數量遠遠大於寫執行緒,你認為應該如何解決併發的問題?你會選擇加什麼樣的鎖?
- JAVA的AQS是否瞭解,它是幹嘛的?
- 除了synchronized關鍵字之外,你是怎麼來保障執行緒安全的?
- Tomcat本身的引數你一般會怎麼調整?
- 你有沒有用過Spring的AOP? 是用來幹嘛的? 大概會怎麼使用?
- 如果一個介面有2個不同的實現, 那麼怎麼來Autowire一個指定的實現?
- 如果想在某個Bean生成並裝配完畢後執行自己的邏輯,可以什麼方式實現?
- SpringBoot沒有放到web容器裡為什麼能跑HTTP服務?
- SpringBoot中如果你想使用自定義的配置檔案而不僅僅是application.properties,應該怎麼弄?
- SpringMVC如果希望把輸出的Object(例如XXResult或者XXResponse)這種包裝為JSON輸出, 應該怎麼處理?
- 如果有很多資料插入MYSQL 你會選擇什麼方式?
- 如果查詢很慢,你會想到的第一個方式是什麼?索引是幹嘛的?
- 查詢死掉了,想要找出執行的查詢程序用什麼命令?找出來之後一般你會幹嘛?
- 讀寫分離是怎麼做的?你認為中介軟體會怎麼來操作?這樣操作跟事務有什麼關係?
- 分庫分表有沒有做過?線上的遷移過程是怎麼樣的?如何確定資料是正確的?
- 你知道哪些或者你們線上使用什麼GC策略? 它有什麼優勢,適用於什麼場景?
- JAVA類載入器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
- 如何自定義一個類載入器?你使用過哪些或者你在什麼場景下需要一個自定義的類載入器嗎?
- 堆記憶體設定的引數是什麼?
- HashMap和Hashtable的區別。
- 實現一個保證迭代順序的HashMap。
- 說一說排序演算法,穩定性,複雜度。
- 說一說GC。
- JVM如何載入一個類的過程,雙親委派模型中有哪些方法?
- TCP如何保證可靠傳輸?三次握手過程?
京東面試題
- java常用的資料結構有哪些?哪些是執行緒安全的?是怎麼保證執行緒安全的?
- Redis中的Lua有沒有使用過? 可以用來做什麼? 為什麼可以這麼用?
- 執行緒池內部工作原理可以說一下麼?
- 死鎖是什麼意思,形成條件是什麼?出現死鎖是可以通過什麼方式去排查。
- 在交易過程中如何放在使用者在支付時的重複支付(交叉支付),請寫出你瞭解的方案或使用的過的方案。
- 資料庫索引有哪幾種,他們之間的區別。
- 程式開發時通過開發工具DeBug除錯時,控制檯顯示的內容都包含什麼?哪些內容可以幫助你發現問題和解決問題。
- RPC通訊過程中,假設A系統提供了一個方法入參是一個JavaBean,出參也是一個JavaBean。另外兩個系統B系統、C系統呼叫介面,呼叫方B想讓提供方A增加一個返回引數,假設服務提供方A增加了返回引數,請問C系統呼叫方需要做什麼處理?
- 瞭解哪些設計模式,用虛擬碼實現一個你熟悉的設計模式。
- 講一下怎麼使用分散式鎖。
- 說說HashMap的原理, 以及HashMap如何擴充bucket的大小。
- Redis的Pipeline是用來幹什麼的?
- Mysql索引的分類(Btree, hash),各自使用什麼情況 。
- 說說Myisam, Innodb區別。
- 知道哪些負載均衡演算法。
- 說一下Btree的查詢原理。
- 簡述三次握手,如果c端發起握手請求,s端無法立刻建立連線應該回應什麼?
去哪兒網面試題
- 自我介紹,專案介紹。
- mysql資料庫調優。
- sql優化。
- like能用索引嗎?
- java物件四種引用。
- GC原理。
- jvm記憶體結構。
- 說一下你學過jvm 在書寫程式碼上對你有什麼幫助和提高。
- 千萬資料量的查詢你會怎麼做?
- HashMap在jdk1.7和1.8的區別,為什麼引入這個概念?hash碰撞怎麼解決,為什麼1.8要比1.7更好,好在哪?
- 關於你的專案,如果併發很大,你會怎麼改造。
- 方法區裡什麼樣的物件有可能被回收。
- 線上cpu飆升100%你怎麼處理。
- 頻繁FullGC怎麼處理。
- 執行緒池建立有幾種,為什麼建立定長的執行緒池個數最好是5,10,15這樣的數字。
- linux命令。
- 伊甸區和倖存區可動態變化嗎?
- redis和memcached區別。
- 說幾個jdk命令,jmap是什麼意思。
- 如果併發很大,你對資料的正確性怎麼保證。
餓了麼面試題
- http和https的區別,https原理,http2.0與1.0的區別。
- Java的垃圾回收機制,Java檔案載入機制,tomcat類載入機制,鎖機制,jvm原理及線上調優,jvm記憶體模型。
- 多執行緒,有哪些可以保持程序同步的方法,建立執行緒的幾種方法,對i++多執行緒訪問你會怎麼做。
- Java的設計模式,單例有什麼模式,懶漢為什麼加volotile,volotile的記憶體屏障,如何避免死鎖。
- 考慮單例模式的編寫,要執行緒安全且記憶體消耗小(劍指offer原題)。
- String、StringBuilder、StringBuffer區別;String類能被繼承嗎?為什麼?
- 在白紙上手寫二分法排序演算法(lintcode上原題);二分查詢的思想。
- 查詢單鏈表中倒數第k個節點的演算法,手寫(lintcode上原題);最常見的排序演算法你見過哪些,快排的基本思想及時間複雜度。
- 常見的資料結構有哪些。
- hashmap、hashcode一樣,不equals怎麼處理 ;hashcode實現原理,currentHashMap原理,實現細節,怎麼實現同步的;類為什麼要有hascode方法,是不是主要在集合類中都要實現hashcode方法;equals方法怎麼實現;兩個不同的物件可能有相同的hashcode值嗎;常用集合有哪些。
- tcp三次握手,四次揮手協議。
- 架構設計一個開發性問題,設計一個Nginx管理的中介軟體,怎麼設計。
- 所有的類都繼承與object,你用過object類的直接子類有哪些,object類常用的方法有哪些。
- Java會出現記憶體洩漏嗎,如果回,在哪種情況下?
- 抽象類和介面的區別。
- 平時怎麼擴充套件自己的專業知識水平。
百度面試題
- 什麼是 Java 的反射機制。
- Cookie 和 Session的區別。
- get 和 post請求的區別。
- IOC的優點是什麼。
- IO 和 NIO的區別,NIO優點。
- JRE、JDK、JVM 及 JIT 之間有什麼不同。
- Hashcode 的作用。
- 簡述一致性 Hash 演算法。
- 為什麼在重寫 equals 方法的時候需要重寫 hashCode 方法?equals與 hashCode 的異同點在哪裡。
- 為什麼 Map 介面不繼承 Collection 介面。
- 說出幾點 Java 中使用 Collections 的最佳實踐?
- GC是什麼?為什麼要有GC。
- 什麼時候會導致垃圾回收。
- GC 有幾種方式?怎麼配置。
- 什麼時候一個物件會被GC? 如何判斷一個物件是否存活。
- 垃圾回收器的基本原理是什麼?
- Serial 與 Parallel GC之間的不同之處。
- JVM 中一次完整的 GC 流程是怎樣的? 物件如何晉升到老年代。
- 吞吐量優先和響應優先的垃圾收集器選擇。
- 說說你知道的幾種主要的jvm 引數。
- Java中存在記憶體洩漏問題嗎?請舉例說明。
- 什麼是執行緒,多執行緒的優點是什麼?以及簡單說一下多執行緒的幾種實現方式。
- ThreadLocal 用途是什麼,原理是什麼,用的時候要注意什麼?
- 執行緒池是什麼?為什麼要使用它?如何建立一個Java執行緒池?
- ThreadPool用法與優勢可以說一下麼?
- synchronized 的原理是什麼?synchronized 和 ReentrantLock 有什麼不同?
- 有T1,T2,T3三個執行緒,怎麼確保它們按順序執行?怎樣保證T2在T1執行完後執行,T3在T2
- 行完後執行同步塊內的執行緒丟擲異常會發生什麼?
- 什麼是樂觀鎖(Optimistic Locking)?如何實現樂觀鎖?如何避免ABA問題。
- Java中活鎖和死鎖有什麼區別?
- Executors類是什麼? Executor和Executors的區別?
- 什麼是設計模式(Design Patterns)?你用過哪種設計模式?用在什麼場合?
- 你能寫出三種單例模式實現麼?
- 你知道Google是如何在一秒內把搜尋結果返回給使用者?
- 高併發下,如何做到安全的修改同一行資料?
- 如何避免瀏覽器快取。
- 大型網站在架構上應當考慮哪些問題?
- 最近有在看什麼書麼,印象最深刻的是什麼?
- 你們線上應用的 JVM 引數有哪些?
- 能簡單說下你對演算法的理解麼?
面試心得
1.準備要充分,知識面要儘量的廣,同時深度也要夠。
2.面試安排上,如果不著急,儘量給自己留多時間,兩天一家,及時做總結和補充。
3.心態要放平,當做一次技術交流,面試要看一部分的運氣,也要看一些眼緣,有的面試官一張嘴你就能感覺到你這次面試完了。想去的公司沒有面試好,不要氣餒,繼續加油準備。
4.簡歷投遞方面,拉勾上投了很多經常不匹配,可能是我學歷問題(自考本),有一些打擊自信心,如果有同樣感受的,不妨換BOSS或者其他平臺。避免打擊自信心。
5.寫簡歷一定要體現自己的優勢,最好能體現類似於,用到了什麼技術,解決了什麼問題。簡歷上寫到的一定要胸有成竹。
6.類似於你的優勢是什麼,你覺得你專案中做的比較好的地方有哪些,你能給公司帶來什麼,這種問題心裡要先想一些,免得臨場發揮容易緊張說不好。
7.我所經歷的面試,一般技術面最少是兩輪。如果一輪後讓你走了,而你還自我感覺良好,那我覺得你有必要回顧一下面試內容,並一條一條找找該問題的相關內容,大部分問題就在於你沒有答到點子上,可能是深度不夠,也可能是擴充套件不夠,繼續加油。
面試題整理
由於篇幅過長的原因,為了不影響大家的閱讀效果,文中沒有給到所有的答案。我這裡以檔案的形式整理好了,需要借閱的程式設計師朋友可以免費來領取。
面試檔案獲取方式:
轉發+關注我,新增助理VX:MXW5308 即可免費領取面試資料(助你金三銀四能跳槽漲薪)
收集了還有你不知道的其它面試題(springboot、mybatis、併發、java中高階面試總結等)
Java進階架構師學習指導視訊,價值不菲!(純免費)
最全架構師教程,價值上萬足足100G、1000+小時架構師教程.,Java程式設計師進階架構師看這個就夠了!