阿里最全面試116題究竟難在哪:阿里天貓、螞蟻金服、阿里巴巴面試題含答案

【阿里天貓、螞蟻、釘釘面試題目】

不會(huì)做別著急:文末有答案

1. junit用法,before,beforeClass,after, afterClass的執(zhí)行順序

2. 分布式鎖

3. nginx的請(qǐng)求轉(zhuǎn)發(fā)算法,如何配置根據(jù)權(quán)重轉(zhuǎn)發(fā)

4. 用hashmap實(shí)現(xiàn)redis有什么問(wèn)題(死鎖,死循環(huán),可用ConcurrentHashmap)

5. 線程的狀態(tài)

5. 線程的阻塞的方式

6. sleep和wait的區(qū)別

7. hashmap的底層實(shí)現(xiàn)

8. 一萬(wàn)個(gè)人搶100個(gè)紅包,如何實(shí)現(xiàn)(不用隊(duì)列),如何保證2個(gè)人不能搶到同一個(gè)紅包,可用分布式鎖

9. java內(nèi)存模型,垃圾回收機(jī)制,不可達(dá)算法

10. 兩個(gè)Integer的引用對(duì)象傳給一個(gè)swap方法在方法內(nèi)部交換引用,返回后,兩個(gè)引用的值是否會(huì)發(fā)現(xiàn)變化

11. aop的底層實(shí)現(xiàn),動(dòng)態(tài)代理是如何動(dòng)態(tài),假如有100個(gè)對(duì)象,如何動(dòng)態(tài)的為這100個(gè)對(duì)象代理

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

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

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

15. web.xml的配置

16. spring的監(jiān)聽器。

17. zookeeper的實(shí)現(xiàn)機(jī)制,有緩存,如何存儲(chǔ)注冊(cè)服務(wù)的

18. IO會(huì)阻塞嗎?readLine是不是阻塞的

19. 用過(guò)spring的線程池還是java的線程池?

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

21. 時(shí)間的格式化方法

22. 定時(shí)器用什么做的

23. 線程如何退出結(jié)束

24. java有哪些鎖?樂(lè)觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過(guò)reentrantlock嗎?reentrantlock與synmchronized的區(qū)別

25. ThreadLocal的使用場(chǎng)景

26. java的內(nèi)存模型,垃圾回收機(jī)制

27. 為什么線程執(zhí)行要調(diào)用start而不是直接run(直接run,跟普通方法沒什么區(qū)別,先調(diào)start,run才會(huì)作為一個(gè)線程方法運(yùn)行)

28. qmq消息的實(shí)現(xiàn)機(jī)制(qmq是去哪兒網(wǎng)自己封裝的消息隊(duì)列)

29. 遍歷hashmap的三種方式

30. jvm的一些命令

31. memcache和redis的區(qū)別

32. mysql的行級(jí)鎖加在哪個(gè)位置

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

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

35. mysql其他的性能優(yōu)化方式

36. linux系統(tǒng)日志在哪里看

37. 如何查看網(wǎng)絡(luò)進(jìn)程

38. 統(tǒng)計(jì)一個(gè)整數(shù)的二進(jìn)制表示中bit為1的個(gè)數(shù)

39. jvm內(nèi)存模型,java內(nèi)存模型

40. 如何把java內(nèi)存的數(shù)據(jù)全部dump出來(lái)

41. 如何手動(dòng)觸發(fā)全量回收垃圾,如何立即觸發(fā)垃圾回收

42. hashmap如果只有一個(gè)寫其他全讀會(huì)出什么問(wèn)題

43. git rebase

44. mongodb和hbase的區(qū)別

45. 如何解決并發(fā)問(wèn)題

46. volatile的用途

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

48. mysql的binlog

49. 代理模式

50. mysql是如何實(shí)現(xiàn)事務(wù)的

51. 讀寫分離何時(shí)強(qiáng)制要讀主庫(kù),讀哪個(gè)從庫(kù)是通過(guò)什么方式?jīng)Q定的,從庫(kù)的同步mysql用的什么方式

52. mysql的存儲(chǔ)引擎

53. mysql的默認(rèn)隔離級(jí)別,其他隔離級(jí)別

54. 將一個(gè)鏈表反轉(zhuǎn)(用三個(gè)指針,但是每次只發(fā)轉(zhuǎn)一個(gè))

55. spring Aop的實(shí)現(xiàn)原理,具體說(shuō)說(shuō)

56. 何時(shí)會(huì)內(nèi)存泄漏,內(nèi)存泄漏會(huì)拋哪些異常

57. 是否用過(guò)Autowire注解

58. spring的注入bean的方式

59. sql語(yǔ)句各種條件的執(zhí)行順序,如select, where, order by, group by

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

