做者:昨夜黃花今朝狼
https://www.cnblogs.com/xueSp...
雖然天貓,螞蟻金,菜鳥都歸屬阿里旗下,但每一個面試官問的問題都不同,相同點主要在流程方面。html
面試開始會讓自我介紹,主要業務架構和技術架構兩部分。業務架構通常不會深究,但要面試官聽明白,而且通常面試官會順着問是如何根據這些業務去設計技術架構的。java
如下是從網絡整理的菜鳥,天貓,螞蟻金服面試題,僅供你們參考,沒有答案!web
1.多個線程同時讀寫,讀線程的數量遠遠大於寫線程,你認爲應該如何解決併發的問題?你會選擇加什麼樣的鎖?面試
2.JAVA的AQS是否了了解,它是幹嗎的? 正則表達式
3.除了synchronized關鍵字以外,你是怎麼來保障線程安全的? 數據庫
4.何時須要加volatile關鍵字?它能保證線程安全嗎? vim
5.線程池內的線程若是所有忙,提交一個新的任務,會發生什什麼?隊列所有塞滿了以後,仍是忙,再提交會發生什麼? 後端
6.Tomcat自己的參數你⼀通常會怎麼調整? 緩存
7.synchronized關鍵字鎖住的是什麼東西?在字節碼中是怎麼表示的?在內存中的對象上表現爲什麼?安全
8.wait/notify/notifyAll方法需不須要被包含在synchronized塊中?這是爲何?
9.ExecutorService你通常是怎麼用的?是每一個service放一個仍是一個項目里面放一個?有什麼好處?
1.你有沒有⽤用過Spring的AOP? 是用來幹嗎的? 大概會怎麼使用?
2.若是⼀一個接口有2個不一樣的實現, 那麼怎麼來Autowire一個指定的實現?
3.Spring的聲明式事務 @Transaction註解通常寫在什麼位置? 拋出了異常會自動回滾嗎?有沒有辦法控制不觸發回滾?
4.若是想在某個Bean生成並裝配完畢後執行本身的邏輯,能夠什麼方式實現?
5.SpringBoot沒有放到web容器里爲什麼能跑HTTP服務?
6.SpringBoot中若是你想使用自定義的配置文件而不僅僅是application.properties,應該怎麼弄?
7.SpringMVC中RequestMapping能夠指定GET, POST方法麼?怎麼指定?
SpringMVC若是但願把輸出的Object(例如
8.XXResult或者XXResponse)這種包裝爲JSON輸出, 應該怎麼處理?
9.怎樣攔截SpringMVC的異常,而後作自定義的處理,好比打日誌或者包裝成JSON
Spring 這裏有一個 69 道答案版的《史上最全 69 道 Spring 面試題和答案》。
1.若是有不少數據插入MYSQL 你會選擇什麼方式?
2.若是查詢很慢,你會想到的第一個方式是什麼?索引是幹嗎的?
3.若是建了一個單列索引,查詢的時候查出2列,會用到這個單列索引嗎?
4.若是建了一個包含多個列的索引,查詢的時候只用了第一列,能不能用上這個索引?查三列呢?
5.接上題,若是where條件後面帶有一個 i + 5 < 100 會使用到這個索引嗎?
6.怎麼看是否用到了了某個索引?
7.like %aaa%會使用索引嗎? like aaa%呢?
drop、truncate、delete的區別?
8.平時大家是怎麼監控數據庫的? 慢SQL是怎麼排查的?
9.大家數據庫是否支持emoji表情,若是不支持,如何操做?
10.大家的數據庫單表數據量是多少?通常多大的時候開始出現查詢性能急劇降低?
11查詢死掉了,想要找出執行的查詢進程用什麼命令?找出來以後通常你會幹嗎?
12.讀寫分離是怎麼作的?你認爲中間件會怎麼來操做?這樣操做跟事務有什麼關係?
13.分庫分表有沒有作過?線上的遷移過程是怎麼樣的?如何肯定數據是正確的?
1.你知道哪些或者大家線上使用什麼GC策略? 它有什麼優點,適用於什麼場景?
2.JAVA類加載器包括幾種?它們之間的父子關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處?
3.如何自定義一個類加載器?你使用過哪些或者你在什麼場景下須要一個自定義的類加載器嗎?
堆內存設置的參數是什麼?
4.Perm Space中保存什麼數據? 會引發OutOfMemory嗎?
5.作gc時,一個對象在內存各個Space中被移動的順序是什麼?
6.你有沒有遇到過OutOfMemory問題?你是怎麼來處理這個問題的?處理過程當中有哪些收穫?
7.1.8以後Perm Space有哪些變更?MetaSpace大小默認是無限的麼? 仍是大家會經過什麼方式來指定大小?
8.Jstack是幹什麼的? Jstat呢? 若是線上程序週期性地出現卡頓,你懷疑多是gc致使的,你會怎麼來排查這個問題?線程日誌通常你會看其中的什麼部分?
9.StackOverFlow異常有沒有遇到過?通常你猜想會在什麼狀況下被觸發?如何指定一個線程的堆棧大小?通常大家寫多少?
把元素分紅兩部分,對每個部分採用遞歸的歸併排序。
比較已經排好序的元素。
合併已經排好序的元素。
排序完畢。
1.日誌特別大隻想看最後100行怎麼弄弄? 若是想一直看日誌的持續輸出,用什麼命令?
2.若是日誌一邊輸出,一邊想實時看到有沒有某個關鍵字應該怎麼弄?
3.grep若是忽略大小寫應該怎麼弄? 正則表達式呢?
4.vim往下一行是什麼鍵?往下30行呢? 跳到文件末尾一行是什麼? 跳回來是什麼? 向後搜索是什麼?
5.若是有個文本文件,按空格做爲列的分隔符,若是想統計第三列里面的每一個單詞的出現次數應該怎麼弄?
6.若是把上面的出現次數排個序應該怎麼弄? 想按照數字自己的順序而不是字符串的順序排列怎麼弄?
7.Linux環境變量是以什麼做爲分隔符的?環境變量經過什麼命令設置?
8.給某個文件權設置限好比設置爲64 是用什麼命令?這個6是什麼意思?
9.Linux下面若是想看某個進程的資源佔用狀況是怎麼看的?系統load大概指的什麼意思?大家線上系統load通常多少?若是一個4核機器,你認爲多少load是比較正常的?top命令里面按一下1會發生什麼?
10.top命令里面,有時候全部進程的CPU使用率加起來超過100%是怎麼回事?
11.還有哪些查看系統性能或者供你發現問題的命令?你通常是看哪一個參數?
12.想看某個進程打開了哪些網絡鏈接是什麼命令?里面鏈接的狀態你比較關心哪幾種? -- 偏題
有沒有作過Linux系統參數方面的優化,大概優化過什麼?
13.系統參數裏面有個叫作backlog的能夠用來幹什麼?
14.查看網絡鏈接發現好多TIMEWAIT 多是什麼緣由?對你的應用會有什麼影響?你會選擇什麼樣的方式來減小這些TIMEWAIT
15.能否介紹一下TCP三次握手的過程,若是如今有個網絡程序,你用第三方的library來發送數據,你懷疑這個library發送的數據有問題,那麼怎麼來驗證?tcpdump導出的文件你通常是怎麼分析的?
16.KeepAlive是用來幹什麼的?這樣的好處是什麼?
1.緩存穿透能夠介紹一下麼?你認爲應該如何解決這個問題?
2.你是怎麼觸發緩存更新的?(好比設置超時時間(被動方式), 好比更新的時候主動update)?若是是被動的方式如何控制多個入口同時觸發某個緩存更新?
3.大家用Redis來作什麼?爲何不用其餘的KV存儲例例如Memcached,Cassandra等?
4.大家用什麼Redis客戶端? Redis高性能的緣由大概能夠講一些?
5.你熟悉哪些Redis的數據結構? zset是幹什麼的? 和set有什麼區別?
6.Redis的hash, 存儲和獲取的具體命令叫什麼名字?
7.LPOP和BLPOP的區別?
8.Redis的有一些包含SCAN關鍵字的命令是幹嗎的? SCAN返回的數據量是固定的嗎?
9.Redis中的Lua有沒有使用過? 能夠用來作什麼? 爲什麼能夠這麼用?
10.Redis的Pipeline是用來幹什麼的? -- 運維
Redis持久化大概有幾種方式? aof和rdb的區別是什麼? AOF有什麼優缺點嗎?
11.Redis Replication的大體流程是什麼? bgsave這個命令的執行過程? -- 偏題
12.若是有不少 KV數據要存儲到Redis, 可是內存不足, 經過什麼方式能夠縮減內存? 爲何這樣能夠縮小內存?
13.Redis中List, HashTable都用到了ZipList, 爲何會選擇它?
Redis 這裏有一個 50 道答案版的《史上最全 50 道 Redis 面試題》。
1.業務日誌是經過什麼方式來收集的?
2.線上機器如何監控?採用什麼開源產品或者自研的產品?它是分鐘級的仍是秒級的?
3.若是讓你來想辦法收集一個JAVA後端應用的性能數據,你會在乎哪些方面? 你會選擇什麼樣的工具、思路來收集?
4.通常你調用第三方的時候會不會監控調用狀況?
推薦去個人博客閱讀更多:
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
生活很美好,明天見~