【JAVA秒會技術之秒殺面試官】JavaEE常見面試題(五)

【前言】別人都在你看不到的地方暗自努力,在你看獲得的地方,他們也和你同樣顯得不務正業,和你同樣會抱怨,而只有你本身相信這些都是真的,最後,也只有你一我的繼續不思進取 ……  java

【下載】我的結合諸多資料,總結的一些JavaEE常見面試題,主要針對初/中級程序員想要word完整版下載的,評論裏留言留下你的郵箱!mysql

51.事務的特性?程序員

答:①原子性(Atomicity)面試

 指事務是一個不可分割的工做單位,事務中的操做要麼全都發生,要麼全不發生;sql

②一致性(Consistency)數據庫

 事務先後數據的完成性必須保持一致;(例:轉帳先後的,兩我的的金額總數是不變的)api

③隔離性(Isolation)session

 指多個用戶併發訪問數據庫時,一個用戶的事務不能被其餘用戶的事務干擾,多個併發事務之間要項目隔離;併發

④持久性(Durability)oracle

  指一個事務一旦被提交,它對數據庫中數據的改變是永久性的,接下來即便數據庫發生故障,也不該該對其有任何影響;

52.事務併發訪問問題

答:①髒讀:一個事務讀到了另外一個事務未提交的數據;

②不可重複讀:在同一個事務中,屢次查詢的結果不一致(由update引發的)

③虛讀/幻讀:在同一個事務中,屢次查詢的結果不一致(由insert引發的)

53.隔離級別

答:①讀未提交

  read uncommitted;一個事務讀到另外一個事務沒有提交的數據;

 (未解決,3問題都存在)

②讀已提交 —— oracle默認

 read committed;一個事務讀到另外一個事務已提交的數據;

 (解決髒讀)

③可重複讀 --- mysql默認

 repeatable read;在一個事務中讀到的數據始終保持一致,不管另外一個事務是否提交

 (解決髒讀和不可重複讀)

④串行化

 serializable 串行化,同時只能執行一個事務,至關於單線程事務;

 (都解決)

54.tuncate和delete區別

答:① truncate數據ddl  delete屬於dml

② truncate是先刪除drop該表,再create該表。並且沒法回滾!!!

55.在Hibernate中實現數據檢索的5種方式?

答:① 對象導航(關聯級別的數據檢索)

② HQL語句

③ SQL語句

④ QBC語句

⑤ 經過OID加載(get( ) / load( ))

56.Cascade與Inverse區別?

答:①Cascade主要用於級聯操做(如:級聯添加,刪除等);

②Inverse主要用於控制權是否要反轉,通常將控制權放在多方,能夠提升效率;

如:當刪除部門時,級聯刪除部門下的全部用戶。

    若inverse = 「false」 默認值,能夠不配

控制檯輸出3條語句:

Update user set deptId = null where deptId = 1;//解決父子關係

               Delete from user where deptId is null; //先幹掉子類

               Delete from user where id=1; //再自殺

    若inverse = 「true」 表明控制權要反轉,交給多方維護,相率會提升;

       控制檯輸出2條語句:

               Delete from user where deptId=1; //自殺

               Delete from user where id=1;//自殺

57.PO類的定義規範?

答:①是一個共有類;

②提供無參共有構造方法;

③屬性是私有的;

④爲私有屬性提供共有的getter/setter;

⑤不能使用final修飾;

⑥能夠實現java.io.Serializbale接口;

⑦若是是基本類型,須要使用它的包裝類;

58.請分別寫出一對一,一對多,多對一,多對多的PO類映射文件?

 

59.抽取BaseAction的理由?

答:①經過實現RequestAware、SessionAware、ApplicationAware接口,自定義protected Map<String,Object> request/session/application,並提供getter方法,繼承setter方法,此時再編寫Action類時,依賴的是本身的API,未來框架升級改造時,只要修改BaseAction就能夠了,能夠更好的實現與Struts2的解耦合;

②能夠在BaseAction中抽取一些公共的操做方法;

60.XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式?

答:(1)XML文檔有兩種約束方式:DTD約束和Schema約束;

(2)區別:

①DTD不符合XML的語法結構,schema符合XML的語法結構;

②DTD的約束擴展性比較差,XML文檔只能引入一個DTD的文件。schema能夠引入多個文件;

③DTD不支持名稱空間(理解包結構),schema支持名稱空間;

④DTD支持數據比較少,schema支持更多的數據類型;

(3)解析方式主要有三種:

①DOM解析:

(a)加載整個xml的文檔到內存中,造成樹狀結構,生成對象;

(b)容易產生內存溢出;

(c)能夠作增刪改;

②SAX解析

(a)邊讀邊解析;

(b)不能夠作增刪改;

③ DOM4J解析(hibernate底層採用)

(a)可以讓SAX解析也產生樹狀結構。

(b)主要api開發步驟:

1)SAXReader.read(xxx.xml)表明解析xml的文檔,返回對象是Document;

2)Document.getRootElement(),返回的是文檔的根節點,是Element對象;

3)Element:

.element(...) -- 得到指定名稱第一個子元素。能夠不指定名稱;

.elements(...) -- 得到指定名稱的全部子元素。能夠不指定名稱;

    .getText() -- 得到當前元素的文本內容;

.elementText(...) -- 得到指定名稱子元素的文本值

.addElement() -- 添加子節點

.setText() -- 設置子標籤內容

4)XMLWriter.write("..") --寫出

5)XMLWriter.close() --關閉輸出流

61.大家項目爲何選用maven進行構建?

答:①首先,maven是一個優秀的項目構建工具。使用maven,能夠很方便的對項目進行分模塊構建,這樣在開發和測試打包部署時,效率會提升不少。

②其次,maven能夠進行依賴的管理。使用maven,能夠將不一樣系統的依賴進行統一管理,而且能夠進行依賴之間的傳遞和繼承。

相關文章
相關標籤/搜索