百度Java面試題--摘錄+總結(jié)

基本概念

1.操作系統(tǒng)中heap和stack的區(qū)別。

2.什么是對象/關(guān)系映射集成模塊?

3.什么是Java的反射機制?

4.什么是ACID?

5.B/S和C/S的聯(lián)系與區(qū)別?

6.cookie和session的區(qū)別?

7.interface與抽象類的區(qū)別.

8.IOC的優(yōu)點是什么?

9.IO和NIO的區(qū)別,NIO的優(yōu)點.

10.Java8/Java/7為我們提供了什么新功能?

11.什么是競態(tài)條件?舉個例子說明。

12.JRE,JDK,JVM,JIT之間有什么不同?

13.MVC的各個部分都有哪些技術(shù)來實現(xiàn)?如何實現(xiàn)?

14.RPC通信與RMI的區(qū)別。

15.什么是web service?

16.JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI、WSDL的解釋。

17.web容器主要有哪些功能?并請列出一些常見的web容器的名字。

18.一個“.java”源文件中是否可以包含多個類?有什么限制?

19.簡單說說你了解的類加載器。是否實現(xiàn)過類似的類加載器?

20.解釋一下什么叫AOP?

21.請簡述一下servlet的生命周期及相關(guān)的方法。

22.請簡述一下ajax的原理及實現(xiàn)步驟。

23.簡單描述Struts的主要功能。

24.什么是N層架構(gòu)?

25.什么是CORBA?用途是什么?

26.什么是Java虛擬機?為什么Java被稱為“平臺無關(guān)的編程語言”?

27.什么是正則表達式?用途是什么?哪個包使用正則表達式來實現(xiàn)模式匹配?

28.什么是懶加載?

29.什么是尾遞歸,為什么需要尾遞歸?

30.什么是控制反轉(zhuǎn)與依賴注入?


關(guān)鍵字

finalize

31.什么是finalize()方法?

32.finalize()方法什么時候被調(diào)用?

33.析構(gòu)函數(shù)的目的是什么?

34.final和finalize的區(qū)別是什么?


final

35.final關(guān)鍵字有哪些用法?

36.final與static關(guān)鍵字可以用于哪里?它們的作用是什么?

37.final,finalize,finally的區(qū)別。

38.能否在運行時向static final類型的賦值?

39.使用final關(guān)鍵字修飾一個變量時,是引用不能變還是引用的對象不能變?

40.一個類被聲明為final類型,表示了什么意思?

41.throws,throw,try,catch,finally分別代表了什么意思?

42.Java有幾種修飾符,分別用來修飾什么?


volatile

43.volatile修飾符有過什么實踐?

44.volatile變量時什么?volatile變量和atomic變量有什么不同?

45.volatile類型變量提供什么保證?能使得一個非原子操作編程原子操作嗎?

46.能創(chuàng)建volatile數(shù)組嗎?

47.transient變量有什么特點?

48.super什么時候使用?

49.public static void 寫成 static public void 會怎么樣?

50.說明一下public static void main(String args[])這段聲明里每個關(guān)鍵字的作用。

51.請說出作用域public ,private,protected,以及不寫時的區(qū)別?

52.sizeof是Java的關(guān)鍵字嗎?


static

53.static class與non static class的區(qū)別。

54.static關(guān)鍵字是什么意思?Java中是否可以覆蓋一個private或者是static的方法?

55.靜態(tài)類型有什么特點

56.main()方法為什么必須是靜態(tài)的?能不能聲明main()方法為非靜態(tài)?

57.是否可以從一個靜態(tài)方法內(nèi)部發(fā)出對非靜態(tài)方法的調(diào)用?

58.靜態(tài)變量在什么時候加載?編譯期還是運行期?靜態(tài)代碼塊加載的時機呢?

59.成員方法是否可以訪問靜態(tài)變量?為什么靜態(tài)方法不能訪問成員變量?


switch

60.switch語句中的表達式可以是什么類型數(shù)據(jù)?

61.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?

62.while循環(huán)和do循環(huán)有什么不同?


操作符

63.&操作符和&&操作符的區(qū)別?

64.a=a+b和a+=b的區(qū)別?

65.邏輯操作符與條件操作符的區(qū)別。

66.3*0.1 == 0.3將會返回什么?

67.float f=3.4;是否正確?

68.short s1=1;s1=s1+1;有什么關(guān)聯(lián)?


數(shù)據(jù)結(jié)構(gòu)

69.基礎(chǔ)類型.

70.基礎(chǔ)類型與封裝類型的區(qū)別在哪里?

71.簡述九種基本數(shù)據(jù)類型的大小,以及他們的封裝類。

72.int和integer哪個會占用更多的內(nèi)存?int和integer的區(qū)別?parseInt()函數(shù)再什么時候使用?

73.float和double的默認(rèn)值是多少?

74.如何去小數(shù)四舍五入保留小數(shù)點后兩位?

75.char型變量中能不能存儲一個中文漢字,為什么?


類型轉(zhuǎn)換

