Java 面試題及答案

多線程、并發(fā)及線程的基礎(chǔ)問題

1)Java 中能創(chuàng)建 Volatile 數(shù)組嗎?

能,Java 中可以創(chuàng)建 volatile 類型數(shù)組,不過只是一個指向數(shù)組的引用,而不是整個數(shù)組。我的意思是,如果改變引用指向的數(shù)組,將會受到 volatile 的保護,但是如果多個線程同時改變數(shù)組的元素,volatile 標示符就不能起到之前的保護作用了。

2)volatile 能使得一個非原子操作變成原子操作嗎?

一個典型的例子是在類中有一個 long 類型的成員變量。如果你知道該成員變量會被多個線程訪問,如計數(shù)器、價格等,你最好是將其設(shè)置為 volatile。為什么?因為 Java 中讀取 long 類型變量不是原子的,需要分成兩步,如果一個線程正在修改該 long 變量的值,另一個線程可能只能看到該值的一半(前 32 位)。但是對一個 volatile 型的 long 或 double 變量的讀寫是原子。

3)volatile 修飾符的有過什么實踐?

一種實踐是用 volatile 修飾 long 和 double 變量,使其能按原子類型來讀寫。double 和 long 都是64位寬,因此對這兩種類型的讀是分為兩部分的,第一次讀取第一個 32 位,然后再讀剩下的 32 位,這個過程不是原子的,但 Java 中 volatile 型的 long 或 double 變量的讀寫是原子的。volatile 修復符的另一個作用是提供內(nèi)存屏障(memory barrier),例如在分布式框架中的應用。簡單的說,就是當你寫一個 volatile 變量之前,Java 內(nèi)存模型會插入一個寫屏障(write barrier),讀一個 volatile 變量之前,會插入一個讀屏障(read barrier)。意思就是說,在你寫一個 volatile 域時,能保證任何線程都能看到你寫的值,同時,在寫之前,也能保證任何數(shù)值的更新對所有線程是可見的,因為內(nèi)存屏障會將其他所有寫的值更新到緩存。

4)volatile 類型變量提供什么保證?(答案)

volatile 變量提供順序和可見性保證,例如,JVM 或者 JIT為了獲得更好的性能會對語句重排序,但是 volatile 類型變量即使在沒有同步塊的情況下賦值也不會與其他語句重排序。 volatile 提供 happens-before 的保證,確保一個線程的修改能對其他線程是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位數(shù)據(jù)類型,像 long 和 double 都不是原子的,但 volatile 類型的 double 和 long 就是原子的。

5) 10 個線程和 2 個線程的同步代碼,哪個更容易寫?

從寫代碼的角度來說,兩者的復雜度是相同的,因為同步代碼與線程數(shù)量是相互獨立的。但是同步策略的選擇依賴于線程的數(shù)量,因為越多的線程意味著更大的競爭,所以你需要利用同步技術(shù),如鎖分離,這要求更復雜的代碼和專業(yè)知識。

8)什么是 Busy spin?我們?yōu)槭裁匆褂盟?br>

Busy spin 是一種在不釋放 CPU 的基礎(chǔ)上等待事件的技術(shù)。它經(jīng)常用于避免丟失 CPU 緩存中的數(shù)據(jù)(如果線程先暫停,之后在其他CPU上運行就會丟失)。所以,如果你的工作要求低延遲,并且你的線程目前沒有任何順序,這樣你就可以通過循環(huán)檢測隊列中的新消息來代替調(diào)用 sleep() 或 wait() 方法。它唯一的好處就是你只需等待很短的時間,如幾微秒或幾納秒。LMAX 分布式框架是一個高性能線程間通信的庫,該庫有一個 BusySpinWaitStrategy 類就是基于這個概念實現(xiàn)的,使用 busy spin 循環(huán) EventProcessors 等待屏障。

9)Java 中怎么獲取一份線程 dump 文件?

在 Linux 下,你可以通過命令 kill -3 PID (Java 進程的進程 ID)來獲取 Java 應用的 dump 文件。在 Windows 下,你可以按下 Ctrl + Break 來獲取。這樣 JVM 就會將線程的 dump 文件打印到標準輸出或錯誤文件中,它可能打印在控制臺或者日志文件中,具體位置依賴應用的配置。如果你使用Tomcat。

