1. 程式人生 > >面向物件相關面試題

面向物件相關面試題

1.面向物件的優點?
(1)提高了程式碼的可擴充套件性。
(2)提高了程式碼的可維護性。
(3)面向物件的封裝,繼承,多型。
2. 介面與抽象類的區別?
(1)抽象類使用abstract修飾 ,介面使用interface修飾。
(2)抽象類可以有普通方法,有抽象方法的一定要有抽象類,介面不可有有普通方法只能有抽象類。
(3)抽象類可有有普通屬性,介面只能是常量。
(4)抽象類和介面不能例項化,就是不能new,就是不能建立物件,因為不是具體的。
(5)抽象類有構造方法,介面沒有構造方法。
(6)抽象類只支援單繼承支援多實現,介面支援多繼承。
3.類的組成和執行順序?


(1)類的組成:屬性 方法 靜態塊 非靜態塊。
(2)執行順序:父類,子類,靜態塊,靜態欄位,非靜態塊,非靜態欄位,構造器,方法。
4.如何理解面向物件?
世間萬物皆物件,物件有具體的的例項化,任何方法或者屬性都要寫在物件(類)裡面,就是不斷的建立物件使用物件指揮物件做事。
5.構造方法可否能被重寫?
不能被重寫,只有繼承關係才能重寫,構造方法不能被重寫,但是能被過載6.String與StringBuffer,StringBuilder的區別?
(1)String是不可變的字串常量物件,就是字串序列底層實現是char陣列,因為是陣列所以定長(一但定義長度就固定不變)。
(2)StringBuffer執行緒安全的可變字串,底層實現是一個“可變長的陣列”,資料安全效率低。
(3)StringBuilder用作替換StringBuffer,JDK1.5新增類,執行緒不安全的可變字串,效率高。
7.(= =)與equals()的區別?

(1)==:引用型別比較的是地址,基本型別比較的是值
(2)equals:底層比較的是地址(
public boolean equals(Object obj) {
return (this == obj);
}),重寫equals方法比較的是內容。
8. 什麼是拆箱和裝箱?

