2020已過半,開始備戰(zhàn)下半年秋招,分享螞蟻Java崗面試題80+

前言

也許會有人感嘆某些人的運氣比較好,但是他們不曾知道對方吃過多少苦,受過多少委屈。某些時候就是需要我們用心去發(fā)現(xiàn)突破點,然后順勢而上,抓住機(jī)遇,那么你將會走向另外一條大道,成就另外一個全新的自我。

就目前大環(huán)境來看,面試的難度比往年高很多。一個明顯的感受:今年的面試,無論一面還是二面,都很考驗Java程序員的技術(shù)功底。

Java

  1. 多個線程同時讀寫,讀線程的數(shù)量遠(yuǎn)遠(yuǎn)?于寫線程,你認(rèn)為應(yīng)該如何解決并發(fā)的問題?你會選擇加什么樣的鎖?
  2. JAVA的AQS是否了解,它是?嘛的?
  3. 除了synchronized關(guān)鍵字之外,你是怎么來保障線程安全的?
  4. 什么時候需要加volatile關(guān)鍵字?它能保證線程安全嗎?
  5. 線程池內(nèi)的線程如果全部忙,提交?個新的任務(wù),會發(fā)?什么?隊列全部塞滿了之后,還是忙,再提交會發(fā)?什么?
  6. Tomcat本身的參數(shù)你?般會怎么調(diào)整?
  7. synchronized關(guān)鍵字鎖住的是什么東??在字節(jié)碼中是怎么表示的?在內(nèi)存中的對象上表現(xiàn)為什么?
  8. wait/notify/notifyAll?法需不需要被包含在synchronized塊中?這是為什么?
  9. ExecutorService你?般是怎么?的?是每個service放?個還是?個項???放?個?有什么好處?

Spring

  1. 你有沒有?過Spring的AOP? 是?來?嘛的? ?概會怎么使??
  2. 如果?個接?有2個不同的實現(xiàn), 那么怎么來Autowire?個指定的實現(xiàn)?
  3. Spring的聲明式事務(wù) @Transaction注解?般寫在什么位置? 拋出了異常會?動回滾嗎?有沒有辦法控制不觸發(fā)回滾?
  4. 如果想在某個Bean?成并裝配完畢后執(zhí)???的邏輯,可以什么?式實現(xiàn)?
  5. SpringBoot沒有放到web容器?為什么能跑HTTP服務(wù)?
  6. SpringBoot中如果你想使??定義的配置?件?不僅僅是application.properties,應(yīng)該怎么弄?
  7. SpringMVC中RequestMapping可以指定GET, POST?法么?怎么指定?
  8. SpringMVC如果希望把輸出的Object(例如XXResult或者XXResponse)這種包裝為JSON輸出, 應(yīng)該怎么處理?
  9. 怎樣攔截SpringMVC的異常,然后做?定義的處理,?如打?志或者包裝成JSON

MySQL

  1. 如果有很多數(shù)據(jù)插?MYSQL 你會選擇什么?式?
  2. 如果查詢很慢,你會想到的第?個?式是什么?索引是?嘛的?
  3. 如果建了?個單列索引,查詢的時候查出2列,會?到這個單列索引嗎?
  4. 如果建了?個包含多個列的索引,查詢的時候只?了第?列,能不能?上這個索引?查三列呢?
  5. 接上題,如果where條件后?帶有?個 i + 5 < 100 會使?到這個索引嗎?
  6. 怎么看是否?到了某個索引?
  7. like %aaa%會使?索引嗎? like aaa%呢?
  8. drop、truncate、delete的區(qū)別?
  9. 平時你們是怎么監(jiān)控數(shù)據(jù)庫的? 慢SQL是怎么排查的?
  10. 你們數(shù)據(jù)庫是否?持emoji表情,如果不?持,如何操作?
  11. 你們的數(shù)據(jù)庫單表數(shù)據(jù)量是多少??般多?的時候開始出現(xiàn)查詢性能急劇下降?
  12. 查詢死掉了,想要找出執(zhí)?的查詢進(jìn)程?什么命令?找出來之后?般你會?嘛?
  13. 讀寫分離是怎么做的?你認(rèn)為中間件會怎么來操作?這樣操作跟事務(wù)有什么關(guān)系?
  14. 分庫分表有沒有做過?線上的遷移過程是怎么樣的?如何確定數(shù)據(jù)是正確的?