10)Swing 是線程安全的?(答案)

不是,Swing 不是線程安全的。你不能通過任何線程來更新 Swing 組件,如 JTable、JList 或 JPanel,事實上,它們只能通過 GUI 或 AWT 線程來更新。這就是為什么 Swing 提供 invokeAndWait() 和 invokeLater() 方法來獲取其他線程的 GUI 更新請求。這些方法將更新請求放入 AWT 的線程隊列中,可以一直等待,也可以通過異步更新直接返回結(jié)果。你也可以在參考答案中查看和學習到更詳細的內(nèi)容。

11)什么是線程局部變量?(答案)

線程局部變量是局限于線程內(nèi)部的變量,屬于線程自身所有,不在多個線程間共享。Java 提供 ThreadLocal 類來支持線程局部變量,是一種實現(xiàn)線程安全的方式。但是在管理環(huán)境下(如 web 服務器)使用線程局部變量的時候要特別小心,在這種情況下,工作線程的生命周期比任何應用變量的生命周期都要長。任何線程局部變量一旦在工作完成后沒有釋放,Java 應用就存在內(nèi)存泄露的風險。

12)用 wait-notify 寫一段代碼來解決生產(chǎn)者-消費者問題?(答案)

請參考答案中的示例代碼。只要記住在同步塊中調(diào)用 wait() 和 notify()方法,如果阻塞,通過循環(huán)來測試等待條件。

13) 用 Java 寫一個線程安全的單例模式(Singleton)?(答案)

請參考答案中的示例代碼,這里面一步一步教你創(chuàng)建一個線程安全的 Java 單例類。當我們說線程安全時,意思是即使初始化是在多線程環(huán)境中,仍然能保證單個實例。Java 中,使用枚舉作為單例類是最簡單的方式來創(chuàng)建線程安全單例模式的方式。

14)Java 中 sleep 方法和 wait 方法的區(qū)別?(答案)

雖然兩者都是用來暫停當前運行的線程,但是 sleep() 實際上只是短暫停頓,因為它不會釋放鎖,而 wait() 意味著條件等待,這就是為什么該方法要釋放鎖,因為只有這樣,其他等待的線程才能在滿足條件時獲取到該鎖。

15)什么是不可變對象(immutable object)?Java 中怎么創(chuàng)建一個不可變對象?(答案)

不可變對象指對象一旦被創(chuàng)建,狀態(tài)就不能再改變。任何修改都會創(chuàng)建一個新的對象,如 String、Integer及其它包裝類。詳情參見答案,一步一步指導你在 Java 中創(chuàng)建一個不可變的類。

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

是的,我們是可以創(chuàng)建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用。

數(shù)據(jù)類型和 Java 基礎(chǔ)面試問題

17)Java 中應該使用什么數(shù)據(jù)類型來代表價格?(答案)

如果不是特別關(guān)心內(nèi)存和性能的話,使用BigDecimal,否則使用預定義精度的 double 類型。

18)怎么將 byte 轉(zhuǎn)換為 String?(答案)

可以使用 String 接收 byte[] 參數(shù)的構(gòu)造器來進行轉(zhuǎn)換,需要注意的點是要使用的正確的編碼,否則會使用平臺默認編碼,這個編碼可能跟原來的編碼相同,也可能不同。

19)Java 中怎樣將 bytes 轉(zhuǎn)換為 long 類型?

這個問題你來回答 :-)

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

是的,我們可以做強制轉(zhuǎn)換,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果強制轉(zhuǎn)化是,int 類型的高 24 位將會被丟棄,byte 類型的范圍是從 -128 到 128。

21)存在兩個類,B 繼承 A,C 繼承 B,我們能將 B 轉(zhuǎn)換為 C 么?如 C = (C) B;(answer答案)

22)哪個類包含 clone 方法?是 Cloneable 還是 Object?(答案)

java.lang.Cloneable 是一個標示性接口,不包含任何方法,clone 方法在 object 類中定義。并且需要知道 clone() 方法是一個本地方法,這意味著它是由 c 或 c++ 或 其他本地語言實現(xiàn)的。

23)Java 中 ++ 操作符是線程安全的嗎?(答案)