JDK1.5提供了自動裝箱和自動拆箱功能
(1)裝箱就是自動將基本資料型別轉換為包裝器型別,就是可以把一個基本型別變數直接賦值給對應得包裝型別變數,或者賦值給Object變數(Object是所有類的父類,子類物件可以直接賦值給父類變數);
(2)拆箱就是自動將包裝器型別轉換為基本資料型別,允許直接把包裝類物件直接賦值給一個對應的基本型別變數。
9.final類有什麼特點?
(1)final修飾的類不能被繼承
(2)final修飾的方法不能被重寫
(3)final修飾的屬性不能被改變
10.談談final,finally,finalize的區別。
(1)final用於宣告屬性,方法和類,分別表示屬性不可變,方法不可以覆蓋,類不可繼承。
(2)finally是異常處理語句結構的一部分,表示總是執行。
(3)finalize是Object類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。
11.GC是什麼?為什麼要有GC?
GC是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,java提供的GC功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的,java語音沒有提供釋放已分配記憶體的顯示操作方法。
12.Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否,是用==還是equals()?他們有何區別?
Set裡的元素是不能重複的,用iterator()方法來區分重複與否,equals()是判斷兩個的Set是否相等。
equals()和==方法決定引用值是否指向同一物件equals()在類中被覆蓋,為的是當兩個分離的物件的內容和型別相配的話放回真值
13.error和exception有什麼區別?
(1)error表示恢復不是不可能但很困難的情況下的一種嚴重問題,比如說記憶體溢位。不可能指望程式能處理這樣的情況。
(2)exception表示一種設計或實現問題。也就是說,它表示如果程式執行正常,從不會發生的情況。
14.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不可以:
abstract是抽象的,指的是方法只有宣告而沒有實現,他的實現要放入宣告該類的子類中實現。
static是靜態的,是一種屬於類而不屬於物件的方法或者屬性
synchronized 是同步,是一種相對執行緒的鎖。
native 本地方法,這種方法和抽象方法及其類似,它也只有方法宣告,沒有方法實現,但是它與抽象方法不同的是,它把具體實現移交給了本地系統的函式庫,而沒有通過虛擬機器,可以說是Java與其它語言通訊的一種機制。
native,這個本身就和abstract衝突,他們都是方法的宣告,只是一個把方法實現移交給子類,另一個是移交給本地作業系統。如果同時出現,就相當於即把實現移交給子類,又把實現移交給本地作業系統,那到底誰來實現具體方法呢!所以說不能兩個一起使用
15.介面是否可繼承介面?抽象類是否可實現(implements)介面?抽象類是否可繼承實現類(concrete class)?
介面可以繼承介面,抽象類可以實現介面,抽象類可以繼承實現類,但前提是實現類必須有明確的建構函式。
16.try{}裡有一個return語句,那麼緊跟在這個try後的finally{}裡的語句會不會執行,什麼時候被執行,在return前還是後?
會執行,在return前執行。
17.面向物件的特徵有哪些方面?
(1)封裝:封裝是把物件的屬性和實現細節隱藏起來,僅對外提供公共的訪問方法(這些物件通過一個受保護的介面訪問其他物件)。
(2)繼承:多個類中存在相同的屬性和行為時,將這些相同的內容抽取到一個單獨的類中,那麼多個類無需再定義這些屬性和行為,只要繼承這個類即可,繼承這個類的為新類,新類稱為原始類的派生類(子類)而原始類稱為新類的基類(父類)。派生類可以從它的基類哪裡繼承方法和例項變數,並且類可以修改或增加新的方法使之更適合特殊的需要。可通過extends關鍵字實現繼承。
(3)多型:多型性是指允許不同類的物件對同一訊息作出響應,多型性語言具有靈活,抽象,行為共享,程式碼共享的優勢,很好解決了應用程式函式同名的問題。
18.int和Integer有什麼區別?
java提供了兩種不同的型別:引用型別和基本型別,int是java的基本型別,integer是java為int提供的包裝類。
19.描述一個JVM載入class檔案的原理機制?
JVM中類的裝載是由ClassLoader和它的子類來實現的,java ClassLoader是一個重要的java執行系統元件,它負責在執行時查詢和裝入類檔案的類。
20.集合和陣列的區別?
(1)陣列存放基本型別和物件,集合類存放都是物件的引用,而非物件本身。
(2)陣列長度固定無法動態改變,集合類容量動態改變。
(3)陣列無法判斷其中實際存有多少元素,length只是告訴了陣列的長度是多少,定義了多長的長度後,即使沒有存放那麼多的元素,沒有存放元素的空間就浪費了,而集合的size()可以知道元素的個數。
(4)集合以類的形式存在,具有封裝,繼承,多型等類的特徵,通過簡單的方法和屬性即可實現各種複雜操作,大大提高了軟體的開發效率

相關推薦

面向物件相關試題

1.面向物件的優點? (1)提高了程式碼的可擴充套件性。 (2)提高了程式碼的可維護性。 (3)面向物件的封裝,繼承,多型。 2. 介面與抽象類的區別? (1)抽象類使用abstract修飾 ,介面使用i

java面向物件試題

1.super()和this()的區別? this():當前類的物件,super父類物件。 super():在子類訪問父類成員和行為,必須承受繼承規則的約束,而this代表當前物件,所有的資源都可以訪問。在建構函式中,如果第一行沒有寫super()

[C/C++常見筆試試題] 程式設計基礎 - 面向物件相關、虛擬函式、程式設計技巧篇

13 面向物件相關 面向物件思想是程式設計歷史上一次偉大的創新,面向物件的提出極大地提高了程式設計的效率,為程式設計的重用性奠定了堅實的基礎,面向物件思想已經廣泛應用在現今主流的程式語言中,如C++、Java、C#等。   13.1 面向物件與面向過程有什麼區別? 面向物件 面向物件是把資

每天五個java相關試題(8)--spring篇

ioc 簡單 組件 print 提交數據 常常 spring容器 效果 用戶 首先呢,假設有從事前端開發的大神或者準備從事前端開發的小夥伴無意看到我這篇博客看到這段文字歡迎加我的QQ:【 845415745 】。即將走入社會的菜鳥大學生有關於前端開發的職

Java 泛型概念相關試題

老版本 string 語言 值類型 新特性 exce cep bsp 組類型 問:Java 的泛型是什麽?有什麽好處和優點?JDK 不同版本的泛型有什麽區別? 答:泛型是 Java SE 1.5 的新特性,泛型的本質是參數化類型,這種參數類型可以用在類、接口和方法的創建中