JVM

  1. 你知道哪些或者你們線上使?什么GC策略? 它有什么優(yōu)勢,適?于什么場景?
  2. JAVA類加載器包括?種?它們之間的??關(guān)系是怎么樣的?雙親委派機(jī)制是什么意思?有什么好處?
  3. 如何?定義?個類加載器?你使?過哪些或者你在什么場景下需要?個?定義的類加載器嗎?
  4. 堆內(nèi)存設(shè)置的參數(shù)是什么?
  5. Perm Space中保存什么數(shù)據(jù)? 會引起OutOfMemory嗎?
  6. 做gc時,?個對象在內(nèi)存各個Space中被移動的順序是什么?
  7. 你有沒有遇到過OutOfMemory問題?你是怎么來處理這個問題的?處理過程中有哪些收獲?
  8. 1.8之后Perm Space有哪些變動? MetaSpace??默認(rèn)是?限的么? 還是你們會通過什么?式來指定???
  9. Jstack是?什么的? Jstat呢? 如果線上程序周期性地出現(xiàn)卡頓,你懷疑可能是gc導(dǎo)致的,你會怎么來排查這個問題?線程?志?般你會看其中的什么部分?
  10. StackOverFlow異常有沒有遇到過??般你猜測會在什么情況下被觸發(fā)?如何指定?個線程的堆棧????般你們寫多少?

Linux命令

  1. ?志特別?只想看最后100?怎么弄? 如果想?直看?志的持續(xù)輸出,?什么命令?
  2. 如果?志?邊輸出,?邊想實時看到有沒有某個關(guān)鍵字應(yīng)該怎么弄?
  3. grep如果忽略??寫應(yīng)該怎么弄? 正則表達(dá)式呢?
  4. vim往下??是什么鍵?往下30?呢? 跳到?件末尾??是什么? 跳回來是什么? 向后搜索是什么?
  5. 如果有個?本?件,按空格作為列的分隔符,如果想統(tǒng)計第三列??的每個單詞的出現(xiàn)次數(shù)應(yīng)該怎么弄?
  6. 如果把上?的出現(xiàn)次數(shù)排個序應(yīng)該怎么弄? 想按照數(shù)字本身的順序?不是字符串的順序排列怎么弄?
  7. Linux環(huán)境變量是以什么作為分隔符的?環(huán)境變量通過什么命令設(shè)置?
  8. 給某個?件權(quán)設(shè)置限?如設(shè)置為644 是?什么命令?這個6是什么意思?
  9. Linux下?如果想看某個進(jìn)程的資源占?情況是怎么看的?系統(tǒng)load?概指的什么意思?你們線上系統(tǒng)load?般多少?如果?個4核機(jī)器,你認(rèn)為多少load是?較正常的?top命令??按?下1會發(fā)?什么?
  10. top命令??,有時候所有進(jìn)程的CPU使?率加起來超過100%是怎么回事?
  11. 還有哪些查看系統(tǒng)性能或者供你發(fā)現(xiàn)問題的命令?你?般是看哪個參數(shù)?
  12. 想看某個進(jìn)程打開了哪些?絡(luò)連接是什么命令???連接的狀態(tài)你?較關(guān)?哪?種?

-- 偏題

  1. 有沒有做過Linux系統(tǒng)參數(shù)??的優(yōu)化,?概優(yōu)化過什么?
  2. 系統(tǒng)參數(shù)??有個叫做backlog的可以?來?什么?
  3. 查看?絡(luò)連接發(fā)現(xiàn)好多TIME_WAIT 可能是什么原因?對你的應(yīng)?會有什
    么影響?你會選擇什么樣的?式來減少這些TIME_WAIT
  4. 可否介紹?下TCP三次握?的過程,如果現(xiàn)在有個?絡(luò)程序,你?第三?
    的library來發(fā)送數(shù)據(jù),你懷疑這個library發(fā)送的數(shù)據(jù)有問題,那么怎么來驗
    證?tcpdump導(dǎo)出的?件你?般是怎么分析的?
  5. KeepAlive是?來?什么的?這樣的好處是什么?

Redis