23)不是線程安全的操作。它涉及到多個指令,如讀取變量值,增加,然后存儲回內(nèi)存,這個過程可能會出現(xiàn)多個線程交差。

24)a = a + b 與 a += b 的區(qū)別(答案)

+= 隱式的將加操作的結(jié)果類型強制轉(zhuǎn)換為持有結(jié)果的類型。如果兩這個整型相加,如 byte、short 或者 int,首先會將它們提升到 int 類型,然后在執(zhí)行加法操作。如果加法操作的結(jié)果比 a 的最大值要大,則 a+b 會出現(xiàn)編譯錯誤,但是 a += b 沒問題,如下:

byte a = 127;

byte b = 127;

b = a + b; // error : cannot convert from int to byte

b += a; // ok

(譯者注:這個地方應該表述的有誤,其實無論 a+b 的值為多少,編譯器都會報錯,因為 a+b 操作會將 a、b 提升為 int 類型,所以將 int 類型賦值給 byte 就會編譯出錯)

25)我能在不進行強制轉(zhuǎn)換的情況下將一個 double 值賦值給 long 類型的變量嗎?(答案)

不行,你不能在沒有強制類型轉(zhuǎn)換的前提下將一個 double 值賦值給 long 類型的變量,因為 double 類型的范圍比 long 類型更廣,所以必須要進行強制轉(zhuǎn)換。

26)3*0.1 == 0.3 將會返回什么?true 還是 false?(答案)

false,因為有些浮點數(shù)不能完全精確的表示出來。

27)int 和 Integer 哪個會占用更多的內(nèi)存?(答案)

Integer 對象會占用更多的內(nèi)存。Integer 是一個對象,需要存儲對象的元數(shù)據(jù)。但是 int 是一個原始類型的數(shù)據(jù),所以占用的空間更少。

28)為什么 Java 中的 String 是不可變的(Immutable)?(answer答案)

Java 中的 String 不可變是因為 Java 的設(shè)計者認為字符串使用非常頻繁,將字符串設(shè)置為不可變可以允許多個客戶端之間共享相同的字符串。更詳細的內(nèi)容參見答案。

29)我們能在 Switch 中使用 String 嗎?(answer答案)

從 Java 7 開始,我們可以在 switch case 中使用字符串,但這僅僅是一個語法糖。內(nèi)部實現(xiàn)在 switch 中使用字符串的 hash code。

30)Java 中的構(gòu)造器鏈是什么?(answer答案)

當你從一個構(gòu)造器中調(diào)用另一個構(gòu)造器,就是Java 中的構(gòu)造器鏈。這種情況只在重載了類的構(gòu)造器的時候才會出現(xiàn)。

JVM 底層 與 GC(Garbage Collection) 的面試問題

31)64 位 JVM 中,int 的長度是多數(shù)?

Java 中,int 類型變量的長度是一個固定值,與平臺無關(guān),都是 32 位。意思就是說,在 32 位 和 64 位 的Java 虛擬機中,int 類型的長度是相同的。

32)Serial 與 Parallel GC之間的不同之處?(答案)

Serial 與 Parallel 在GC執(zhí)行的時候都會引起 stop-the-world。它們之間主要不同 serial 收集器是默認的復制收集器,執(zhí)行 GC 的時候只有一個線程,而 parallel 收集器使用多個 GC 線程來執(zhí)行。

33)32 位和 64 位的 JVM,int 類型變量的長度是多數(shù)?(答案)

32 位和 64 位的 JVM 中,int 類型變量的長度是相同的,都是 32 位或者 4 個字節(jié)。

34)Java 中 WeakReference 與 SoftReference的區(qū)別?(答案)

雖然 WeakReference 與 SoftReference 都有利于提高 GC 和 內(nèi)存的效率,但是 WeakReference ,一旦失去最后一個強引用,就會被 GC 回收,而軟引用雖然不能阻止被回收,但是可以延遲到 JVM 內(nèi)存不足的時候。

35)WeakHashMap 是怎么工作的?(答案)

WeakHashMap 的工作與正常的 HashMap 類似,但是使用弱引用作為 key,意思就是當 key 對象沒有任何引用時,key/value 將會被回收。

36)JVM 選項 -XX:+UseCompressedOops 有什么作用?為什么要使用?(答案)

