十面阿里——菜鳥,螞蟻金服,天貓面試後帶回來的題目總彙

雖然天貓,螞蟻金,菜鳥都歸屬阿里旗下,但每一個面試官問的問題都不同,相同點主要在流程方面。面試開始會讓自我介紹,主要業務架構和技術架構兩部分。業務架構通常不會深究,但要面試官聽明白,而且通常面試官會順着問是如何根據這些業務去設計技術架構的。面試

面試試題

其餘正則表達式

  1. 什麼是冪等?什麼狀況下須要考慮冪等?你怎麼解決冪等的問題?

Java的數據庫

  1. 多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認爲應該如何解決併發的問題?你會選擇加什麼樣的鎖?
  2. JAVA的AQS是否了了解,它是幹嗎的?
  3. 除了同步關鍵字以外,你是怎麼來保障線程安全的?
  4. 何時須要加揮發性關鍵字?它能保證線程安全嗎?
  5. 線程池內的線程若是所有忙,提交一個新的任務,會發生什什麼?隊列所有塞滿了以後,仍是忙,再提交會發生什麼?
  6. Tomcat的自己的參數你⼀通常會怎麼調整?
  7. 同步關鍵字鎖住的是什麼東西?在字節碼中是怎麼表示的?在內存中的對象上表現爲何?
  8. 等待/通知/ notifyAll的方法需不須要被包含在同步塊中?這是爲何?
  9. ExecutorService的你通常是怎麼用的?是每一個服務放一個仍是一個項目裏面放一個?有什麼好處?

彈簧後端

  1. 你有沒有⽤用過春天的AOP?是用來幹嗎的?大概會怎麼使用?
  2. 若是¾一個接口有2個不一樣的實現,那麼怎麼來Autowire一個指定的實現?
  3. Spring的聲明式事務@Transaction註解通常寫在什麼位置?拋出了異常會自動回滾嗎?有沒有辦法控制不觸發回滾?
  4. 若是想在某個Bean的生成並裝配完畢後執行本身的邏輯,能夠什麼方式實現?
  5. SpringBoot沒有放到網上容器裏爲何能跑HTTP服務?
  6. SpringBoot中若是你想使用自定義的配置文件而不只僅是application.properties,應該怎麼弄?
  7. SpringMVC中RequestMapping能夠指定GET,POST方法麼?怎麼指定?
  8. SpringMVC若是但願把輸出的對象(例如XXResult或者XXResponse)這種包裝爲JSON輸出,應該怎麼處理?
  9. 怎樣攔截用SpringMVC的異常,而後作自定義的處理,好比打日誌或者包裝成JSON

MySQL的緩存

  1. 若是有不少數據插入MYSQL你會選擇什麼方式?
  2. 若是查詢很慢,你會想到的第一個方式是什麼?索引是幹嗎的?
  3. 若是建了一個單列索引,查詢的時候查出2列,會用到這個單列索引嗎?
  4. 若是建了一個包含多個列的索引,查詢的時候只用了第一列,能不能用上這個索引?查三列呢?
  5. 接上題,若是where條件後面帶有一個i + 5 <100會使用到這個索引嗎?
  6. 怎麼看是否用到了了某個索引?
  7. 像%aaa%會使用索引嗎?像aaa%呢?
  8. 降低,截斷,刪除的區別?
  9. 平時大家是怎麼監控數據庫的?慢SQL是怎麼排查的?
  10. 大家數據庫是否支持表情符號表情,若是不支持,如何操做?
  11. 大家的數據庫單表數據量是多少?通常多大的時候開始出現查詢性能急劇降低?
  12. 查詢死掉了,想要找出執行的查詢進程用什麼命令?找出來以後通常你會幹嗎?
  13. 讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有什麼關係?
  14. 分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正確的?

JVM安全

  1. 你知道哪些或者大家線上使用什麼GC策略? 它有什麼優點,適用於什麼場景?
  2. JAVA類加載器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
  3. 如何自定義一個類加載器?你使用過哪些或者你在什麼場景下須要一個自定義的類加載器嗎?
  4. 堆內存設置的參數是什麼?
  5. Perm Space中保存什麼數據? 會引發OutOfMemory嗎?
  6. 作gc時,一個對象在內存各個Space中被移動的順序是什麼?
  7. 你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理過程當中有哪些收穫?
  8. 1.8以後Perm Space有哪些變更? MetaSpace大小默認是無限的麼? 仍是大家會經過什麼方式來指定大小?
  9. Jstack是幹什麼的?Jstat呢?若是線上程序週期性地出現卡頓,你懷疑多是GC致使的,你會怎麼來排查這個問題?線程日誌通常你會看其中的什麼部分?
  10. StackOverflow的異常有沒有遇到過?通常你猜想會在什麼狀況下被觸發?如何指定一個線程的堆棧大小?通常大家寫多少?
  11. 針對這些面試題的答案,我找了幾個一線互聯網資深架構師朋友把這些面試相關內容錄製成視頻放在羣:725219329中分享給有須要的朋友免費獲取;不只如此,還包括一些目前互聯網最主流的架構技術:分佈式,微服務,等熱門話題的底層實現原理正在錄製中,感興趣的朋友能夠進來看看但願每個進來的人都有收貨。