76.怎樣將bytes轉(zhuǎn)換為long類型?

77.怎么將byte轉(zhuǎn)換為String?

78.如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字?

79.我們能講int 強轉(zhuǎn)成byte類型的變量嗎?如果該值大于byte類型的范圍,將會出現(xiàn)什么現(xiàn)象?

80.能在不進行強轉(zhuǎn)的情況下講一個double值賦值給long類型的變量嗎?

81.類型向下轉(zhuǎn)換是什么?


數(shù)組

82.如何權(quán)衡是使用無序的數(shù)組還是有序的數(shù)組?

83.怎么判斷數(shù)組是為null還是空?

84.怎么打印數(shù)組?怎么打印數(shù)組中的重復(fù)元素?

85.Array和ArrayList有什么區(qū)別?什么時候該使用Array而不是ArrayList?

86.數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)描述,各自的時間復(fù)雜度。

87.數(shù)組有沒有l(wèi)ength()這個方法?String有沒有l(wèi)ength()這個方法?


隊列

88.隊列和棧的定義,列出它們的區(qū)別.?

89.BlockingQueue是什么?

90.簡述ConcurrentLinkedQueu,LinkedBlockingQueue的用處和不同之處。

91.ArrayList,Vector,LinkedList的存儲性能和特性。


String

92.StringBuffer。

93.ByteBuffer與StringBuffer有什么區(qū)別?

94.HashMap。

95.HashMap的工作原理是什么?內(nèi)部的數(shù)據(jù)結(jié)構(gòu)是什么?

96.HashMap的table的容量如何確定?loadFactor是什么?該變量如何變化?這種變化會帶來什么問題?

97.HashMap實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)是什么?如何實現(xiàn)?

98.HashMap,HashTable,ConcurrentHashMap的區(qū)別。

99.HashMap的遍歷方式及效率。

100.HashMap,LinkedMap,TreeMap的區(qū)別。

101.如何決定選用HashMap還是TreeMap?

102.如果HashMap的大小超過了負(fù)載因子定義的容量,怎么辦?

103.HashMap是線程安全的嗎?并發(fā)下使用的Map是什么,我們內(nèi)部原理分別是什么,比如存儲方式,hashcode,擴容,默認(rèn)容量等。


HashSet

104.HashSet和TreeSet有什么區(qū)別?

105.HashSet內(nèi)部是如何工作的?

106.WeakHashMap是怎么工作的?


Set

107.Set里元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否?是用==還是equals()

它們有什么區(qū)別?

108.TreeMap是采用什么樹來實現(xiàn)的?TreeMap,HashMap,LingkedHashMap的區(qū)別。

TreeMap和TreeSet在排序時如何比較元素?Collections工具類中的sort()方法如何比較元素。

109.一個已經(jīng)構(gòu)建好的TreeSet怎么完成倒排序?

110.EnumSet是什么?


Hash算法

111.HashCode的作用。

112.簡述一致性Hash算法。

113.有沒有可能兩個不相等的對象有相同的hashcode?當(dāng)兩個對象hashcode相同怎么辦?如何獲取值對象?

114.為什么在重寫euqals方法的時候需要重寫hashcode方法?equals與hashcode的異同點在哪里?

115.a.hashCode()有什么用?與a.equals(b)有什么關(guān)系?

116.hashCode()和equals()方法的重要性體現(xiàn)在什么地方?

117.obj有哪些公用方法?obj類hashcode,equals設(shè)計原則?sun為什么這么設(shè)計?obj類的概述。

118.如何在父類中為子類自動完成所有的hashcode和equals實現(xiàn)?這么做有何優(yōu)劣?

119.可以在hashcode()中使用隨機數(shù)字嗎?

120.LingkedHashMap。

121.LingkedHashMap和PriorityQueue的區(qū)別是什么?


List

122.List,Set,Map三個接口,存取元素時各有什么特點?

123.List,Set,Map三個接口是否繼承自Collection接口?

124.遍歷一個list有哪些不同的方式?


LinkedList

125.LinkedList是單項鏈表還是雙向鏈表?

126.LinkedList與ArrayList有什么區(qū)別?

127.描述一下Java中集合(Collection),接口(Interface),實現(xiàn)(Implementations)的概念。

128.插入數(shù)據(jù)時,ArrayList,LinkedList,Vector誰速度較快?


ArrayList

129.ArrayList和HashMap的默認(rèn)大小是多少?

130.ArrayList,LinkedList的區(qū)別,什么時候用ArrayList?

131.ArrayList和Set的區(qū)別。

132.ArrayList,LinkedList,Vector的區(qū)別。

133.ArrayList是如何實現(xiàn)的?

134.ArrayList如何實現(xiàn)擴容?

135.Array和ArrayList有什么區(qū)別?什么時候更適合用Array?

136.說出ArrayList,LinkedList,Vector的存儲性能和特性。


Map

137.Map,Set,List,Queue,Stack。

138.Map接口提供了哪些不同的集合視圖?