當你將你的應用從 32 位的 JVM 遷移到 64 位的 JVM 時,由于對象的指針從 32 位增加到了 64 位,因此堆內(nèi)存會突然增加,差不多要翻倍。這也會對 CPU 緩存(容量比內(nèi)存小很多)的數(shù)據(jù)產(chǎn)生不利的影響。因為,遷移到 64 位的 JVM 主要動機在于可以指定最大堆大小,通過壓縮 OOP 可以節(jié)省一定的內(nèi)存。通過 -XX:+UseCompressedOops 選項,JVM 會使用 32 位的 OOP,而不是 64 位的 OOP。

37)怎樣通過 Java 程序來判斷 JVM 是 32 位 還是 64 位?(答案)

你可以檢查某些系統(tǒng)屬性如 sun.arch.data.model 或 os.arch 來獲取該信息。

38)32 位 JVM 和 64 位 JVM 的最大堆內(nèi)存分別是多數(shù)?(答案)

理論上說上 32 位的 JVM 堆內(nèi)存可以到達 2^32,即 4GB,但實際上會比這個小很多。不同操作系統(tǒng)之間不同,如 Windows 系統(tǒng)大約 1.5 GB,Solaris 大約 3GB。64 位 JVM允許指定最大的堆內(nèi)存,理論上可以達到 2^64,這是一個非常大的數(shù)字,實際上你可以指定堆內(nèi)存大小到 100GB。甚至有的 JVM,如 Azul,堆內(nèi)存到 1000G 都是可能的。

39)JRE、JDK、JVM 及 JIT 之間有什么不同?(答案)

JRE 代表 Java 運行時(Java run-time),是運行 Java 引用所必須的。JDK 代表 Java 開發(fā)工具(Java development kit),是 Java 程序的開發(fā)工具,如 Java 編譯器,它也包含 JRE。JVM 代表 Java 虛擬機(Java virtual machine),它的責任是運行 Java 應用。JIT 代表即時編譯(Just In Time compilation),當代碼執(zhí)行的次數(shù)超過一定的閾值時,會將 Java 字節(jié)碼轉(zhuǎn)換為本地代碼,如,主要的熱點代碼會被準換為本地代碼,這樣有利大幅度提高 Java 應用的性能。

最近5年133個Java面試問題列表

3 年工作經(jīng)驗的 Java 面試題

40)解釋 Java 堆空間及 GC?(答案)

當通過 Java 命令啟動 Java 進程的時候,會為它分配內(nèi)存。內(nèi)存的一部分用于創(chuàng)建堆空間,當程序中創(chuàng)建對象的時候,就從對空間中分配內(nèi)存。GC 是 JVM 內(nèi)部的一個進程,回收無效對象的內(nèi)存用于將來的分配。

最近5年133個Java面試問題列表

JVM 底層面試題及答案

41)你能保證 GC 執(zhí)行嗎?(答案)

不能,雖然你可以調(diào)用 System.gc() 或者 Runtime.gc(),但是沒有辦法保證 GC 的執(zhí)行。

42)怎么獲取 Java 程序使用的內(nèi)存?堆使用的百分比?

可以通過 java.lang.Runtime 類中與內(nèi)存相關(guān)方法來獲取剩余的內(nèi)存,總內(nèi)存及最大堆內(nèi)存。通過這些方法你也可以獲取到堆使用的百分比及堆內(nèi)存的剩余空間。Runtime.freeMemory() 方法返回剩余空間的字節(jié)數(shù),Runtime.totalMemory() 方法總內(nèi)存的字節(jié)數(shù),Runtime.maxMemory() 返回最大內(nèi)存的字節(jié)數(shù)。

43)Java 中堆和棧有什么區(qū)別?(答案)

JVM 中堆和棧屬于不同的內(nèi)存區(qū)域,使用目的也不同。棧常用于保存方法幀和局部變量,而對象總是在堆上分配。棧通常都比堆小,也不會在多個線程之間共享,而堆被整個 JVM 的所有線程共享。

最近5年133個Java面試問題列表

關(guān)于內(nèi)存的的面試問題和答案

Java 基本概念面試題

44)“a==b”和”a.equals(b)”有什么區(qū)別?(答案)

