大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 經(jīng)典初級Java工程師面試題

經(jīng)典初級Java工程師面試題

更新時間:2020-03-23 10:34:59 來源:動力節(jié)點 瀏覽2276次


  HashMap相關(guān)


  HashMap一直是經(jīng)典的面試題,所有面試官都喜歡問他,因為它可以牽扯出非常多的知識點,而面試者到底能了解到何種程度,則一定程度反映其綜合能力。


  細節(jié)聊擴容因子LoadFactor=0.75,初始大小InitailCapacity=16


  縱向聊其底層實現(xiàn),數(shù)據(jù)結(jié)構(gòu)是數(shù)組+鏈表,提到j(luò)dk1.8之后對鏈表節(jié)點到達8之后轉(zhuǎn)換為紅黑樹加分。繼續(xù)追問的話便是引申出常用的數(shù)據(jù)結(jié)構(gòu):隊列,棧,樹,圖。


  橫向聊線程安全,HashMap為線程不安全,一般問多線程操作會導(dǎo)致其死循環(huán)的原因。與線程安全的ConcurrentHashMap對比,又擴展到ConcurrentHashMap的實現(xiàn)。繼續(xù)追問的話便是引申出線程安全的定義,問一些常用的并發(fā)容器,考察面試者對java.util.concurrent包的掌握情況。那么至少可以牽扯出如下的問題:


  ConcurrentHashMap相關(guān)


  面試者可以先說歷史,1.8之前采用分段鎖,核心就是一句話:盡量降低同步鎖的粒度。1.8之后使用CAS思想代替冗雜的分段鎖實現(xiàn)。不出意料,面試者答出CAS之后必定會被追問其思想以及應(yīng)用,換做我自己的話會有如下思路作答:CAS采用樂觀鎖思想達到lockfree,提一下sun.misc.Unsafe中的native方法,至于CAS的其他應(yīng)用可以聊一聊Atomic原子類和一些無鎖并發(fā)框架(如Amino),提到ABA問題加分。


  線程安全與鎖


  線程安全這個詞也是面試的高頻詞,說完上面的并發(fā)容器,回頭說一說線程安全的定義,按照周志明大大的話回答私以為是極好的:


  當(dāng)多個線程訪問某個類時,不管運行時環(huán)境采用何種調(diào)度方式或者這些線程將如何交替進行,并且在主調(diào)代碼中不需要任何額外的同步或協(xié)同,這個類都能表現(xiàn)出正確的行為,那么稱這個類是線程安全的


  通常與鎖一起出現(xiàn):除了synchronized之外,還經(jīng)常被問起的是juc中的Lock接口,其具體實現(xiàn)主要有兩種:可重入鎖,讀寫鎖。這些都沒問題的話,還會被詢問到分布式下的同步鎖,一般借助于中間件實現(xiàn),如Redis,Zookeeper等,開源的Redis分布式鎖實現(xiàn)有Redisson,回答注意點有兩點:一是注意鎖的可重入性(借助于線程編號),二是鎖的粒度問題。除此之外就是一些juc的常用工具類如:CountdownLatch,CyclicBarrir,信號量


  線程


  創(chuàng)建線程有幾種方式:這個時候應(yīng)該毫不猶豫的回答1種。面試官會有些驚訝于你的回答,因為似乎他已經(jīng)習(xí)慣了聽到Thread和Runnable2種方式的“標準答案”。其實,仔細審題會發(fā)現(xiàn),java創(chuàng)建線程只有一種方式:Thread。Runnable是代表任務(wù),無論是Callable,Runnable,ThreadPool,最終都是Thread,所以2種的回答一定是錯誤的。


  設(shè)計模式


  如經(jīng)典的單例模式。當(dāng)被問到單例模式時,私以為在有準備的前提下,回答使用雙檢鎖的方式實現(xiàn)可以很好地誘導(dǎo)面試官。雙檢鎖實現(xiàn)線程安全的單例模式有兩塊注意點:1鎖的粒度問題2靜態(tài)變量需要被volatile修飾。前者已經(jīng)被上文提過,重點是后者,必定會誘導(dǎo)面試官繼續(xù)詢問你有關(guān)volatile原則的問題,無非是happens-before原則或者JMM(java內(nèi)存模型)相關(guān)。前者只需要熟記幾條關(guān)鍵性的原則即可,而后者回答的重點便是需要提到主存與工作內(nèi)存的關(guān)系。


  工廠模式,觀察者模式,模板方法模式,策略模式,職責(zé)鏈模式等等,通常會結(jié)合Spring和UML類圖提問。


  JVM相關(guān)


  說實話,我自己對JVM的掌握幾乎完全來自于《深入理解java虛擬機》,加上一點點線上的經(jīng)驗。初級崗位常問的問題也是固定的那么幾個。


  內(nèi)存分區(qū):主要就是堆和棧,嚴謹點回答可以答方法區(qū),虛擬機棧,本地方法棧,堆,程序計數(shù)器。聊一聊Hotspot在jdk1.7中將常量池移到了堆中,jdk1.8移除永久代用MetaSpace代替起碼可以佐證:你喜歡在一些JAVA群里面吹水。


  垃圾回收算法:新生代由于對象朝生夕死使用標記-清除(or標記-整理)算法,老年代生命力強使用復(fù)制算法。提到一句分代收集即可。


  垃圾回收器一兩個名字還是得叫的上來:Serial,Parallel,CMS,G1...


  如何判斷一個對象可以被回收:引用計數(shù)(可以提到Netty中的使用案例),可達性分析(JVM使用)


  IO相關(guān)


  bio,nio區(qū)別要熟知,了解nio中的ByteBuffer,Selector,Channel可以幫助面試者度過不少難關(guān)。幾乎提到nio必定會問netty,其實我分析了一下,問這個的面試官自己也不一定會,但就是有人喜歡問,所以咱們適當(dāng)應(yīng)付一下就好:一個封裝很好擴展很好的nio框架,常用于RPC框架之間的傳輸層通信。


  反射


  聊一聊你對JAVA中反射的理解:運行時操作一個類的神器,可以獲取構(gòu)造器,方法,成員變量,參數(shù)化類型...使用案例如Hibernate,BeanUtils。


  動態(tài)代理


  jdk動態(tài)代理和cglib動態(tài)代理的區(qū)別:前者需要實現(xiàn)一個接口,后者不需要;前者依賴于jdk提供的InvocationHandler,后者依賴于字節(jié)碼技術(shù);前者我還能寫一些代碼,后者完全不會。大概就這些差別了。


