java面試題01
一、JAVA基礎
1、簡述你所知道的JAVA修飾符及各自的使用機制?(public、abstract、final、synchronized、super…)
01.public:允許所有客戶訪問
02.protected:只能在本包,本類以及該類的子類中使用
03.private:只允許在本類中使用
04.abstract:沒有提供實現,需要子類提供實現。
05.static:與整個類相關,與單個對象無關。
06.final:final修飾的類,不能被繼承
final修飾的方法,不能被重寫
final修飾的變量不能改變其初始值。
07.synchronized:方法獲得對對象監控的訪問權,如果該方法是static類型的,獲得是對類本身的訪問權。
08.super:構造器和方法,都用關鍵字super指向超類。但是用的方法不一樣,方法用這個關鍵字去執行被重載的超類中的方法。
2、String、StringBuffer與StringBuilder之間的區別?分別簡述各自的執行效率?
01、區別
String類型和StringBuffer類型的主要性能區別其實在於String是不可變對象,因此在每次對String類型進行改變的時候其實都等於生成了一個新的String對象,然後將指針指向新的String對象,所以經常改變內容的字符串最好不要用String,因為每次生成對象都會對系統性能產生影響,特別當內存中無引用對象多了以後,JVM的GC就會開始工作,那速度一定會相當慢的。
02、執行速度:
三者在執行速度方面的比較:StringBuilder>StringBuffer>String
03、使用場景:
a、如果要操作少量的數據用String
b、單線程操作字符串緩沖區下操作大量數據 使用StringBuilder
c、多線程操作字符串緩沖區 下 操作大量數據使用 StringBuffer
3、重載和重寫的區別。重載的方法是否可以改變返回值類型?
01.重載:在同一個類中,相同的方法名,但是參數類型或者個數不同,與返回值類型無關。同名不同參。
02.重寫:在父類和子類中,子類中的方法的方法名,參數個數,參數類型,都與父類中的完全一樣,返回值類型也必須相同。
4.JAVA SERVLET API forward()與redirect()的區別?
01.forward:轉發是服務器行為,轉發的時候瀏覽器不知道他所請求的具體資源來源,所以url不會變。轉發的時候可以共享request裏面的數據。
02.redirect:重定向是客戶端行為,服務器根據邏輯發送一個狀態碼,告訴瀏覽器重新去請求那個地址,所以地址欄顯示的是新的URL,重定向不能攜帶參數。
5、JAVA 解析 XML 有哪幾種方法?並簡述各自的優缺點
01.DOM解析:
是用與平臺和語言無關的方式表示XML文檔的官方W3C標準,分析該結構通常需要加載整個文檔和構造層次結構,然後才能做任何工作,是基於信息層次的。
優點有:由於樹在內存中是持久的,因此可以修改他以便應用程序能對數據和結構做出更改。它還可以在任何時候在樹中上下導航,而不是象SAX那樣是一次性的處理。DOM使用起來也要簡單的多。
02.SAX解析:
對於特別大的文檔,解析和加載整個文檔可能很慢且很耗資源,因此使用其他手段來處理這樣的數據會更好,這些基於事件的模型,比如SAX。這種處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。
03.JDOM解析:
目的是成為java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快。
04.DOM4J解析:
它是JDOM的一種智能分支。它合並了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用於大文檔或流化文檔的基於事件的處理。它還提供了構建文檔表示的選項,DOM4J是一個非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J。
二、javascript相關:
1.javascript有哪些打開一個頁面的方式?
01.window.open(sURL[,vArguments] [,sFeatures]) 新頁面
02.window.showmodaldialog(sURL[,vArguments] [,sFeatures]) 模態對話框
03.window.showModelessDialog(sURL[,vArguments] [,sFeatures]) 非模態對話框
2.頁面加載完後調用js方法如何實現?
body 標簽加 onload事件,<body onload="alert(1);">
3.innerHTML和outerHTML的區別是什麽?
01、使用innerHTML的時候將找著元素的內容(不包含元素本身)
使用outerHTML的時候將找著元素的內容(包含元素本身)
02.例子:
<a href=”test.jsp”>test</a>,innerHTML取到test,
outerHTML取到<a href=”test.jsp”>test</a>.
4.javascript如何做到頁面的局部刷新?
使用AJAX。
原理:獲取一個請求對象,向指定URL發送請求,當請求完成時(狀態為4),獲取到請求返回的內容,並將內容填充到局部頁面。
三:數據庫相關
1、存儲過程和函數的區別:
存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其他對象的任務,用戶可以調用存儲過程。而函數通常是數據庫已定義的方法,它接收參數並返回某種類型的值並且不涉及特定用戶表。
2、oracle中truncate和delete命令有何區別?
刪除表中的數據的方法有delete,truncate, 它們都是刪除表中的數據而不能刪除表結構
01、delete可以刪除整個表的數據也可以刪除表中某一條或N條滿足條件的數據
02、truncate只能刪除整個表的數據
,一般我們把delete操作收作刪除表而truncate操作叫作截斷表
3、Oracle中char和varchar2數據類型有什麽區別?有數據”test”分別存放到char(10)和varchar2(10)類型的字段中,其存儲長度及類型有何區別?
01.char是定長字符誒型,varchar2是變長字符類型。
02.“test”在char(10)中被補齊空格,存儲長度是10,在varchar2(10)中存儲長度是4字節。
4、
假如系統中有如下四張表:
1)文檔表(DOC):編號(docid)、名稱(docname)、描述(docdesc);docid為主鍵,docname有索引;
2)學生表(XS):學生代碼(XSDM)、學生名稱(XSMC);
3)學科表(XK):學科代碼(XKDM)、學科名稱(XKMC)、最高分數(ZGF);
4)成績表(CJ):學生代碼(XSDM)、學科代碼(XKDM)、成績(CJ)。
問題1: 寫出您最常用SQL語句的關鍵字
01、--數據操作
SELECT --從數據庫表中檢索數據行和列
INSERT --向數據庫表添加新數據行
DELETE --從數據庫表中刪除數據行
UPDATE --更新數據庫表中的數據
02、--數據定義
CREATE TABLE --創建一個數據庫表
DROP TABLE --從數據庫中刪除表
ALTER TABLE --修改數據庫表結構
03、--數據控制
GRANT --授予用戶訪問權限
DENY --拒絕用戶訪問
REVOKE --解除用戶訪問權限
04、--事務控制
COMMIT --結束當前事務
ROLLBACK --中止當前事務
SET TRANSACTION --定義當前事務數據訪問特征
問題2:以下查詢的處理速度(返回數據量相同)從高到低排列?
A、select * from doc where docname=’test’
B、select * from doc where docid=50
C、select * from doc where docdesc=’test’
B大於A大於C
問題3 :列出有不及格(<底於60分)的學生姓名(SQL語句) :
select XSMC from XS,CJ where XS.XSDM=CJ.XSDM and CJ<60
問題4 :統計每個學生的總分(SQL語句):
select XSMC,SUM(CJ) from XS,CJ where XS.XSDM=CJ.XSDM GROUP BY XSDM
問題5 : 列出沒有不及格(>=60分)的學生姓名及平均分(SQL語句):
select XSMC,AVG(CJ) from XS,CJ where XS.XSDM=CJ.XSDM and CJ>60 GROUP BY XSDM
java面試題01