走過路過不要錯(cuò)過
點(diǎn)擊藍(lán)字關(guān)注我們
往期精彩八股文面試專題
Java面試題(二)
1、Java 中能創(chuàng)建 volatile 數(shù)組嗎?2、volatile 能使得一個(gè)非原子操作變成原子操作嗎?3、volatile 修飾符的有過什么實(shí)踐?5、10 個(gè)線程和 2 個(gè)線程的同步代碼,哪個(gè)更容易寫?6、你是如何調(diào)用 wait()方法的?使用 if 塊還是循環(huán)?為什 有經(jīng)驗(yàn)程序員的 Java 面試題8、什么是 Busy spin?我們?yōu)槭裁匆褂盟?/span>9、Java 中怎么獲取一份線程 dump 文件? 12、用 wait-notify 寫一段代碼來解決生產(chǎn)者-消費(fèi)者問題?13、用 Java 寫一個(gè)線程安全的單例模式(Singleton)?14、Java 中 sleep 方法和 wait 方法的區(qū)別?15、什么是不可變對(duì)象(immutable object)?Java 中怎么 創(chuàng)建一個(gè)不可變對(duì)象? 16、我們能創(chuàng)建一個(gè)包含可變對(duì)象的不可變對(duì)象嗎?數(shù)據(jù)類型和 Java 基礎(chǔ)面試問題17、Java 中應(yīng)該使用什么數(shù)據(jù)類型來代表價(jià)格? 18、怎么將 byte 轉(zhuǎn)換為 String?19、Java 中怎樣將 bytes 轉(zhuǎn)換為 long 類型? 20、我們能將 int 強(qiáng)制轉(zhuǎn)換為 byte 類型的變量嗎?如果該值大于 byte 類型的范圍,將會(huì)出現(xiàn)什么現(xiàn)象?21、存在兩個(gè)類,B 繼承 A,C 繼承 B,我們能將 B 轉(zhuǎn)換為C 么?如 C = (C) B;22、哪個(gè)類包含 clone 方法?是 Cloneable 還是 Object? 23、不是線程安全的操作。它涉及到多個(gè)指令,如讀取變量值,增加,然后存儲(chǔ)回內(nèi)存,這個(gè)過程可能會(huì)出現(xiàn)多個(gè)線程交差。24、a = a + b 與 a += b 的區(qū)別25、我能在不進(jìn)行強(qiáng)制轉(zhuǎn)換的情況下將一個(gè) double 值賦值給long 類型的變量嗎?26、3*0.1 == 0.3 將會(huì)返回什么?true 還是 false? 27、int 和 Integer 哪個(gè)會(huì)占用更多的內(nèi)存?28、為什么 Java 中的 String 是不可變的(Immutable)?29、我們能在 Switch 中使用 String 嗎?30、Java 中的構(gòu)造器鏈?zhǔn)鞘裁矗?JVM 底層 與 GC(Garbage Collection) 的面試問題31、64 位 JVM 中,int 的長度是多數(shù)?32、Serial 與 Parallel GC 之間的不同之處?33、32 位和 64 位的 JVM,int 類型變量的長度是多數(shù)?34、Java 中 WeakReference 與 SoftReference 的區(qū)別?36、JVM 選項(xiàng) -XX:+UseCompressedOops 有什么作用?為什么要使用?37、怎樣通過 Java 程序來判斷 JVM 是 32 位 還是 64位?38、32 位 JVM 和 64 位 JVM 的最大堆內(nèi)存分別是多數(shù)? 39、JRE、JDK、JVM 及 JIT 之間有什么不同?3 年工作經(jīng)驗(yàn)的 Java 面試題42、怎么獲取 Java 程序使用的內(nèi)存?堆使用的百分比?44、“a==b”和”a.equals(b)”有什么區(qū)別?45、a.hashCode() 有什么用?與 a.equals(b) 有什么關(guān)系?46、final、finalize 和 finally 的不同之處? 47、Java 中的編譯期常量是什么?使用它又什么風(fēng)險(xiǎn)?48、List、Set、Map 和 Queue 之間的區(qū)別(答案) 49、poll() 方法和 remove() 方法的區(qū)別?50、Java 中 LinkedHashMap 和 PriorityQueue 的區(qū)別是什么?51、ArrayList 與 LinkedList 的不區(qū)別?52、用哪兩種方式來實(shí)現(xiàn)集合的排序?54、Java 中的 LinkedList 是單向鏈表還是雙向鏈表?55、Java 中的 TreeMap 是采用什么樹實(shí)現(xiàn)的?(答案)56、Hashtable 與 HashMap 有什么不同之處?57、Java 中的 HashSet,內(nèi)部是如何工作的? 58、寫一段代碼在遍歷 ArrayList 時(shí)移除一個(gè)元素?59、我們能自己寫一個(gè)容器類,然后使用 for-each 循環(huán)碼?60、ArrayList 和 HashMap 的默認(rèn)大小是多數(shù)?61、有沒有可能兩個(gè)不相等的對(duì)象有有相同的 hashcode?62、兩個(gè)相同的對(duì)象會(huì)有不同的的 hash code 嗎?63、我們可以在 hashcode() 中使用隨機(jī)數(shù)字嗎?64、Java 中,Comparator 與 Comparable 有什么不同?66、在我 Java 程序中,我有三個(gè) socket,我需要多少個(gè)線程來處理?67、Java 中怎么創(chuàng)建 ByteBuffer?68、Java 中,怎么讀寫 ByteBuffer ?70、ByteBuffer 中的字節(jié)序是什么?71、Java 中,直接緩沖區(qū)與非直接緩沖器有什么區(qū)別? 72、Java 中的內(nèi)存映射緩存區(qū)是什么? 73、socket 選項(xiàng) TCP NO DELAY 是指什么? 74、TCP 協(xié)議與 UDP 協(xié)議有什么區(qū)別?75、Java 中,ByteBuffer 與 StringBuffer 有什么區(qū)別?76、Java 中,編寫多線程程序的時(shí)候你會(huì)遵循哪些最佳實(shí)踐? 77、說出幾點(diǎn) Java 中使用 Collections 的最佳實(shí)踐78、說出至少 5 點(diǎn)在 Java 中使用線程的最佳實(shí)踐。79、說出 5 條 IO 的最佳實(shí)踐(答案) 80、列出 5 個(gè)應(yīng)該遵循的 JDBC 最佳實(shí)踐 81、說出幾條 Java 中方法重載的最佳實(shí)踐?Date、Time 及 Calendar 的面試題82、在多線程環(huán)境下,SimpleDateFormat 是線程安全的嗎?83、Java 中如何格式化一個(gè)日期?如格式化為 ddMMyyyy的形式?84、Java 中,怎么在格式化的日期中顯示時(shí)區(qū)? 85、Java 中 java.util.Date 與 java.sql.Date 有什么區(qū)別?86、Java 中,如何計(jì)算兩個(gè)日期之間的差距?87、Java 中,如何將字符串 YYYYMMDD 轉(zhuǎn)換為日期?90、怎么利用 JUnit 來測試一個(gè)方法的異常? 91、你使用過哪個(gè)單元測試庫來測試你的 Java 程序?92、@Before 和 @BeforeClass 有什么區(qū)別? 93、怎么檢查一個(gè)字符串只包含數(shù)字?94、Java 中如何利用泛型寫一個(gè) LRU 緩存?95、寫一段 Java 程序?qū)?byte 轉(zhuǎn)換為 long?95、在不使用 StringBuffer 的前提下,怎么反轉(zhuǎn)一個(gè)字符串?97、Java 中,怎么獲取一個(gè)文件中單詞出現(xiàn)的最高頻率?98、如何檢查出兩個(gè)給定的字符串是反序的?99、Java 中,怎么打印出一個(gè)字符串的所有排列?100、Java 中,怎樣才能打印出數(shù)組中的重復(fù)元素?101、Java 中如何將字符串轉(zhuǎn)換為整數(shù)? 102、在沒有使用臨時(shí)變量的情況如何交換兩個(gè)整數(shù)變量的值?關(guān)于 OOP 和設(shè)計(jì)模式的面試題103、接口是什么?為什么要使用接口而不是直接使用具體類?104、Java 中,抽象類與接口之間有什么不同?105、除了單例模式,你在生產(chǎn)環(huán)境中還用過什么設(shè)計(jì)模式?107、什么情況下會(huì)違反迪米特法則?為什么會(huì)有這個(gè)問題?108、適配器模式是什么?什么時(shí)候使用? 109、什么是“依賴注入”和“控制反轉(zhuǎn)”?為什么有人使用?110、抽象類是什么?它與接口有什么區(qū)別?你為什么要使用過抽象類?111、構(gòu)造器注入和 setter 依賴注入,那種方式更好?113、適配器模式和裝飾器模式有什么區(qū)別? 120、Java 中,嵌套公共靜態(tài)類與頂級(jí)類有什么不同?121、 OOP 中的 組合、聚合和關(guān)聯(lián)有什么區(qū)別?122、給我一個(gè)符合開閉原則的設(shè)計(jì)模式的例子? 123、抽象工廠模式和原型模式之間的區(qū)別? 125、嵌套靜態(tài)類與頂級(jí)類有什么區(qū)別? 126、你能寫出一個(gè)正則表達(dá)式來判斷一個(gè)字符串是否是一個(gè)數(shù)字嗎?127、Java 中,受檢查異常 和 不受檢查異常的區(qū)別? 128、Java 中,throw 和 throws 有什么區(qū)別?129、Java 中,Serializable 與 Externalizable 的區(qū)別?130、Java 中,DOM 和 SAX 解析器有什么不同?131、說出 JDK 1.7 中的三個(gè)新特性?132、說出 5 個(gè) JDK 1.8 引入的新特性?133、Java 中,Maven 和 ANT 有什么區(qū)別?
以上便是八股文面試常問的Java面試題,希望能夠給大家?guī)韼椭竺孢€會(huì)分享其他廠子常問的一些面試問題,大家記得隨時(shí)關(guān)注喲~~~~
以上面試題的答案由于過長,我就不一一羅列出來了,我已在后臺(tái)打包好完整的八股文面試題資料。如果有需要的小伙伴,記得關(guān)注公眾號(hào)后回復(fù)【666】即可領(lǐng)取。
想進(jìn)大廠的小伙伴請(qǐng)注意,
大廠面試的套路很神奇,
早做準(zhǔn)備對(duì)大家更有好處,
埋頭刷題效率低,
看面經(jīng)會(huì)更有效率!
小編準(zhǔn)備了一份大廠常問面經(jīng)匯總集

剩下的就不會(huì)給大家一展出來了,以上資料按照一下操作即可獲得
——將文章進(jìn)行轉(zhuǎn)發(fā)和評(píng)論,關(guān)注公眾號(hào)【Java烤豬皮】,關(guān)注后繼續(xù)后臺(tái)回復(fù)領(lǐng)取口令“ 666 ”即可免費(fèi)領(lǐng)文章取中所提供的資料。
關(guān)注作者微信公眾號(hào) — 《JAVA烤豬皮》
了解了更多java后端架構(gòu)知識(shí)以及最新面試寶典
看完本文記得給作者點(diǎn)贊+在看哦~~~大家的支持,是作者來源不斷出文的動(dòng)力~