2019 最新 阿里天貓、螞蟻、釘釘ava 面試題彙總,附答案

Java面試前需要做足各方面的準備工作,肯定都會瀏覽大量的面試題,本人也不例外,這是一些最新面試題,分享給大家。

Java基礎

面向對象的特徵:繼承、封裝和多態

int 和 Integer 有什麼區別;

Integer的值緩存範圍

說說反射的用途及實現

Http 請求的 GET 和 POST 方式的區別

MVC設計思想

什麼是Java序列化和反序列化;

如何實現Java序列化;

重載和重寫的區別

進程和線程

線程和進程的概念

並行和併發的概念

創建線程的方式及實現

進程間通信的方式

說說 CountDownLatch、CyclicBarrier 原理和區別

說說 Semaphore 原理

說說 Exchanger 原理

ThreadLocal 原理分析;

ThreadLocal為什麼會出現OOM,出現的深層次原理

講講線程池的實現原理

線程池的幾種實現方式

線程的生命週期;狀態是如何轉移的

鎖機制

什麼是線程安全?如何保證線程安全?

重入鎖的概念;重入鎖為什麼可以防止死鎖?

產生死鎖的四個條件

如何檢查死鎖

volatile 實現原理

synchronized 實現原理(對象監視器)

synchronized 與 lock 的區別

AQS 同步隊列

CAS 無鎖的概念;樂觀鎖和悲觀鎖

常見的原子操作類

什麼是 ABA 問題;出現 ABA 問題 JDK 是如何解決的

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

Java 8 併發包下常見的併發類

偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念

數據庫

DDL、DML、DCL 分別指什麼

explain 命令

髒讀、幻讀、不可重複讀

事務的隔離級別

數據庫的幾大範式

說說分庫與分表設計

分庫與分錶帶來的分佈式困境與對應之策

說說 SQL 優化之道

InnoDB 與 MyISAM 區別、優缺點、使用場景

B+樹索引、全文索引、哈希索引,的區別

什麼是自適應哈希索引(AHI)

為什麼要用 B+tree 作為 MySql 索引的數據結構

聚集索引與非聚集索引的區別

limit 20000 加載很慢怎麼解決

常見的幾種分佈式 ID 的設計方案

JVM

JVM 運行時內存區域劃分

常見的 GC 回收算法及其含義

常見的 JVM 性能監控和故障處理工具類

JVM 性能調優

類加載器、雙親委派模型

類加載的過程

強引用、軟引用、弱引用、虛引用

Java 內存模型 JMM

以下是阿里天貓、螞蟻、釘釘面試題目

不會做彆著急:文末有答案以及視頻講解,架構師資料

1. junit用法,before,beforeClass,after, afterClass的執行順序

2. 分佈式鎖

3. nginx的請求轉發算法,如何配置根據權重轉發

4. 用hashmap實現redis有什麼問題(死鎖,死循環,可用ConcurrentHashmap)

5. 線程的狀態

5. 線程的阻塞的方式

6. sleep和wait的區別

7. hashmap的底層實現

8. 一萬個人搶100個紅包,如何實現(不用隊列),如何保證2個人不能搶到同一個紅包,可用分佈式鎖

9. java內存模型,垃圾回收機制,不可達算法

10. 兩個Integer的引用對象傳給一個swap方法在方法內部交換引用,返回後,兩個引用的值是否會發現變化

11. aop的底層實現,動態代理是如何動態,假如有100個對象,如何動態的為這100個對象代理

12. 是否用過maven install。 maven test。git(make install是安裝本地jar包)

13. tomcat的各種配置,如何配置docBase

14. spring的bean配置的幾種方式

15. web.xml的配置

16. spring的監聽器。

17. zookeeper的實現機制,有緩存,如何存儲註冊服務的

18. IO會阻塞嗎?readLine是不是阻塞的

19. 用過spring的線程池還是java的線程池?

20. 字符串的格式化方法 (20,21這兩個問題問的太低級了)

21. 時間的格式化方法

22. 定時器用什麼做的

23. 線程如何退出結束

24. java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區別

25. ThreadLocal的使用場景

26. java的內存模型,垃圾回收機制

27. 為什麼線程執行要調用start而不是直接run(直接run,跟普通方法沒什麼區別,先調start,run才會作為一個線程方法運行)

28. qmq消息的實現機制(qmq是去哪兒網自己封裝的消息隊列)

29. 遍歷hashmap的三種方式

30. jvm的一些命令

31. memcache和redis的區別

32. mysql的行級鎖加在哪個位置

33. ConcurrentHashmap的鎖是如何加的?是不是分段越多越好

34. myisam和innodb的區別(innodb是行級鎖,myisam是表級鎖)