第3章 Android基礎相關試題

sch str adapt div 再次 點擊 相關 發現 amp 1、Activity問題講解   a) Activity的生命周期     1.Activity的4種狀態       running / paused / stopped / kil

promise 以及相關試題

blog vda 異步操作 quest function cti AS AR reject https://www.cnblogs.com/lvdabao/p/es6-promise-1.html#!comments 特別好 Question:有一個url數組var ur

面向對象 試題

nds span 對象 控制 耦合 style 訪問 修飾 面試題 面象對象的三大特征: 繼承:extends    作用:代碼復用、傳遞性。      子類繼承父類的特征和行為。子類可以有父類的方法,屬性(非private)。子類也可以對父類進行擴展,也可以重寫父類的

ECMAScript 6知識點總結 --- 面向物件相關

物件相關概念 const str = new String('apple') // 判斷例項在不在建構函式中: console.log(str instanceof String) // true // 從建構函式中獲取原型: console.log(String.prototype)

《STL源碼剖析》相關試題總結

stl簡介 ash 看書 網上 散列 最大化 num 同時 自動調整 一、STL簡介 STL提供六大組件,彼此可以組合套用: 容器容器就是各種數據結構,我就不多說,看看下面這張圖回憶一下就好了,從實現角度看,STL容器是一種class template。 算法各種常見算法

hibernate相關試題(不看後悔,一看必懂)

概述 hibernate框架應用在dao層,,hibernate的底層程式碼是jdbc,它是一個開源的輕量級的框架. hibernate通過orm思想對資料庫進行crud操作.orm中文翻譯過來就是物件關係對映,它讓實體類(就是通常所說的pojo)和資料庫表對應,讓實體類的欄位和表裡的欄

各大公司資料庫相關試題集合NO2

✎✎✎第一小節>>   1. 舉出兩個判斷DDL改動的方法? 解答:你可以使用 Logminer 或 Streams   2.Coalescing做了什麼? 解答:Coalescing針對於字典管理的tablespace進行碎片整理,

各大公司資料庫相關試題集合NO1

✎✎✎第一小節>>   1.你一定得利用備份恢復資料庫,但是你沒有控制檔案,該如何解決問題呢? 解答:重建控制檔案,用帶backup control file 子句的recover命令恢復資料庫。   2.如何轉換init.ora到spfile?

連結串列相關試題

連結串列的基本操作在連結的部落格中已經有實現https://blog.csdn.net/Damn_Yang/article/details/83689944 下面我們來看看連結串列相關的面試題,非常重要 下面的題目都會一個一個實現 #include<stdio.h> type

java關於類(內部類,外部類,匿名類)的相關試題

一個“.java”原始檔中是否可以包含多個類(不是內部類)?有什麼限制? 答:可以,但一個原始檔中最多隻能有一個公開類(public class)而且檔名必須和公開類的類名完全保持一 致。 Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現介面

Java 異常相關試題

問:java 異常有哪幾種,特點是什麼? 答:異常是發生在程式執行過程中阻礙程式正常執行的錯誤操作,只要在 Java 語句執行中產生異常則一個異常物件就會被建立。Throwable 是所有異常的父類,它有兩個直接子類 Error 和 Exception,其中 Exception 又被繼續劃分為被

Java 字串相關試題

問:下面程式的執行結果是什麼? String s1 = "abc"; StringBuffer s2 = new StringBuffer(s1); System.out.println(s1.equals(s2));    //1,false StringBuffer s3

Java clone 相關試題

問:為什麼需要克隆? 答:因為在程式設計中會遇到一種情況,有一個 DemoBean 的物件例項 demo1 在某一時刻已經包含了一些有效值,此時可能會需要一個和 demo1 完全相同的新物件 demo2 且此後對 demo1 的任何改動都不影響到 demo1 中的值,在 Java 中用簡單的賦值

JVM相關試題及答案

1、你知道哪些或者你們線上使⽤什麼GC策略?它有什麼優勢,適⽤於什麼場景? 參考 觸發JVM進行Full GC的情況及應對策略。 2、Java類載入器包括⼏種?它們之間的⽗⼦關係是怎麼樣的?雙親委派機制是什麼意思?有什麼好處? 啟動Bootstrap類載入、擴充套件Extens