java中級面試題

  • 2019 年 10 月 8 日
  • 筆記

1.spring裡面的註解有哪些?

@Component 是所有受Spring 管理組件的通用形式,@Component註解可以放在類的頭上@Component不推薦使用。

@controller 對應表現層的Bean

@ Repository 對應數據訪問層Bean

@Autowired顧名思義,就是自動裝配,是spring註解

@Resource後面沒有任何內容,默認通過name屬性去匹配bean,找不到再按type去匹配,是j2ee註解

2.執行緒創建的方式有哪幾種?

兩種 一種是extend thread類,還有一種是實現runable介面。一般我們都是用實現。因為繼承只能繼承一個,而實現可以實現多個介面,還能再繼承。

3.執行緒的安全性問題,怎麼解決?

兩個或者兩個以上的執行緒去爭奪或者訪問同一個資源,就會引發一些問題,由於每個執行緒執行的過程是不可控的,所以很可能導致最終的結果與實際上的願望相違背或者直接導致程式出錯。

基本上所有的併發模式在解決執行緒安全問題上,都採用「序列化訪問臨界資源」的方案,即在同一時刻,只能有一個執行緒訪問臨界資源,也稱同步互斥訪問。通常來說,是在訪問臨界資源的程式碼前面加上一個鎖,當訪問完臨界資源後釋放鎖,讓其他執行緒繼續訪問。在Java中,提供了兩種方式來實現同步互斥訪問:synchronized和Lock。

4.http底層 http的一些方法

http1.0定義了get post head

http1.1定義了options, put, delete, trace 和 connect

5.get和post的區別

Get是安全的和冪等的 以get?參數&參數這種形式將參數顯示在地址欄上,是不安全的

get允許傳輸的數據會受到限制,因此get的傳輸效率要比較高

Post 通常用於表單提交,不帶參數,比較安全,允許傳輸大量數據

但這兩者的保密性都是不強的

6.springmvc的運行原理

瀏覽器發送http請求到DispatcherServlet, DispatcherServlet尋找一個或者多個handmapping處理器,然後調用處理器找到處理請求的controller,controller通過調用modelandview模型處理業務,將結果返回到DispatcherServlet,DispatcherServlet通過視圖解析印射(ViewResolver)將模型數據傳給view顯示,http將view顯示在瀏覽器上

7.Spring中的ioc和aop用到了哪種設計模式

ioc 控制反轉,ioc對象的生成交給spring容器完成DI(Dependency Injection),依賴注入等價於Aop面向切面

ioc用到的是工廠設計模式,通過sessionfactory去注入實例

Aop用到的是代理模式,主要是動態代理跟靜態代理兩種模式

8.list set map

List特點:繼承了Collection,元素有放入順序,元素可重複

Set : 繼承了Collection,存入Set的每個元素都必須是唯一的,因為Set不保存重複元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。Set與Collection有完全一樣的介面。Set介面不保證維護元素的次序

Map 是一種把鍵對象和值對象映射的集合,它的每一個元素都包含一對鍵對象和值對象。 Map沒有繼承於Collection介面 從Map集合中檢索元素時,只要給出鍵對象,就會返回對應的值對象。 get(Object key):獲得與關鍵字key相關的值 。Map集合中的鍵對象不允許重複,也就說,任意兩個鍵對象通過equals()方法比較的結果都是false.

9.Array list linked list

  • ArrayList() : 代表長度可以改變得數組。可以對元素進行隨機的訪問ArrayList()中插入與刪除元素的速度慢,執行緒不安全。
  • LinkedList(): 在實現中採用鏈表數據結構。插入和刪除速度快,訪問速度慢。

10.hashmap和hashtable

  • HashMap非執行緒安全,高效,支援key和valuenull;HashTable執行緒安全,低效,不支援null

11.stringbuffer跟stringbuild

StringBuffer是可變類,任何對它所指代的字元串的改變都不會產生新的對象,StringBufferd支援並發操作,線性安全的,適 合多執行緒中使用.StringBuilder不支援並發操作,線性不安全的,不適合多執行緒中使用