139.為什么map接口不繼承Collection接口?


Collections

140.介紹Java中的Collection FrameWork。集合類框架的基本接口有哪些?

141.Collections類是什么?Collection和Collections的區(qū)別?Collection、Map的實現(xiàn)。

142.集合類框架的最佳實踐有哪些?

143.為什么Collection不從Cloneable和Serialize接口繼承?

144.說出幾點Java中使用Collection的最佳實踐。

145.Collections中遺留類(HashTable,Vector)和現(xiàn)有類的區(qū)別。

146.什么是B+樹,B-樹,列出實際的使用場景。


接口

147.Comparator與Comparable接口是干什么的?列出他們的區(qū)別。


對象

148.拷貝(clone)。

149.如何實現(xiàn)對象克隆?

150.深拷貝和淺拷貝的區(qū)別?

151.深拷貝和淺拷貝如何實現(xiàn)激活機制?

152.寫clone()方法時,通常都有一行代碼,是什么?


比較

153.在比較對象時,“==”運算符和equals運算有何區(qū)別?

154.如果要重寫一個對象的equals方法,還要考慮什么?

155.兩個對象值相同(x.equals(y)==true),但卻可以有不同的hashcode,這句話對不對?


構(gòu)造器

156.構(gòu)造器鏈?zhǔn)鞘裁矗?/p>

157.創(chuàng)建對象時構(gòu)造器的調(diào)用順序。

158.不可變對象。

159.什么是不可變對象?

160.為什么Java中的String是不可變的?

161.如何構(gòu)建不可變的的類結(jié)構(gòu)?關(guān)鍵點在哪里?

162.能創(chuàng)建一個包含可變對象的不可變對象嗎?

163.如何對一組對象進行排序?


方法

164.構(gòu)造器(constructor)是否可以被重寫?

165.方法可以同時既是static又是synchronized的嗎?

166.abstract的method是否可以同時既是static,是否可以同時是native,是否可以同時是synchronized?

167.Java中支持哪種參數(shù)傳遞類型?

168.一個對象被當(dāng)做參數(shù)傳遞到一個方法,是值傳遞還是引用傳遞?

169.當(dāng)一個對象被當(dāng)做參數(shù)傳遞到一個方法后,此方法可以改變這個對象的屬性,并可以返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞

170.我們能否重載main()方法?

171.如果main方法被聲明為private會怎么樣?


GC概念

172.GC是什么?為什么有GC?

173.什么時候會導(dǎo)致垃圾回收?

174.GC是怎么樣運行的?

175.新老以及永久區(qū)是什么?

176.GC有幾種方式?怎么配置?

177.什么時候一個對象會被GC?如何判斷一個對象是否存活?

178.System.gc() Runtime.gc()會做什么事情?能保證GC執(zhí)行嗎?

179.垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法可以主動通知虛擬機進行垃圾回收?

180.Minor GC,Major GC,Young GC,Full GC分別發(fā)生在什么時候?

181.垃圾回收算法的實現(xiàn)原理。

182.如果對象的引用被置為null,垃圾收集器是否會立即對釋放對象占用內(nèi)存?

183.垃圾回收的最佳做法是什么?

184.GC收集器有哪些?

185.串行收集器和吞吐量收集器的區(qū)別是什么?

186.Serial與Parallel GC之間的不同之處?

187.CMS收集器與G1收集器的特點與區(qū)別?

188.CMS垃圾回收器的工作過程。

189.JVM中一次完整的GC流程是怎么樣的?對象如何晉升到老年代?

190.吞吐量優(yōu)先和響應(yīng)優(yōu)先的垃圾收集器選擇。

191.GC策略。

192.舉個實際的場景,選擇一個GC策略。

193.JVM的永久代中會發(fā)生垃圾回收嗎?


收集方法

194.標(biāo)記清除,標(biāo)記整理,復(fù)制算法的原理與特點?分別用在什么地方?

195.如果讓你優(yōu)化收集方法,有什么思路?


JVM參數(shù)

196.說說你知道的幾種主要的JVM參數(shù)。

197.-XX:+UseCompressedOops有什么作用?

198.類加載器。

199.Java類加載器都有哪些?

200.JVM如何加載字節(jié)碼文件?


內(nèi)存管理

201.JVM內(nèi)存分哪個區(qū),每個區(qū)的作用是什么?

202.一個對象從創(chuàng)建到銷毀都是怎么在這些部分里存活和轉(zhuǎn)移的。

203.解釋內(nèi)存中的棧、堆和方法區(qū)的用法。

204.JVM中哪個參數(shù)是用來控制線程的堆棧大小?

205.簡述內(nèi)存分配與內(nèi)存回收策略。

206.簡述重排序,內(nèi)存屏障,happen-before,主內(nèi)存,工作內(nèi)存。

207.Java中存在內(nèi)存泄露問題么?請舉例說明。

208.簡述Java中軟引用,弱引用和虛引用。

209.內(nèi)存映射緩存區(qū)是什么?

210.jstack,jstat,tmap,jconsole怎么用?