如果 a 和 b 都是對象,則 a==b 是比較兩個對象的引用,只有當 a 和 b 指向的是堆中的同一個對象才會返回 true,而 a.equals(b) 是進行邏輯比較,所以通常需要重寫該方法來提供邏輯一致性的比較。例如,String 類重寫 equals() 方法,所以可以用于兩個不同對象,但是包含的字母相同的比較。

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

hashCode() 方法是相應對象整型的 hash 值。它常用于基于 hash 的集合類,如 Hashtable、HashMap、LinkedHashMap等等。它與 equals() 方法關(guān)系特別緊密。根據(jù) Java 規(guī)范,兩個使用 equal() 方法來判斷相等的對象,必須具有相同的 hash code。

46)final、finalize 和 finally 的不同之處?(答案)

final 是一個修飾符,可以修飾變量、方法和類。如果 final 修飾變量,意味著該變量的值在初始化后不能被改變。finalize 方法是在對象被回收之前調(diào)用的方法,給對象自己最后一個復活的機會,但是什么時候調(diào)用 finalize 沒有保證。finally 是一個關(guān)鍵字,與 try 和 catch 一起用于異常的處理。finally 塊一定會被執(zhí)行,無論在 try 塊中是否有發(fā)生異常。

47)Java 中的編譯期常量是什么?使用它又什么風險?

公共靜態(tài)不可變(public static final )變量也就是我們所說的編譯期常量,這里的 public 可選的。實際上這些變量在編譯時會被替換掉,因為編譯器知道這些變量的值,并且知道這些變量在運行時不能改變。這種方式存在的一個問題是你使用了一個內(nèi)部的或第三方庫中的公有編譯時常量,但是這個值后面被其他人改變了,但是你的客戶端仍然在使用老的值,甚至你已經(jīng)部署了一個新的jar。為了避免這種情況,當你在更新依賴 JAR 文件時,確保重新編譯你的程序。

Java 集合框架的面試題

這部分也包含數(shù)據(jù)結(jié)構(gòu)、算法及數(shù)組的面試問題

48) List、Set、Map 和 Queue 之間的區(qū)別(答案)

List 是一個有序集合,允許元素重復。它的某些實現(xiàn)可以提供基于下標值的常量訪問時間,但是這不是 List 接口保證的。Set 是一個無序集合。

49)poll() 方法和 remove() 方法的區(qū)別?

poll() 和 remove() 都是從隊列中取出一個元素,但是 poll() 在獲取元素失敗的時候會返回空,但是 remove() 失敗的時候會拋出異常。

50)Java 中 LinkedHashMap 和 PriorityQueue 的區(qū)別是什么?(答案)

PriorityQueue 保證最高或者最低優(yōu)先級的的元素總是在隊列頭部,但是 LinkedHashMap 維持的順序是元素插入的順序。當遍歷一個 PriorityQueue 時,沒有任何順序保證,但是 LinkedHashMap 課保證遍歷順序是元素插入的順序。

51)ArrayList 與 LinkedList 的不區(qū)別?(答案)

最明顯的區(qū)別是 ArrrayList 底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,支持隨機訪問,而 LinkedList 的底層數(shù)據(jù)結(jié)構(gòu)書鏈表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間復雜度是 O(1),而 LinkedList 是 O(n)。更多細節(jié)的討論參見答案。

52)用哪兩種方式來實現(xiàn)集合的排序?(答案)

你可以使用有序集合,如 TreeSet 或 TreeMap,你也可以使用有順序的的集合,如 list,然后通過 Collections.sort() 來排序。

53)Java 中怎么打印數(shù)組?(answer答案)

你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法來打印數(shù)組。由于數(shù)組沒有實現(xiàn) toString() 方法,所以如果將數(shù)組傳遞給 System.out.println() 方法,將無法打印出數(shù)組的內(nèi)容,但是 Arrays.toString() 可以打印每個元素。

54)Java 中的 LinkedList 是單向鏈表還是雙向鏈表?(答案)

是雙向鏈表,你可以檢查 JDK 的源碼。在 Eclipse,你可以使用快捷鍵 Ctrl + T,直接在編輯器中打開該類。

55)Java 中的 TreeMap 是采用什么樹實現(xiàn)的?(答案)

Java 中的 TreeMap 是使用紅黑樹實現(xiàn)的。

