天天看點

java——比較難和底層的面試題

連結位址:https://mp.weixin.qq.com/s/lnbCysCQgfjF_kcB83KQZg

這是一個線上教育機構的文章,感覺大部分都不會,太難了。

一、自我介紹

二、多線程相關:

線程池的原理,為什麼要建立線程池?建立線程池的方式;

線程的生命周期,什麼時候會出現僵死程序;

說說線程安全問題,什麼實作線程安全,如何實作線程安全;

建立線程池有哪幾個核心參數?如何合理配置線程池的大小?

volatile、ThreadLocal的使用場景和原理;

ThreadLocal什麼時候會出現OOM的情況?為什麼?

synchronized、volatile差別、synchronized鎖粒度、模拟死鎖場景、原子性與可見性;

三、JVM相關

JVM記憶體模型,GC機制和原理;

GC分哪兩種,Minor GC 和Full GC有什麼差別?什麼時候會觸發Full GC?分别采用什麼算法?

JVM裡的有幾種classloader,為什麼會有多種?

什麼是雙親委派機制?介紹一些運作過程,雙親委派模型的好處;

什麼情況下我們需要破壞雙親委派模型;

常見的JVM調優方法有哪些?可以具體到調整哪個參數,調成什麼值?

JVM虛拟機記憶體劃分、類加載器、垃圾收集算法、垃圾收集器、class檔案結構是如何解析的;

Redis為什麼這麼快?redis采用多線程會有哪些問題?

Redis支援哪幾種資料結構;

Redis跳躍表的問題;

Redis單程序單線程的Redis如何能夠高并發?

Redis如何使用Redis實作分布式鎖?

Redis分布式鎖操作的原子性,Redis内部是如何實作的?

紅黑樹的實作原理和應用場景;

NIO是什麼?适用于何種場景?

Java9比Java8改進了什麼;

HashMap内部的資料結構是什麼?底層是怎麼實作的?(還可能會延伸考察ConcurrentHashMap與HashMap、HashTable等,考察對技術細節的深入了解程度);

說說反射的用途及實作,反射是不是很慢,我們在項目中是否要避免使用反射;

說說自定義注解的場景及實作;

List 和 Map 差別,Arraylist 與 LinkedList 差別,ArrayList 與 Vector 差別

Spring AOP的實作原理和場景?

Spring bean的作用域和生命周期;

Spring Boot比Spring做了哪些改進?Spring 5比Spring4做了哪些改進;

如何自定義一個Spring Boot Starter?

Spring IOC是什麼?優點是什麼?

SpringMVC、動态代理、反射、AOP原理、事務隔離級别;

synchronized、volatile差別、synchronized鎖粒度、模拟死鎖場景、原子性與可見性性

List 和 Map 差別,Arraylist 與 LinkedList 差別,ArrayList 與 Vector 差別;

Dubbo完整的一次調用鍊路介紹;

Dubbo支援幾種負載均衡政策?

Dubbo Provider服務提供者要控制執行并發請求上限,具體怎麼做?

Dubbo啟動的時候支援幾種配置方式?

了解幾種消息中間件産品?各産品的優缺點介紹;

消息中間件如何保證消息的一緻性和如何進行消息的重試機制?

Spring Cloud熔斷機制介紹;

Spring Cloud對比下Dubbo,什麼場景下該使用Spring Cloud?

鎖機制介紹:行鎖、表鎖、排他鎖、共享鎖;

樂觀鎖的業務場景及實作方式;

事務介紹,分布式事物的了解,常見的解決方案有哪些,什麼事兩階段送出、三階段送出;

MySQL記錄binlog的方式主要包括三種模式?每種模式的優缺點是什麼?

MySQL鎖,悲觀鎖、樂觀鎖、排它鎖、共享鎖、表級鎖、行級鎖;

分布式事務的原理2階段送出,同步\異步\阻塞\非阻塞;

資料庫事務隔離級别,MySQL預設的隔離級别、Spring如何實作事務、JDBC如何實作事務、嵌套事務實作、分布式事務實作;

SQL的整個解析、執行過程原理、SQL行轉列;

看過哪些源代碼?然後會根據你說的源碼問一些細節的問題?(這裡主要考察面試者是否對技術有鑽研的精神,還是隻停留在表面,還是背了幾道面經,這個對于很多有強迫症的面試官,如果你連源碼都沒看過,基本上是會pass掉的,比如我也是這樣的!)

項目中遇到了哪些比較有挑戰性的問題,是如何解決的;(這個很有争議,一方面是你連一個複雜的問題都解決不了,要你過來幹什麼,還有就是,我的能力牛逼啊,但是公司沒有業務場景讓我展示啊!這個就看你遇到的面試官了,祝你好運!)