你當前所在位置:首頁 > IT就業問題 > 劃重點了:Java面試基礎知識有哪些?

劃重點了:Java面試基礎知識有哪些?

1.面向對象的三大特性

繼承、封裝、多態


什么是繼承?

①繼承是面向對象程序設計能夠提高軟件開發效率的重要原因之一。

②繼承是具有傳遞性的,就像現實中孫子不僅長得像爸爸而且還像他爺爺。

③繼承來的屬性和方法是隱式的,也就是在本類里面是看不見的。

④一個類只能有一個父類,也就是類只能是單繼承。

⑤一個接口可以有多個父類,也就是接口可以是多繼承。

實際項目開發中,一個類繼承于另一個類,那么前者就是后者的子類,反則反之。

微信截圖_20191101110606.png


什么是封裝?

對象數據和操作該對象的指令都是對象自身的一部分,能夠實現盡可能對外部隱藏數據。

實際項目開發中,使用封裝最多的就是實體類,常常和 JavaBean (類必須是具體的和公共的,并且具有無參數的構造器)一起使用。

那么,實體類有那些東西呢

答:私有的成員變量、無參數的構造器、有參數的構造器、setter和getters方法、重寫tostring方法、重寫hashCode和equals方法。


什么是多態?

①多態就是對象擁有多種形態:引用多態和方法多態。

②引用多態:父類的引用可以指向本類對象、父類的引用可以指向子類的對象。

③方法多態:創建本類對象時,調用的方法為本類的方法;創建子類對象時,調用的方法為子類重寫的方法或者繼承的方法。

④存在多態的必要條件:繼承、重寫。

⑤多態的作用是消除類型之間的耦合關系。

在實際項目開發中,A 類繼承 B 類,如果在 A 類中不重寫 B 類的方法的時候,輸出的仍舊是 B 類方法里面的信息(B b=new A());如果在A類中重寫 B 類的方法的時候,輸出的是 A 類方法里面的信息(B b=new A())。


2.Java集合框架樹

Collection 接口:它是 Java 集合框架的一個根接口,也是List、Set和 Queue 接口的父接口。同時它定義了可用于操作 List、Set 和 Queue 的方法—增刪改查。


Map接口:它提供了一種映射關系,其中的元素是以鍵值對 (key-value) 的形式存儲的。Map 接口有一個重要的實現類 HashMap。

①在 Map 接口中的鍵值對是以 Entry 類型的對象實例形式存在。

②在 Map 接口中鍵值( Key 值)是不可以重復的,value 值卻可以重復,也就是存在多對一的關系。

③在 Map 接口中提供了分別返回Key值的集合、value值的集合以及Entry集合的方法。

④ Map 支持泛型,同時 Key 值和 value 值都是可以為 null 的。

⑤在 HashMap 中的 Entry 對象是無序排序的,這點特性和 List 接口是相反的。

⑥在 HashMap 中有且只能有一個 Key 值為 null 的映射。(注:ke 值是不能重復的)


List 接口:List 接口有一個重要的實現類 ArrayList (數組序列)。

① List 是元素有序并且可以重復的集合。

② List 可以精確的控制每個元素的插入位置,或刪除某個元素的位置。


Comparator接口:臨時的比較規則。如果某一個類要實現這個接口,那必然要實現它的 Compare() 方法。

Comparable接口:默認的比較規則。當實現了這個接口,則表示這個類的實例可以比較大小,可以進行自然排序。如果某一個類要實現這個接口,那必然要實現它的 CompareTo() 方法。


3.Java中的IO流

字節流:

//一個字節一個字節的讀寫

FileInputStream in=new FileInputStream("源文件");

FileOutputStream out=new FileOutputStream("目標文件");

......

in.close();

out.close();


首先要記住,一旦使用了IO流最后一定要記得關閉,這是常識。

//利用緩沖區,高效的讀取字節

BufferedInputStream in=new BufferedInputStream(new FileInputStream("源文件");

BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("目標文件");

......

in.close();

out.close();


字符流:

InputStreamReader isr=new InputStreamReader(new FileInputStream("源文件路徑"),"設置編碼");

OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("目標文件路徑"),"設置編碼");

......

osw.close();

isr.close();


也可以這樣寫:

FileReader fr=new FileReader("源文件路徑");

FileWriter fw=new FileWriter("目標文件路徑");

......

fr.close();

fw.close();

//利用緩沖區,高效的讀取字符

BufferedReader br=new BufferedReader(new FileReade("源文件路徑");

PrintWriter pw=new PrintWriter("目標文件路徑");

......

br.close();

pw.close();


序列化和反序列化:

//對象的序列化

ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));

這里的file指的是 String file="文件在項目中的路徑";


//對象的反序列化

ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));


4.Java的Socket通信(多線程)

思路:

①首先創建服務器端Socket,指定并偵聽某一個端口,然后循環監聽開始等待客戶端的連接….

②創建客戶端socket,指定服務器地址和端口,然后獲取輸出流,向服務器端發送請求,并關閉socket輸出流。

③服務端接收到客戶端的請求后,創建新線程并啟動。

④創建線程處理類,執行線程操作,獲取輸入流,服務端讀取客戶端用戶詳情,關閉資源。

⑤執行線程操作,獲取輸出流,響應客戶端請求,客戶端接受到服務端的響應,關閉資源。


簡單點講,就相當于我跟你說話(客戶端→服務端),你收到我說的話(服務端→線程處理類),大腦進行思考后(線程處理類),做出回答我的話(線程處理類→客戶端)。


5.關系型數據庫

數據庫的三范式:

①字段不可分。

②有主鍵,非主鍵字段依賴主鍵。

③非主鍵字段不能互相依賴。


T-SQL:

在整個數據庫中,查詢操作占據增刪改查的80%,而說到查詢,T-SQL語句自然不能少。如圖上示。


增:

①插入單行

insert into

②將現有的表數據添加到一個已有表

insert into

③直接拿現有表數據創建一個新表并填充

select


刪:

①刪除滿足條件的行

delete from

②刪除整個表

truncate table

注:刪除表的所有行,但表的結構、列、約束、索引等不會被刪除;不能用語有外建約束引用的表。


改:

①更新

update


子查詢:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);


其中:

①SELECT * FROM t1 …稱為外查詢。

②SELECT column1 FROM t2 稱為子查詢。


所以,我們就說子查詢是嵌套在外查詢內部的。而事實上它也有可能在子查詢內部再嵌套一個或者多個子查詢。

這里要注意,子查詢必須出現在圓括號之間哦。

課程預約

极速1分彩_Welcome