阿里天猫、蚂蚁最全一百多道面试题以及阿里P8架构技能树分享(含答案解析)
【阿里天貓、螞蟻、釘釘面試題目】
不會做別著急:文末有答案
1. junit用法,before,beforeClass,after, afterClass的執(zhí)行順序
2. 分布式鎖
3. nginx的請求轉(zhuǎn)發(fā)算法,如何配置根據(jù)權(quán)重轉(zhuǎn)發(fā)
4. 用hashmap實(shí)現(xiàn)redis有什么問題(死鎖,死循環(huán),可用ConcurrentHashmap)
5. 線程的狀態(tài)
5. 線程的阻塞的方式
6. sleep和wait的區(qū)別
7. hashmap的底層實(shí)現(xiàn)
8. 一萬個(gè)人搶100個(gè)紅包,如何實(shí)現(xiàn)(不用隊(duì)列),如何保證2個(gè)人不能搶到同一個(gè)紅包,可用分布式鎖
9. java內(nèi)存模型,垃圾回收機(jī)制,不可達(dá)算法
10. 兩個(gè)Integer的引用對象傳給一個(gè)swap方法在方法內(nèi)部交換引用,返回后,兩個(gè)引用的值是否會發(fā)現(xiàn)變化
11. aop的底層實(shí)現(xiàn),動態(tài)代理是如何動態(tài),假如有100個(gè)對象,如何動態(tài)的為這100個(gè)對象代理
12. 是否用過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ī)制,有緩存,如何存儲注冊服務(wù)的
18. IO會阻塞嗎?readLine是不是阻塞的
19. 用過spring的線程池還是java的線程池?
20. 字符串的格式化方法 (20,21這兩個(gè)問題問的太低級了)
21. 時(shí)間的格式化方法
22. 定時(shí)器用什么做的
23. 線程如何退出結(jié)束
24. java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區(qū)別
25. ThreadLocal的使用場景
26. java的內(nèi)存模型,垃圾回收機(jī)制
27. 為什么線程執(zhí)行要調(diào)用start而不是直接run(直接run,跟普通方法沒什么區(qū)別,先調(diào)start,run才會作為一個(gè)線程方法運(yùn)行)
28. qmq消息的實(shí)現(xiàn)機(jī)制(qmq是去哪兒網(wǎng)自己封裝的消息隊(duì)列)
29. 遍歷hashmap的三種方式
30. jvm的一些命令
31. memcache和redis的區(qū)別
32. mysql的行級鎖加在哪個(gè)位置
33. ConcurrentHashmap的鎖是如何加的?是不是分段越多越好
34. myisam和innodb的區(qū)別(innodb是行級鎖,myisam是表級鎖)
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出來
41. 如何手動觸發(fā)全量回收垃圾,如何立即觸發(fā)垃圾回收
42. hashmap如果只有一個(gè)寫其他全讀會出什么問題
43. git rebase
44. mongodb和hbase的區(qū)別
45. 如何解決并發(fā)問題
46. volatile的用途
47. java線程池(好像之前我的理解有問題)
48. mysql的binlog
49. 代理模式
50. mysql是如何實(shí)現(xiàn)事務(wù)的
51. 讀寫分離何時(shí)強(qiáng)制要讀主庫,讀哪個(gè)從庫是通過什么方式?jīng)Q定的,從庫的同步mysql用的什么方式
52. mysql的存儲引擎
53. mysql的默認(rèn)隔離級別,其他隔離級別
54. 將一個(gè)鏈表反轉(zhuǎn)(用三個(gè)指針,但是每次只發(fā)轉(zhuǎn)一個(gè))
55. spring Aop的實(shí)現(xiàn)原理,具體說說
56. 何時(shí)會內(nèi)存泄漏,內(nèi)存泄漏會拋哪些異常
57. 是否用過Autowire注解
58. spring的注入bean的方式
59. sql語句各種條件的執(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臺服務(wù)器如何選出leader(選舉算法)
65. 適配器和代理模式的區(qū)別
66. 讀寫鎖
67. static加鎖
68. 事務(wù)隔離級別
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請求如何整體響應(yīng)時(shí)間變長導(dǎo)致處理的請求數(shù)變少,該如何處理?用隊(duì)列,當(dāng)處理不了那么多http請求時(shí)將請求放到隊(duì)列
中慢慢處理,web如何實(shí)現(xiàn)隊(duì)列
77. 線程安全的單例模式
78. 快速排序性能考慮
79. volatile關(guān)鍵字用法
80. 求表的size,或做數(shù)據(jù)統(tǒng)計(jì)可用什么存儲引擎
81. 讀多寫少可用什么引擎
82. 假如要統(tǒng)計(jì)多個(gè)表應(yīng)該用什么引擎
83. concurrenhashmap求size是如何加鎖的,如果剛求完一段后這段發(fā)生了變化該如何處理
84. 1000個(gè)蘋果放10個(gè)籃子,怎么放,能讓我拿到所有可能的個(gè)數(shù)
85. 可重入的讀寫鎖,可重入是如何實(shí)現(xiàn)的?
86. 是否用過NIO
87. java的concurrent包用過沒
88. sting s=new string("abc")分別在堆棧上新建了哪些對象
89. java虛擬機(jī)的區(qū)域分配,各區(qū)分別存什么
90. 分布式事務(wù)(JTA)
91. threadlocal使用時(shí)注意的問題(ThreadLocal和Synchonized都用于解決多線程并發(fā)訪問。但是ThreadLocal與synchronized有本質(zhì)的區(qū)別。synchronized是利用鎖的機(jī)制,使變量或代碼塊在某一時(shí)該只能被一個(gè)線程訪問。而ThreadLocal為每一個(gè)線程都提供了變量的副本,使得每個(gè)線程在某一時(shí)間訪問到的并不是同一個(gè)對象,這樣就隔離了多個(gè)線程對數(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. 可重入鎖中對應(yīng)的wait和notify
98. redis能把內(nèi)存空間交換進(jìn)磁盤中嗎(這個(gè)應(yīng)該是可以的,但是那個(gè)面試官非跟我說不可以)
99. java線程池中基于緩存和基于定長的兩種線程池,當(dāng)請求太多時(shí)分別是如何處理的?定長的事用的隊(duì)列,如果隊(duì)列也滿了呢?交換進(jìn)磁盤?基于緩存的線程池解決方法呢?
100. synchronized加在方法上用的什么鎖
101. 可重入鎖中的lock和trylock的區(qū)別
102. innodb對一行數(shù)據(jù)的讀會枷鎖嗎?不枷鎖,讀實(shí)際讀的是副本
103. redis做緩存是分布式存的?不同的服務(wù)器上存的數(shù)據(jù)是否重復(fù)?guava cache呢?是否重復(fù)?不同的機(jī)器存的數(shù)據(jù)不同
104. 用awk統(tǒng)計(jì)一個(gè)ip文件中top10
105. 對表做統(tǒng)計(jì)時(shí)可直接看schema info信息,即查看表的系統(tǒng)信息
106. mysql目前用的版本
107. 公司經(jīng)驗(yàn)豐富的人給了什么幫助?(一般boss面會問這些)
108. 自己相對于一樣的應(yīng)屆生有什么優(yōu)勢
109. 自己的好的總結(jié)習(xí)慣給自己今后的工作帶了什么幫助,舉例為證
110. 原子類,線程安全的對象,異常的處理方式
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)存不夠,通過hash算法,將url分配到1000個(gè)文件中,不同的文件間肯定就不會重復(fù)了,再分別找出重復(fù)的)
有1萬個(gè)數(shù)組,每個(gè)數(shù)組有1000個(gè)整數(shù),每個(gè)數(shù)組都是降序的,從中找出最大的N個(gè)數(shù),N<1000
113. LinkedHashmap的底層實(shí)現(xiàn)
114. 類序列化時(shí)類的版本號的用途,如果沒有指定一個(gè)版本號,系統(tǒng)是怎么處理的?如果加了字段會怎么樣?
115. Override和Overload的區(qū)別,分別用在什么場景
116. java的反射是如何實(shí)現(xiàn)的
【阿里巴巴面試題目含答案】
 1,mysql的三大引擎是啥?
mysql常用的引擎有InnoDB,MyISAM,Memory,默認(rèn)是InnoDB
InnoDB:磁盤表,支持事務(wù),支持行級鎖,B+Tree索引
ps:優(yōu)點(diǎn): 具有良好的ACID特性。適用于高并發(fā),更新操作比較多的表。需要使用事務(wù)的表。對自動災(zāi)難恢復(fù)有要求的表。
缺點(diǎn):讀寫效率相對MYISAM比較差。占用的磁盤空間比較大。
mysql的4大特性+4種隔離級別:
MyISAM:磁盤表,不支持事務(wù),支持表級鎖,B+Tree索引
ps: 優(yōu)點(diǎn):占用空間小,處理速度快(相對InnoDB來說)
缺點(diǎn):不支持事務(wù)的完整性和并發(fā)性
MEMORY(Heap):內(nèi)存表,不支持事務(wù),表級鎖,Hash索引,不支持Blob,Text大類型
ps: 優(yōu)點(diǎn):速度要求快的,臨時(shí)數(shù)據(jù)
缺點(diǎn):丟失以后,對項(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ù)庫,因?yàn)椴恍枰獫M足關(guān)系數(shù)據(jù)庫數(shù)據(jù)一致性等復(fù)雜特性所以速度快;
sql是關(guān)系型數(shù)據(jù)庫,功能強(qiáng)大,但是效率上有瓶頸
4,什么是索引為啥nosql沒索引?nosql有索引滴
索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照數(shù)據(jù)存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對于單行的檢索很快。
聚簇索引:有主鍵時(shí),根據(jù)主鍵創(chuàng)建聚簇索引;沒有主鍵時(shí),會用一個(gè)唯一且不為空的索引列做為主鍵,成為此表的聚簇索引;如果以上兩個(gè)都不滿足那innodb自己創(chuàng)建一個(gè)虛擬的聚集索引
非聚簇索引:非聚簇索引都是輔助索引,像復(fù)合索引、前綴索引、唯一索引
5,B+樹和B樹區(qū)別?
B樹的非葉子節(jié)點(diǎn)存儲實(shí)際記錄的指針,而B+樹的葉子節(jié)點(diǎn)存儲實(shí)際記錄的指針
B+樹的葉子節(jié)點(diǎn)通過指針連起來了, 適合掃描區(qū)間和順序查找。
阿里的架構(gòu)技能樹
 看看這些你都是否已經(jīng)掌握,如果沒掌握那么想提升那就需要努力加油學(xué)習(xí)了,也可把下方圖片下載到本地,當(dāng)成自己進(jìn)階知識點(diǎn)梳理圖譜,建議學(xué)習(xí)完成后,自己再重新勾畫出屬于自己的架構(gòu)系統(tǒng)圖譜,這樣對于自身技能知識點(diǎn)會掌握的更加牢固。
 在這給大家推薦一個(gè)Java中高級技術(shù)交流分享討論的群,那里每天都會有技術(shù)干貨、技術(shù)動向、職業(yè)生涯、行業(yè)熱點(diǎn)、職場趣事等一切有關(guān)于程序員的內(nèi)容分享。更有海量Java中級→高級→架構(gòu)等學(xué)習(xí)資料,相關(guān)源碼視頻,面試資料。我看了覺得資源還不錯(cuò),如果你們有需要的話,掃描下方二維碼免費(fèi)獲取或者點(diǎn)擊加入社群(908676731)
資料分享
包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、Jvm性能調(diào)優(yōu)、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多個(gè)知識點(diǎn)高級進(jìn)階干貨等。
免費(fèi)獲取點(diǎn)擊加入社群(908676731)
 ---------------------?
 作者:大喇叭的程序員之路?
 來源:CSDN?
 原文:https://blog.csdn.net/weixin_45136579/article/details/90642238?
 版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的阿里天猫、蚂蚁最全一百多道面试题以及阿里P8架构技能树分享(含答案解析)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 保险中介是干什么的,没想到他们做这么多工
- 下一篇: DDL与DML语句
