2019年5月4日 星期六

JAVA 筆試 (二)

Q1.介面 interface 與 抽象類別(abstract class ) 差異

抽象類與介面的區別,這是一個經常被問到面試題,區別主要有以下幾點,可以從幾個方面進行分析:

(一) 繼承方面:
       (1) 抽象類只能單繼承;介面可以多實現
(二) 成員屬性方面:
       (1) 抽象類中可以有普通屬性,也可以有常量
       (2) 介面中的成員變量全部默認是常量,使用public static final修飾,這個可以省略不寫
(三) 代碼塊方面:
       (1) 抽象類可以含初始化塊;介面不能含初始化塊
(四) 構造函數方面:
       (1) 介面不能有構造函數
       (2) 抽象類可以有構函數,但是這裏的構造函數不是用來創建對象的,而且用來被實現類調用進行初始化操作的
(五) 方法方面:
       (1) 介面裏面不能定義靜態方法;抽象類裏面可以定義靜態方法
       (2) 介面裏面只能是抽象方法;抽象類裏面可以有抽象方法也可以有普通方法

上面就是介面與抽象類的區別,在說完區別之後,可以補充一下介面與抽象類之間的相同之處:
(1) 介面與抽象類都不能被實例化,需要被其他進行實現或繼承
(2) 介面與抽象類裏面都能包含抽象方法,實現介面或繼承抽象類的子類都必須實現這些抽象方法

針對相同之處的第二點,再細說一下
(一) 超類是介面:
       (1) 如果使用介面繼承(extends,無法使用implements)這個介面,那麼在這個子類介面中,可以實現其父類介面中的抽象方法(這種方法我從沒看見過,但是在今天的面試中,面試官問我介面中是否可以有具體的實現方法,可以將這種情況舉出來)
       (2) 如果使用抽象類實現這個介面,可以在這個子類抽象類中實現父類介面中的抽象方法
       (3) 如果使用具體類實現這個介面,那麼就必須實現父類介面中的所有抽象方法
(二) 超類是抽象類:
       (1) 介面不能繼承抽象類
       (2) 如果使用抽象類繼承這個抽象類,可以在這個子類抽象類中實現父類介面中的抽象方法
       (3) 如果使用具體類繼承這個抽象類,那麼就必須實現父類抽象類中的所有抽象方法

對於上面的說明,所以在相同之處的第二點處主要是針對具體類繼承抽象類或實現介面來說的。

小總結:

共同:
都是上層的抽象層
都不能被實例化
都包含抽象方法 (抽象方法沒有方法體,需要被實現,不能定義為 private)
         
 不共同:
1.在抽像類中可以寫非抽象的方法,介面中只能有抽象的方法
2.一個類只能繼承一個直接父類,這個父類可以是具體的類也可是抽像類;但是一個類可以實現多個介面。
3.抽像類和方法要加 abstract (抽象)來修飾
4.類是對具體事物的抽象,封閉的是具體事物的固有屬性;介面是對動作的抽象,不同的類可以實現介面中的動作方法
5.介面更多用來做契約或是約定,即規範約束



Q2. 集合常用 介面   List set map 的差別

Java集合的主要分為三種類型:

List(列表)
Set(集)
Map(映射)

1)List和Set是Collection(採集)的子介面,map不是。
2)List的底層是數組的方式實現,Set是散列表的方式實現,map是鍵值對的方式。
3)list是有序可重複的,Set是無序不可重複的,map是有序,key不重複,value(值)可重複
4)list和Set可直接使用itertator(迭代器)  來進行遍歷,map只能通過先遍歷Key在遍歷value(值).


Q3.JAVA  基礎型別有哪些
byte、short、int 和 long



Q4.Java面试题:什么是ORM?

對象關係映射(Object-Relational Mapping,簡稱ORM)是一種為了解決程序的面向對像模型與數據庫的關係模型互不匹配問題的技術;簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據(在Java中可以用XML或者是註解),將程序中的對象自動持久化到關係數據庫中或者將關係數據庫表中的行轉換成Java對象,其本質上就是將數據從一種形式轉換到另外一種形式。



Q5.Java面试题     JENKINS 是甚麼?
            
Jenkins 是一個可擴展的持續集成引擎。
主要用於:
  • l 持續、自動地構建/測試軟件項目。
  • l 監控一些定時執行的任務。
Jenkins擁有的特性包括:
  • l 易於安裝-只要把jenkins.war部署到servlet容器,不需要數據庫支持。
  • l 易於配置-所有配置都是通過其提供的web界面實現。
  • l 集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知。
  • l 生成JUnit/TestNG測試報告。
  • l 分佈式構建支持Jenkins能夠讓多台計算機一起構建/測試。
  • l 文件識別:Jenkins能夠跟踪哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
  • l 插件支持:支持擴展插件,你可以開發適合自己團隊使用的工具。
Q6.  Java面试题    JIRA  是甚麼?
JIRA,中文名常翻譯為:吉拉,但尚未有見到官方的譯名它是由澳大利亞的Atlassian的公司所開發的一款知名工具軟件,其主要作用是:軟件,移動應用程序開發過程中的bug(程序漏洞,缺陷)跟踪,問題跟踪(問題跟踪),以及敏捷項目管理(敏捷項目管理)。
有趣的是,“JIRA”這個名字實際上是由日文單詞“戈吉拉”演變而來,戈吉拉的意思是“哥斯拉”(哥斯拉)。由於JIRA內置對的Scrum,看板,Kanplan的支持,因此尤為適合敏捷開發項目.JIRA本身是由JAVA語言所開發。


Q7.  Java面试题   SOA  是甚麼?

(1)SOA的概念

SOA(Service-oriented archITecture,面向服務架構),而 WebService是實現 SOA 的其中一種方式,所以兩者並不是一個概念。WebService基於 SOAP 協議的,本質就是基於XML的,正是因為基於 XML,所以SOA才能整合不同的平台,不同的應用。

(2)SOA的作用:

①整合異構系統。準確點說,整合企業的遺留系統、正在開發的系統和即將開發的新系統。不同的系統可能採用不同的平台,如操作系統的選擇;不同的開發語言;不同的系統架構。


②及時的響應用戶的業務變化。大量的SOA組件,通過整合和拆散,然後打包成一個個的粒度合適的SOA組件,再經過流程管理工具的處理,實現業務的不斷變化。就像變形金剛那樣,零件還是那些零件,但是經過一定的變化,也就是對SOA組件的拆和並, 就可以玩不同的花樣。當然這是理想情況,至於到底實際情況如何,筆者也沒有搞過,所以不清楚。


Q8.鏈接這些構造函數以創建對像以從名為“in” 的文件中讀取並寫入名為“out”的文件。 



答:

解說:

串起這些建構子,用以建立物件來讀取檔案in ,並且寫入檔案out





Q10. 會打印甚麼?  

package com;
public class rrrt {
public static void main(String[] args) {
// TODO Auto-generated method stub

StringBuffer s = new StringBuffer("123456789");
System.out.println(s);
s.delete(0, 3).replace(1,3,"24").delete(4, 6);
System.out.println(s);
}
}

答 :123456789
4247
b