一些Java基礎方面問題的總結
最近做面試題,遇到一些問題,整理一下!
1、Overloaded的方法是否可以改變返回值的類型?
答案:可以。
overload是重載,overloaded是什麽?重載的過去式?我還以為是我沒見過的註解,也沒有給限定條件,代碼測試一下。
1 public class Test { 2 public void getTest() { 3 System.out.println("無返回值!"); 4 } 5 6 // public String getTest(){ 7 // return "返回String";8 // } 9 10 public String getTest(String str) { 11 return str; 12 } 13 14 // public Integer getTest(String str){ 15 // return 0; 16 // } 17 18 public String getTest(String str, Integer num) { 19 return "返回String"; 20 } 21 }
註釋部分報錯,很明顯,如果吧這個單詞也解釋為重載的話,重載的基本定義:類名相同,參數不同,同類。所以我認為答案應該是,在參數不同的情況下,重載與返回值無關。
2、垃圾回收器的基本原理是什麽?垃圾回收器可以馬上回收內存嗎?有什麽辦法可以主動通知虛擬機進行垃圾回收?
這個問題可以延伸到jvm方面的知識,java本身是運行在jvm上的,所以才實現了跨平臺,在項目較小的時候,我們基本不用考慮內存管理方面的問題。
談到jvm,就要了解jvm的內存結構,jvm的內存結構包括五大區域:程序計數器、虛擬機棧、本地方法棧、堆區、方法區。而程序計數器、虛擬機棧、本地方法棧3個區域是根據線程啟動而創建和銷毀。所以基本不用考慮垃圾回收的問題。
而我們需要關註的就是堆區、方法區的垃圾回收。
具體可以參考:
JVM的垃圾回收機制
給出可以參考的答案:垃圾回收器是作為一個單獨的低級別的線程運行,在不可知的情況下對內存堆中已死亡的或者長期沒有使用的對象回收,但是不能實時的對某一對象或者所有對象進行垃圾回收。所以根據原理,無法馬上回收內存。可以使用System.gc()方法通知虛擬機進行垃圾回收。
3、sleep()和wait()有什麽區別
區別1:sleep()後,程序並不會不釋放同步鎖。wait()後,程序會釋放同步鎖。
區別2:sleep()指定時間喚醒,wait()使用notify()直接喚起。
4、A,B兩個人分別在兩座島上。B生病了,A有B所需的藥。C有一艘小船和一個可以上鎖的箱子。C願意在A和B之間運東西,但東西只能放在箱子裏。只要箱子沒被鎖上鎖,C都會偷走箱子裏的東西,不管箱子裏是什麽。如果A和B各自有一把鎖和只能開自己那把鎖的鑰匙,A應該如何把東西安全的交給B?
想了一下,想到了一個方法。A把藥放到箱子裏,然後鎖上,交給B,B把箱子鎖上,交給A,此時箱子有兩把鎖,A開鎖後交給B,這樣就完成了運送,在這些過程中,箱子在C的手上始終都有鑰匙,所以安全性沒有問題。
5、用最有效率的方法算出 2 乘以 8 等於幾?
2 << 3
6、 web 運用程序的穩定、安全需要考慮哪些?
Web 服務器的性能考慮主要有:並發用戶數、事務安全、負載均衡、時段流量、網絡帶寬 網格安全等。
網絡安全方面:
1、關鍵數據的保護,例如用戶數據等
2、功能服務的正常提供。
3、網站的防攻擊能力。
4、對異常災害的恢復能力。
程序性能:
1、響應請求並運行得出結果的時間。
2、錯誤的檢測和攔截。
3、擴展性。
一些Java基礎方面問題的總結