BAT的牛人多,普通人也多,雖然他們不是每個人都能達到令人仰望的技術水平,但畢竟平臺高,所以眼光會變得寬闊;代碼要求更為嚴格,所以普通的程序員也會被逼變得更優秀;身邊的牛人多,普通的程序員也會受到影響,提升的更快。
下面是一份阿里P7的面試問題,文末附送資料
Java多線程
- 線程池的原理,為什麼要創建線程池?
- 線程的生命週期,什麼時候會出現僵死進程;
- 什麼實現線程安全,如何實現線程安全;
- 創建線程池有哪幾個核心參數?如何合理配置線程池的大小?
- synchronized、volatile區別、synchronized鎖粒度、模擬死鎖場景、原子性與可見性;
JVM相關
- JVM內存模型,GC機制和原理;GC分哪兩種;什麼時候會觸發Full GC?
- JVM裡的有幾種classloader,為什麼會有多種?
- 什麼是雙親委派機制?介紹一些運作過程,雙親委派模型的好處;(這個我真的不會...)
- 什麼情況下我們需要破壞雙親委派模型;
- 常見的JVM調優方法有哪些?可以具體到調整哪個參數,調成什麼值?
- JVM虛擬機內存劃分、類加載器、垃圾收集算法、垃圾收集器、class文件結構是如何解析的;
Java擴展
- 紅黑樹的實現原理和應用場景;
- NIO是什麼?適用於何種場景?
- Java9比Java8改進了什麼;
- HashMap內部的數據結構是什麼?底層是怎麼實現的?
- 說說反射的用途及實現,反射是不是很慢,我們在項目中是否要避免使用反射;
- 說說自定義註解的場景及實現;
- List和Map區別,Arraylist與LinkedList區別,ArrayList與Vector 區別;
Spring
- Spring AOP的實現原理和場景;(應用場景很重要)
- Spring bean的作用域和生命週期;
- Spring Boot比Spring做了哪些改進?Spring 5比Spring4做了哪些改進;(慚愧呀,我們還在用Spring4,高版本的沒關心過)
- Spring IOC是什麼?優點是什麼?
- SpringMVC、動態代理、反射、AOP原理、事務隔離級別;
中間件
- Dubbo完整的一次調用鏈路介紹;
- Dubbo支持幾種負載均衡策略?
- Dubbo Provider服務提供者要控制執行併發請求上限,具體怎麼做?
- Dubbo啟動的時候支持幾種配置方式?
- 瞭解幾種消息中間件產品?各產品的優缺點介紹;
- 消息中間件如何保證消息的一致性和如何進行消息的重試機制?
- Spring Cloud熔斷機制介紹;
- Spring Cloud對比下Dubbo,什麼場景下該使用Spring Cloud?
數據庫篇
- 鎖機制介紹:行鎖、表鎖、排他鎖、共享鎖;
- 樂觀鎖的業務場景及實現方式;
- 事務介紹,分佈式事物的理解,常見的解決方案有哪些,什麼事兩階段提交、三階段提交;
- MySQL記錄binlog的方式主要包括三種模式?每種模式的優缺點是什麼?
- MySQL鎖,悲觀鎖、樂觀鎖、排它鎖、共享鎖、表級鎖、行級鎖;
- 分佈式事務的原理2階段提交,同步\\異步\\阻塞\\非阻塞;
- 數據庫事務隔離級別,MySQL默認的隔離級別、Spring如何實現事務、
- JDBC如何實現事務、嵌套事務實現、分佈式事務實現;
- SQL的整個解析、執行過程原理、SQL行轉列;
Redis
- Redis為什麼這麼快?redis採用多線程會有哪些問題?
- Redis支持哪幾種數據結構;
- Redis跳躍表的問題;
- Redis單進程單線程的Redis如何能夠高併發?
- Redis如何使用Redis實現分佈式鎖?
- Redis分佈式鎖操作的原子性,Redis內部是如何實現的?
看完了有什麼感想,自己和BAT的要求有差距麼?
閱讀更多 特瑞wang 的文章