筆試面試題

Java常見筆試題

Java中的private、protected、public和default的區別

(1)對于public修飾符,它具有最大的訪問權限,可以訪問任何一個在CLASSPATH下的類、接口、異常等。它往往用于對外的情況,也就是對象或類對外的一種接口的形式。

(2)對于protected修飾符,它主要的作用就是用來保護子類的。它的含義在于子類可以用它修飾的成員,其他的不可以,它相當于傳遞給子類的一種繼承的東西。

(3)對于default來說,有點的時候也成為friendly(友員),它是針對本包訪問而設計的,任何處于本包下的類、接口、異常等,都可以相互訪問,即使是父類沒有用protected修飾的成員也可以。

(4)對于private來說,它的訪問權限僅限于類的內部,是一種封裝的體現,例如,大多數的成員變量都是修飾符為private的,它們不希望被其他任何外部的類訪問。

|修飾符|類內部|本包|子類|外部包
|--|--|--|--|、
|public|√|√|√|√|
|protected|√|√|√|
|default|√|√|
|private|√|

注意:Java的訪問控制是停留在編譯層的,也就是它不會在.class文件中留下任何的痕跡,只在編譯的時候進行訪問控制的檢查。其實,通過反射的手段,是可以訪問任何包下任何類中的成員,例如,訪問類的私有成員也是可能的。

區別:

(1)public:可以被所有其他類所訪問。

(2)private:只能被自己訪問和修改。

(3)protected:自身,子類及同一個包中類可以訪問。

(4)default(默認):同一包中的類可以訪問,聲明時沒有加修飾符,認為是friendly。

String、StringBuffer與StringBuilder之間區別

String:字符串常量;StringBuffer:字符串變量;StringBuilder:字符串變量

1.可變不可變:String類中使用字符數組保存字符串,string對象不可變;StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,在AbstractStringBuilder中也是使用字符數組保存字符串,這兩種對象都是可變的。

2.是否多線程安全:String中的對象是不可變的,也就可以理解為常量,顯然線程安全。AbstractStringBuilder是StringBuilder與StringBuffer的公共父類,定義了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。StringBuffer對方法加了同步鎖或者對調用的方法加了同步鎖,所以是線程安全的。StringBuilder并沒有對方法進行加同步鎖,所以是非線程安全的。

3.StringBuilder與StringBuffer共同點:StringBuilder與StringBuffer有公共父類AbstractStringBuilder(抽象類)。抽象類與接口的其中一個區別是:抽象類中可以定義一些子類的公共方法,子類只需要增加新的功能,不需要重復寫已經存在的方法;而接口中只是對方法的申明和常量的定義。StringBuilder、StringBuffer的方法都會調用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer會在方法上加synchronized關鍵字,進行同步。最后,如果程序不是多線程的,那么使用StringBuilder效率高于StringBuffer。

對于三者使用的總結:

1.如果要操作少量的數據用 = String

2.單線程操作字符串緩沖區 下操作大量數據 = StringBuilder

3.多線程操作字符串緩沖區 下操作大量數據 = StringBuffer

數據庫

數據庫事務

數據庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要么完全地執行,要么完全地不執行。

屬性

原子性(Atomic)(Atomicity)

事務必須是原子工作單元;對于其數據修改,要么全都執行,要么全都不執行。通常,與某個事務關聯的操作具有共同的目標,并且是相互依賴的。如果系統只執行這些操作的一個子集,則可能會破壞事務的總體目標。原子性消除了系統處理操作子集的可能性。

一致性(Consistent)(Consistency)

事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用于事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的。某些維護一致性的責任由應用程序開發人員承擔,他們必須確保應用程序已強制所有已知的完整性約束。例如,當開發用于轉帳的應用程序時,應避免在轉帳過程中任意移動小數點。

隔離性(Insulation)(Isolation)

由并發事務所作的修改必須與任何其它并發事務所作的修改隔離。事務查看數據時數據所處的狀態,要么是另一并發事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看中間狀態的數據。這稱為隔離性,因為它能夠重新裝載起始數據,并且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可并行執行的事務獲得的結果與通過連續運行每個事務所獲得的結果相同。由于高度隔離會限制可并行執行的事務數,所以一些應用程序降低隔離級別以換取更大的吞吐量。

持久性(Duration)(Durability)

事務完成之后,它對于系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容