百度Java面試題--摘錄+總結

来源:http://www.cnblogs.com/wl2014/archive/2017/11/30/7931685.html
-Advertisement-
Play Games

基本概念 1.操作系統中heap和stack的區別。 2.什麼是對象/關係映射集成模塊? 3.什麼是Java的反射機制? 4.什麼是ACID? 5.B/S和C/S的聯繫與區別? 6.cookie和session的區別? 7.interface與抽象類的區別. 8.IOC的優點是什麼? 9.IO和NI ...


基本概念

1.操作系統中heap和stack的區別。

2.什麼是對象/關係映射集成模塊?

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

4.什麼是ACID?

5.B/S和C/S的聯繫與區別?

6.cookie和session的區別?

7.interface與抽象類的區別.

8.IOC的優點是什麼?

9.IO和NIO的區別,NIO的優點.

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

11.什麼是競態條件?舉個例子說明。

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

13.MVC的各個部分都有哪些技術來實現?如何實現?

14.RPC通信與RMI的區別。

15.什麼是web service?

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

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

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

19.簡單說說你瞭解的類載入器。是否實現過類似的類載入器?

20.解釋一下什麼叫AOP?

21.請簡述一下servlet的生命周期及相關的方法。

22.請簡述一下ajax的原理及實現步驟。

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

24.什麼是N層架構?

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

26.什麼是Java虛擬機?為什麼Java被稱為“平臺無關的編程語言”?

27.什麼是正則表達式?用途是什麼?哪個包使用正則表達式來實現模式匹配?

28.什麼是懶載入?

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

30.什麼是控制反轉與依賴註入?

 

關鍵字

finalize

31.什麼是finalize()方法?

32.finalize()方法什麼時候被調用?

33.析構函數的目的是什麼?

34.final和finalize的區別是什麼?

 

final

35.final關鍵字有哪些用法?

36.final與static關鍵字可以用於哪裡?它們的作用是什麼?

37.final,finalize,finally的區別。

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

39.使用final關鍵字修飾一個變數時,是引用不能變還是引用的對象不能變?

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

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

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

 

volatile

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

44.volatile變數時什麼?volatile變數和atomic變數有什麼不同?

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

46.能創建volatile數組嗎?

47.transient變數有什麼特點?

48.super什麼時候使用?

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

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

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

52.sizeof是Java的關鍵字嗎?

 

static

53.static class與non static class的區別。

54.static關鍵字是什麼意思?Java中是否可以覆蓋一個private或者是static的方法?

55.靜態類型有什麼特點

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

57.是否可以從一個靜態方法內部發出對非靜態方法的調用?

58.靜態變數在什麼時候載入?編譯期還是運行期?靜態代碼塊載入的時機呢?

59.成員方法是否可以訪問靜態變數?為什麼靜態方法不能訪問成員變數?

 

switch

60.switch語句中的表達式可以是什麼類型數據?

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

62.while迴圈和do迴圈有什麼不同?

 

操作符

63.&操作符和&&操作符的區別?

64.a=a+b和a+=b的區別?

65.邏輯操作符與條件操作符的區別。

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

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

68.short s1=1;s1=s1+1;有什麼關聯?

 

數據結構

69.基礎類型.

70.基礎類型與封裝類型的區別在哪裡?

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

72.int和integer哪個會占用更多的記憶體?int和integer的區別?parseInt()函數再什麼時候使用?

73.float和double的預設值是多少?

74.如何去小數四捨五入保留小數點後兩位?

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

 

類型轉換

76.怎樣將bytes轉換為long類型?

77.怎麼將byte轉換為String?

78.如何將數值型字元轉換為數字?

79.我們能講int 強轉成byte類型的變數嗎?如果該值大於byte類型的範圍,將會出現什麼現象?

80.能在不進行強轉的情況下講一個double值賦值給long類型的變數嗎?

81.類型向下轉換是什麼?

 

數組

82.如何權衡是使用無序的數組還是有序的數組?

83.怎麼判斷數組是為null還是空?

84.怎麼列印數組?怎麼列印數組中的重覆元素?

85.Array和ArrayList有什麼區別?什麼時候該使用Array而不是ArrayList?

86.數組和鏈表數據結構描述,各自的時間複雜度。

