Java中高級面試題及答案收集(二)

(一)

1.多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認爲應該如何解決併發的問題?你會選擇加什麼樣的鎖?
2.JAVA的AQS是否瞭解,它是幹嘛的?
3.除了synchronized關鍵字之外,你是怎麼來保障線程安全的?
4.Tomcat本身的參數你一般會怎麼調整?
5.你有沒有用過Spring的AOP? 是用來幹嘛的? 大概會怎麼使用?
6.如果一個接口有2個不同的實現, 那麼怎麼來Autowire一個指定的實現?
7.如果想在某個Bean生成並裝配完畢後執行自己的邏輯,可以什麼方式實現?
8.SpringBoot沒有放到web容器裏爲什麼能跑HTTP服務?
9.SpringBoot中如果你想使用自定義的配置文件而不僅僅是application.properties,應該怎麼弄?
10.SpringMVC如果希望把輸出的Object(例如XXResult或者XXResponse)這種包裝爲JSON輸出, 應該怎麼處理?
11.如果有很多數據插入MYSQL 你會選擇什麼方式?
12.如果查詢很慢,你會想到的第一個方式是什麼?索引是幹嘛的?
13.查詢死掉了,想要找出執行的查詢進程用什麼命令?找出來之後一般你會幹嘛?
14.讀寫分離是怎麼做的?你認爲中間件會怎麼來操作?這樣操作跟事務有什麼關係?
15.分庫分表有沒有做過?線上的遷移過程是怎麼樣的?如何確定數據是正確的?
16.你知道哪些或者你們線上使用什麼GC策略? 它有什麼優勢,適用於什麼場景?
17.JAVA類加載器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
18.如何自定義一個類加載器?你使用過哪些或者你在什麼場景下需要一個自定義的類加載器嗎?
19.堆內存設置的參數是什麼?
20.HashMap和Hashtable的區別。
21.實現一個保證迭代順序的HashMap。
22.說一說排序算法,穩定性,複雜度。
23.說一說GC。
24.JVM如何加載一個類的過程,雙親委派模型中有哪些方法?
25.TCP如何保證可靠傳輸?三次握手過程?

(二)
1.java常用的數據結構有哪些?哪些是線程安全的?是怎麼保證線程安全的?
2.Redis中的Lua有沒有使用過? 可以用來做什麼? 爲什麼可以這麼用?
3.線程池內部工作原理可以說一下麼?
4.死鎖是什麼意思,形成條件是什麼?出現死鎖是可以通過什麼方式去排查。
5.在交易過程中如何放在用戶在支付時的重複支付(交叉支付),請寫出你瞭解的方案或使用的過的方案。
6.數據庫索引有哪幾種,他們之間的區別。
7.程序開發時通過開發工具DeBug調試時,控制檯顯示的內容都包含什麼?哪些內容可以幫助你發現問題和解決問題。
8.RPC通信過程中,假設A系統提供了一個方法入參是一個JavaBean,出參也是一個JavaBean。9.另外兩個系統B系統、C系統調用接口,調用方B想讓提供方A增加一個返回參數,假設服務提供方A增加了返回參數,請問C系統調用方需要做什麼處理?
10.瞭解哪些設計模式,用僞代碼實現一個你熟悉的設計模式。
11.講一下怎麼使用分佈式鎖。
13.說說HashMap的原理, 以及HashMap如何擴充bucket的大小。
14.Redis的Pipeline是用來幹什麼的?
15.Mysql索引的分類(Btree, hash),各自使用什麼情況 。
16.說說Myisam, Innodb區別。
17.知道哪些負載均衡算法。
18.說一下Btree的查找原理。
19.簡述三次握手,如果c端發起握手請求,s端無法立刻建立連接應該回應什麼?

(三)
1.mysql數據庫調優。
2.sql優化。
3.like能用索引嗎?
4.java對象四種引用。
5.GC原理。
6.jvm內存結構。
7.說一下你學過jvm 在書寫代碼上對你有什麼幫助和提高。
8.千萬數據量的查詢你會怎麼做?
9.HashMap在jdk1.7和1.8的區別,爲什麼引入這個概念?hash碰撞怎麼解決,爲什麼1.8要比1.7更好,好在哪?
10.關於你的項目,如果併發很大,你會怎麼改造。
11.方法區裏什麼樣的對象有可能被回收。
12.線上cpu飆升100%你怎麼處理。
13.頻繁FullGC怎麼處理。
14.線程池創建有幾種,爲什麼創建定長的線程池個數最好是5,10,15這樣的數字。
linux命令。
15.伊甸區和倖存區可動態變化嗎?
16.redis和memcached區別。
17.說幾個jdk命令,jmap是什麼意思。
18.如果併發很大,你對數據的正確性怎麼保證。

