實習面試題目總結一

本博客不再更新,更多精彩內容請訪問我的獨立博客

final—修飾符(關鍵字)如果一個類被聲明爲final,意味着它不能再派生出新的子類,不能作爲父類被繼承。因此一個類不能既被聲明爲 abstract的,又被聲明爲final的。將變量或方法聲明爲final,可以保證它們在使用中不被改變。被聲明爲final的變量必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明爲final的方法也同樣只能使用,不能重載。 

finally—在異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。 

finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

Vector:線程安全,執行效率低

ArrayList:線程不安全,執行效率高

TreeMap有序

HashMap不能同步,允許null,無序,效率高

HashTable可以同步,不允許null,效率低

Sychronized爲某段代碼加上了一個同步鎖

List:有序存放,允許重複

Set:無序存放,不許重複

char佔兩個字節,java中採用unicode編碼,兩個字節表示一個字符,所以char可以存儲一個漢字。

基本類型:byte、char、short、long、int、float、double、boolean

堆和棧的區別

  一、堆棧空間分配區別:

  1、棧(操作系統):由操作系統自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧;

  2、堆(操作系統): 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似於鏈表。

  二、堆棧緩存方式區別:

  1、棧使用的是一級緩存, 他們通常都是被調用時處於存儲空間中,調用完畢立即釋放;

  2、堆是存放在二級緩存中,生命週期由虛擬機的垃圾回收算法來決定(並不是一旦成爲孤兒對象就能被回收)。所以調用這些對象的速度要相對來得低一些。

  三、堆棧數據結構區別:

  堆(數據結構):堆可以被看成是一棵樹,如:堆排序;

  棧(數據結構):一種先進後出的數據結構。

基本數據類型在棧內存中,類保存在堆內存中

equal和= =的區別:= =運用在基本類型時比較值,運用在引用類型時比較地址

面向對象:把數據及對數據的操作方法放在一起,作爲一個相互依存的整體——對象。對同類對象抽象出其共性,形成類。類中的大多數數據,只能用本類的方法進行處理。類通過一個簡單的外部接口與外界發生關係,對象與對象之間通過消息進行通信。程序流程由用戶在使用中決定。

面向過程:

自頂向下順序執行,逐步求精;其程序結構是按功能劃分爲若干個基本模塊,這些模塊形成一個樹狀結構;各模塊之間的關係儘可能簡單,在功能上相對獨立;每一模塊內部均是由順序、選擇和循環三種基本結構組成;其模塊化實現的具體方法是使用子程序。程序流程在寫程序時就已決定。

數據庫三大範式:

1NF:字段不可分; 原子性 字段不可再分,否則就不是關係數據庫; 

2NF:有主鍵,非主鍵字段依賴主鍵; 唯一性 一個表只說明一個事物; 

3NF:非主鍵字段不能相互依賴; 每列都與主鍵有直接關係,不存在傳遞依賴; 

內存溢出和內存泄漏:

內存溢出 out of memory,是指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。

內存泄露 memory leak,是指程序在申請內存後,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積後果很嚴重,無論多少內存,遲早會被佔光。

memory leak會最終會導致out of memory

索引

在一下列中應該建索引

在經常需要搜索的列上,可以加快搜索的速度; 

在作爲主鍵的列上,強制該列的唯一性和組織表中數據的排列結構; 

在經常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度; 

在經常需要根據範圍進行搜索的列上創建索引,因爲索引已經排序,其指定的範圍是連續的; 

在經常需要排序的列上創建索引,因爲索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間; 

在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度。

不應該創建索引的的這些列具有下列特點:

第一,對於那些在查詢中很少使用或者參考的列不應該創建索引。這是因 爲,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。 

第二,對於那 些只有很少數據值的列也不應該增加索引。這是因爲,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行佔了表中數據行的很大比 例,即需要在表中搜索的數據行的比例很大。增加索引,並不能明顯加快檢索速度。 

第三,對於那些定義爲text, imagebit數據類型的列不應該增加索引。這是因爲,這些列的數據量要麼相當大,要麼取值很少。 

第四,當修改性能遠遠大於檢索性能時,不應該創建索 引。這是因爲,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因 此,當修改性能遠遠大於檢索性能時,不應該創建索引。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章