87.數組有沒有length()這個方法?String有沒有length()這個方法?

 

隊列

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

89.BlockingQueue是什麼?

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

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

 

String

92.StringBuffer。

93.ByteBuffer與StringBuffer有什麼區別?

94.HashMap。

95.HashMap的工作原理是什麼?內部的數據結構是什麼?

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

97.HashMap實現的數據結構是什麼?如何實現?

98.HashMap,HashTable,ConcurrentHashMap的區別。

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

100.HashMap,LinkedMap,TreeMap的區別。

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

102.如果HashMap的大小超過了負載因數定義的容量,怎麼辦?

103.HashMap是線程安全的嗎?併發下使用的Map是什麼,我們內部原理分別是什麼,比如存儲方式,hashcode,擴容,預設容量等。

 

HashSet

104.HashSet和TreeSet有什麼區別?

105.HashSet內部是如何工作的?

106.WeakHashMap是怎麼工作的?

 

Set

107.Set里元素是不能重覆的,那麼用什麼方法來區分重覆與否?是用==還是equals()

它們有什麼區別?

108.TreeMap是採用什麼樹來實現的?TreeMap,HashMap,LingkedHashMap的區別。

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

109.一個已經構建好的TreeSet怎麼完成倒排序?

110.EnumSet是什麼?

 

Hash演算法

111.HashCode的作用。

112.簡述一致性Hash演算法。

113.有沒有可能兩個不相等的對象有相同的hashcode?當兩個對象hashcode相同怎麼辦?如何獲取值對象?

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

115.a.hashCode()有什麼用?與a.equals(b)有什麼關係?

116.hashCode()和equals()方法的重要性體現在什麼地方?

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

118.如何在父類中為子類自動完成所有的hashcode和equals實現?這麼做有何優劣?

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

120.LingkedHashMap。

121.LingkedHashMap和PriorityQueue的區別是什麼?

 

List

122.List,Set,Map三個介面,存取元素時各有什麼特點?

123.List,Set,Map三個介面是否繼承自Collection介面?

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

 

LinkedList

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

126.LinkedList與ArrayList有什麼區別?

127.描述一下Java中集合(Collection),介面(Interface),實現(Implementations)的概念。

128.插入數據時,ArrayList,LinkedList,Vector誰速度較快?

 

ArrayList

129.ArrayList和HashMap的預設大小是多少?

130.ArrayList,LinkedList的區別,什麼時候用ArrayList?

131.ArrayList和Set的區別。

132.ArrayList,LinkedList,Vector的區別。

133.ArrayList是如何實現的?

134.ArrayList如何實現擴容?

135.Array和ArrayList有什麼區別?什麼時候更適合用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的區別?Collection、Map的實現。

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

143.為什麼Collection不從Cloneable和Serialize介面繼承?

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

145.Collections中遺留類(HashTable,Vector)和現有類的區別。

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

 

介面

147.Comparator與Comparable介面是乾什麼的?列出他們的區別。

 

對象

148.拷貝(clone)。

149.如何實現對象克隆?

150.深拷貝和淺拷貝的區別?

151.深拷貝和淺拷貝如何實現激活機制?

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

 

比較

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

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

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

 

構造器

156.構造器鏈是什麼?

157.創建對象時構造器的調用順序。

158.不可變對象。

159.什麼是不可變對象?

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

161.如何構建不可變的的類結構?關鍵點在哪裡?

162.能創建一個包含可變對象的不可變對象嗎?

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

 

方法

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

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

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

167.Java中支持哪種參數傳遞類型?

168.一個對象被當做參數傳遞到一個方法,是值傳遞還是引用傳遞?

169.當一個對象被當做參數傳遞到一個方法後,此方法可以改變這個對象的屬性,並可以返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞

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

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

 

GC概念

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

173.什麼時候會導致垃圾回收?

174.GC是怎麼樣運行的?

175.新老以及永久區是什麼?

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

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

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

179.垃圾回收器可以馬上回收記憶體嗎?有什麼辦法可以主動通知虛擬機進行垃圾回收?

180.Minor GC,Major GC,Young GC,Full GC分別發生在什麼時候?

181.垃圾回收演算法的實現原理。

182.如果對象的引用被置為null,垃圾收集器是否會立即對釋放對象占用記憶體?

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