211.32位JVM和64位JVM的最大內(nèi)存分別是多少?32位和64位的NVM,int類型變量長度是多少?

212.怎樣通過Java程序來判斷JVM是32位還是64位?

213.JVM自身會維護緩存嗎?是不是在堆中進行對象分配,操作系統(tǒng)的堆還是JVM自己管理堆?

214.什么情況下回發(fā)生棧內(nèi)存溢出?

215.雙親委派模型是什么?


多線程

216.什么是線程?

217.多線程的優(yōu)點。

218.多線程的幾種實現(xiàn)方式。

219.用Runnable還是Thread。

220.什么是線程安全?

221.Vector,SimpleDateFormat是線程安全類?

222.什么Java原型不是線程安全的?

223.哪些集合類是線程安全的?

224.多線程的忙循環(huán)是什么?

225.如何創(chuàng)建一個線程?

226.編寫多線程程序有幾種實現(xiàn)方式?

227.什么線程局部變量?

228.線程和進程有什么區(qū)別?進程間如何通訊,線程間如何通訊?

229.什么是多線程環(huán)境下的偽共享?

230.同步和異步有何異同,在什么情況下分別使用他們?舉例說明。


Current

231.ConcurrentHashMap和HashTable的區(qū)別。

232.ArrayBlockingQueue,CountDownLatch的用法。

233.ConcurrentHashMap的并發(fā)度是什么。

234.CyclicBarrier和CountDownLatch有什么不同?各自的內(nèi)部原理和用法。

235.Semaphore的用法。


Thread

236.啟動一個線程是調(diào)用run()還是start()方法?start()和run()方法有什么區(qū)別?

237.調(diào)用start()方法是會執(zhí)行run方法,為什么不能直接調(diào)用run方法?

238.sleep()方法和對象的wait()方法都可以讓線程暫停執(zhí)行,他們有什么區(qū)別?

239.yield方法有什么作用?sleep()方法和yield()方法有什么區(qū)別?

240.Java中如何停止一個線程。

241.stop()和suspend()方法為何不推薦使用?

242.如何在兩個線程間共享數(shù)據(jù)?

243.如何強制啟動一個線程?

244.如何讓正在運行的線程暫停一段時間?

245.什么是線程組,為什么在Java中不推薦使用?

246.你是如何調(diào)用wait方法的使用if塊還是循環(huán)?


生命周期

247.有哪些不同的線程生命周期?

248.線程狀態(tài),BLOCKED和WAITING有什么區(qū)別?

249.畫一個線程的生命周期狀態(tài)圖。

250.ThreadLocal用途是什么,原理是什么,用的時候要注意什么?


ThreadPool

251.線程池是什么?為什么要使用它?

252.如何創(chuàng)建一個Java線程池?

253.ThreadPool用法與優(yōu)勢。

254.提交任務(wù)時,線程池隊列已滿時會發(fā)什么?

255.newCache和newFixed有什么區(qū)別?簡述原理。搞糟函數(shù)的各個參數(shù)的含義是什么?

256.線程池的實現(xiàn)策略。

257.線程池的關(guān)閉方式有幾種,各自的區(qū)別是什么?

258.線程池中submit()和execute()方法有什么區(qū)別?


線程調(diào)度

259.Java中用到的線程調(diào)度算法是什么?

260.什么是多線程中的上下文切換?

261.你對線程優(yōu)先級的理解是什么?

262.什么是線程調(diào)度器和時間分片?


線程同步

263.請說出你所指的線程同步的方法。

264.synchronized的原理是什么?

265.synchronized和ReentrantLock有什么不同?

266.什么場景下可以使用volatile替換synchronized?

267.有T1,T2,T3三個線程,怎么確保它們按順序執(zhí)行?怎么保證T2在T1執(zhí)行完后執(zhí)行,T3在T2執(zhí)行完后執(zhí)行。

268.同步快內(nèi)的線程拋出異常會發(fā)生什么。

269.當(dāng)一個線程進入一個對象的synchronized方法A之后,其他線程是否可以進入此對象的synchronized方法B?

270.使用synchronized修飾靜態(tài)方法和非靜態(tài)方法有什么區(qū)別?

271.如何從給定集合那里創(chuàng)建一個synchronized的集合?


272.Java Concurrency API中的Lock接口是什么?對比同步它有什么優(yōu)勢?

273.Lock與Synchronized的區(qū)別?Lock比synchronized塊的優(yōu)勢是什么?

274.ReadWriteLock是什么?

275.什么是樂觀鎖?如何實現(xiàn)樂觀鎖?如何避免ABA問題?

276.解釋一下名詞:重排序,自旋鎖,偏向鎖,輕量級鎖,可重入鎖,公平鎖,非公平鎖,樂觀鎖,悲觀鎖。

277.什么時候應(yīng)該使用可重入鎖?

278.簡述鎖的等級方法鎖,對象鎖,類鎖。

279.Java中死鎖和活鎖的區(qū)別?

