java 面試題(一)

java 面試題(一)

SpringMVC常用註解

  • @ResponseBody: 該註解用於將controller的方法返回的對象,通過適當的HttpMessageConverter轉換成指定格式後,寫入到response對象的body數據區

    使用場景:返回的數據不是html頁面,而是 json格式的數據

  • @RequestMapping: 用來處理請求地址映射的註解,可用於類上或者方法上,用於類上,表示類中的所有響應請求的方法都是以改地址作爲父路徑.requestMapping註解有六個屬性,

  • value, method

    value: 指定請求的實際地址,指定的地址可以是URI Template 模式(後面將會說明);

​ method: 指定請求的method類型, GET、POST、PUT、DELETE等;

  • consumes,produces

consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;

produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;

  • params,headers

params: 指定request中必須包含某些參數值是,才讓該方法處理。

headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。

  • @PathVariable: 用於將URL請求中的模板變量映射到功能處理方法的參數上,就是取出uri模板中的變量作爲參數.

  • @RequestParam : 主要用於在SpringMVC的後臺Controller層獲取參數,類似於request.getParameter(“element”),他有三個常用參數, defultValue = “10”, required = false, value = “type” defultValue表示設置默認值, required 通過boolean指定參數是否要綁定, value element的別名

  • @ModelAttribute and SessionAttribute

    該Controller的所有方法在調用前,先執行此@ModelAttribute方法,可用於註解和方法參數中,可以把這個@ModelAttribute特性,應用在BaseController當中,所有的Controller繼承BaseController,即可實現在調用Controller時,先執行@ModelAttribute方法。

    @SessionAttributes即將值放到session作用域中,寫在class上面

    • @Component 通用的註解, 當不知道一些類歸到哪個層次使用時,使用這個註解,不過不建議使用
    • @Repository : 用於註解dao層
    • @JSONFormate(pattern = “yyyy-MM-dd”, timezone = “GMT+8”) 時間類的轉換 後臺傳值給前臺
    • @DateTimeFormate: 前臺傳值給後臺,如果和==@JSONFormate==一起使用時,pattren的值要出入一致,不然會報錯.

說說你對spring 的IOC的理解

ioc的出現意味着開發者將創建好的類交給spring容器去控制,而不是在類的內部控制, 這就叫做ioc(控制反轉)

forExample: 編寫一個業務邏輯類,要在類的部分或者全部方法上加log, 沒有ioc, 修改源代碼,在所有或者部分方法上修改,耦合副高, 有了ioc, 只需要編寫一個日誌類的配置文件,用loc把他們關聯起來,實現日誌記錄功能.

IOC能做什麼

ioc是一種思想,一個面向對象的重要思想,他能指導我們優良的 鬆耦合的程序,傳統應用程序是有我們主動在類內部主動創建依賴對象,導致類與類之間緊耦合,難以維護, 而有了ioc容器後,把創建和查找對象都交給了容器,由容器進行注入組合對象, 所以是鬆耦合, 有利於代碼維護和擴展, 重要的是使得程序變的十分靈活.

IoC對編程帶來的最大改變不是從代碼上,而是從思想上,發生了“主從換位”的變化. 應用程序原本是老大,要獲取什麼資源都是主動出擊,但是在IoC/DI思想中,應用程序就變成被動的了,被動的等待IoC容器來創建並注入它所需要的資,有了這種思想,十分有利於以後的學習和工作.

方法重載和重寫的區別

重載(OverLoad)

  • 方法重載是類以統一的方式處理不同類型數據的一種手段,多個同名函數同時存在,具有不同的參數個數/類型,重載是類中多態性的一種體現;

  • 方法的重載, 就是在類中創建多個方法, 他們的方法名相同,參數個數和類型不同,外界掉方法時,只要傳入對應的參數,就可以調用對應的方法,這就是多態性

  • 重載時方法名要一樣,參數列表不同,返回值類型不作爲重載的標準.

    重寫(OverRide)

    方法的重寫首先子類和父類間要有繼承關係, 子類對父類的方法的重新定義,如果子類中的某方法和父類中的方法名和參數列表一致,就是方法重寫,子類可以繼承父類的所有方法,但是有時子類想對父類的某些方法做修改,就有了方法的重寫, 子類的訪問修飾符不能小於父類的,

    當子類繼承自父類的相同方法,輸入數據一樣,但要做出有別於父類的響應時,你就要覆蓋父類方法,就是在子類中重寫該方法——相同參數,不同實現(動態多態性) 換而言之 就是方法名和參數列表相同, 方法體不同.

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