七面阿里:如今分享一下阿里最全面試116題:阿里天貓、螞蟻金服、阿里巴巴面試題含答案

貌似這一點適應的行業最廣,可是我能夠很確定的說:當你從事Java一年後,從新找工做時,纔會真實的感覺到這句話。java

工做第一年,每每是什麼都充滿新鮮感,什麼都學習,衝勁十足的一年;WEB行業知識更新特別快,今天一個框架的新版本,明天又是另外一個新框架,有時每每根據項目的須要來不斷學習新東西;全部,不少時候感受,本身用過的東西真多呀!可是真正深刻研究的東西卻很少。面試,是跳槽後第一個須要面對的問題;並且不一樣公司面試的着重點不一樣;可是卻有一個共同點:Java基礎是必考的。mysql

工做第一年,可能問你String對象建立的理解,經常使用的框架是什麼等等;linux

工做第三年,就問你Java內存分配機制是什麼,類是如何加載的等等;nginx

工做第五年,就問你經常使用的設計模式是什麼,你在工做中充當什麼角色,怎麼獨立完成一個模塊等等;git

能夠看出——這是一個典型的程序員的成長過程:程序員

使用Java—->深刻理解Java積累經驗——>獨立設計分析能力——>獨當一面的多面手!web

所以,必須學習:面試

數據庫
最經常使用的是Oracle了(固然銀行項目等須要DB2等),熟練掌握使用存儲過程,觸發器等;redis

UML
項目中常常要寫文檔,項目經理的基本功,程序員走向設計的基本功;算法

linux系統
須要掌握經常使用的linux命令——部署在windows操做系統上的項目不多吧。

其餘就很少說了,你們能夠補充。

學習上,興趣是最大的老師;項目驅動也是不錯的選擇,總之,不學習不行。

文章很長,能夠先收藏

從阿里面試回來給你們分享一下阿里所問到的面試題

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

  1. junit用法,before,beforeClass,after, afterClass的執行順序
  2. 分佈式鎖
  3. nginx的請求轉發算法,如何配置根據權重轉發
  4. 用hashmap實現redis有什麼問題(死鎖,死循環,可用ConcurrentHashmap)
  5. 線程的狀態
  6. 線程的阻塞的方式
  7. sleep和wait的區別
  8. hashmap的底層實現
  9. 一萬我的搶100個紅包,如何實現(不用隊列),如何保證2我的不能搶到同一個紅包,可用分佈式鎖
  10. java內存模型,垃圾回收機制,不可達算法
  11. 兩個Integer的引用對象傳給一個swap方法在方法內部交換引用,返回後,兩個引用的值是否會發現變化
  12. aop的底層實現,動態代理是如何動態,假若有100個對象,如何動態的爲這100個對象代理
  13. 是否用過maven install。 maven test。git(make install是安裝本地jar包)
  14. tomcat的各類配置,如何配置docBase
  15. spring的bean配置的幾種方式
  16. web.xml的配置
  17. spring的監聽器。
  18. zookeeper的實現機制,有緩存,如何存儲註冊服務的
  19. IO會阻塞嗎?readLine是否是阻塞的
  20. 用過spring的線程池仍是java的線程池?
  21. 字符串的格式化方法 (20,21這兩個問題問的過低級了)
  22. 時間的格式化方法
  23. 定時器用什麼作的
  24. 線程如何退出結束
  25. java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區別
  26. ThreadLocal的使用場景
  27. java的內存模型,垃圾回收機制
  28. 爲何線程執行要調用start而不是直接run(直接run,跟普通方法沒什麼區別,先調start,run纔會做爲一個線程方法運行)
  29. qmq消息的實現機制(qmq是去哪兒網本身封裝的消息隊列)
  30. 遍歷hashmap的三種方式
  31. jvm的一些命令
  32. memcache和redis的區別
  33. mysql的行級鎖加在哪一個位置
  34. ConcurrentHashmap的鎖是如何加的?是否是分段越多越好
  35. myisam和innodb的區別(innodb是行級鎖,myisam是表級鎖)
  36. mysql其餘的性能優化方式
  37. linux系統日誌在哪裏看
  38. 如何查看網絡進程
  39. 統計一個整數的二進制表示中bit爲1的個數
  40. jvm內存模型,java內存模型