280.什么是死鎖?導(dǎo)致線程死鎖的原因?如何確保N個線程可以訪問N個資源同時又不會導(dǎo)致死鎖?

281.死鎖與活鎖的區(qū)別。死鎖與饑餓的區(qū)別?

282.怎么檢測一個線程是否擁有鎖?

283.如何實現(xiàn)分布式鎖?

284.讀寫所可以用于什么應(yīng)用場景?

285.有哪些無鎖數(shù)據(jù)結(jié)構(gòu),他們實現(xiàn)的原理是什么?

286.Executors類是什么?Executor和Executors的區(qū)別?

287.什么是Java線程轉(zhuǎn)儲,如何得到它?

288.如何在Java中獲取線程堆棧?

289.說出3條在Java中使用線程的最佳實踐。

290.在線程中你怎么處理不可捕捉異常?

291.實際項目中使用多線程舉例。你在多線程環(huán)境中遇到的常見的問題是什么?你是怎么解決它的?

292..請說出與線程同步以及線程調(diào)度相關(guān)的方法?

293.程序中有3個socket,需要多少個線程來處理?

294.假如有一個第三方接口,有很多個線程去調(diào)用獲取數(shù)據(jù),現(xiàn)在規(guī)定每秒鐘最多有10個線程同時調(diào)用它,如何做到?

295.如何在windows和Linux上查找哪個線程使用的CPU時間最長?

296.如何確保main()方法所在的線程是Java程序最后結(jié)束的線程?

297.非常多個線程(可能是不同機器),相互之間需要等待協(xié)調(diào)才能完成某種工作,問怎么設(shè)計這種協(xié)調(diào)方案。

298.你需要實現(xiàn)一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎么樣去實現(xiàn)它?


異常

299.Error和Exception的區(qū)別?

300.UnsupportedOperationException是什么?

301.NullPointerException和ArrayIndexOutOfBoundException之間有什么相同之處?

302.什么是受檢查的異常,什么是運行時異常?

303.運行時異常和一般異常有何異同?

304.簡述一個你最常見的runtime exception。


finally

305.finally關(guān)鍵字在異常處理中如何使用?

306.如果執(zhí)行finally代碼塊之前方法返回了結(jié)果,或者JVM退出了,finally塊中的代碼還會執(zhí)行嗎?

307.try里有return,finally還執(zhí)行嗎》那么緊跟在這個try后的finally{}里的代碼會不會唄執(zhí)行,什么時候執(zhí)行,return前還是后?

308.在什么情況下,finally語句不會執(zhí)行?

309.throw和throws有什么區(qū)別?

310.OOM你遇到過哪些情況?你是怎么確定的?

311.SOF你遇到過哪些情況。

312.既然我們可以使用runtime exception來處理錯誤,那么你認(rèn)為為什么Java中還存在檢查型異常?

313.當(dāng)自己創(chuàng)建異常類的時候應(yīng)該注意什么?

314.導(dǎo)致空指針異常的原因?

315.異常處理handle or declare原則應(yīng)該如何理解?

316.怎么利用JUnit來測試一個方法的異常?

317.你曾經(jīng)自定義實現(xiàn)過異常嗎?怎么寫的?

318.什么是異常鏈?

319.在try塊中可以拋出異常嗎?


JDBC

320.通過JDBC連接數(shù)據(jù)庫有哪些方式?

321.闡述JDBC操作數(shù)據(jù)庫的基本步驟?

322.JDBC中如何進行事務(wù)處理?

323.什么是JDBC Template?

324.什么是DAO模塊?

325.使用JDBC操作數(shù)據(jù)庫時,如何提升讀取數(shù)據(jù)的性能?如何提升更新數(shù)據(jù)的性能?

326.列出5個應(yīng)該遵循的JDBC最佳實踐。


FIle

327.File類型中定義了什么方法來創(chuàng)建一級目錄?

328.File類型中定義了什么方法來判斷一個文件是否存在?


329.為了提高讀寫性能,可以采用什么流?

330.Java中有幾種類型的流?

331.JDK為每種類型的流提供了一些抽象類以供繼承,分別是哪些類?

332.對文本文件操作用什么I/O流?

333.對各種基本數(shù)據(jù)類型和String類型的讀寫,采用什么流?

334.能指定字符編碼的I/O流類型是什么?


序列化

335.什么是序列化?如何實現(xiàn)Java序列化以及注意事項?

336.Serializable與Wxternalizable的區(qū)別?


Socket

337.socket選項TCP NO DELAY是指什么?

338.socket工作在TCP/IP協(xié)議棧的哪一層?

339.TCP、UDP區(qū)別以及Java的實現(xiàn)方式。

340.說出幾點IO的最佳實踐。

341.直接緩沖區(qū)與非直接緩沖器有什么區(qū)別?

342.怎么讀寫B(tài)yteBuffer?ByteBuffer中的字節(jié)序是什么?

343.當(dāng)用System.in.read(buffer)從鍵盤輸入一行n個字符后,存儲在緩沖區(qū)buffer中的字節(jié)數(shù)是多少?