61. 四則元算寫代碼

62. 統(tǒng)計(jì)100G的ip文件中出現(xiàn)ip次數(shù)最多的100個(gè)ip

63. zookeeper的事物,結(jié)點(diǎn),服務(wù)提供方掛了如何告知消費(fèi)方

64. 5臺(tái)服務(wù)器如何選出leader(選舉算法)

65. 適配器和代理模式的區(qū)別

66. 讀寫鎖

67. static加鎖

68. 事務(wù)隔離級(jí)別

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

70. mybatis如何映射表結(jié)構(gòu)

71. 二叉樹遍歷

72. 主從復(fù)制

73. mysql引擎區(qū)別

74. 靜態(tài)內(nèi)部類加載到了哪個(gè)區(qū)?方法區(qū)

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

76. web的http請(qǐng)求如何整體響應(yīng)時(shí)間變長(zhǎng)導(dǎo)致處理的請(qǐng)求數(shù)變少,該如何處理?用隊(duì)列,當(dāng)處理不了那么多http請(qǐng)求時(shí)將請(qǐng)求放到隊(duì)列

中慢慢處理,web如何實(shí)現(xiàn)隊(duì)列

77. 線程安全的單例模式

78. 快速排序性能考慮

79. volatile關(guān)鍵字用法

80. 求表的size,或做數(shù)據(jù)統(tǒng)計(jì)可用什么存儲(chǔ)引擎

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

82. 假如要統(tǒng)計(jì)多個(gè)表應(yīng)該用什么引擎

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

84. 1000個(gè)蘋果放10個(gè)籃子,怎么放,能讓我拿到所有可能的個(gè)數(shù)

85. 可重入的讀寫鎖,可重入是如何實(shí)現(xiàn)的?

86. 是否用過(guò)NIO

87. java的concurrent包用過(guò)沒

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

89. java虛擬機(jī)的區(qū)域分配,各區(qū)分別存什么

90. 分布式事務(wù)(JTA)

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

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

93. 二分查找算法

94. myisam的優(yōu)點(diǎn),和innodb的區(qū)別

95. redis能存哪些類型

96. http協(xié)議格式,get和post的區(qū)別

97. 可重入鎖中對(duì)應(yīng)的wait和notify

98. redis能把內(nèi)存空間交換進(jìn)磁盤中嗎(這個(gè)應(yīng)該是可以的,但是那個(gè)面試官非跟我說(shuō)不可以)

99. java線程池中基于緩存和基于定長(zhǎng)的兩種線程池,當(dāng)請(qǐng)求太多時(shí)分別是如何處理的?定長(zhǎng)的事用的隊(duì)列,如果隊(duì)列也滿了呢?交換進(jìn)磁盤?基于緩存的線程池解決方法呢?

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

101. 可重入鎖中的lock和trylock的區(qū)別

102. innodb對(duì)一行數(shù)據(jù)的讀會(huì)枷鎖嗎?不枷鎖,讀實(shí)際讀的是副本

103. redis做緩存是分布式存的?不同的服務(wù)器上存的數(shù)據(jù)是否重復(fù)?guava cache呢?是否重復(fù)?不同的機(jī)器存的數(shù)據(jù)不同

104. 用awk統(tǒng)計(jì)一個(gè)ip文件中top10

105. 對(duì)表做統(tǒng)計(jì)時(shí)可直接看schema info信息,即查看表的系統(tǒng)信息

106. mysql目前用的版本

107. 公司經(jīng)驗(yàn)豐富的人給了什么幫助?(一般boss面會(huì)問(wèn)這些)

108. 自己相對(duì)于一樣的應(yīng)屆生有什么優(yōu)勢(shì)

109. 自己的好的總結(jié)習(xí)慣給自己今后的工作帶了什么幫助,舉例為證

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

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

112. 4億個(gè)url,找出其中重復(fù)的(考慮內(nèi)存不夠,通過(guò)hash算法,將url分配到1000個(gè)文件中,不同的文件間肯定就不會(huì)重復(fù)了,再分別找出重復(fù)的)

有1萬(wàn)個(gè)數(shù)組,每個(gè)數(shù)組有1000個(gè)整數(shù),每個(gè)數(shù)組都是降序的,從中找出最大的N個(gè)數(shù),N<1000

113. LinkedHashmap的底層實(shí)現(xiàn)

114. 類序列化時(shí)類的版本號(hào)的用途,如果沒有指定一個(gè)版本號(hào),系統(tǒng)是怎么處理的?如果加了字段會(huì)怎么樣?

115. Override和Overload的區(qū)別,分別用在什么場(chǎng)景

116. java的反射是如何實(shí)現(xiàn)的

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

1,mysql的三大引擎是啥?