56) Hashtable 與 HashMap 有什么不同之處?(答案)

這兩個類有許多不同的地方,下面列出了一部分:

a) Hashtable 是 JDK 1 遺留下來的類,而 HashMap 是后來增加的。

b)Hashtable 是同步的,比較慢,但 HashMap 沒有同步策略,所以會更快。

c)Hashtable 不允許有個空的 key,但是 HashMap 允許出現(xiàn)一個 null key。

更多的不同之處參見答案。

57)Java 中的 HashSet,內(nèi)部是如何工作的?(answer答案)

HashSet 的內(nèi)部采用 HashMap來實現(xiàn)。由于 Map 需要 key 和 value,所以所有 key 的都有一個默認 value。類似于 HashMap,HashSet 不允許重復的 key,只允許有一個null key,意思就是 HashSet 中只允許存儲一個 null 對象。

58)寫一段代碼在遍歷 ArrayList 時移除一個元素?(答案)

該問題的關(guān)鍵在于面試者使用的是 ArrayList 的 remove() 還是 Iterator 的 remove()方法。這有一段示例代碼,是使用正確的方式來實現(xiàn)在遍歷的過程中移除元素,而不會出現(xiàn) ConcurrentModificationException 異常的示例代碼。

59)我們能自己寫一個容器類,然后使用 for-each 循環(huán)碼?

可以,你可以寫一個自己的容器類。如果你想使用 Java 中增強的循環(huán)來遍歷,你只需要實現(xiàn) Iterable 接口。如果你實現(xiàn) Collection 接口,默認就具有該屬性。

60)ArrayList 和 HashMap 的默認大小是多數(shù)?(答案)

在 Java 7 中,ArrayList 的默認大小是 10 個元素,HashMap 的默認大小是16個元素(必須是2的冪)。這就是 Java 7 中 ArrayList 和 HashMap 類的代碼片段:

// from ArrayList.java JDK 1.7

private static final int DEFAULT_CAPACITY = 10;

//from HashMap.java JDK 7

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

61)有沒有可能兩個不相等的對象有有相同的 hashcode?

有可能,兩個不相等的對象可能會有相同的 hashcode 值,這就是為什么在 hashmap 中會有沖突。相等 hashcode 值的規(guī)定只是說如果兩個對象相等,必須有相同的hashcode 值,但是沒有關(guān)于不相等對象的任何規(guī)定。

62)兩個相同的對象會有不同的的 hash code 嗎?

不能,根據(jù) hash code 的規(guī)定,這是不可能的。

63)我們可以在 hashcode() 中使用隨機數(shù)字嗎?(答案)

不行,因為對象的 hashcode 值必須是相同的。參見答案獲取更多關(guān)于 Java 中重寫 hashCode() 方法的知識。

64)Java 中,Comparator 與 Comparable 有什么不同?(答案)

Comparable 接口用于定義對象的自然順序,而 comparator 通常用于定義用戶定制的順序。Comparable 總是只有一個,但是可以有多個 comparator 來定義對象的順序。

65)為什么在重寫 equals 方法的時候需要重寫 hashCode 方法?(答案)

因為有強制的規(guī)范指定需要同時重寫 hashcode 與 equal 是方法,許多容器類,如 HashMap、HashSet 都依賴于 hashcode 與 equals 的規(guī)定。

歡迎來大家學習、討論java等問題 左邊620 中間3036 右邊046【一個java的修養(yǎng)】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 阿里java相關(guān)問題,都是之前通過不斷優(yōu)秀人才的鋪墊總結(jié)的,希望對大家?guī)椭?,祝面試成功,有個更好的職業(yè)規(guī)劃。 1、...
    Java架構(gòu)師Carl閱讀 2,905評論 1 93
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,901評論 11 349
  • 轉(zhuǎn)自 m.itdecent.cn/p/bd1bfc0c34b8 作為一個程序員,在找工作的過程中,都會遇到筆試...
    灬黑客灬閱讀 4,488評論 1 118
  • 所有知識點已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)? 在 Jav...
    侯蛋蛋_閱讀 2,720評論 1 4
  • 始于外貌!終于人品
    霍啟示閱讀 171評論 0 0

友情鏈接更多精彩內(nèi)容