184.GC收集器有哪些?

185.串列收集器和吞吐量收集器的區別是什麼?

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

187.CMS收集器與G1收集器的特點與區別?

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

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

190.吞吐量優先和響應優先的垃圾收集器選擇。

191.GC策略。

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

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

 

收集方法

194.標記清除,標記整理,複製演算法的原理與特點?分別用在什麼地方?

195.如果讓你優化收集方法,有什麼思路?

 

JVM參數

196.說說你知道的幾種主要的JVM參數。

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

198.類載入器。

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

200.JVM如何載入位元組碼文件?

 

記憶體管理

201.JVM記憶體分哪個區,每個區的作用是什麼?

202.一個對象從創建到銷毀都是怎麼在這些部分里存活和轉移的。

203.解釋記憶體中的棧、堆和方法區的用法。

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

205.簡述記憶體分配與記憶體回收策略。

206.簡述重排序,記憶體屏障,happen-before,主記憶體,工作記憶體。

207.Java中存在記憶體泄露問題麽?請舉例說明。

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

209.記憶體映射緩存區是什麼?

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

211.32位JVM和64位JVM的最大記憶體分別是多少?32位和64位的NVM,int類型變數長度是多少?

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

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

214.什麼情況下回發生棧記憶體溢出?

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

 

多線程

216.什麼是線程?

217.多線程的優點。

218.多線程的幾種實現方式。

219.用Runnable還是Thread。

220.什麼是線程安全?

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

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

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

224.多線程的忙迴圈是什麼?

225.如何創建一個線程?

226.編寫多線程程式有幾種實現方式?

227.什麼線程局部變數?

228.線程和進程有什麼區別?進程間如何通訊,線程間如何通訊?

229.什麼是多線程環境下的偽共用?

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

 

Current

231.ConcurrentHashMap和HashTable的區別。

232.ArrayBlockingQueue,CountDownLatch的用法。

233.ConcurrentHashMap的併發度是什麼。

234.CyclicBarrier和CountDownLatch有什麼不同?各自的內部原理和用法。

235.Semaphore的用法。

 

Thread

236.啟動一個線程是調用run()還是start()方法?start()和run()方法有什麼區別?

237.調用start()方法是會執行run方法,為什麼不能直接調用run方法?

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

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

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

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

242.如何在兩個線程間共用數據?

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

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

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

246.你是如何調用wait方法的使用if塊還是迴圈?

 

生命周期

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

248.線程狀態,BLOCKED和WAITING有什麼區別?

249.畫一個線程的生命周期狀態圖。

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

 

ThreadPool

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

252.如何創建一個Java線程池?

253.ThreadPool用法與優勢。

254.提交任務時,線程池隊列已滿時會發什麼?

255.newCache和newFixed有什麼區別?簡述原理。搞糟函數的各個參數的含義是什麼?

256.線程池的實現策略。

257.線程池的關閉方式有幾種,各自的區別是什麼?

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

 

線程調度

259.Java中用到的線程調度演算法是什麼?

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

261.你對線程優先順序的理解是什麼?

262.什麼是線程調度器和時間分片?

 

線程同步

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

264.synchronized的原理是什麼?

265.synchronized和ReentrantLock有什麼不同?

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

267.有T1,T2,T3三個線程,怎麼確保它們按順序執行?怎麼保證T2在T1執行完後執行,T3在T2執行完後執行。

268.同步快內的線程拋出異常會發生什麼。

269.當一個線程進入一個對象的synchronized方法A之後,其他線程是否可以進入此對象的synchronized方法B?

270.使用synchronized修飾靜態方法和非靜態方法有什麼區別?

271.如何從給定集合那裡創建一個synchronized的集合?

 

272.Java Concurrency API中的Lock介面是什麼?對比同步它有什麼優勢?

273.Lock與Synchronized的區別?Lock比synchronized塊的優勢是什麼?

274.ReadWriteLock是什麼?

275.什麼是樂觀鎖?如何實現樂觀鎖?如何避免ABA問題?

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

277.什麼時候應該使用可重入鎖?

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

279.Java中死鎖和活鎖的區別?

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

281.死鎖與活鎖的區別。死鎖與饑餓的區別?

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

283.如何實現分散式鎖?

284.讀寫所可以用於什麼應用場景?