344.如何使用掃描器類令牌化?


面向?qū)ο缶幊?/b>

345.解釋下多態(tài)性,封裝性,內(nèi)聚以及耦合。

346.多態(tài)的實現(xiàn)原理。

347.封裝,多態(tài),繼承分別是什么?

348.對象封裝的原則是什么?


349.獲得一個類的類對象有哪些方式?

350.重載和重寫的區(qū)別。重載的方法能否根據(jù)返回值類型進行區(qū)分?

351.說出幾條Java中方法重載的最佳實踐。


抽象類

352.抽象類和接口的區(qū)別

353.抽象類中是否可以有main方法?

354.抽象類是否可以實現(xiàn)接口?

355.抽象類是否可以繼承具體類?


匿名類

356.匿名內(nèi)部類是否可以繼承其他類?是否可以實現(xiàn)接口?


內(nèi)部類

357.內(nèi)部類可以分為幾種?

358.內(nèi)部類可以引用它的包含類的成員嗎?

359.請說一下Java中為什么要引入內(nèi)部類?還有匿名內(nèi)部類?


繼承

360.繼承與聚合的區(qū)別。

361.繼承和組合之間有什么不同?

362.為什么類只能單繼承,接口可以多繼承?

363.存在兩個類,B繼承A,C繼承B,能將B轉(zhuǎn)換為C嗎?如C=(C)B。

364.如果類a繼承類b,實現(xiàn)接口c,而類b和接口c中定義了同名變量,請問會出現(xiàn)什么問題。


接口

365.接口是什么?

366.接口是否可以繼承接口?

367.為什么要使用接口而不是直接使用具體類?接口有什么優(yōu)點?


泛型

368.泛型的存在是用來解決什么問題?

369.泛型的常用特點。

370.List能否轉(zhuǎn)為List?


工具類

日歷

371.Calendar Class的用途。

372.如何在Java中獲取日歷類的實例?

373.解釋一些日歷類中的重要方法。

374.GregorianCalendar類是什么?

375.SimpleTimeZone類是什么?

376.Locale類是什么?

377.Locale類是什么?

378.如何格式化日期對象?

379.如何添加小時到一個日期對象?

380.如何將字符串YYYY--MM--DD轉(zhuǎn)換為日期?


Math

381.Math.round()有什么用?Math.round(11.5),Math.round(-11.5)分別等于多少?


XML

382.XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式?SOM和SAX解析器有什么不同?

383.Java解析XML的方式。

384.用jdom解析xml文件時如何解決xml文件時如何解決中文問題?

385.你在項目中用到了XML技術(shù)哪些方面?如何實現(xiàn)?


動態(tài)代理

386.描述動態(tài)代理的幾種實現(xiàn)方式,分別說出相應(yīng)的優(yōu)缺點。


設(shè)計模式

387.什么是設(shè)計模式?你用過那種設(shè)計模式?用在什么場合?

388.你知道哪些商業(yè)級的設(shè)計模式?

389.哪些設(shè)計模式可以增加系統(tǒng)的可擴展性?


單例模式

390.除了單例模式,你在生產(chǎn)環(huán)境中還用過什么設(shè)計模式?

391.寫Singleton單例模式

392.單例模式的雙檢測是什么?

393.如何創(chuàng)建線程安全的singleton?

394.什么是類的單例模式?

395.寫出三種單例模式實現(xiàn)。


適配器模式

396.適配器模式是什么?什么時候使用?

397.適配器模式和代理模式之間有什么不同?

398.適配器模式和代理模式之間有什么不同?

399.適配器模式和裝飾模式之間有什么不同?

400.什么時候使用享元模式?

401.什么時候使用組合模式?

402.什么時候使用訪問者模式?

403.什么是模板方法模式?

404.請給出一個符合開閉原則的設(shè)計模式的例子。


開放問題

405.用一句話概括Web編程的特點。

406.Google是如何在一秒內(nèi)把搜索結(jié)果返回給用戶的?

407.哪種依賴注入方式是你建議使用的?構(gòu)造器注入還是Setter方法注入。

408.樹形成許多普通數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)。請寫出一些這樣的數(shù)據(jù)結(jié)構(gòu)以及何時可以使用它們?


某一項功能如何設(shè)計

409.線上系統(tǒng)突然變得異常緩慢,你如何查找問題?

410.什么樣的項目不適合使用框架?

411.新浪微博是如何實現(xiàn)把微博推送給訂閱者的?

412.簡要介紹下從瀏覽器輸入URL開始到獲取到請求界面之后Java Web應(yīng)用發(fā)生了什么?

413.請你談?wù)凷SH整合。

414.高并發(fā)下,如何做到安全的修改同一行數(shù)據(jù)?

415.12306網(wǎng)站的訂票系統(tǒng)如何實現(xiàn),如何保證不會票不被超賣?

416.網(wǎng)站性能優(yōu)化如何優(yōu)化的?


曾經(jīng)參與設(shè)計的服務(wù)器結(jié)構(gòu)