35. mysql其他的性能優化方式

36. linux系統日誌在哪裡看

37. 如何查看網絡進程

38. 統計一個整數的二進制表示中bit為1的個數

39. jvm內存模型,java內存模型

【阿里巴巴面試題目】

40. 如何把java內存的數據全部dump出來

41. 如何手動觸發全量回收垃圾,如何立即觸發垃圾回收

42. hashmap如果只有一個寫其他全讀會出什麼問題

43. git rebase

44. mongodb和hbase的區別

45. 如何解決併發問題

46. volatile的用途

47. java線程池(好像之前我的理解有問題)

48. mysql的binlog

49. 代理模式

50. mysql是如何實現事務的

51. 讀寫分離何時強制要讀主庫,讀哪個從庫是通過什麼方式決定的,從庫的同步mysql用的什麼方式

52. mysql的存儲引擎

53. mysql的默認隔離級別,其他隔離級別

54. 將一個鏈表反轉(用三個指針,但是每次只發轉一個)

55. spring Aop的實現原理,具體說說

56. 何時會內存洩漏,內存洩漏會拋哪些異常

57. 是否用過Autowire註解

58. spring的注入bean的方式

59. sql語句各種條件的執行順序,如select, where, order by, group by

60. select xx from xx where xx and xx order by xx limit xx; 如何優化這個(看explain)

61. 四則元算寫代碼

62. 統計100G的ip文件中出現ip次數最多的100個ip

63. zookeeper的事物,結點,服務提供方掛了如何告知消費方

64. 5臺服務器如何選出leader(選舉算法)

65. 適配器和代理模式的區別

66. 讀寫鎖

67. static加鎖

68. 事務隔離級別

69. 門面模式,類圖(外觀模式)

70. mybatis如何映射表結構

71. 二叉樹遍歷

72. 主從複製

73. mysql引擎區別

74. 靜態內部類加載到了哪個區?方法區

75. class文件編譯後加載到了哪

76. web的http請求如何整體響應時間變長導致處理的請求數變少,該如何處理?用隊列,當處理不了那麼多http請求時將請求放到隊列

中慢慢處理,web如何實現隊列

77. 線程安全的單例模式

78. 快速排序性能考慮

79. volatile關鍵字用法

80. 求表的size,或做數據統計可用什麼存儲引擎

81. 讀多寫少可用什麼引擎

82. 假如要統計多個表應該用什麼引擎

83. concurrenhashmap求size是如何加鎖的,如果剛求完一段後這段發生了變化該如何處理

84. 1000個蘋果放10個籃子,怎麼放,能讓我拿到所有可能的個數

85. 可重入的讀寫鎖,可重入是如何實現的?

86. 是否用過NIO

87. java的concurrent包用過沒

88. sting s=new string("abc")分別在堆棧上新建了哪些對象

89. java虛擬機的區域分配,各區分別存什麼

90. 分佈式事務(JTA)

91. threadlocal使用時注意的問題(ThreadLocal和Synchonized都用於解決多線程併發訪問。但是ThreadLocal與synchronized有本質的區別。synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。而ThreadLocal為每一個線程都提供了變量的副本,使得每個線程在某一時間訪問到的並不是同一個對象,這樣就隔離了多個線程對數據的數據共享。而Synchronized卻正好相反,它用於在多個線程間通信時能夠獲得數據共享)

92. java有哪些容器(集合,tomcat也是一種容器)

93. 二分查找算法

94. myisam的優點,和innodb的區別

95. redis能存哪些類型

96. http協議格式,get和post的區別

97. 可重入鎖中對應的wait和notify

98. redis能把內存空間交換進磁盤中嗎(這個應該是可以的,但是那個面試官非跟我說不可以)

99. java線程池中基於緩存和基於定長的兩種線程池,當請求太多時分別是如何處理的?定長的事用的隊列,如果隊列也滿了呢?交換進磁盤?基於緩存的線程池解決方法呢?

100. synchronized加在方法上用的什麼鎖

101. 可重入鎖中的lock和trylock的區別

102. innodb對一行數據的讀會枷鎖嗎?不枷鎖,讀實際讀的是副本

103. redis做緩存是分佈式存的?不同的服務器上存的數據是否重複?guava cache呢?是否重複?不同的機器存的數據不同

104. 用awk統計一個ip文件中top10

105. 對錶做統計時可直接看schema info信息,即查看錶的系統信息

106. mysql目前用的版本

107. 公司經驗豐富的人給了什麼幫助?(一般boss面會問這些)

108. 自己相對於一樣的應屆生有什麼優勢

109. 自己的好的總結習慣給自己今後的工作帶了什麼幫助,舉例為證

110. 原子類,線程安全的對象,異常的處理方式