【阿里巴巴面試題目】

  1. 如何把java內存的數據所有dump出來
  2. 如何手動觸發全量回收垃圾,如何當即觸發垃圾回收
  3. hashmap若是隻有一個寫其餘全讀會出什麼問題
  4. git rebase
  5. mongodb和hbase的區別
  6. 如何解決併發問題
  7. volatile的用途
  8. java線程池(好像以前個人理解有問題)
  9. mysql的binlog
  10. 代理模式
  11. mysql是如何實現事務的
  12. 讀寫分離什麼時候強制要讀主庫,讀哪一個從庫是經過什麼方式決定的,從庫的同步mysql用的什麼方式
  13. mysql的存儲引擎
  14. mysql的默認隔離級別,其餘隔離級別
  15. 將一個鏈表反轉(用三個指針,可是每次只發轉一個)
  16. spring Aop的實現原理,具體說說
  17. 什麼時候會內存泄漏,內存泄漏會拋哪些異常
  18. 是否用過Autowire註解
  19. spring的注入bean的方式
  20. sql語句各類條件的執行順序,如select, where, order by, group by
  21. select xx from xx where xx and xx order by xx limit xx; 如何優化這個(看explain)
  22. 四則元算寫代碼
  23. 統計100G的ip文件中出現ip次數最多的100個ip
  24. zookeeper的事物,結點,服務提供方掛了如何告知消費方
  25. 5臺服務器如何選出leader(選舉算法)
  26. 適配器和代理模式的區別
  27. 讀寫鎖
  28. static加鎖
  29. 事務隔離級別
  30. 門面模式,類圖(外觀模式)
  31. mybatis如何映射表結構
  32. 二叉樹遍歷
  33. 主從複製
  34. mysql引擎區別
  35. 靜態內部類加載到了哪一個區?方法區
  36. class文件編譯後加載到了哪
  37. web的http請求如何總體響應時間變長致使處理的請求數變少,該如何處理?用隊列,當處理不了那麼多http請求時將請求放到隊列

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

  1. 線程安全的單例模式
  2. 快速排序性能考慮
  3. volatile關鍵字用法
  4. 求表的size,或作數據統計可用什麼存儲引擎
  5. 讀多寫少可用什麼引擎
  6. 假如要統計多個表應該用什麼引擎
  7. concurrenhashmap求size是如何加鎖的,若是剛求完一段後這段發生了變化該如何處理
  8. 1000個蘋果放10個籃子,怎麼放,能讓我拿到全部可能的個數
  9. 可重入的讀寫鎖,可重入是如何實現的?
  10. 是否用過NIO
  11. java的concurrent包用過沒
  12. sting s=new string("abc")分別在堆棧上新建了哪些對象
  13. java虛擬機的區域分配,各區分別存什麼
  14. 分佈式事務(JTA)
  15. threadlocal使用時注意的問題(ThreadLocal和Synchonized都用於解決多線程併發訪問。可是ThreadLocal與synchronized有本質的區別。synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。而ThreadLocal爲每個線程都提供了變量的副本,使得每一個線程在某一時間訪問到的並非同一個對象,這樣就隔離了多個線程對數據的數據共享。而Synchronized卻正好相反,它用於在多個線程間通訊時可以得到數據共享)
  16. java有哪些容器(集合,tomcat也是一種容器)
  17. 二分查找算法
  18. myisam的優勢,和innodb的區別
  19. redis能存哪些類型
  20. http協議格式,get和post的區別
  21. 可重入鎖中對應的wait和notify
  22. redis能把內存空間交換進磁盤中嗎(這個應該是能夠的,可是那個面試官非跟我說不能夠)
  23. java線程池中基於緩存和基於定長的兩種線程池,當請求太多時分別是如何處理的?定長的事用的隊列,若是隊列也滿了呢?交換進磁盤?基於緩存的線程池解決方法呢?
  24. synchronized加在方法上用的什麼鎖
  25. 可重入鎖中的lock和trylock的區別
  26. innodb對一行數據的讀會枷鎖嗎?不枷鎖,讀實際讀的是副本
  27. redis作緩存是分佈式存的?不一樣的服務器上存的數據是否重複?guava cache呢?是否重複?不一樣的機器存的數據不一樣
  28. 用awk統計一個ip文件中top10
  29. 對錶作統計時可直接看schema info信息,即查看錶的系統信息
  30. mysql目前用的版本
  31. 公司經驗豐富的人給了什麼幫助?(通常boss面會問這些)
  32. 本身相對於同樣的應屆生有什麼優點
  33. 本身的好的總結習慣給本身從此的工做帶了什麼幫助,舉例爲證
  34. 原子類,線程安全的對象,異常的處理方式
  35. 4億個int數,如何找出重複的數(用hash方法,建一個2的32次方個bit的hash數組,每取一個int數,可hash下2的32次方找到它在hash數組中的位置,而後將bit置1表示已存在)
  36. 4億個url,找出其中重複的(考慮內存不夠,經過hash算法,將url分配到1000個文件中,不一樣的文件間確定就不會重複了,再分別找出重複的)

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

  1. LinkedHashmap的底層實現
  2. 類序列化時類的版本號的用途,若是沒有指定一個版本號,系統是怎麼處理的?若是加了字段會怎麼樣?
  3. Override和Overload的區別,分別用在什麼場景
  4. 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+樹的葉子節點經過指針連起來了, 適合掃描區間和順序查找。

相關文章
相關標籤/搜索