417.請思考一個方案,實現(xiàn)分布式環(huán)境下的countDownLatch。

418.請思考一個方案,設(shè)計一個可以控制緩存總體大小的自動適應(yīng)的本地緩存。

419.在你的職業(yè)生涯中,算的上最困難的技術(shù)挑戰(zhàn)是什么?

420.如何寫一篇設(shè)計文檔?目錄是什么?

421.大寫的O是什么?舉幾個例子。

422.編程中自己都怎么考慮一些設(shè)計原則的,比如開閉原則,以及在工作中的應(yīng)用。

423.解釋一下網(wǎng)絡(luò)應(yīng)用的模式以及特點。

424.設(shè)計一個在線文檔系統(tǒng),文檔可以被編輯,如何防止多人同時對同一份文檔進行編輯更新?

425.說出數(shù)據(jù)庫連接池的工作機制是什么?

426.怎么獲取一個文件中單詞出現(xiàn)的最高頻率?


描述一下你最常用的編程風(fēng)格

427.如果有機會重新設(shè)計你們的產(chǎn)品,你會怎么做?

428.如何搭建一個高可用系統(tǒng)?

429.如何啟動時不需輸入用戶名與密碼?

430.如何在基于Java的web項目中實現(xiàn)文件上傳與下載?

431.如何實現(xiàn)一個秒殺系統(tǒng),保證只有幾位用戶可以買到這個產(chǎn)品?

432.如何實現(xiàn)負(fù)載均衡,有哪些算法可以實現(xiàn)?

433.如何設(shè)計一個購物車?想想淘寶的購物車如何實現(xiàn)的

434.如何設(shè)計一套高并發(fā)支付方案,架構(gòu)如何設(shè)計?

435.如何設(shè)計建立和保持100W的長連接?

436.如何避免瀏覽器緩存?

437.如何防止緩存雪崩?

438.如果AB兩個系統(tǒng)相互依賴,如何解除依賴?

439.如果有人惡意創(chuàng)建非法連接,怎么解決?

440.如果有幾十億的白名單,每天白天需要高并發(fā)查詢,晚上需要更新一次,如何設(shè)計這個功能?

441.如果系統(tǒng)要使用超大整數(shù),請你設(shè)計一個數(shù)據(jù)結(jié)構(gòu)來存儲這種超大型數(shù)字以及設(shè)計一種算法來實現(xiàn)超大整數(shù)的加法運算?

442.如果要設(shè)計一個圖形結(jié)構(gòu),請你設(shè)計基本的圖形元件的簡單實現(xiàn)?

443.如果讓你實現(xiàn)一個并發(fā)安全的鏈表,你會怎么做?

444.應(yīng)用服務(wù)器與WEB服務(wù)器的區(qū)別?應(yīng)用服務(wù)器怎么監(jiān)控性能,各種方式的區(qū)別?你是用過的應(yīng)用服務(wù)器的優(yōu)化技術(shù)有哪些?

445.大型網(wǎng)站在架構(gòu)上應(yīng)當(dāng)考慮哪些問題?

446.有沒有處理過線上問題?出現(xiàn)內(nèi)存泄漏,CPU利用率標(biāo)高,應(yīng)用無響應(yīng)時如何處理的?


描述下常用的重構(gòu)技巧

447.你使用什么版本的管理工具?分支與標(biāo)簽的區(qū)別在哪里?

448.你有了解過存在哪些反模式嗎?

449.你用過的網(wǎng)站前端優(yōu)化技術(shù)有哪些?

450.如何分析Thread dump?

451.你如何理解AOP中的連接點,切點,增強,引介,織入,切面這些概念?

452.你是如何處理內(nèi)存泄露或者棧溢出問題的?

453.你們線上應(yīng)用的JVM參數(shù)有哪些?

454.怎么提升系統(tǒng)的QPS和吞吐量?


知識面

455.解釋什么是MESI協(xié)議。

456.談?wù)剅eactor模型。

457.Java 9 帶來了怎樣的新功能?

458.Java與C++對比,二者的異常處理機制的區(qū)別。

459.虛擬內(nèi)存是什么?

460.闡述下SOLID原則。

461.請簡要講一下你對測試驅(qū)動開發(fā)的認(rèn)識。


CDN實現(xiàn)原理

462.Maven和ANT有什么區(qū)別?

463.UML有哪些常用的圖?


Linux

464.Linux下IO模型有幾種,各自的含義是什么?

465.Linux系統(tǒng)下你關(guān)注過哪些內(nèi)核參數(shù),說說你知道的。

466.Linux下用一行命令查看文件的最后五行。

467.平時用到哪些Linux命令?

468.用一行命令輸出正在運行的Java進程。

469.使用什么命令來確定是否有Tomcat實例運行在機器上?

470.什么是N+1難題?

471.什么是paxos算法?

472.什么是restful,講講你理解的restful?

473.什么是zab協(xié)議?

474.什么是領(lǐng)域模型?貧血模型和充血模型有什么區(qū)別?

