上周面试回来后写的Java面试总结,想进BAT必看
上周陪同之前一起工作的同事去面試(喬治,小袁,鵬飛(面試人)),第一站是去深圳,第二站上海,第三站杭州。面試什么公司我在這里就不多說了,你們知道是一線公司就行。其實(shí)本來真的沒打算寫這篇文章,主要是自己的記憶力不是很好,再者是最近好多人詢問2018年最新的面試題有點(diǎn)多,我實(shí)在回答不過來,而且怕為了避免重復(fù)回答,給自己省點(diǎn)力氣,干脆就在這里統(tǒng)一回復(fù)了。
說實(shí)話,雖作為陪同人,面試的時(shí)候我是不可以一同進(jìn)去面試的,鵬飛在面試完后出來也是憑借他模糊的記憶,來慢慢回憶當(dāng)時(shí)HR問的幾個(gè)問題,以下是我整理的一些面試題,雖然不是很完整,但差不多也是必問的幾個(gè)題目了(前言告訴大家,面試的答案我就不一個(gè)一個(gè)的寫出來了,畢竟等級(jí)的不同,回答時(shí)的答案也不同,這全靠大家自己慢慢領(lǐng)悟了)我能幫的也只有這么多了。以下便是面試題。
第一站:(深圳)
1.?多個(gè)線程同時(shí)讀寫,讀線程的數(shù)量遠(yuǎn)遠(yuǎn)?于寫線程,你認(rèn)為應(yīng)該如何解決 并發(fā)的問題?你會(huì)選擇加什么樣的鎖?
2.?JAVA的AQS是否了解,它是?嘛的?
3.?除了synchronized關(guān)鍵字之外,你是怎么來保障線程安全的?
4.?什么時(shí)候需要加volatile關(guān)鍵字?它能保證線程安全嗎?
5.?線程池內(nèi)的線程如果全部忙,提交?個(gè)新的任務(wù),會(huì)發(fā)?什么?隊(duì)列全部 塞滿了之后,還是忙,再提交會(huì)發(fā)?什么?
6.?Tomcat本身的參數(shù)你?般會(huì)怎么調(diào)整?
7.?synchronized關(guān)鍵字鎖住的是什么東??在字節(jié)碼中是怎么表示的?在內(nèi) 存中的對(duì)象上表現(xiàn)為什么?
8.?wait/notify/notifyAll?法需不需要被包含在synchronized塊中?這是為什 么?
9.?ExecutorService你?般是怎么?的?是每個(gè)service放?個(gè)還是?個(gè)項(xiàng)? ??放?個(gè)?有什么好處?
第二,第三站
Spring
1. 你有沒有?過Spring的AOP? 是?來?嘛的? ?概會(huì)怎么使??
2. 如果?個(gè)接?有2個(gè)不同的實(shí)現(xiàn), 那么怎么來Autowire?個(gè)指定的實(shí)現(xiàn)?
3. Spring的聲明式事務(wù) @Transaction注解?般寫在什么位置? 拋出了異常 會(huì)?動(dòng)回滾嗎?有沒有辦法控制不觸發(fā)回滾?
4. 如果想在某個(gè)Bean?成并裝配完畢后執(zhí)???的邏輯,可以什么?式實(shí) 現(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
10. 1.struts1和struts2的區(qū)別
11. .struts2和springMVC的區(qū)別
12. spring框架中需要引用哪些jar包,以及這些jar包的用途
13. springMVC的原理
14. springMVC注解的意思
15. spring中beanFactory和ApplicationContext的聯(lián)系和區(qū)別
16. spring注入的幾種方式
17. spring如何實(shí)現(xiàn)事物管理的
18. springIOC和AOP的原理
19. hibernate中的1級(jí)和2級(jí)緩存的使用方式以及區(qū)別原理
20. spring中循環(huán)注入的方式
MySQL
1. 如果有很多數(shù)據(jù)插?MYSQL 你會(huì)選擇什么?式?
2. 如果查詢很慢,你會(huì)想到的第?個(gè)?式是什么?索引是?嘛的?
3. 如果建了?個(gè)單列索引,查詢的時(shí)候查出2列,會(huì)?到這個(gè)單列索引嗎?
4. 如果建了?個(gè)包含多個(gè)列的索引,查詢的時(shí)候只?了第?列,能不能?上 這個(gè)索引?查三列呢?
5. 接上題,如果where條件后?帶有?個(gè) i + 5 < 100 會(huì)使?到這個(gè)索引嗎?
6. 怎么看是否?到了某個(gè)索引?
7. like %aaa%會(huì)使?索引嗎? like aaa%呢?
8. drop、truncate、delete的區(qū)別?
9. 平時(shí)你們是怎么監(jiān)控?cái)?shù)據(jù)庫的? 慢SQL是怎么排查的?
10. 你們數(shù)據(jù)庫是否?持emoji表情,如果不?持,如何操作?
11. 你們的數(shù)據(jù)庫單表數(shù)據(jù)量是多少??般多?的時(shí)候開始出現(xiàn)查詢性能急 劇下降?
12. 查詢死掉了,想要找出執(zhí)?的查詢進(jìn)程?什么命令?找出來之后?般你 會(huì)?嘛?
13. 讀寫分離是怎么做的?你認(rèn)為中間件會(huì)怎么來操作?這樣操作跟事務(wù)有 什么關(guān)系? 14. 分庫分表有沒有做過?線上的遷移過程是怎么樣的?如何確定數(shù)據(jù)是正 確的?
15. MySQL常用命令
16. 數(shù)據(jù)庫中事物的特征?
17.?JDBC的使用?
18. InnodB與MyISAM的區(qū)別
19. MySQL為什么使用B+樹作為索引?
JVM
1. 你知道哪些或者你們線上使?什么GC策略? 它有什么優(yōu)勢,適?于什么 場景?
2. JAVA類加載器包括?種?它們之間的??關(guān)系是怎么樣的?雙親委派機(jī) 制是什么意思?有什么好處?
3. 如何?定義?個(gè)類加載器?你使?過哪些或者你在什么場景下需要?個(gè)? 定義的類加載器嗎?
4. 堆內(nèi)存設(shè)置的參數(shù)是什么? 5. Perm Space中保存什么數(shù)據(jù)? 會(huì)引起OutOfMemory嗎? 6. 做gc時(shí),?個(gè)對(duì)象在內(nèi)存各個(gè)Space中被移動(dòng)的順序是什么?
7. 你有沒有遇到過OutOfMemory問題?你是怎么來處理這個(gè)問題的?處理 過程中有哪些收獲?
8. 1.8之后Perm Space有哪些變動(dòng)? MetaSpace??默認(rèn)是?限的么? 還是 你們會(huì)通過什么?式來指定???
9. Jstack是?什么的? Jstat呢? 如果線上程序周期性地出現(xiàn)卡頓,你懷疑可 能是gc導(dǎo)致的,你會(huì)怎么來排查這個(gè)問題?線程?志?般你會(huì)看其中的什么 部分?
10. StackOverFlow異常有沒有遇到過??般你猜測會(huì)在什么情況下被觸 發(fā)?如何指定?個(gè)線程的堆棧????般你們寫多少?
多線程
1) 什么是線程?
2) 線程和進(jìn)程有什么區(qū)別?
3) 如何在Java中實(shí)現(xiàn)線程?
4) 用Runnable還是Thread?
6) Thread 類中的start() 和 run() 方法有什么區(qū)別?
7) Java中CyclicBarrier 和 CountDownLatch有什么不同?
8) Java中的volatile 變量是什么?
9) Java中的同步集合與并發(fā)集合有什么區(qū)別?
10) 如何避免死鎖?
11) Java中活鎖和死鎖有什么區(qū)別?
12) Java中synchronized 和 ReentrantLock 有什么不同?
13) Java中ConcurrentHashMap的并發(fā)度是什么?
14) 如何在Java中創(chuàng)建Immutable對(duì)象?
15) 單例模式的雙檢鎖是什么?
16) 寫出3條你遵循的多線程最佳實(shí)踐
17) 如何避免死鎖?
18. 常用的線程池模式以及不同線程池的使用場景
Netty
1.BIO、NIO和AIO的區(qū)別?
2.NIO的組成?
3.Netty的特點(diǎn)?
4.Netty的線程模型?
5.TCP 粘包/拆包的原因及解決方法?
6.了解哪幾種序列化協(xié)議?
7.如何選擇序列化協(xié)議?
8.Netty的零拷貝實(shí)現(xiàn)?
9.Netty的高性能表現(xiàn)在哪些方面?
10.NIOEventLoopGroup源碼?
Redis
1.Redis與Memorycache的區(qū)別?
2.Redis的五種數(shù)據(jù)結(jié)構(gòu)?
3.漸進(jìn)式rehash過程?
4.rehash源碼?
5.持久化機(jī)制
6.reaof源碼?
7.事務(wù)與事件
8.主從復(fù)制
9.啟動(dòng)過程
10.集群
11.Redis的6種數(shù)據(jù)淘汰策略
12.redis的并發(fā)競爭問題?
Hadoop
1.HDFS的特點(diǎn)?
2.客戶端從HDFS中讀寫數(shù)據(jù)過程?
3.HDFS的文件目錄結(jié)構(gòu)?
4.NameNode的內(nèi)存結(jié)構(gòu)?
5.NameNode的重啟優(yōu)化?
6.Git的使用?
7.Maven的使用
好了,到這里面試題差不多已經(jīng)寫完了,如果以上的面試題題目你已經(jīng)全部理解,全部能回答出來了,那么我可以在這里告訴你,你牛批,我服。
如果以上題目還不會(huì)的,還回答不上來的,那么你可以跟著我的腳步,我來介紹一下我總結(jié)出來的幾大體系。
以下就是我總結(jié)出來的幾大體系圖:
一、源碼分析
二、分布式架構(gòu)
三、微服務(wù)
四、性能優(yōu)化
五、Java工程化
總結(jié):
以上就是我要說的寫的內(nèi)容,希望以上的內(nèi)容可以幫助到正在默默艱辛,遇到瓶疾且不知道怎么辦的Java程序員們,我能幫你的只有這么多了,面試題已經(jīng)總結(jié)完了,我能幫的,也只有這么多了,希望大家在往后的工作與面試中,一切順利。
我有一個(gè)微信公眾號(hào),經(jīng)常會(huì)分享一些Java技術(shù)相關(guān)的干貨;如果你喜歡我的分享,可以用微信搜索“Java團(tuán)長”或者“javatuanzhang”關(guān)注。
轉(zhuǎn)載于:https://www.cnblogs.com/java1024/p/8872851.html
總結(jié)
以上是生活随笔為你收集整理的上周面试回来后写的Java面试总结,想进BAT必看的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十年老站吐血迁移实录
- 下一篇: 常用的 Java 工具类之 Apache