
前言
也許會有人感嘆某些人的運氣比較好,但是他們不曾知道對方吃過多少苦,受過多少委屈。某些時候就是需要我們用心去發(fā)現(xiàn)突破點,然后順勢而上,抓住機(jī)遇,那么你將會走向另外一條大道,成就另外一個全新的自我。
就目前大環(huán)境來看,面試的難度比往年高很多。一個明顯的感受:今年的面試,無論一面還是二面,都很考驗Java程序員的技術(shù)功底。
Java
- 多個線程同時讀寫,讀線程的數(shù)量遠(yuǎn)遠(yuǎn)?于寫線程,你認(rèn)為應(yīng)該如何解決并發(fā)的問題?你會選擇加什么樣的鎖?
- JAVA的AQS是否了解,它是?嘛的?
- 除了synchronized關(guān)鍵字之外,你是怎么來保障線程安全的?
- 什么時候需要加volatile關(guān)鍵字?它能保證線程安全嗎?
- 線程池內(nèi)的線程如果全部忙,提交?個新的任務(wù),會發(fā)?什么?隊列全部塞滿了之后,還是忙,再提交會發(fā)?什么?
- Tomcat本身的參數(shù)你?般會怎么調(diào)整?
- synchronized關(guān)鍵字鎖住的是什么東??在字節(jié)碼中是怎么表示的?在內(nèi)存中的對象上表現(xiàn)為什么?
- wait/notify/notifyAll?法需不需要被包含在synchronized塊中?這是為什么?
- ExecutorService你?般是怎么?的?是每個service放?個還是?個項???放?個?有什么好處?
Spring
- 你有沒有?過Spring的AOP? 是?來?嘛的? ?概會怎么使??
- 如果?個接?有2個不同的實現(xiàn), 那么怎么來Autowire?個指定的實現(xiàn)?
- Spring的聲明式事務(wù) @Transaction注解?般寫在什么位置? 拋出了異常會?動回滾嗎?有沒有辦法控制不觸發(fā)回滾?
- 如果想在某個Bean?成并裝配完畢后執(zhí)???的邏輯,可以什么?式實現(xiàn)?
- SpringBoot沒有放到web容器?為什么能跑HTTP服務(wù)?
- SpringBoot中如果你想使??定義的配置?件?不僅僅是application.properties,應(yīng)該怎么弄?
- SpringMVC中RequestMapping可以指定GET, POST?法么?怎么指定?
- SpringMVC如果希望把輸出的Object(例如XXResult或者XXResponse)這種包裝為JSON輸出, 應(yīng)該怎么處理?
- 怎樣攔截SpringMVC的異常,然后做?定義的處理,?如打?志或者包裝成JSON
MySQL
- 如果有很多數(shù)據(jù)插?MYSQL 你會選擇什么?式?
- 如果查詢很慢,你會想到的第?個?式是什么?索引是?嘛的?
- 如果建了?個單列索引,查詢的時候查出2列,會?到這個單列索引嗎?
- 如果建了?個包含多個列的索引,查詢的時候只?了第?列,能不能?上這個索引?查三列呢?
- 接上題,如果where條件后?帶有?個 i + 5 < 100 會使?到這個索引嗎?
- 怎么看是否?到了某個索引?
- like %aaa%會使?索引嗎? like aaa%呢?
- drop、truncate、delete的區(qū)別?
- 平時你們是怎么監(jiān)控數(shù)據(jù)庫的? 慢SQL是怎么排查的?
- 你們數(shù)據(jù)庫是否?持emoji表情,如果不?持,如何操作?
- 你們的數(shù)據(jù)庫單表數(shù)據(jù)量是多少??般多?的時候開始出現(xiàn)查詢性能急劇下降?
- 查詢死掉了,想要找出執(zhí)?的查詢進(jìn)程?什么命令?找出來之后?般你會?嘛?
- 讀寫分離是怎么做的?你認(rèn)為中間件會怎么來操作?這樣操作跟事務(wù)有什么關(guān)系?
- 分庫分表有沒有做過?線上的遷移過程是怎么樣的?如何確定數(shù)據(jù)是正確的?
JVM
- 你知道哪些或者你們線上使?什么GC策略? 它有什么優(yōu)勢,適?于什么場景?
- JAVA類加載器包括?種?它們之間的??關(guān)系是怎么樣的?雙親委派機(jī)制是什么意思?有什么好處?
- 如何?定義?個類加載器?你使?過哪些或者你在什么場景下需要?個?定義的類加載器嗎?
- 堆內(nèi)存設(shè)置的參數(shù)是什么?
- Perm Space中保存什么數(shù)據(jù)? 會引起OutOfMemory嗎?
- 做gc時,?個對象在內(nèi)存各個Space中被移動的順序是什么?
- 你有沒有遇到過OutOfMemory問題?你是怎么來處理這個問題的?處理過程中有哪些收獲?
- 1.8之后Perm Space有哪些變動? MetaSpace??默認(rèn)是?限的么? 還是你們會通過什么?式來指定???
- Jstack是?什么的? Jstat呢? 如果線上程序周期性地出現(xiàn)卡頓,你懷疑可能是gc導(dǎo)致的,你會怎么來排查這個問題?線程?志?般你會看其中的什么部分?
- StackOverFlow異常有沒有遇到過??般你猜測會在什么情況下被觸發(fā)?如何指定?個線程的堆棧????般你們寫多少?
Linux命令
- ?志特別?只想看最后100?怎么弄? 如果想?直看?志的持續(xù)輸出,?什么命令?
- 如果?志?邊輸出,?邊想實時看到有沒有某個關(guān)鍵字應(yīng)該怎么弄?
- grep如果忽略??寫應(yīng)該怎么弄? 正則表達(dá)式呢?
- vim往下??是什么鍵?往下30?呢? 跳到?件末尾??是什么? 跳回來是什么? 向后搜索是什么?
- 如果有個?本?件,按空格作為列的分隔符,如果想統(tǒng)計第三列??的每個單詞的出現(xiàn)次數(shù)應(yīng)該怎么弄?
- 如果把上?的出現(xiàn)次數(shù)排個序應(yīng)該怎么弄? 想按照數(shù)字本身的順序?不是字符串的順序排列怎么弄?
- Linux環(huán)境變量是以什么作為分隔符的?環(huán)境變量通過什么命令設(shè)置?
- 給某個?件權(quán)設(shè)置限?如設(shè)置為644 是?什么命令?這個6是什么意思?
- Linux下?如果想看某個進(jìn)程的資源占?情況是怎么看的?系統(tǒng)load?概指的什么意思?你們線上系統(tǒng)load?般多少?如果?個4核機(jī)器,你認(rèn)為多少load是?較正常的?top命令??按?下1會發(fā)?什么?
- top命令??,有時候所有進(jìn)程的CPU使?率加起來超過100%是怎么回事?
- 還有哪些查看系統(tǒng)性能或者供你發(fā)現(xiàn)問題的命令?你?般是看哪個參數(shù)?
- 想看某個進(jìn)程打開了哪些?絡(luò)連接是什么命令???連接的狀態(tài)你?較關(guān)?哪?種?
-- 偏題
- 有沒有做過Linux系統(tǒng)參數(shù)??的優(yōu)化,?概優(yōu)化過什么?
- 系統(tǒng)參數(shù)??有個叫做backlog的可以?來?什么?
- 查看?絡(luò)連接發(fā)現(xiàn)好多TIME_WAIT 可能是什么原因?對你的應(yīng)?會有什
么影響?你會選擇什么樣的?式來減少這些TIME_WAIT - 可否介紹?下TCP三次握?的過程,如果現(xiàn)在有個?絡(luò)程序,你?第三?
的library來發(fā)送數(shù)據(jù),你懷疑這個library發(fā)送的數(shù)據(jù)有問題,那么怎么來驗
證?tcpdump導(dǎo)出的?件你?般是怎么分析的? - KeepAlive是?來?什么的?這樣的好處是什么?
Redis
-- 開發(fā)
- 緩存穿透可以介紹?下么?你認(rèn)為應(yīng)該如何解決這個問題
- 你是怎么觸發(fā)緩存更新的?(?如設(shè)置超時時間(被動?式), ?如更新的時候主動update)?如果是被動的?式如何控制多個??同時觸發(fā)某個緩存更新?
- 你們?Redis來做什么?為什么不?其他的KV存儲例如Memcached,Cassandra等?
- 你們?什么Redis客戶端? Redis?性能的原因?概可以講?些?
- 你熟悉哪些Redis的數(shù)據(jù)結(jié)構(gòu)? zset是?什么的? 和set有什么區(qū)別?
- Redis的hash, 存儲和獲取的具體命令叫什么名字?
- LPOP和BLPOP的區(qū)別?
- Redis的有?些包含SCAN關(guān)鍵字的命令是?嘛的? SCAN返回的數(shù)據(jù)量是固定的嗎?
- Redis中的Lua有沒有使?過? 可以?來做什么? 為什么可以這么??
- Redis的Pipeline是?來?什么的?
-- 運維
- Redis持久化?概有?種?式? aof和rdb的區(qū)別是什么? AOF有什么優(yōu)缺點嗎?
- Redis Replication的?致流程是什么? bgsave這個命令的執(zhí)?過程?
-- 偏題
- 如果有很多 KV數(shù)據(jù)要存儲到Redis, 但是內(nèi)存不?, 通過什么?式可以縮減內(nèi)存? 為什么這樣可以縮?內(nèi)存?
- Redis中List, HashTable都?到了ZipList, 為什么會選擇它?
監(jiān)控、穩(wěn)定性
- 業(yè)務(wù)?志是通過什么?式來收集的?
- 線上機(jī)器如何監(jiān)控?采?什么開源產(chǎn)品或者?研的產(chǎn)品?它是分鐘級的還是秒級的?
- 如果讓你來想辦法收集?個JAVA后端應(yīng)?的性能數(shù)據(jù),你會在意哪些??? 你會選擇什么樣的?具、思路來收集?
- ?般你調(diào)?第三?的時候會不會監(jiān)控調(diào)?情況?
Mybatis
- mybatis 中 #{}和 ${}的區(qū)別是什么?
- mybatis 有幾種分頁方式?
- RowBounds 是一次性查詢?nèi)拷Y(jié)果嗎?為什么?
- mybatis 邏輯分頁和物理分頁的區(qū)別是什么?
- mybatis 是否支持延遲加載?延遲加載的原理是什么?
- 說一下 mybatis 的一級緩存和二級緩存?
- mybatis 和 hibernate 的區(qū)別有哪些?
- mybatis 有哪些執(zhí)行器(Executor)?
- mybatis 分頁插件的實現(xiàn)原理是什么?
- 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>