475.什么是領(lǐng)域驅(qū)動開發(fā)?

476.介紹一下了解的Java領(lǐng)域的web service框架。

477.Web Server ,Web Container與Application Server的區(qū)別是什么?

478.微服務(wù)與巨石應(yīng)用之間的區(qū)別在哪里?

479.描述一下Cookie和Session的作用,區(qū)別,各自的應(yīng)用范圍,session的工作原理

480.你常用的持續(xù)集成,靜態(tài)代碼分析工具有哪些?

481.簡述下數(shù)據(jù)庫正則化。

482.KISS,DRY,YAGNI等原則是什么含義?

483.分布式事務(wù)的原理,優(yōu)缺點,如何使用分布式事務(wù)?

484.分布式集群下如何做到唯一的序列號?


網(wǎng)絡(luò)

485.HTTPS的加密方式是什么,講講整個加密解密流程。

486.HTTPS和HTTP的區(qū)別。

487.HTTP連接池實現(xiàn)原理

488.HTTP集群方案。

489.Nginx,lighttpd,Apache三大主流Web服務(wù)器的區(qū)別。

490.是否看過一些框架代碼?

491.持久層設(shè)計要考慮哪些問題?你用過哪些持久層框架?

492.數(shù)值提升是什么?

493.你能解釋一下里氏替換原則嗎?

494.你是如何測試一個應(yīng)用的?知道哪些測試框架

495.傳輸層常見編程協(xié)議有哪些?并說出他們各自的特點。


編程題

496.加班10小時以下加班費為時薪的1.5倍。10小時或以上按4元/時計算。提示:(一個月工作26天,一天正常工作8小時)。計算1000月薪,加班9小時的加班費。計算2500月薪,加班11小時的加班費。計算1000月薪,加班15小時的加班費。

497.一家商場有紅蘋果5元/個和青蘋果4元/個出售。模擬一個進貨,紅蘋果和青蘋果各進200個,模擬一個出售,二者各賣10個。

498.有這樣一個時間字符串:2008-8-8 20:08:08,請編寫能匹配它的正則表達式,并編寫Java代碼將日期后面的時分秒提取出來。如:20:08:08。

499.設(shè)計4個線程,其中兩個每次對j增加1,另外兩個對j每次減少1。

500.wait-notify寫一段代碼解決生產(chǎn)者-消費者問題。

501.判斷101-200之間有多少個素數(shù)并輸出所有素數(shù)。

502.用最有效率的方法算出2*17等于多少?

503.有1億個數(shù)字,其中有2個重復(fù)的,快速找到它們。時間和空間要最優(yōu)。

504.10億個數(shù)字里面找最小的10個。

505.1到1億的自然數(shù),求所有數(shù)的拆分后的數(shù)字之和,如286拆分為2,8,6。

506.一個數(shù)如果恰好等于它的因子之和,這個數(shù)就成為“完數(shù)”。列如6=1+2+3,編程找出1000以內(nèi)所有完數(shù)。

507.一個數(shù)組中所有的元素都出現(xiàn)了三次,只有一個元素出現(xiàn)了一次找到它。

508.一個球從100米高空自由下落,每次落地后反彈會原來一半,求第10次落地時共經(jīng)過多少米?第10次反彈多高?

509.求100-1000以內(nèi)質(zhì)數(shù)的和。

510.用Java Socket編程,讀服務(wù)器幾個字符,再寫入本地顯示。


反射

511.反射機制提供了什么功能?

512.反射是如何實現(xiàn)的?

513.哪里用到了反射機制?

514.反射中Class.forName和ClassLoader區(qū)別?

515.反射創(chuàng)建類實例的三種方式是什么?

516.如何通過反射調(diào)用對象的方法?

517.如何通過反射獲取和設(shè)置對象私有字段的值?

518.反射機制的優(yōu)缺點。


數(shù)據(jù)庫

519.寫一段JDBC連接Oracle的程序,并實現(xiàn)數(shù)據(jù)查詢。


算法

520.寫一個冒泡排序。

521.50個人圍坐一圈,當(dāng)數(shù)到三或者三的倍數(shù)出圈。問剩下的人是誰,原來位置是多少?

522.寫一個折半查找。

523.隨機產(chǎn)生20個不重復(fù)的字符并排序。

524.寫一段代碼在遍歷ArrayList時移除一個元素。

525.寫一個函數(shù),傳入2個有序的整數(shù)數(shù)組,返回一個有序的整數(shù)數(shù)組。


正則表達式

526.請編寫一段匹配IP地址的正則表達式。

527.寫出一個正則表達式來判斷一個字符串是否是一個數(shù)字。


字符串

528.寫一個方法,輸入一個文件名和一個字符串,統(tǒng)計這個字符串在這個文件中出現(xiàn)的次數(shù)。

529.寫一個程序找出所有字符串的組合,并檢查他們是否回文串。

530.寫一個字符串反轉(zhuǎn)函數(shù),輸入abcde,輸出edcba

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容