需要溫習的面試題

2021-10-09 15:25:31 字數 2829 閱讀 8793

76、statement和preparedstatement有什麼區別?哪個效能更好?

答:與statement相比,①preparedstatement介面代表預編譯的語句,它主要的優勢在於可以減少sql的編譯錯誤並增加sql的安全性(減少sql注射攻擊的可能性);②preparedstatement中的sql語句是可以帶引數的,避免了用字串連線拼接sql語句的麻煩和不安全;③當批量處理sql或頻繁執行相同的查詢時,preparedstatement有明顯的效能上的優勢,由於資料庫可以將編譯優化後的sql語句快取起來,下次執行相同結構的語句時就會很快(不用再次編譯和生成執行計畫)。

補充:為了提供對儲存過程的呼叫,jdbc api中還提供了callablestatement介面。儲存過程(stored procedure)是資料庫中一組為了完成特定功能的sql語句的集合,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。雖然呼叫儲存過程會在網路開銷、安全性、效能上獲得很多好處,但是存在如果底層資料庫發生遷移時就會有很多麻煩,因為每種資料庫的儲存過程在書寫上存在不少的差別。

80、事務的acid是指什麼?

答:- 原子性(atomic):事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗;

- 一致性(consistent):事務結束後系統狀態是一致的;

- 隔離性(isolated):併發執行的事務彼此無法看到對方的中間狀態;

- 永續性(durable):事務完成後所做的改動都會被持久化,即使發生災難性的失敗。通過日誌和同步備份可以在故障發生後重建資料。

補充:關於事務,在面試中被問到的概率是很高的,可以問的問題也是很多的。首先需要知道的是,只有存在併發資料訪問時才需要事務。當多個事務訪問同一資料時,可能會存在5類問題,包括3類資料讀取問題(髒讀、不可重複讀和幻讀)和2類資料更新問題(第1類丟失更新和第2類丟失更新)。

髒讀(dirty read):a事務讀取b事務尚未提交的資料並在此基礎上操作,而b事務執行回滾,那麼a讀取到的資料就是髒資料。

fix :read committed

不可重複讀(unrepeatable read):事務a重新讀取前面讀取過的資料,發現該資料已經被另乙個已提交的事務b修改過了。

fix :repeatable read

幻讀(phantom read):事務a重新執行乙個查詢,返回一系列符合查詢條件的行,發現其中插入了被事務b提交的行。

fix :serializable

直接使用鎖是非常麻煩的,為此資料庫為使用者提供了自動鎖機制,只要使用者指定會話的事務隔離級別,資料庫就會通過分析sql語句然後為事務訪問的資源加上合適的鎖,此外,資料庫還會維護這些鎖通過各種手段提高系統的效能,這些對使用者來說都是透明的(就是說你不用理解,事實上我確實也不知道)。ansi/iso sql 92標準定義了4個等級的事務隔離級別,如下表所示:

90、簡述一下你了解的設計模式。

答:所謂設計模式,就是一套被反覆使用的**設計經驗的總結(情境中乙個問題經過證實的乙個解決方案)。使用設計模式是為了可重用**、讓**更容易被他人理解、保證**可靠性。設計模式使人們可以更加簡單方便的復用成功的設計和體系結構。將已證實的技術表述成設計模式也會使新系統開發者更加容易理解其設計思路。

在gof的《design patterns: elements of reusable object-oriented software》中給出了三類(建立型[對類的例項化過程的抽象化]、結構型[描述如何將類或物件結合在一起形成更大的結構]、行為型[對在不同的物件之間劃分責任和演算法的抽象化])共23種設計模式,包括:abstract factory(抽象工廠模式),builder(建造者模式),factory method(工廠方法模式),prototype(原始模型模式),singleton(單例模式);facade(門面模式),adapter(介面卡模式),bridge(橋梁模式),composite(合成模式),decorator(裝飾模式),flyweight(享元模式),proxy(**模式);command(命令模式),interpreter(直譯器模式),visitor(訪問者模式),iterator(迭代子模式),mediator(調停者模式),memento(備忘錄模式),observer(觀察者模式),state(狀態模式),strategy(策略模式),template method(模板方法模式), chain of responsibility(責任鏈模式)。

面試被問到關於設計模式的知識時,可以揀最常用的作答,例如:

- 工廠模式:工廠類可以根據條件生成不同的子類例項,這些子類有乙個公共的抽象父類並且實現了相同的方法,但是這些方法針對不同的資料進行了不同的操作(多型方法)。當得到子類的例項後,開發人員可以呼叫基類中的方法而不必考慮到底返回的是哪乙個子類的例項。

- **模式:給乙個物件提供乙個**物件,並由**物件控制原物件的引用。實際開發中,按照使用目的的不同,**可以分為:遠端**、虛擬**、保護**、cache**、防火牆**、同步化**、智慧型引用**。

- 介面卡模式:把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起使用的類能夠一起工作。

- 模板方法模式:提供乙個抽象類,將部分邏輯以具體方法或構造器的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法(多型實現),從而實現不同的業務邏輯。

除此之外,還可以講講上面提到的門面模式、橋梁模式、單例模式、裝潢模式(collections工具類和i/o系統中都使用裝潢模式)等,反正基本原則就是揀自己最熟悉的、用得最多的作答,以免言多必失。

面試題 PHP面試題

建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...

面試題 騰訊2012面試題

問題描述 例如手機朋友網有n個伺服器,為了方便使用者的訪問會在伺服器上快取資料,因此使用者每次訪問的時候最好能保持同一臺伺服器。已有的做法是根據serveripindex qqnum n 得到請求的伺服器,這種方法很方便將使用者分到不同的伺服器上去。但是如果一台伺服器死掉了,那麼n就變為了n 1,那...

面試題總結 html面試題)

附上鏈結 doctype 的作用是什麼?宣告一般位於文件的第一行,它的作用主要是告訴瀏覽器以什麼樣的模式來解析文件。一般指定了之後會以標準模式來 進行文件解析,否則就以相容模式進行解析。在標準模式下,瀏覽器的解析規則都是按照最新的標準進行解析的。而在相容模式下,瀏 覽器會以向後相容的方式來模擬老式瀏...