285.有哪些無鎖數據結構,他們實現的原理是什麼?

286.Executors類是什麼?Executor和Executors的區別?

287.什麼是Java線程轉儲,如何得到它?

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

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

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

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

292..請說出與線程同步以及線程調度相關的方法?

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

294.假如有一個第三方介面,有很多個線程去調用獲取數據,現在規定每秒鐘最多有10個線程同時調用它,如何做到?

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

296.如何確保main()方法所在的線程是Java程式最後結束的線程?

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

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

 

異常

299.Error和Exception的區別?

300.UnsupportedOperationException是什麼?

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

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

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

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

 

finally

305.finally關鍵字在異常處理中如何使用?

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

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

308.在什麼情況下,finally語句不會執行?

309.throw和throws有什麼區別?

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

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

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

313.當自己創建異常類的時候應該註意什麼?

314.導致空指針異常的原因?

315.異常處理handle or declare原則應該如何理解?

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

317.你曾經自定義實現過異常嗎?怎麼寫的?

318.什麼是異常鏈?

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

 

JDBC

320.通過JDBC連接資料庫有哪些方式?

321.闡述JDBC操作資料庫的基本步驟?

322.JDBC中如何進行事務處理?

323.什麼是JDBC Template?

324.什麼是DAO模塊?

325.使用JDBC操作資料庫時,如何提升讀取數據的性能?如何提升更新數據的性能?

326.列出5個應該遵循的JDBC最佳實踐。

 

FIle

327.File類型中定義了什麼方法來創建一級目錄?

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

 

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

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

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

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

333.對各種基本數據類型和String類型的讀寫,採用什麼流?

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

 

序列化

335.什麼是序列化?如何實現Java序列化以及註意事項?

336.Serializable與Wxternalizable的區別?

 

Socket

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

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

339.TCP、UDP區別以及Java的實現方式。

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

341.直接緩衝區與非直接緩衝器有什麼區別?

342.怎麼讀寫ByteBuffer?ByteBuffer中的位元組序是什麼?

343.當用System.in.read(buffer)從鍵盤輸入一行n個字元後,存儲在緩衝區buffer中的位元組數是多少?

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

 

面向對象編程

345.解釋下多態性,封裝性,內聚以及耦合。

346.多態的實現原理。

347.封裝,多態,繼承分別是什麼?

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

 

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

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

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

 

抽象類

352.抽象類和介面的區別

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

354.抽象類是否可以實現介面?

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

 

匿名類

356.匿名內部類是否可以繼承其他類?是否可以實現介面?

 

內部類

357.內部類可以分為幾種?

358.內部類可以引用它的包含類的成員嗎?

359.請說一下Java中為什麼要引入內部類?還有匿名內部類?

 

繼承

360.繼承與聚合的區別。

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

362.為什麼類只能單繼承,介面可以多繼承?

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

364.如果類a繼承類b,實現介面c,而類b和介面c中定義了同名變數,請問會出現什麼問題。

 

介面

365.介面是什麼?

366.介面是否可以繼承介面?

367.為什麼要使用介面而不是直接使用具體類?介面有什麼優點?

 

泛型

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

369.泛型的常用特點。

370.List能否轉為List?

 

工具類

日曆

371.Calendar Class的用途。

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

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

374.GregorianCalendar類是什麼?

375.SimpleTimeZone類是什麼?

376.Locale類是什麼?

377.Locale類是什麼?

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

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

380.如何將字元串YYYY--MM--DD轉換為日期?

 

Math

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

 

XML

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

383.Java解析XML的方式。

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

385.你在項目中用到了XML技術哪些方面?如何實現?

 

動態代理

386.描述動態代理的幾種實現方式,分別說出相應的優缺點。

 

設計模式

387.什麼是設計模式?你用過那種設計模式?用在什麼場合?

388.你知道哪些商業級的設計模式?

389.哪些設計模式可以增加系統的可擴展性?

 

單例模式

390.除了單例模式,你在生產環境中還用過什麼設計模式?

391.寫Singleton單例模式

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

393.如何創建線程安全的singleton?

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

395.寫出三種單例模式實現。

 

適配器模式

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

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

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

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

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

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

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

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

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

 

開放問題

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

406.Google是如何在一秒內把搜索結果返回給用戶的?

