面試準備(1)

weixin_33728268發表於2018-08-28

1 .error和exception區別

error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢位。不可能指望程式能處理這樣的情況。

exception 表示一種設計或實現問題。也就是說,它表示如果程式執行正常,從不會發生的情況。

這是面試題目的專業回答。

2.#{ } 和 ${ } 的區別

#{ }表示一個佔位符號,通過#{ }可以實現 preparedStatement 向佔位符中設定值,自動進行java 型別和 jdbc 型別轉換,#{ } 可以有效防止sql注入。#{ } 可以接收簡單型別值或 pojo 屬性值(通過 OGNL 讀取物件中的值,屬性.屬性.屬性..方式獲取物件屬性值)。 如果 parameterType 傳輸單個簡單型別值,#{ }括號中可以是 value 或其它名稱。

${ } 表示拼接 sql 串,通過${ }可以將 parameterType 傳入的內容拼接在 sql 中且不進行 jdbc 型別轉換, ${ }可以接收簡單型別值或 pojo 屬性值((通過 OGNL 讀取物件中的值,屬性.屬性.屬性..方式獲取物件屬性值)),如果 parameterType 傳輸單個簡單型別值,${}括號中只能是 value。

3.連結串列和陣列的關係?

陣列是將元素在記憶體中連續存放,由於每個元素佔用記憶體相同,可以通過下標迅速訪問陣列中任何元素。但是如果要在陣列中增加一個元素,需要移動大量元素,在記憶體中空出一個元素的空間,然後將要增加的元素放在其中。同樣的道理,如果想刪除一個元素,同樣需要移動大量元素去填掉被移動的元素。如果應用需要快速訪問資料,很少或不插入和刪除元素,就應該用陣列

連結串列恰好相反,連結串列中的元素在記憶體中不是順序儲存的,而是通過存在元素中的指標聯絡到一起。比如:上一個元素有個指標指到下一個元素,以此類推,直到最後一個元素。如果要訪問連結串列中一個元素,需要從第一個元素開始,一直找到需要的元素位置。但是增加和刪除一個元素對於連結串列資料結構就非常簡單了,只要修改元素中的指標就可以了。如果應用需要經常插入和刪除元素你就需要用連結串列資料結構了。

(1) 從邏輯結構角度來看

a, 陣列必須事先定義固定的長度(元素個數),不能適應資料動態地增減的情況。當資料增加時,可能超出原先定義的元素個數;當資料減少時,造成記憶體浪費。

b,連結串列動態地進行儲存分配,可以適應資料動態地增減的情況,且可以方便地插入、刪除資料項。(陣列中插入、刪除資料項時,需要移動其它資料項)

(2)從記憶體儲存角度來看

a,(靜態)陣列從棧中分配空間, 對於程式設計師方便快速,但自由度小。

b, 連結串列從堆中分配空間, 自由度大但申請管理比較麻煩.

4 .ArrayList和LinkedList的大致區別:

    1>.ArrayList是實現了基於動態陣列的資料結構。

 2>.LinkedList基於雙向連結串列的資料結構。

    3>.對於隨機訪問get和set,ArrayList優,因為LinkedList要移動指標。

    4>.對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。

   5>連結串列是一系列的節點組成的,這些點不需要在記憶體中相連

相關文章