111. 4億個int數,如何找出重複的數(用hash方法,建一個2的32次方個bit的hash數組,每取一個int數,可hash下2的32次方找到它在hash數組中的位置,然後將bit置1表示已存在)

112. 4億個url,找出其中重複的(考慮內存不夠,通過hash算法,將url分配到1000個文件中,不同的文件間肯定就不會重複了,再分別找出重複的)

有1萬個數組,每個數組有1000個整數,每個數組都是降序的,從中找出最大的N個數,N<1000

113. LinkedHashmap的底層實現

114. 類序列化時類的版本號的用途,如果沒有指定一個版本號,系統是怎麼處理的?如果加了字段會怎麼樣?

115. Override和Overload的區別,分別用在什麼場景

116. java的反射是如何實現的

【阿里巴巴面試題目含答案】

1,mysql的三大引擎是啥?

mysql常用的引擎有InnoDB,MyISAM,Memory,默認是InnoDB

InnoDB:磁盤表,支持事務,支持行級鎖,B+Tree索引

ps:優點: 具有良好的ACID特性。適用於高併發,更新操作比較多的表。需要使用事務的表。對自動災難恢復有要求的表。

缺點:讀寫效率相對MYISAM比較差。佔用的磁盤空間比較大。

mysql的4大特性+4種隔離級別:

MyISAM:磁盤表,不支持事務,支持表級鎖,B+Tree索引

ps: 優點:佔用空間小,處理速度快(相對InnoDB來說)

缺點:不支持事務的完整性和併發性

MEMORY(Heap):內存表,不支持事務,表級鎖,Hash索引,不支持Blob,Text大類型

ps: 優點:速度要求快的,臨時數據

缺點:丟失以後,對項目整體沒有或者負面影響不大的時候。

2,redis的hash算法用的是啥?

redis應該是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率優點,google改進的版本cityhash也是redis中用到的哈希算法。

現有的主流的大數據系統都是用的 MurmurHash本身或者改進

3,nosql為啥比sql快?

Nosql是非關係型數據庫,因為不需要滿足關係數據庫數據一致性等複雜特性所以速度快;

sql是關係型數據庫,功能強大,但是效率上有瓶頸

4,什麼是索引為啥nosql沒索引?nosql有索引滴

索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照數據存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。

聚簇索引:有主鍵時,根據主鍵創建聚簇索引;沒有主鍵時,會用一個唯一且不為空的索引列做為主鍵,成為此表的聚簇索引;如果以上兩個都不滿足那innodb自己創建一個虛擬的聚集索引

非聚簇索引:非聚簇索引都是輔助索引,像複合索引、前綴索引、唯一索引

5,B+樹和B樹區別?

B樹的非葉子節點存儲實際記錄的指針,而B+樹的葉子節點存儲實際記錄的指針

B+樹的葉子節點通過指針連起來了, 適合掃描區間和順序查找。

BAT面試題目

關注小編,後臺私信“資料”獲取往期Java高級架構資料、源碼、筆記、視頻、BATJ面試視頻資料、以下列舉22個視頻資料。

1,應該怎麼封裝簡歷才有BATJ面試機會?

2,HashMap底層執行原理,

3,hashtable和ConcurrentHashMap如何實現線程安全?

4,jvm的內存佈局,垃圾回收機制

5,類加載機制裡的,雙親委派模型

6,闡述事務的隔離級別和傳播屬性

7,高併發下,如何做到安全的修改同一行數據?

8,A服務調用B服務多接口,響應時間最短方案;

9,A系統給B系統轉100塊錢,如何實現?

10,動態代理的幾種實現方式及優缺點

11,多線程下讀概率遠遠大於寫概率,如何解決併發問題?

12,按線程池內部機制,當提交新任務時,有哪些異常要考慮?

13,@Transaction註解一般寫在什麼位置?如何控制其回滾?

14,說說Spring的IOC容器初始化流程?

15,說說springboot啟動機制

16,Redis高性能的原因大概可以講一些?

17,你是怎麼控制緩存的更新?(被動方式/主動方式/增量/全量)?

18,淺析Http和https的三次握手有什麼區別。

19,談談Session/cookie機制,如何實現會話跟蹤?

20,什麼是一致性hash?

21,MQ有可能發生重複消費,如何避免,如何做到冪等?

22,如何做限流策略,令牌桶和漏斗算法的使用場景?

2019 最新 阿里天貓、螞蟻、釘釘ava 面試題彙總,附答案

架構精講視頻以及文檔

2019 最新 阿里天貓、螞蟻、釘釘ava 面試題彙總,附答案

2019 最新 阿里天貓、螞蟻、釘釘ava 面試題彙總,附答案


分享到:


相關文章: