想更好的應對面試,仍是須要不斷學習不斷總結,下面咱們來分析三道面試題。java
下面是一道入門級面試題,這道題基本上都是問初級的小夥伴比較多,但若是你是中級,或者高級。我以爲未必都能回答上來。編程
儘可能答出如下幾個關鍵詞:安全
1)簡單易學。Java有豐富的類庫,可以經過靜態方法封裝,下降API的學習成本,提升工做效率。多線程
2)面向對象。這個也是Java最重要的特性,java可以使得程序耦合度更低,內聚性更高。併發
3)可靠安全。Java生態系統包括用於分析和報告安全性問題的各類工具。app
4)與平臺無關。Java可以跨平臺使用,Write Once Run AnyWhere。實際上就是對應操做系統上都有個虛擬機做爲一箇中間轉換。ide
5)支持多線程。Java能夠採用多線程+協程方式實現更多的併發操做。函數
下面也是一道入門級面試題,面向過程與面向對象的區別,這裏最好的是搞過C或C++的同窗,後面來搞Java了,這樣對面向過程和麪向對象編程的體會更深。微服務
1)從概念上來講。面向過程:字面意義上就是面向的是過程,先作什麼、在作什麼、最後作什麼,而後用函數把這些步驟一步一步地實現,在使用的時候一一調用則可。面向對象:字面意義上就是面向的是對象,是把構成問題的事務分解成各個對象,可是創建對象的目的也不是爲了完成一個個步驟,而是爲了描述某個事物在解決整個問題的過程當中所發生的行爲。
2)從性能上來講。面向過程性能較高,因此單片機、嵌入式開發等通常採用面向過程開發。從性能上來講,面向對象比面向過程要低。
3)從可用性來講。面向對象有封裝、繼承、多態的特性,因此易維護、易複用、易擴展,能夠設計出低耦合的系統。
擴展面試題
:說說面向切面和麪向對象的區別。
下面仍是一道入門面試題,每一個面試題都不要掉以輕心,都是考驗基本功是否紮實。
都是和方法有關係的,那Java中方法的簽名包含什麼呢?
要完整的描述一個方法,須要指出方法名以及參數類型,這就叫方法的簽名。
好比說String類中有4個稱爲indexOf的公有方法:
indexOf(int)
indexOf(int,int)
indexOf(String)
indexOf(String,int)
返回類型不是方法簽名的一部分,也就是說,不能有兩個名字相同、參數類型也相同卻有着不一樣類型返回值的方法。
public void say(String name){
}
public String say(String name){
}
咱們繼續聊方法的重寫與重載:
「方法的重寫(Override)」
從字面上看,重寫就是 從新寫一遍的意思。其實就是在子類中把父類自己有的方法從新寫一遍。子類繼承了父類原有的方法,但有時子類並不想原封不動的繼承父類中的某個方法,因此在方法名,參數列表,返回類型(除過子類中方法的返回值是父類中方法返回值的子類時)都相同的狀況下, 對方法體進行修改或重寫,這就是重寫。但要注意子類函數的訪問修飾權限不能少於父類的。
public class Father {
public static void main(String[] args) {
Son s = new Son();
s.sayHello();
}
public void sayHello() {
System.out.println("Father say Hello");
}
}
class Son extends Father{
//Son重寫了Father的 sayHello方法
@Override
public void sayHello() {
System.out.println("Son say hello ");
}
}
總結:
1.發生在父類與子類之間 。
2.方法名,參數列表,返回類型(除過子類中方法的返回類型是父類中返回類型的子類)必須相同。
3.訪問修飾符的限制必定要大於被重寫方法的訪問修飾符(public>protected>default>private) 。
4.重寫方法必定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。
「方法的重載(Overload)」
Java中容許同一個類中能夠定義多個同名方法,只要形參列表(方法入參)不一樣就行。若是同一個類種包含了兩個或者多個以上方法的名稱相同,可是形參列表不一樣,則被稱之爲方法重載。
在一個類中,同名的方法若是有不一樣的參數列表(參數類型不一樣、參數個數不一樣甚至是參數順序不一樣)則視爲重載。同時,重載對返回類型沒有要求,能夠相同也能夠不一樣,但不能經過返回類型是否相同來判斷重載。
public class Father {
public static void main(String[] args) {
// TODO Auto-generated method stub
Father s = new Father();
s.sayHello();
s.sayHello("wintershii");
}
public void sayHello() {
System.out.println("Hello");
}
public void sayHello(String name) {
System.out.println("Hello" + " " + name);
}
public void sayHello(Long userId, String name) {
sayHello("Hello" + " " + name);
}
}
總結:
方法重載要求兩同一不一樣:
1.同一個類中。
2.方法名相同。
3.參數列表不相同。
方法返回值、修飾符,與方法重載沒有任何關係。
不推薦使用如下方式:
public void sayHello(String name){
}
public void sayHello(String... name){
}
由於這麼作實在是沒有太大的意義,而且容易下降程序的可讀性。
本文分享了三道入門級面試題,你都能回答上來嗎?你回答都是背的嗎仍是本身真正理解的?
「稍微認真點、踏實點、努力點,發光是早晚的事」
推薦閱讀