Linux的命令網絡

  1. 日誌特別大隻想看最後100行怎麼弄弄?若是想一直看日誌的持續輸出,用什麼命令?
  2. 若是日誌一邊輸出,一邊想實時看到有沒有某個關鍵字應該怎麼弄?
  3. grep的若是忽略大小寫應該怎麼弄?正則表達式呢?
  4. VIM往下一行是什麼鍵?往下30行呢?跳到文件末尾一行是什麼?跳回來是什麼?向後搜索是什麼?
  5. 若是有個文本文件,按空格做爲列的分隔符,若是想統計第三列裏面的每一個單詞的出現次數應該怎麼弄?
  6. 若是把上面的出現次數排個序應該怎麼弄?想按照數字自己的順序而不是字符串的順序排列怎麼弄?
  7. Linux的環境變量是以什麼做爲分隔符的?環境變量經過什麼命令設置?
  8. 給某個文件權設置限好比設置爲64是用什麼命令?這個6是什麼意思?
  9. Linux的下面若是想看某個進程的資源佔用狀況是怎麼看的?系統負載大概指的什麼意思?大家線上系統負載通常多少?若是一個4核機器,你認爲多少負荷是比較正常的?上面命令裏面按一下1會發生什麼?
  10. 頂部命令裏面,有時候全部進程的CPU使用率加起來超過100%是怎麼回事?
  11. 還有哪些查看系統性能或者供你發現問題的命令?你通常是看哪一個參數?
  12. 想看某個進程打開了哪些網絡鏈接是什麼命令?裏面鏈接的狀態你比較關心哪幾種? - 偏題
  13. 有沒有作過的Linux系統參數方面的優化,大概優化過什麼?
  14. 系統參數裏面有個叫作積壓的能夠用來幹什麼?
  15. 查看網絡鏈接發現好多TIME WAIT多是什麼緣由?對你的應用會有什麼影響?你會選擇什麼樣的方式來減小這些TIME WAIT
  16. 能否介紹一下TCP三次握手的過程,若是如今有個網絡程序,你用第三方的庫來發送數據,你懷疑這個庫發送的數據有問題,那麼怎麼來驗證?tcpdump的導出的文件你通常是怎麼分析的?
  17. 的KeepAlive是用來幹什麼的?這樣的好處是什麼?

Redis  - 開發數據結構

  1. 緩存穿透能夠介紹一下麼?你認爲應該如何解決這個問題
  2. 你是怎麼觸發緩存更新的?(好比設置超時時間(被動方式),好比更新的時候主動更新)?若是是被動的方式如何控制多個入口同時觸發某個緩存更新?
  3. 大家用的Redis來作什麼?爲何不用其餘的KV存儲例例如Memcached的,卡桑德拉等?
  4. 大家用什麼Redis的客戶端?Redis的高性能的緣由大概能夠講一些?
  5. 你熟悉哪些Redis的的數據結構?zset是幹什麼的?和設置有什麼區別?
  6. Redis的hash,存儲和獲取的具體命令叫什麼名字?
  7. LPOP和BLPOP的區別?
  8. Redis的的有一些包含SCAN關鍵字的命令是幹嗎的?SCAN返回的數據量是固定的嗎?
  9. Redis的中的Lua中有沒有使用過?能夠用來作什麼?爲何能夠這麼用?
  10. Redis的的管道是用來幹什麼的? - 運維
  11. Redis的持久化大概有幾種方式?AOF和RDB的區別是什麼?AOF有什麼優缺點嗎?
  12. Redis Replication的大體流程是什麼?bgsave這個命令的執行過程? - 偏題
  13. 若是有不少KV數據要存儲到Redis,可是內存不足,經過什麼方式能夠縮減內存?爲何這樣能夠縮小內存?
  14. Redis中List,HashTable都用到了ZipList,爲何會選擇它?

監控,穩定性架構

  1. 業務日誌是經過什麼方式來收集的?
  2. 線上機器如何監控?採用什麼開源產品或者自研的產品?它是分鐘級的仍是秒級的?
  3. 若是讓你來想辦法收集一個JAVA後端應用的性能數據,你會在乎哪些方面? 你會選擇什麼樣的工具、思路來收集?
  4. 通常你調用第三方的時候會不會監控調用狀況?

針對這些面試題的答案,我找了幾個一線互聯網資深架構師朋友把這些面試相關內容錄製成視頻放在羣:725219329中分享給有須要的朋友免費獲取;不只如此,還包括一些目前互聯網最主流的架構技術:分佈式,微服務,等熱門話題的底層實現原理正在錄製中,感興趣的朋友能夠進來看看但願每個進來的人都有收貨。併發

相關文章
相關標籤/搜索