-- 開發(fā)

  1. 緩存穿透可以介紹?下么?你認(rèn)為應(yīng)該如何解決這個問題
  2. 你是怎么觸發(fā)緩存更新的?(?如設(shè)置超時時間(被動?式), ?如更新的時候主動update)?如果是被動的?式如何控制多個??同時觸發(fā)某個緩存更新?
  3. 你們?Redis來做什么?為什么不?其他的KV存儲例如Memcached,Cassandra等?
  4. 你們?什么Redis客戶端? Redis?性能的原因?概可以講?些?
  5. 你熟悉哪些Redis的數(shù)據(jù)結(jié)構(gòu)? zset是?什么的? 和set有什么區(qū)別?
  6. Redis的hash, 存儲和獲取的具體命令叫什么名字?
  7. LPOP和BLPOP的區(qū)別?
  8. Redis的有?些包含SCAN關(guān)鍵字的命令是?嘛的? SCAN返回的數(shù)據(jù)量是固定的嗎?
  9. Redis中的Lua有沒有使?過? 可以?來做什么? 為什么可以這么??
  10. Redis的Pipeline是?來?什么的?

-- 運維

  1. Redis持久化?概有?種?式? aof和rdb的區(qū)別是什么? AOF有什么優(yōu)缺點嗎?
  2. Redis Replication的?致流程是什么? bgsave這個命令的執(zhí)?過程?

-- 偏題

  1. 如果有很多 KV數(shù)據(jù)要存儲到Redis, 但是內(nèi)存不?, 通過什么?式可以縮減內(nèi)存? 為什么這樣可以縮?內(nèi)存?
  2. Redis中List, HashTable都?到了ZipList, 為什么會選擇它?

監(jiān)控、穩(wěn)定性

  1. 業(yè)務(wù)?志是通過什么?式來收集的?
  2. 線上機(jī)器如何監(jiān)控?采?什么開源產(chǎn)品或者?研的產(chǎn)品?它是分鐘級的還是秒級的?
  3. 如果讓你來想辦法收集?個JAVA后端應(yīng)?的性能數(shù)據(jù),你會在意哪些??? 你會選擇什么樣的?具、思路來收集?
  4. ?般你調(diào)?第三?的時候會不會監(jiān)控調(diào)?情況?

Mybatis

  1. mybatis 中 #{}和 ${}的區(qū)別是什么?
  2. mybatis 有幾種分頁方式?
  3. RowBounds 是一次性查詢?nèi)拷Y(jié)果嗎?為什么?
  4. mybatis 邏輯分頁和物理分頁的區(qū)別是什么?
  5. mybatis 是否支持延遲加載?延遲加載的原理是什么?
  6. 說一下 mybatis 的一級緩存和二級緩存?
  7. mybatis 和 hibernate 的區(qū)別有哪些?
  8. mybatis 有哪些執(zhí)行器(Executor)?
  9. mybatis 分頁插件的實現(xiàn)原理是什么?
  10. mybatis 如何編寫一個自定義插件?

總結(jié)

作為一名即將求職的程序員,面對一個非常不同的 2020 年,你的就業(yè)機(jī)會和風(fēng)口會出現(xiàn)在哪里?在這種新環(huán)境下,工作應(yīng)該選擇大廠還是小公司?已有幾年工作經(jīng)驗的老兵,又應(yīng)該如何保持和提升自身競爭力,轉(zhuǎn)被動為主動?

就目前大環(huán)境來看,跳槽成功的難度比往年高很多。一個明顯的感受:今年的面試,無論一面還是二面,都很考驗Java程序員的技術(shù)功底。

最近我整理了一份復(fù)習(xí)用的面試題及面試高頻的考點題及技術(shù)點梳理成一份“Java經(jīng)典面試問題(含答案解析).pdf和一份網(wǎng)上搜集的“Java程序員面試筆試真題庫.pdf”(實際上比預(yù)期多花了不少精力),包含分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、Jvm性能調(diào)優(yōu)、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多個知識點高級進(jìn)階干貨!

由于篇幅有限,為了方便大家觀看,這里以圖片的形式給大家展示部分的目錄和答案截圖!有需要的朋友可以直接點擊( 石墨文檔 )免費獲?。?/strong>

Java經(jīng)典面試問題(含答案解析)

阿里巴巴技術(shù)筆試心得

更多就不做展示了,這份Java高頻面試體系文檔是免費分享的,整理不易,有需要的朋友,直接點擊( 石墨文檔 )免費獲?。?/strong>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容