搜尋
首頁JavaJava面試題java高頻率基礎面試題-(五)

java高頻率基礎面試題-(五)

Sep 03, 2020 pm 04:24 PM
java面試題

java高頻率基礎面試題-(五)

1、JDBC存取資料庫的基本步驟是什麼?

(更多面試題推薦:java面試題目及答案

載入驅動程式

透過DriverManager物件取得連線物件Connection

#透過連線物件取得會話

透過會話進行資料的增刪改查,封裝物件

#關閉資源

2、說preparedStatement和Statement的差異

#效率:預編譯會話比普通會話對象,資料庫系統不會對相同的sql語句不會再次編譯

安全性:可以有效的避免sql注入攻擊! sql注入攻擊就是從客戶端輸入一些非法的特殊字符,而使伺服器端在構造sql語句的時候仍然能夠正確構造,從而收集程式和伺服器的資訊和資料。

例如:

“select * from t_user where userName = ‘” + userName + “ ’ and password =’” + password + “’”

如果使用者名稱和密碼輸入的是'1' or '1'='1' ;  則生產的sql語句是:

“select * from t_user where userName = ‘1’ or ‘1’ =’1’  and password =’1’  or ‘1’=’1’

這個語句中的where 部分沒有起到對資料篩選的作用。

3、說說事務的概念,在JDBC程式設計中處理交易的步驟

交易是作為單一邏輯工作單元執行的一系列操作。

一個邏輯工作單元必須有四個屬性,稱為原子性、一致性、隔離性和持久性(ACID) 屬性,只有這樣才能成為一個是交易

事務處理步驟:

conn.setAutoComit(false);設定提交方式為手動提交

conn.commit()提交交易

出現異常,回滾conn.rollback();

4、資料庫連線池的原理。為什麼要使用連線池。

資料庫連線是一件費時的操作,連線池可以讓多個操作共用一個連線。

資料庫連線池的基本概念就是為資料庫連線建立一個「緩衝池」。預先在緩衝池中放入一定數量的連接,當需要建立資料庫連接時,只需從「緩衝池」中取出一個,使用完畢之後再放回去。我們可以透過設定連線池最大連線數來防止系統無盡的與資料庫連線。更重要的是我們可以透過連接池的管理機制來監視資料庫的連接的數量、使用情況,為系統開發,測試及效能調整提供依據。

使用連接池是為了提高對資料庫連接資源的管理

(相關推薦:java入門教學

5、JDBC的髒讀是什麼?哪種資料庫隔離等級能防止髒讀?

當我們使用交易時,有可能會出現這樣的情況,有一行資料剛更新,同時另一個查詢讀到了這個剛更新的值。這樣就導致了髒讀,因為更新的資料還沒有進行持久化,更新這行資料的業務可能會進行回滾,這樣這個資料就是無效的。資料庫的TRANSACTIONREADCOMMITTED,TRANSACTIONREPEATABLEREAD,和TRANSACTION_SERIALIZABLE隔離等級可以防止髒讀。

6、什麼是幻讀,哪一種隔離等級可以防止幻讀?

幻讀是指一個交易多次執行一條查詢回傳的卻是不同的值。假設一個事務正根據某個條件進行資料查詢,然後另一個事務插入了一行滿足這個查詢條件的資料。之後這個事務又執行了這條查詢,傳回的結果集中會包含剛插入的那條新資料。這行新資料稱為幻行,而這種現象就叫做幻讀。

只有TRANSACTION_SERIALIZABLE隔離等級才能防止產生幻讀。

7、JDBC的DriverManager是用來做什麼的?

JDBC的DriverManager是一個工廠類,我們透過它來建立資料庫連線。當JDBC的Driver類別被載入進來時,它會自己註冊到DriverManager類別裡面

然後我們會把資料庫設定資訊傳遞到DriverManager.getConnection()方法,DriverManager會使用註冊到它裡面的驅動程式來取得資料庫連接,並傳回給呼叫的程式。

8、execute,executeQuery,executeUpdate的差別是什麼?

Statement的execute(String query)方法用來執行任意的SQL查詢,如果查詢的結果是一個ResultSet,這個方法就回傳true。如果結果不是ResultSet,例如insert或update查詢,它就會回傳false。我們可以透過它的getResultSet方法來取得ResultSet,或是透過getUpdateCount()方法來取得更新的記錄條數。 

Statement的executeQuery(String query)介面用來執行select查詢,並且回傳ResultSet。即使查詢不到記錄回傳的ResultSet也不會為null。我們通常使用executeQuery來執行查詢語句,這樣的話如果傳進來的是insert或update語句的話,它會拋出錯誤訊息為 “executeQuery method can not be used for update”的java.util.SQLException。 

Statement的executeUpdate(String query)方法用来执行insert或者update/delete(DML)语句,或者 什么也不返回,对于DDL语句,返回值是int类型,如果是DML语句的话,它就是更新的条数,如果是DDL的话,就返回0。 

只有当你不确定是什么语句的时候才应该使用execute()方法,否则应该使用executeQuery或者executeUpdate方法。

9、SQL查询出来的结果分页展示一般怎么做?

Oracle:

select * from
(select *,rownum as tempid from student )  t
where t.tempid between ” + pageSize*(pageNumber-1) + ” and ” + pageSize*pageNumber

MySQL:

select * from students limit ” + pageSize*(pageNumber-1) + “,” + pageSize;

sql server:

select top ” + pageSize + ” * from students where id not in +
(select top ” + pageSize * (pageNumber-1) +  id from students order by id) +  
“order by id;

(视频教程推荐:java课程

10、JDBC的ResultSet是什么?

在查询数据库后会返回一个ResultSet,它就像是查询结果集的一张数据表。

ResultSet对象维护了一个游标,指向当前的数据行。开始的时候这个游标指向的是第一行。如果调用了ResultSet的next()方法游标会下移一行,如果没有更多的数据了,next()方法会返回false。可以在for循环中用它来遍历数据集。

默认的ResultSet是不能更新的,游标也只能往下移。也就是说你只能从第一行到最后一行遍历一遍。不过也可以创建可以回滚或者可更新的ResultSet。

当生成ResultSet的Statement对象要关闭或者重新执行或是获取下一个ResultSet的时候,ResultSet对象也会自动关闭。
可以通过ResultSet的getter方法,传入列名或者从1开始的序号来获取列数据。

以上是java高頻率基礎面試題-(五)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:csdn。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境