華為面試試題Oracle
2014-05-27 |標簽: 華為Oracle 

 

一、技術問題部分(數據庫部分)
  
  1、 表空間的管理方式有哪幾種?
  
  數據字典管理方式,本地文件管理方式
  
  2、談談你對索引的理解?
  
  索引是若干數據行的關鍵字的列表,查詢數據時,通過索引中的關鍵字可以快速定位到要訪問的記錄所在的數據塊,從而大大減少讀取數據塊的I/O次數,因此可以顯著提高性能。
  
  3、說說索引的組成?
  
  索引列、rowid
  
  4、分區表用過么?談談分區表的應用?
  
  分區表在對表的DML的并行處理上有極大得優勢,而且可以一部分設為只讀,用在銷售記錄,醫院處方等地方!
  
  5、你對分區表的理解?怎樣截斷分區表一個分區的記錄?
  
  一個分區表有一個或多個分區,每個分區通過使用范圍分區、散列分區、或組合分區分區的行分區表中的每一個分區為一個段,可各自位于不同的表空間中對于同時能夠使用幾個進程進行查詢或操作的大型表分區非常有用
  
  6、物理文件有哪幾種?控制文件包含了什么信息?
  
  1)數據文件2)控制文件3)日志文件包含維護和驗證有選舉權據庫完整性的必要信息、例如,控制文件用于識別數據文件和重做日志文件,一個有選舉權據庫至少需要一個控制文件
  
  7、表空間用完了如何增加?
  
  三種種擴展方式:1 增加數據文件alter tablespace name add datafile „路徑? size 4M;2 擴展數據文件大小alter database datafile „路徑? resize 4M;3 把數據文件設為自動增alterdatabase datafile „路徑
  
  8、SGA包含幾部分?
  
  共享池),DataBase Buffer Cache(數據緩沖區)  Redo Log Buffer(重做日志緩沖區), Large Pool,大池,JAVA池。
  
  9、 DECODE函數的用法?
  
    DECODE的語法的語法:(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1時,DECODE函數的結果返回then1,...,如果不等于任何一個if值,則返回else。初看一下,DECODE 只能做等于測試,但剛才也看到了,我們通過一些函數或計算替代value是可以使DECODE函數具備大于、小于或等于功能。還可以轉化表結構!
  
  10、 DELETE和TRUNCATE的區別?
  
  答:1、TRUNCATE在各種表上無論是大的還是小的都非常快。如果有(ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會被撤銷。2、TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對TRUNCATE使用ROLLBACK命令。3、TRUNCATE將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能觸發任何DELETE觸發器。5、不能授予任何人清空他人的表的權限。6、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。7、不能清空父表。
  
  11、談談你對事務的理解?
  
  事務從COMMIT、ROLLBACK、連接到數據庫或開始第一條可執行的SQL語句時開始,到一條COMMIT、ROLLBACK語句或退出數據庫時結束。如果在一個事務中包含DDL語句,則在DDL語句的前后都會隱含地執行COMMIT語句,從而開始或結束一個事務。如果一個事務由于某些故障或者由于用戶改變主意而必須在提交前取消它,則數據庫被恢復到這些語句和過程執行之前的狀態。利用語句可以在COMMIT命令前隨時撤消或回退一個事務。可以回退整個事務,也可以會退部分事務,但是不能回退一個已經被提交的事務。回退部分事務的命令為:ROLLBtosavepoint 存儲點名存儲點是用戶放入事務中的標記,用來表示一個可被回退的位置。存儲點通過在事務中放入一個SAVEPOINT命令而被插入。該 命令的語法是:SAVEPOINT存儲點名如果在語句中沒有給出存儲點名,則整個事務被回 退。
  
  12、給表A加一列abc口述?
  
  數據庫正在應用時應先使數據庫處于靜默狀態再alter table a add abc varchar2(10), 如果不是就直接用!
  
  
  13、索引重建的概念?說說索引重建的意義?
  
  當我們創建索引時,oracle會為索引創建索引樹,表和索引樹通過rowid(偽列)來定位數據。當表里的數據發生更新時,oracle會自動維護索引樹。但是在索引樹中沒有更新操作,只有刪除和插入操作。例如在某表id列上創建索引,某表id列上有值“101”,當我將“101”更新為“110”時oracle同時會來更新索引樹,但是oracle先將索引樹中的“101”標示為刪除 (實際并未刪除,只是標示一下),然后再將“110”寫到索引樹中。如果表更新比較頻繁,那么在索引中刪除標示會越來越多,這時索引的查詢效率必然降低,所以我們應該定期重建索引。來消除索引中這些刪除標記。一般不會選擇先刪除索引,然后再重新創建索引,而是rebuild索引。在rebuild期間,用戶還可以使用原來的索引,并且rebuild新的索引時也會利用原來的索引信息,這樣重建索引會塊一些。
 
  14、 你對游標的理解,游標的分類,使用方法?
  
  游標是結果集數據中的指針,作用是為遍歷結果集時,存儲每條記錄的結果, 1.聲明游標,2.打開游標,3.提取游標,4.關閉游標 游標for循環  顯式游標,隱式游標,游標變量!
  
  15、 存儲過程的用法?在存儲過程中異常的處理,分類?舉兩個預定義異常的例子?
  
  存儲過程:是預編譯數據庫SQL的集合  存儲過程是預編譯過的,執行時勿須編譯,執行速度更快,存儲過程封裝了一批SQL語句,便于維護數據的完整性與一致性。并且可以多次調用。異常:自定義,預定義,非預定義
  
   16、 創建用戶的語句?
 
  Create user user_name identified by password ;default tablespace tablespacename;grant create session to username;
  
  17、 談談你對實例的理解?
  
  是用實例來進行數據庫管理的,實例在用戶和orale數據庫之間充當中間層的角色。每當在服務器上啟動數據庫時,就在內存中創建一個oracle實例,即oracle為數據庫分配內存和創建并啟動一個或多個oracle進程,然后由實例加載并打開數據庫,最后由這個實例來訪問和控制硬盤中的數據文件。
  
  18、 觸發器中能用COMMIT,為什么?
  
  在觸發器中不能使用COMMIT;等事務控制語句。因為觸發器是事務觸發的如果有事務控制語句就會影響到觸發它的事務。即連帶觸發它的語句之前的已經完成的沒有提交的語句都要受到影響。這是會影響到數據的一致性的。
  
  19、 有幾種表空間?
  
  數據表空間(永久表空間)、臨時表空間、撤銷表空間
  
  20、 歸檔模式與非歸檔模式?為什么歸檔模式可以恢復到任意時刻?
  
  歸檔是在重做日志文件被覆蓋之前,將該重做日志文件通過復制操作系統文件的 方式,保存到指定的位置。保存下來的重做日志文件的集合被稱為歸檔重做日志文件,復制的過程被稱為歸檔。  在歸檔日志(ARCHIVELOG)模式下,ORACLE對重做日志文件進行歸檔操作。非歸檔日(NOARCHIVELOG)模式下,不會對重做日志文件進行歸檔操作。由于非歸檔模式不會在覆蓋之前保存,這樣就造成了數據庫在一定時間之前的重做日志文件丟失,也就不能恢復到被覆蓋之前。而歸檔模式在任意時間上都有重做日志文件,故可以恢復到任意時刻。
  
  二、技術問題(JAVA部分)
  
  1、 Struts和Hibernate分別屬于持久層,用例層,表示層的那一層?
  
  是表示層,Hibernate是持久層。
  
  2、 Struts里如何體現MVC模式?
  
  Html或jsp文件是MVC模式中的視圖層 ActionForm是MVC模式中的模式層 Action是MVC模式中的控制層  通過控制層可以對視圖層和模式層進行業務邏輯的處理
  
  3、 用Struts做過那些項目?
  
  4、 談談對Struts的認識?
  
  跟Tomcat諸多Apache項目一樣,是開源軟件,這是它的一大優點。使開  發者能更深入的了解其內部實現機制。除此之外,Struts的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,靈活動用,能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,很少開發自己的標記,或許Struts是一個很好的起點。   關于頁面導航,我認為那將是今后的一個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對于后期的維護有著莫大的好處。尤其是當另一批開發者接手這個項目時,這種優勢體現得更加明顯。但是我覺得它雖然還有不少缺點,但它是一種非常優秀的J2EE MVC實現方式,對項目的開發有很大的幫助。
  
  5、 String在JAVA里是固定長度的嗎?為什么可以用”+”連接?
  
  在JAVA中是有固定長度的 可以用”+”連接的原因是Java 語言提供對字符串串聯符號("+")和其他對象到字符串的轉換的特殊支持。字符串串聯是通過 StringBuilder(或 StringBuffer)類及其 append 方法實現的。再通過調用StingBuffer中的toString方法,將StringBuffer的對象轉換String的對象。
  
  6、 String和StringBuffer的區別?
  
  的長度是不可變的,BUFFER的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
  
  7、 使用過什么集合類型?你一般用什么類?
  
  集合類型List,Set,Map  一般用
  
  8、 ArrayList里如何取得對象的長度?
  
  通ArrayList中的size()可以取得對象長度。
  
  9、 事務的4個特性?
  
  原子性、一致性、持久性、隔離性。
  
  10、 Oracle用了多久?char與varchar2的區別?
  
  Char是固定長度字符串,varchar2是變長字符串。比如在char(10)和varchar2(10)中插入test字符串那么 char(10)類型長度就是10,不足的用空格補齊,而 varchar2(10)類型長度就是4。
 
        11、 Oracle用什么獲得字符集?
  
  函數
  
  12、 查詢需要COMMIT嗎?插入呢?
     
       查詢不需要,插入需要,因為做DML操作時需要commit命令確認事務更改。
  
  13、 在Oracle中你用什么工具執行SQL語句?
  
    PLSQL Developer,SQLPLUS等
  
  三、非技術問題部分
  
  1、自我介紹!
  
  2、你對出差的看法?
  
  3、你對加班的看法?
  
  4、你認為你適合IT業嗎?
  
  5、你覺得你的優勢在什么地方?
  
  6、你有什么其他的愛好?
  
  7、你能吃苦嗎?

 

 

平特肖赔率