407.哪種依賴註入方式是你建議使用的?構造器註入還是Setter方法註入。

408.樹形成許多普通數據結構的基礎。請寫出一些這樣的數據結構以及何時可以使用它們?

 

某一項功能如何設計

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

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

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

412.簡要介紹下從瀏覽器輸入URL開始到獲取到請求界面之後Java Web應用發生了什麼?

413.請你談談SSH整合。

414.高併發下,如何做到安全的修改同一行數據?

415.12306網站的訂票系統如何實現,如何保證不會票不被超賣?

416.網站性能優化如何優化的?

 

曾經參與設計的伺服器結構

417.請思考一個方案,實現分散式環境下的countDownLatch。

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

419.在你的職業生涯中,算的上最困難的技術挑戰是什麼?

420.如何寫一篇設計文檔?目錄是什麼?

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

422.編程中自己都怎麼考慮一些設計原則的,比如開閉原則,以及在工作中的應用。

423.解釋一下網路應用的模式以及特點。

424.設計一個線上文檔系統,文檔可以被編輯,如何防止多人同時對同一份文檔進行編輯更新?

425.說出資料庫連接池的工作機制是什麼?

426.怎麼獲取一個文件中單詞出現的最高頻率?

 

描述一下你最常用的編程風格

427.如果有機會重新設計你們的產品,你會怎麼做?

428.如何搭建一個高可用系統?

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

430.如何在基於Java的web項目中實現文件上傳與下載?

431.如何實現一個秒殺系統,保證只有幾位用戶可以買到這個產品?

432.如何實現負載均衡,有哪些演算法可以實現?

433.如何設計一個購物車?想想淘寶的購物車如何實現的

434.如何設計一套高併發支付方案,架構如何設計?

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

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

437.如何防止緩存雪崩?

438.如果AB兩個系統相互依賴,如何解除依賴?

439.如果有人惡意創建非法連接,怎麼解決?

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

441.如果系統要使用超大整數,請你設計一個數據結構來存儲這種超大型數字以及設計一種演算法來實現超大整數的加法運算?

442.如果要設計一個圖形結構,請你設計基本的圖形元件的簡單實現?

443.如果讓你實現一個併發安全的鏈表,你會怎麼做?

444.應用伺服器與WEB伺服器的區別?應用伺服器怎麼監控性能,各種方式的區別?你是用過的應用伺服器的優化技術有哪些?

445.大型網站在架構上應當考慮哪些問題?

446.有沒有處理過線上問題?出現記憶體泄漏,CPU利用率標高,應用無響應時如何處理的?

 

描述下常用的重構技巧

447.你使用什麼版本的管理工具?分支與標簽的區別在哪裡?

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

449.你用過的網站前端優化技術有哪些?

450.如何分析Thread dump?

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

452.你是如何處理記憶體泄露或者棧溢出問題的?

453.你們線上應用的JVM參數有哪些?

454.怎麼提升系統的QPS和吞吐量?

 

知識面

455.解釋什麼是MESI協議。

456.談談reactor模型。

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

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

459.虛擬記憶體是什麼?

460.闡述下SOLID原則。

461.請簡要講一下你對測試驅動開發的認識。

 

CDN實現原理

462.Maven和ANT有什麼區別?

463.UML有哪些常用的圖?

 

Linux

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

465.Linux系統下你關註過哪些內核參數,說說你知道的。

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

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

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

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

470.什麼是N+1難題?

471.什麼是paxos演算法?

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

473.什麼是zab協議?

474.什麼是領域模型?貧血模型和充血模型有什麼區別?

475.什麼是領域驅動開發?

476.介紹一下瞭解的Java領域的web service框架。

477.Web Server ,Web Container與Application Server的區別是什麼?

478.微服務與巨石應用之間的區別在哪裡?

479.描述一下Cookie和Session的作用,區別,各自的應用範圍,session的工作原理

480.你常用的持續集成,靜態代碼分析工具有哪些?

481.簡述下資料庫正則化。

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

483.分散式事務的原理,優缺點,如何使用分散式事務?

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

 

網路

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

486.HTTPS和HTTP的區別。

487.HTTP連接池實現原理

488.HTTP集群方案。

489.Nginx,lighttpd,Apache三大主流Web伺服器的區別。

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

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