經(jīng)典初級Java工程師面試題


    以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“經(jīng)典初級Java工程師面試題”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产精品免费视频一区一 | 中文字幕在线一区二区在线 | 国产成人高清精品免费观看 | 日本免费一区二区三区中文 | 四虎影视在线影院4hu | 久久成年视频 | 国产精自产拍久久久久久蜜 | 自拍视频精品 | 99在线观看国产 | 日本一级在线播放线观看免 | 欧美一级片网址 | 久久久久久亚洲精品中文字幕 | 香蕉成人影院 | 热99精品在线 | 91麻豆精品一二三区在线 | 免费观看呢日本天堂视频 | 久久天天躁狠狠躁夜夜躁综合 | 激情综合五月网 | 免费一级a毛片 | 午夜欧美在线 | 成人免费黄色小视频 | 性大交 | 日韩欧美~中文字幕 | 欧美kkk4444在线观看 | 国产剧情自拍 | 黄页网址大全免费观看美女 | 天天操综 | 成在线人免费视频一区二区三区 | 四虎网址在线观看 | 欧美亚洲日本在线 | 国产香蕉98碰碰久久人人 | 99在线观看精品视频 | 久久国产成人亚洲精品影院老金 | 午夜国产福利视频 | 亚洲国产一区二区三区四区 | 无套嗨操| 九九久久久久久久爱 | 国产91精品一区二区麻豆网站 | 久草视频免费在线播放 | 日本中文字幕在线看 | 久久亚洲精选 |