(四)
1.http和https的區別,https原理,http2.0與1.0的區別。
2.Java的垃圾回收機制,Java文件加載機制,tomcat類加載機制,鎖機制,jvm原理及線上調優,jvm內存模型。
3.多線程,有哪些可以保持進程同步的方法,創建線程的幾種方法,對i++多線程訪問你會怎麼做。
4.Java的設計模式,單例有什麼模式,懶漢爲什麼加volotile,volotile的內存屏障,如何避免死鎖。
考慮單例模式的編寫,要線程安全且內存消耗小(劍指offer原題)。
5.String、StringBuilder、StringBuffer區別;String類能被繼承嗎?爲什麼?
6.在白紙上手寫二分法排序算法(lintcode上原題);二分查找的思想。
7.查找單鏈表中倒數第k個節點的算法,手寫(lintcode上原題);最常見的排序算法你見過哪些,快排的基本思想及時間複雜度。
8.常見的數據結構有哪些。
9.hashmap、hashcode一樣,不equals怎麼處理 ;hashcode實現原理,currentHashMap原理,實現細節,怎麼實現同步的;類爲什麼要有hascode方法,是不是主要在集合類中都要實現hashcode方法;equals方法怎麼實現;兩個不同的對象可能有相同的hashcode值嗎;常用集合有哪些。
10.tcp三次握手,四次揮手協議。
11.架構設計一個開發性問題,設計一個Nginx管理的中間件,怎麼設計。
12.所有的類都繼承與object,你用過object類的直接子類有哪些,object類常用的方法有哪些。
13.Java會出現內存泄漏嗎,如果回,在哪種情況下?
14.抽象類和接口的區別。
15.平時怎麼擴展自己的專業知識水平。
(五)

1.什麼是 Java 的反射機制。
2.Cookie 和 Session的區別。
3.get 和 post請求的區別。
4.IOC的優點是什麼。
5.IO 和 NIO的區別,NIO優點。
6.JRE、JDK、JVM 及 JIT 之間有什麼不同。
7.Hashcode 的作用。
8.簡述一致性 Hash 算法。
9.爲什麼在重寫 equals 方法的時候需要重寫 hashCode 方法?equals與 hashCode 的異同點在哪裏。
10.爲什麼 Map 接口不繼承 Collection 接口。
11.說出幾點 Java 中使用 Collections 的最佳實踐?
12.GC是什麼?爲什麼要有GC。
13.什麼時候會導致垃圾回收。
14.GC 有幾種方式?怎麼配置。
15.什麼時候一個對象會被GC? 如何判斷一個對象是否存活。
16.垃圾回收器的基本原理是什麼?
17.Serial 與 Parallel GC之間的不同之處。
18.JVM 中一次完整的 GC 流程是怎樣的? 對象如何晉升到老年代。
19.吞吐量優先和響應優先的垃圾收集器選擇。
20.說說你知道的幾種主要的jvm 參數。
21.Java中存在內存泄漏問題嗎?請舉例說明。
22.什麼是線程,多線程的優點是什麼?以及簡單說一下多線程的幾種實現方式。
23.ThreadLocal 用途是什麼,原理是什麼,用的時候要注意什麼?
24.線程池是什麼?爲什麼要使用它?如何創建一個Java線程池?
25.ThreadPool用法與優勢可以說一下麼?
26.synchronized 的原理是什麼?synchronized 和 ReentrantLock 有什麼不同?
27.有T1,T2,T3三個線程,怎麼確保它們按順序執行?怎樣保證T2在T1執行完後執行,T3在T2
28.行完後執行同步塊內的線程拋出異常會發生什麼?
29.什麼是樂觀鎖(Optimistic Locking)?如何實現樂觀鎖?如何避免ABA問題。
30.Java中活鎖和死鎖有什麼區別?
31.Executors類是什麼? Executor和Executors的區別?
32.什麼是設計模式(Design Patterns)?你用過哪種設計模式?用在什麼場合?
33.你能寫出三種單例模式實現麼?
34.你知道Google是如何在一秒內把搜索結果返回給用戶?
35.高併發下,如何做到安全的修改同一行數據?
36.如何避免瀏覽器緩存。
37.大型網站在架構上應當考慮哪些問題?
38.最近有在看什麼書麼,印象最深刻的是什麼?
39.你們線上應用的 JVM 參數有哪些?
40能簡單說下你對算法的理解麼?

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