1. 程式人生 > >想去阿里的附屬機構菜鳥,天貓,螞蟻金服麼?一起來看看他們的面試題

想去阿里的附屬機構菜鳥,天貓,螞蟻金服麼?一起來看看他們的面試題

雖然天貓,螞蟻金,菜鳥都歸屬阿里旗下,但每個面試官問的問題都不一樣,相同點主要在流程方面。

面試開始會讓自我介紹,主要業務架構和技術架構兩部分。業務架構一般不會深究,但要面試官聽明白,並且一般面試官會順著問是如何根據這些業務去設計技術架構的。

以下是從網路整理的菜鳥,天貓,螞蟻金服面試題,僅供大家參考,沒有答案!

java
1.多個執行緒同時讀寫,讀執行緒的數量遠遠大於寫執行緒,你認為應該如何解決併發的問題?你會選擇加什麼樣的鎖?

2.JAVA的AQS是否了了解,它是幹嘛的?

3.除了synchronized關鍵字之外,你是怎麼來保障執行緒安全的?

4.什麼時候需要加volatile關鍵字?它能保證執行緒安全嗎?

5.執行緒池內的執行緒如果全部忙,提交一個新的任務,會發生什什麼?隊列全部塞滿了之後,還是忙,再提交會發生什麼?

6.Tomcat本身的引數你⼀一般會怎麼調整?

7.synchronized關鍵字鎖住的是什麼東西?在位元組碼中是怎麼表示的?在記憶體中的物件上表現為什麼?

8.wait/notify/notifyAll方法需不需要被包含在synchronized塊中?這是為什麼?

9.ExecutorService你一般是怎麼用的?是每個service放一個還是一個專案里面放一個?有什麼好處?

Spring
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 面試題和答案》。

MySQL
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.分庫分表有沒有做過?線上的遷移過程是怎麼樣的?如何確定資料是正確的?

JVM
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異常有沒有遇到過?一般你猜測會在什麼情況下被觸發?如何指定一個執行緒的堆疊大小?一般你們寫多少?

把元素分成兩部分,對每一個部分採用遞迴的歸併排序。
比較已經排好序的元素。
合併已經排好序的元素。
排序完畢。

Linux命令
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是用來幹什麼的?這樣的好處是什麼?

Redis – 開發
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.一般你呼叫第三方的時候會不會監控呼叫情況?

以上沒有具體答案,需要了解的大家可以加群一起討論交流,851531810