mysql常用的引擎有InnoDB,MyISAM,Memory,默認(rèn)是InnoDB

InnoDB:磁盤表,支持事務(wù),支持行級(jí)鎖,B+Tree索引

ps:優(yōu)點(diǎn): 具有良好的ACID特性。適用于高并發(fā),更新操作比較多的表。需要使用事務(wù)的表。對(duì)自動(dòng)災(zāi)難恢復(fù)有要求的表。

缺點(diǎn):讀寫效率相對(duì)MYISAM比較差。占用的磁盤空間比較大。

mysql的4大特性+4種隔離級(jí)別:

MyISAM:磁盤表,不支持事務(wù),支持表級(jí)鎖,B+Tree索引

ps: 優(yōu)點(diǎn):占用空間小,處理速度快(相對(duì)InnoDB來(lái)說(shuō))

缺點(diǎn):不支持事務(wù)的完整性和并發(fā)性

MEMORY(Heap):內(nèi)存表,不支持事務(wù),表級(jí)鎖,Hash索引,不支持Blob,Text大類型

ps: 優(yōu)點(diǎn):速度要求快的,臨時(shí)數(shù)據(jù)

缺點(diǎn):丟失以后,對(duì)項(xiàng)目整體沒有或者負(fù)面影響不大的時(shí)候。

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

redis應(yīng)該是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率優(yōu)點(diǎn),google改進(jìn)的版本cityhash也是redis中用到的哈希算法。

現(xiàn)有的主流的大數(shù)據(jù)系統(tǒng)都是用的 MurmurHash本身或者改進(jìn)

3,nosql為啥比sql快?

Nosql是非關(guān)系型數(shù)據(jù)庫(kù),因?yàn)椴恍枰獫M足關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)一致性等復(fù)雜特性所以速度快;

sql是關(guān)系型數(shù)據(jù)庫(kù),功能強(qiáng)大,但是效率上有瓶頸

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

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

聚簇索引:有主鍵時(shí),根據(jù)主鍵創(chuàng)建聚簇索引;沒有主鍵時(shí),會(huì)用一個(gè)唯一且不為空的索引列做為主鍵,成為此表的聚簇索引;如果以上兩個(gè)都不滿足那innodb自己創(chuàng)建一個(gè)虛擬的聚集索引

非聚簇索引:非聚簇索引都是輔助索引,像復(fù)合索引、前綴索引、唯一索引

5,B+樹和B樹區(qū)別?

B樹的非葉子節(jié)點(diǎn)存儲(chǔ)實(shí)際記錄的指針,而B+樹的葉子節(jié)點(diǎn)存儲(chǔ)實(shí)際記錄的指針

B+樹的葉子節(jié)點(diǎn)通過(guò)指針連起來(lái)了, 適合掃描區(qū)間和順序查找。

BATJ面試題目

以下列舉22個(gè)視頻資料。

1,應(yīng)該怎么封裝簡(jiǎn)歷才有BATJ面試機(jī)會(huì)?

2,HashMap底層執(zhí)行原理,

3,hashtable和ConcurrentHashMap如何實(shí)現(xiàn)線程安全?

4,jvm的內(nèi)存布局,垃圾回收機(jī)制

5,類加載機(jī)制里的,雙親委派模型

6,闡述事務(wù)的隔離級(jí)別和傳播屬性

7,高并發(fā)下,如何做到安全的修改同一行數(shù)據(jù)?

8,A服務(wù)調(diào)用B服務(wù)多接口,響應(yīng)時(shí)間最短方案;

9,A系統(tǒng)給B系統(tǒng)轉(zhuǎn)100塊錢,如何實(shí)現(xiàn)?

10,動(dòng)態(tài)代理的幾種實(shí)現(xiàn)方式及優(yōu)缺點(diǎn)

11,多線程下讀概率遠(yuǎn)遠(yuǎn)大于寫概率,如何解決并發(fā)問(wèn)題?

12,按線程池內(nèi)部機(jī)制,當(dāng)提交新任務(wù)時(shí),有哪些異常要考慮?

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

14,說(shuō)說(shuō)Spring的IOC容器初始化流程?

15,說(shuō)說(shuō)springboot啟動(dòng)機(jī)制

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

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

18,淺析Http和https的三次握手有什么區(qū)別。

19,談?wù)凷ession/cookie機(jī)制,如何實(shí)現(xiàn)會(huì)話跟蹤?

20,什么是一致性hash?

21,MQ有可能發(fā)生重復(fù)消費(fèi),如何避免,如何做到冪等?

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

開源庫(kù),持續(xù)更新中,https://github.com/Java9898/Java-Learning-Library

喜歡的點(diǎn)點(diǎn)關(guān)注點(diǎn)點(diǎn)贊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容