首頁>技術>

穿西服的白領面試向量插畫

1.面向物件和麵向過程的區別

面向過程優點: 效能比面向物件高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源;比如微控制器、嵌入式開發、Linux/Unix 等一般採用面向過程開發,效能是最重要的因素。缺點: 沒有面向物件易維護、易複用、易擴充套件面向物件優點: 易維護、易複用、易擴充套件,由於面向物件有封裝、繼承、多型性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護缺點: 效能比面向過程低

2.Java語言有哪些特點

1. 簡單易學;2. 面向物件(封裝,繼承,多型);3. 平臺無關性( Java 虛擬機器實現平臺無關性);4. 可靠性;5. 安全性;6. 支援多執行緒( C++ 語言沒有內建的多執行緒機制,因此必須呼叫作業系統的多執行緒功能來進行多執行緒程式設計,而 Java 語言卻提供了多執行緒支援);7. 支援網路程式設計並且很方便( Java 語言誕生本身就是為簡化網路程式設計設計的,因此 Java 語言不僅支援網路程式設計而且很方便);8. 編譯與解釋並存。

3.什麼是位元組碼

在 Java 中,JVM 可以理解的程式碼就叫做位元組碼(即副檔名為 .class 的檔案),它不面向任何特定的處理器,只面向虛擬機器。Java 語言透過位元組碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。所以 Java 程式執行時比較高效,而且,由於位元組碼並不專對一種特定的機器,因此,Java 程式無須重新編譯便可在多種不同的計算機上執行。

4.字元型常量和字串常量的區別

1. 形式上: 字元常量是單引號引起的一個字元 字串常量是雙引號引起的若干個字元2. 含義上: 字元常量相當於一個整形值( ASCII 值),可以參加表示式運算 字串常量代表一個地址值(該字 符串在記憶體中存放位置)3. 佔記憶體大小 字元常量只佔 2 個位元組 字串常量佔若干個位元組(至少一個字元結束標誌) (注意: char 在 Java 中佔兩個位元組)

5.過載和重寫的區別

過載: 發生在同一個類中,方法名必須相同,引數型別不同、個數不同、順序 不同,方法返回值和訪問修飾符可以不同,發生在編譯時。 重寫: 發生在父子類中,方法名、引數列表必須相同,返回值範圍小於等於父 類,丟擲的異常範圍小於等於父類,訪問修飾符範圍大於等於父類;如果父類 方法訪問修飾符為 享學課堂 private 則子類就不能重寫該方法。

6.String StringBuffer 和 StringBuilder 的區別是什麼? String 為什麼是不可變的?

a.可變性:簡單的來說:String 類中使用 final 關鍵字字元陣列儲存字串,privatefinal char value[],所以 String物件是不可變的。而 StringBuilder 與StringBuffer 都繼承自 AbstractStringBuilder 類,在AbstractStringBuilder 中也是使用字元陣列儲存字串 char[]value 但是沒有用 final 關鍵字修飾,所以這兩種物件都是可變的。StringBuilder 與 StringBuffer 的構造方法都是呼叫父類構造方法也就是AbstractStringBuilder 實現的,大家可以自行查閱原始碼。abstract class AbstractStringBuilder implements Appendable, CharSequence { char[] value; int count; AbstractStringBuilder() { } AbstractStringBuilder(int capacity) { value = new char[capacity]; }b.執行緒安全性:String 中的物件是不可變的,也就可以理解為常量,執行緒安全。AbstractStringBuilder 是 StringBuilder 與 StringBuffer 的公共父類,定義了一些字串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 對方法加了同步鎖或者對呼叫的方法加了同步鎖,所以是執行緒安全的StringBuilder 並沒有對方法進行加同步鎖,所以是非執行緒安全的。c.效能:每次對 String 型別進行改變的時候,都會生成一個新的 String 物件,然後將指標指向新的String 物件。StringBuffer 每次都會對 StringBuffer 物件本身進行操作,而不是生成新的物件並改變物件引用。相同情況下使用StringBuilder 相比使用 StringBuffer 僅能獲得 10%~15% 左右的效能提升,但卻要冒多執行緒不安全的風險。

7.自動裝箱與拆箱

裝箱:將基本型別用它們對應的引用型別包裝起來;拆箱:將包裝型別轉換為基本資料型別;

8.在一個靜態方法內呼叫一個非靜態成員為什麼是 非法的

由於靜態方法可以不透過物件進行呼叫,因此在靜態方法裡,不能呼叫其他非靜態變數,也不可以訪問非靜態變數成員。

9.在 Java 中定義一個不做事且沒有引數的構造方法的作用

Java 程式在執行子類的構造方法之前,如果沒有用 super() 來呼叫父類特定的構造方法,則會呼叫父類中“沒有引數的構造方法”。因此,如果父類中只定義了有引數的構造方法,而在子類的構造方法中又沒有用 super() 來呼叫父類中特定的構造方法,則編譯時將發生錯誤,因為 Java 程式在父類中找不到沒有引數的構造方法可供執行。解決辦法是在父類里加上一個不做事且沒有引數的構造方法。

10.介面和抽象類的區別是什麼

1. 介面的方法預設是 public,所有方法在介面中不能有實現(Java 8 開始口方法可以有預設實現),抽象   類可以有非抽象的方法。2. 介面中的例項變數預設是 final 型別的,而抽象類中則不一定。3. 一個類可以實現多個介面,但最多隻能實現一個抽象類。4. 一個類實現介面的話要實現介面的所有方法,而抽象類不一定。5. 介面不能用 new 例項化,但可以宣告,但是必須引用一個實現該介面的物件 從設計層面來說,抽象是 對類的抽象,是一種模板設計,介面是行為的抽象,是一種行為的規範。

11.一個類的構造方法的作用是什麼 ,若一個類沒有宣告構造方法,該程式能正確執行嗎 ?為什麼?

主要作用是完成對類物件的初始化工作。可以執行。因為一個類即使沒有宣告,構造方法也會有預設的不帶引數的構造方法

12.靜態方法和例項方法有何不同

1.在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。2. 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數和例項方法;例項方法則無此限制。

13.異常

7
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 大前端教程之Dokcer,部署方式,CICD的解決方案