492.數值提升是什麼?

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

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

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

 

編程題

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.設計4個線程,其中兩個每次對j增加1,另外兩個對j每次減少1。

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

501.判斷101-200之間有多少個素數並輸出所有素數。

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

503.有1億個數字,其中有2個重覆的,快速找到它們。時間和空間要最優。

504.10億個數字裡面找最小的10個。

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

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

507.一個數組中所有的元素都出現了三次,只有一個元素出現了一次找到它。

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

509.求100-1000以內質數的和。

510.用Java Socket編程,讀伺服器幾個字元,再寫入本地顯示。

 

反射

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

512.反射是如何實現的?

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

514.反射中Class.forName和ClassLoader區別?

515.反射創建類實例的三種方式是什麼?

516.如何通過反射調用對象的方法?

517.如何通過反射獲取和設置對象私有欄位的值?

518.反射機制的優缺點。

 

資料庫

519.寫一段JDBC連接Oracle的程式,並實現數據查詢。

 

演算法

520.寫一個冒泡排序。

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

522.寫一個折半查找。

523.隨機產生20個不重覆的字元併排序。

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

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

 

正則表達式

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

527.寫出一個正則表達式來判斷一個字元串是否是一個數字。

 

字元串

528.寫一個方法,輸入一個文件名和一個字元串,統計這個字元串在這個文件中出現的次數。

529.寫一個程式找出所有字元串的組合,並檢查他們是否迴文串。

530.寫一個字元串反轉函數,輸入abcde,輸出edcba

歡迎加入學習交流群569772982,大家一起學習交流。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • java只所以被推廣,實際上很大原因是因為本身是跨平臺的,很大作用是因為虛擬機的關係。 一般情況下開發人員不需要關註虛擬機內部實現就可以日常開發了,但是有時候涉及到性能的時候就需要瞭解虛擬機的實現機制了。 那麼今天寫的內容更多的是關於編譯一套自己的虛擬機,為日後瞭解虛擬機底層原理鋪鋪路。 編譯虛擬機 ...
  • 歡迎訪問我的個人博客: "原文鏈接" 前言 人生苦短,我用python。學習python怎麼能不搞一下詞雲呢是不是(ง •̀_•́)ง 於是便有了這篇邊實踐邊記錄的筆記。 環境:VMware 12pro + CentOS7 + Python 2.7.5 安裝系統 之前一直用的是win10子系統,現在 ...
  • 首先上原文, 現在,假設我們要增強now()函數的功能,比如,在函數調用前後自動列印日誌,但又不希望修改now()函數的定義,這種在代碼運行期間動態增加功能的方式,稱之為“裝飾器”(Decorator)。本質上,decorator就是一個返回函數的高階函數。 Decorator本質是高階函數? 不信 ...
  • 前言 一位小妹去面試前端,前端leader問了"什麼是ajax?",答:“接收後臺的數據,然後然後自己填充和渲染樣式”;一位小哥去面試後臺,技術經理問了“什麼是ajax?”,答:“在不需重新載入整個網頁的情況下,發送非同步請求,返回json數據給前端”。準確答案到底是什麼?Ajax到底屬於前端還是屬於 ...
  • 在實際項目開發中,經常存在一對一的關係,如一個人對應一張身份證信息,這就是一對一的關係。下麵是一個簡單的實例: 1、建表過程我就省略了,主要是一張Person表,一張IDCard表,其相關屬性見步驟2Pojo類屬性所示; 2、建立一個Person對象和一個IDCard對象: mybatis/pri/ ...
  • 查看原文 ...
  • 平常工作中String字元串對象用的那麼多,但是真的瞭解String嗎? 源碼淺析先從String開刀。 想要真正瞭解一個類,首先得從源碼入手。(本文JDK源碼版本1.7.0_75) 先看類信息: 由源碼可以看出: final修飾了String類,表明該類不能被其他類繼承。 String 實現了Se ...
  • numpy.eye(N, M=None, k=0, dtype=<type ‘float’>) 生成對角矩陣 列數N 行數M 寫一個代表行數等於列數 k代表偏移量正數向上偏移,負數向下偏移 如numpy.eye(3,k=1,dtyle=int) 0 1 0 0 0 1 0 0 0 numpy.sha ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...