1. 程式人生 > 實用技巧 >位元組跳動來送人頭了,2020Java面經,你離高薪就只差一篇面試題了

位元組跳動來送人頭了,2020Java面經,你離高薪就只差一篇面試題了

前言

經歷了慘痛的春招與秋招之後,也積攢了一些面經,希望能對大家有所幫助。

其他

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

Java

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

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

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

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

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

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

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

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

  9. ExecutorService你⼀一般是怎麼⽤用的?是每個service放⼀一個還是⼀一個項⽬目 ⾥裡里⾯面放⼀一個?有什什麼好處?Spring

  10. 你有沒有⽤用過Spring的AOP? 是⽤用來⼲幹嘛的? ⼤大概會怎麼使⽤用?

  11. 如果⼀一個接⼝口有2個不不同的實現, 那麼怎麼來Autowire⼀一個指定的實現?

  12. Spring的宣告式事務 @Transaction註解⼀一般寫在什什麼位置? 丟擲了了異常 會⾃自動回滾嗎?有沒有辦法控制不不觸發回滾?

  13. 如果想在某個Bean⽣生成並裝配完畢後執⾏行行⾃自⼰己的邏輯,可以什什麼⽅方式實 現?

  14. SpringBoot沒有放到web容器器⾥裡里為什什麼能跑HTTP服務?

  15. SpringBoot中如果你想使⽤用⾃自定義的配置⽂檔案⽽而不不僅僅是 application.properties,應該怎麼弄弄?

  16. SpringMVC中RequestMapping可以指定GET, POST⽅方法麼?怎麼指定?

  17. SpringMVC如果希望把輸出的Object(例例如XXResult或者XXResponse)這 種包裝為JSON輸出, 應該怎麼處理理?

  18. 怎樣攔截SpringMVC的異常,然後做⾃自定義的處理理,⽐比如打⽇日誌或者包裝 成JSON

MySQL

  1. 如果有很多資料插⼊入MYSQL 你會選擇什什麼⽅方式?

  2. 如果查詢很慢,你會想到的第⼀一個⽅方式是什什麼?索引是⼲幹嘛的?

  3. 如果建了了⼀一個單列列索引,查詢的時候查出2列列,會⽤用到這個單列列索引嗎?

  4. 如果建了了⼀一個包含多個列列的索引,查詢的時候只⽤用了了第⼀一列列,能不不能⽤用上 這個索引?查三列列呢?

  5. 接上題,如果where條件後⾯面帶有⼀一個 i + 5 < 100 會使⽤用到這個索引嗎?

  6. 怎麼看是否⽤用到了了某個索引?

  7. like %aaa%會使⽤用索引嗎? like aaa%呢?

  8. drop、 truncate、 delete的區別?

  9. 平時你們是怎麼監控資料庫的? 慢SQL是怎麼排查的?

  10. 你們資料庫是否⽀支援emoji表情,如果不不⽀支援,如何操作?

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

Linux命令

新增Java學習:1037935907

  1. ⽇日誌特別⼤大隻想看最後100⾏行行怎麼弄弄? 如果想⼀一直看⽇日誌的持續輸出,⽤用 什什麼命令?

  2. 如果⽇日誌⼀一邊輸出,⼀一邊想實時看到有沒有某個關鍵字應該怎麼弄弄?

  3. grep如果忽略略⼤大⼩小寫應該怎麼弄弄? 正則表示式呢?

  4. vim往下⼀一⾏行行是什什麼鍵?往下30⾏行行呢? 跳到⽂檔案末尾⼀一⾏行行是什什麼? 跳回來 是什什麼? 向後搜尋是什什麼?

  5. 如果有個⽂文字⽂檔案,按空格作為列列的分隔符,如果想統計第三列列⾥裡里⾯面的每 個單詞的出現次數應該怎麼弄弄?

  6. 如果把上⾯面的出現次數排個序應該怎麼弄弄? 想按照數字本身的順序⽽而不不是 字串串的順序排列列怎麼弄弄?

  7. Linux環境變數量是以什什麼作為分隔符的?環境變數量通過什什麼命令設定?

  8. 給某個⽂檔案權設定限⽐比如設定為644 是⽤用什什麼命令?這個6是什什麼意思?

  9. Linux下⾯面如果想看某個程序的資源佔⽤用情況是怎麼看的?系統load⼤大概 指的什什麼意思?你們線上系統load⼀一般多少?如果⼀一個4核機器器,你認為多 少load是⽐比較正常的?top命令⾥裡里⾯面按⼀一下1會發⽣生什什麼?

  10. top命令⾥裡里⾯面,有時候所有程序的CPU使⽤用率加起來超過100%是怎麼回 事?

  11. 還有哪些檢視系統性能或者供你發現問題的命令?你⼀一般是看哪個參 數?

  12. 想看某個程序打開了了哪些⽹網路連線是什什麼命令?⾥裡里⾯面連線的狀態你⽐比較 關⼼心哪⼏幾種?

-- 偏題

  1. 有沒有做過Linux系統引數⽅方⾯面的優化,⼤大概優化過什什麼?

  2. 系統引數⾥裡里⾯面有個叫做backlog的可以⽤用來⼲幹什什麼?

  3. 檢視⽹網路連線發現好多TIME_WAIT 可能是什什麼原因?對你的應⽤用會有什什 麼影響?你會選擇什什麼樣的⽅方式來減少這些TIME_WAIT

  4. 可否介紹⼀一下TCP三次握⼿手的過程,如果現在有個⽹網路程式,你⽤用第三⽅方 的library來發送資料,你懷疑這個library傳送的資料有問題,那麼怎麼來驗 證?tcpdump匯出的⽂檔案你⼀一般是怎麼分析的?

  5. 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是⽤用來⼲幹什什麼的?

-- 運維

  1. Redis持久化⼤大概有⼏幾種⽅方式? aof和rdb的區別是什什麼? AOF有什什麼優缺 點嗎?

  2. Redis Replication的⼤大致流程是什什麼? bgsave這個命令的執⾏行行過程?

-- 偏題

  1. 如果有很多 KV資料要儲存到Redis, 但是記憶體不不⾜足, 通過什什麼⽅方式可以縮 減記憶體? 為什什麼這樣可以縮⼩小記憶體?

  2. Redis中List, HashTable都⽤用到了了ZipList, 為什什麼會選擇它? 監控、穩定性

  3. 業務⽇日誌是通過什什麼⽅方式來收集的?

  4. 線上機器器如何監控?採⽤用什什麼開源產品或者⾃自研的產品?它是分鐘級的還 是秒級的?

  5. 如果讓你來想辦法收集⼀一個JAVA後端應⽤用的效能資料,你會在意哪些⽅方 ⾯面? 你會選擇什什麼樣的⼯工具、思路路來收集?

  6. ⼀一般你調⽤用第三⽅方的時候會不不會監控調⽤用情況?

這裡只給大家展示了一部分題目,全部共1000+面試題,已經給大家整理好了,來看

由於字數限制需要答案的可以關注GZH【Java架構師聯盟】 免費領取完整版PDF