70個JAVA面試題(含答案)

在這裏你將會查找到任何你所想知道的,你知道你會獲得一個真實的面試題體驗。包括Java、DBA、SQL等面試圖,絕對實用。

1. 問:在JAVA與JSP中要調用一個LINUX上的腳本程序,或WINDOWS上的腳本程序,該怎麼寫?


答:System.getRuntime().exec("bash < aaa.sh");


2. 問:java中用什麼表示雙引號


答:"\""


3. 問:如何在JSP程序裏另起一個線程?


答:


JSP自己就是獨立線程運行而不象CGI都是獨立進程.


通常:


Thread t = new Thread("你的對象\\");


t.start();就能夠了.


要求你這個對象要實現runnable接口或繼承thread.


4. 問:jsp如何得到客戶端的IP地址?


答:


request.getRemoteAddr()


看看各個webserver的API文檔說明,通常都有自帶的,resin和tomcat都有


5. 問:程序終止與輸出終止


答:


程序停止:return;


輸出停止:out.close();這一句至關於ASP的response.end

6. 問:jsp中如何獲得上頁的URL?


答:request.getHeader("referer");

7. 問:提交網頁的網頁過時功能是怎麼作的?


答:response.setHader("Expires","0");

8. 問:在JSP網頁中如何知道自已打開的頁面的名稱


答:


request.getRequestURI() ;//文件名


request.getRequestURL() ;//所有URL


9. 問:提交表單後驗證沒有經過,返回提交頁面,如何使原提交頁面中的數據保留?


答:javascript的go(-1)能夠把上頁的表單內容從新顯示出來,但password域沒有

10. 問:如何取得http的頭信息?


答:request.getHader(headerName);

11. 問:&&和&的區別?


答:
&&是短路的與操做,也就是當地一個條件是false的時候,第二個條件不用執行


&相反,兩個條件老是執行。


12. 問:將*以正弦曲線的一個週期顯示出來 javascript



答:public void paint(Graphics g)


{


for(int i=0;i<200;i++)


g.drawString("*",i,(int)(Math.sin(i)*20)+50);


}


}
13. 問:浮點數相乘後結果不精確如100.0 * 0.6 結果等於 60.0004


答:
這不叫錯誤,float和double是這樣實現的.若是要精確計算,java提供了一個strictfp,它的計算遵循IEEE 754標準.而普通的float和double是由地平臺浮點格式或硬件提供的額外精度或表示範圍。


14. 問:如何得到當前用的cursors的位置?


答:
int row = rs.getRow()就是當前指針行數,還有isFrist();isBeforeFist();isLast();isAfterLast();能夠測試是否是在方法名所說的位置

15. 問:表單成功提交了,點後退顯示網頁過時


答:


在<head></head>裏面加如下代碼


<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 


<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 


<META HTTP-EQUIV="Expires" CONTENT="0"> 


或者在表單頁中加上


<% 


response.setHeader("Pragma","no-cache"); 


response.setHeader("Cache-Control","no-cache"); 


response.setDateHeader("Expires",0); 


%>

16. 問:接口的簡單理解


答:接口爲了規範,好比我在接口中定義了一個方法:


getData()


這是用來從不一樣的數據庫中取數據的,就是JDBC的實現對於用 戶,我不要知道每種數據庫是如何作的,但我知道如何它們要實現這個接口就必定有這個方法能夠供我調用.這樣SUN就把這個接口給各個數據庫開發商,讓他們本身實現. 但爲何不用繼承而用接口哩,由於繼承只能從一個你類繼承,而接口能夠實現多個,就是說我實現的子類有多個規定好的接口中的功能. 這只是簡單的理解,等你深刻理解抽象的時候就知道抽象到抽象類時爲何還要再抽象到接口.


17. 問:怎樣編寫一個取消按鈕(怎樣返回上一個頁面,象工具欄的後退按鈕)?


答:


javascript把每次瀏覽過的location都壓到了一個棧中,這個棧就是history,而後你若是要回到第幾個頁面它就作幾回POP操做,把最後POP出來的那個LOCATION給你. 這就是JAVASCRIPT在實現history.go(-x)的原理.


18. 問:什麼是回調?


答:


簡單說,回調用不是讓你去監聽誰作完了什麼事,而是誰作完了什麼事就報告給你. 這就是回調用的思想.例子太多了,AWT的事件,SWING事件模型都是這樣有. 還有多線程中,若是要控制線程數,不能老是查詢每一個線程是否結束,要在每一個線程結束時讓線程本身告訴主線程我結束了,你能夠開新的線程了.



19. 問:簡要介紹一下compareTo方法


答:


compareTo方法是Comparable 接口必需實現的方法,只要實現Comparable 就能夠用Arrays.srot()排序就象實現Runnable接口的run就能Thread()同樣.


20. 問:如何能夠從別的Web服務器檢索頁, 而後把檢索到的網頁的HTML代碼儲存在一個變量中返回過來


答:這是一個簡單的WEB ROBOT實現,用URL類實現從網頁中抓內容,而後本身寫一個分析程序從中找出新的URL,不斷遞歸下去就好了.


21. 問:applet中如何得到鍵盤的輸入


答:application的System.in是當前系統的標準輸入,applet由於安全的緣由不可能讀取當前系統(客戶端)的標準輸入,只能從它的ROOT組件的事件中,好比鍵盤事件中取得鍵值.


22. 問:怎樣計算代碼執行所花費的時間?


答:


代碼開始取時間,結束後取時間,相減


long t1 = System.currentTimeMillis();


///////////////// your code


long t2 = System.currentTimeMillis() ;


long time = t2-t1;


23. 問:如何獲在程序中得到一個文件的ContentType?


答:


URL u = new URL("file:///aaa.txt");


URLConnection uc = u.openConnection();


String s = uc.getContentType();


24. 問:鏈接池的使用是創建不少鏈接池,仍是一個鏈接池裏用多個鏈接?


答:


只有在對象源不一樣的狀況下才會發生多個池化,若是你只連一結一個數據源,永遠不要用多個連結池. 因此連結池的初始化必定要作成靜態的,並且應該在構造對象以前,也就是隻有在類LOAD的時候,別的時候不該該有任何生成新的連結池的時候。


25. 問: JavaMail要怎麼安裝?


答:下載兩個包,一個是javamail包,另外一個是jaf包。下載完直接把這兩個包不解壓加到CLASSPATH。


26. 問:怎樣把地址欄裏的地址鎖定?


答:把你的服務器的可訪問目錄索引選項關閉就好了,任何服務器都有一個conf文件,裏面都有這個選項。


27. 問:在JAVA中怎麼取得環境變量啊。好比: TEMP = C:\TEMP ?


答:String sss = System.getProperty(key)



28. 問:怎樣實現四捨五入,保留小數點後兩位小數?


答:


import java.text.*;


...


NumberFormat nf=NumberFormat.getNumberInstance();


nf.setMaximumFractionDigits(2);


nf.setMinimumFractionDigits(2);


nf.format(numb);



29. 問:Applet和form如何通訊?


答:


取得的參數傳到param裏面


<% 


String xxx = request.getParameter("xxx"); 


%> 


<applet> 


<param value="<%=xxx%>"> 


</applet>


30. 問:java-plug-in是什麼?


答:Java Runtime Environment的插件。用來運行java程序。不須要什麼特別的設置。等於你的機器裏面有了jvm。


31. 問:WEB上面怎麼樣鏈接上一個EXCEL表格?


答:


定義頁面得contentType="application/vnd.ms-excel",讓頁面以excel得形式打開。一樣也能夠以word得形式打開:application/msword。


32. 問:怎樣才能避免textarea字數限制?


答:是使用了FORM的默認方法的緣故,若是什麼也不寫默認是GET改用Post便可,在Form中定義mothod="post"。


33. 問:爲何加了<% @page contentType="text/html;charset=gb2312" %>插入數據庫的中文,依然是亂碼?


答:


這要從環境看,能顯示說明你的JSP引擎沒有問題,但寫入數據庫時你的JDBC能不能處理中文,同一公司不一樣版本的JDBC都有支持中文和不支持中文的狀況,RESIN自帶的MYSQL JDBC就不支持,MM的就支持,還有你的數據庫類型是否支持中文?CHAR的通常支持,可是否用binary存儲雙字節碼


34. 問:對於JFrame,hide(),show()與setVisibel()有什麼區別嗎?


答:


setVisible()從Component繼承過來,而hide(),show()從Window裏面繼承過來。


Makes the Window visible. If the Window and/or its owner are not yet displa yable, both are made displayable. The Window will be validated prior to being made visible. If t he Window is already visible, this will bring the Window to the front. 區別在這。

36. 問:sendRedirect爲何不能夠轉到mms協議的地址的?response.sendRedirect("mms://missiah.adsldns.org:9394");


答:java平臺目前實現的protocol中並無mms,你能夠取系統屬性java.protocol.handler.pkgs看看它的值中有沒有mms,因此若是要想重定向到[url]mms://host[/url]這樣和URL,只有生成客戶端的JAVASCRIPT讓它來重定向


37. 問:JTable中怎樣定義各個Columns和Width和怎樣設置表格的內容靠作靠右或居中?


答:


TableColumn tc = table.getColumn("Name");//取得列名爲"Name"的 列Handle


int currentWidth = tc.getPreferredWidth(); //取得該列當前的寬度


tc.setPreferredWidth(200); //設置當前列寬


tc.setMaxWidth(200); //設置該列最大寬度


tc.setMinWidth(50); //設置該列最小寬度


38. 問:批操做是否可用於select語句?


答:批操做實際上是指成批理更新的操做,絕對不可能用於select操做。


39. 問:爲何jsp路徑太深文件名太長就沒法讀取文件?


答:path不能超過255長度,否則就找不到了.這是做業系統的事。


40. 問:如何讓頁面不保留緩存?


答:


<% 


response.setHeader("Pragma","No-cache"); 


response.setHeader("Cache-Control","no-cache"); 


response.setDateHeader("Expires", 0); 


%>


41. 問:個人applet code 中用到jbutton 時就出錯是否因爲ie不支持swing package 請問應怎麼辦?


答:JBUTTON是SWING基本包啊,只要把jdk/jre/lib/rt.jar放在classpath就好了.不要加載任何別的庫。


42. 問:不知道java是否支持midi格式,若是支持,應該怎麼把wave格式轉換成midi格式?


答:目前還不行,能夠看一下JMF三個版中對MIDI的格式支持是read only,而WAVE是read/write,MIDI只能播放,不能生成。


43. 問:在jsp裏面防止用戶直接輸入url進去頁面,應該怎麼作呢?


答:


一是從web服務器控制,對某一目錄的全部訪問要經過驗證.


二是在要訪問的頁面中加入控制.這個通常用session,也能夠用請求狀態碼實現

44. 問:


例如後臺有一計算應用程序(此程序運算起來很慢,可持續幾分鐘到幾小時,這無論,主要是能激活它),客戶機講任務提交後,服務器對任務進行檢測無誤後將向服務器後臺程序發送信息,並將其激活。要求以下:


1)首先將後臺程序激活,讓它執行此任務(好比,前臺將計算的C代碼提交上後,後臺程序程序能立刻調用,並將其運行)


2)要在前臺JSP頁面中顯示運行過程信息(因爲運行時間長,但願讓客戶看到運行過程當中產生的信息)如何完成?

答:


活是能夠的,運行一個shell讓它去運行後臺就行,但不可能取出運行信息,由於HTTP的超時限制不可能永遠等你後臺運行的,並且信息若是要動態實時推出來就得用SERVER PUSH技術。


45. 問:數據庫是datetime 型 ,插入當前時間到數據庫?


答:


java.sql.Date sqlDate = new java.sql.Date();


PreparedStatement pstmt = conn.prepareStatement("insert into foo(time) values(?)");


pstmt.setDate(1,sqlDate);


pstmt.executeUpdate();



46. 問:怎樣去掉字符串先後的空格。


答:String.trim()


47. 問:session怎樣存取int類型的變量?


答:


session.setAttribute("int", i+"");


int i = Integer.parseInt(session.getAttribute("int"));










48. 問:在javascript中如何使輸出的float類型的數據保留兩位小數。


答:Math.round(aaaaa*100)/100。



49. 問 :在bean種如何調用session


答:


你可把session對象做爲一個參數傳給bean


在BEAN中定義HttpServletRequest request;HttpSession session;


而後


session = request.getSession(false);


false爲若是session爲空,不創建新的session


將session做爲參數傳入.其實只要將request傳入就能夠


50. 問:如何把txt或word文件按原格式顯示在jsp頁面或servlet上?


答:


其實一個很是簡單的解決方法就是在服務器的MIME中指點定TEXT和WORD的解釋方式,而後用JSP或SERVLET生成它就好了,客戶端就會自動調用相應程序打開你的文檔。


若是是但願按原格式的顯示在頁面上,而不是調用其餘程序打開那麼你能夠試試用WEBDEV協議,能夠說這是MS的一個亮點.它是在WEB方式下打開文檔,和共享同樣.徹底符合的要求。


51. 問:object的clone方法爲何不能直接調用?


答:


這個方法在object中是protected


爲何要把這個方法定義爲protected,這是一個折中,它的目的是想知道你這個方法在Object裏只是一個標記,而不是一個實現,好比


public class Object


{


.............


protected Object clone()


{}


}






因此直接繼承的clone()方法並不能作任什麼時候,你要使用這個方法就要重載這個方法並放寬訪問權限爲public,或實現cloneable接口. 但它無法這樣告訴你它沒有真的實現,只好用protected 方法加以警示


52. 問:一個頁面中如何刷新另一個頁面?


答:


要求是這些面頁必須有關聯,一是它們都有一個共同的頂層幀,也就是說是一個幀內的分級頁面,固然能夠是任意級,幀內再分幀也能夠,另外一個多是當前窗口彈出的窗口,若是沒有聯繫,那就不可能用一個頁面刷新另外一個頁面. 幀內只要一級一級引用就好了. 好比在左幀中一個頁面中寫top.right.location.reload();那麼名爲right的右幀中的頁面就會刷新. 彈出的同樣,用open時的名稱刷新子窗口,子窗口用opener刷新主窗口

53. 問:如何在jsp中怎麼樣向客戶端寫cookies?


答:


Cookie coo = new Cookie(name, value);


HttpServletResponse.addCookie(name);


54. 問:爲何jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 獲得的字體寬度不同?


答:就是說若是不是指定爲等寬字體,每一個字體的寬度都是不同的.所以JAVA中用FontMetrics 類來取字符寬度。


55. 問:String kk=application/octet-stream; name="G:/SMBCrack.exe";如何獲得SMBCrack.exe?


答:


這應該是解析上傳時候的二進制流獲得的這一行裏面格式是固定的,取到name="後面的字符串,而後把";去掉。而後取最後一個/後面的全部字符組成一個新字符串就好了。


56. 問:如何傳值並不刷新頁面?


答:


彈出一個頁面進行值的選擇或者輸入,ok後使用將值傳給原窗口,使用javascript關閉打開的窗口便可 :


window.close();opener.focus();


57. 問:有一個字符串:"EF0C114EA4",如何變爲a[0] = 0xEF a[1] = 0x0C a[2] = 0x11 a[3] = 0x4E a[4] = 0xA4?


答:


String str="EF0C114EA4F";


out.print(str+"<br>");


int l=str.length()/2+str.length()%2,j=0,k=0;


String[] a=new String[l];


for(int i=0;i<l;i++){


if(str.length()-j==1)


k=str.length();


else


k=j+2;


a[i]="0x"+str.substring(j,k);


out.print("a["+Integer.toString(i)+"]="+a[i]+"<br>");


j+=2;


}


58. 問:怎樣將一個int轉換成一個四字節的byte數組?


答:


int x = 1234567;


byte[] b = new byte[4];


for(int i=0;i<b.length;i++)


{


b[i] = (x >>( i*8)) & 0xFF;


}


59. 問:indexOf()的使用須要注意什麼?


答:參數是指從第幾位(1,2,3,...)開始搜索,而返回值是指搜索到的位置(0,1,2,3.......)注意是從零算起的。


60. 問:在Java應用程序中如何動態的添加一個按鈕?


答:


這裏涉及一個組件重繪的問題,組件要先於panel被顯示之處存在,若是一panel已經顯示了,那麼加在上面你能看到嗎?但若是在同一個panel上, 先有button A,假如按下它加了butt on B,這時你若是使整個panel重給,那麼A自己要重繪,它的事件監聽就沒有了,固然也就加不成B了,因此若是要先有另外一個panel,當按A時把B加在這個panel上並重繪這個paenl,其實更好的方法是先把B加在panel中,同一個也行.把它setVisiable(flase),按A時設爲 true。


61. 問:book mybook=new book(bookid);book是servlet,出錯。


答:


book是servlet,能book mybook=new book(bookid);


說明本身實現了servlet容器?否則,servlet能讓你本身去調用? servlet若是調用其實和EJB連1%的區別都沒有,它們都是本身繼承或實現一些接口,在這些父類或接口中實現了若是和容器\"打交道"的方法,而後容器調用這些方法來管理它,讓它生成實例,池化,鈍化,銷燬,再生等.因此這樣寫是錯誤的。


62. 問:給定一個字符串5*(5+9)/7怎樣計算出結果?


答:


可有兩種方法


1。用堆棧完成


2。最簡單的方法,不用編程,若是有任何一個數據庫的化,用select (5*(5+9)/7) from oneTable

63. 問:如何實現遞交表單內容的加密解密?


答:


若是你用IE目前只能用SSL協議,這一層不要你考慮,不然只你用你本身的工具加密傳輸,接收後再解密友,至於如何加解,若是要和公認的系統結合,就用通用的MD5,RAS等公開算法,若是你只是本身傳本身解,你隨便按你的想法把數據加上一些東西,取回來按規則減掉這些東西,我敢保證除你本身沒有任何人能知道解密方法.

64. 問:爲何Integer.parseInt("+1");會拋出NumberFormatException的異常?


答:由於"+"運行算在JAVA中被重載.系統沒法肯定你用的是算術加仍是字符+。


這一點能夠在JAVASCRIPT中更好地理解:


<form name="t"><input name=s value=1234></form>


var  a = document.t.s.value+1;


這時a = 12345,由於document.t.s.value做爲字符串.但var a = document.t.s.value-1;


a 就是1233,由於系統知道-運算確定是算術運行.因此把document.t.s.value轉換成數字.














65. 問:hashCode() 有什麼用爲何有時候須要覆蓋Object裏的hashcode()方法?


答:這就是這個對象的身份證啊,要不如何區分哪一個對象。










66. 問:怎樣在tomcat中實現一個定時執行的東東?


答:


在應用程序啓動時自動運行。servlet2.3中定義了ServletListener,監聽Servlet Con text的啓動或則關閉(可在配置文件中配置),啓動時觸發一個守護程序的運行(能夠實現java.util.Timer或則 javax.swing.Timer).

67. 問:程序能夠輸出本身嗎?


答:孔德悖論這個很是有名的法則.就是說任何程序都不可能輸出本身.


68. 問:可以把字符轉化成ASCII碼?好比將 A 轉化成 65? html

答:int a='A'; out.println(a); 69. 問:如何區分輸入的文字中的全角與半角? 答:因爲不能分辨出全角和半角字符的值有什麼規律,只好把全角符號牧舉出來了. 70. 問:用戶註冊後的自動發信程序該怎麼作? 答:這種發信程序不考慮性能,由於不可能1秒就有一我的註冊,咱們說的考慮性能的發信程序是指上百萬封信在隊列裏要不停發送的那種,象你這個隨便怎麼寫一個程序都行,沒有必要用JAVAMAIL.只要指定一個發信的服務器而後用cocket連它的25口就好了.本身用SOCKET連SMTP的25口發一封信就好象兩個鄰居之間送同樣東西,直接遞過去得了,用JAVAMAIL,消息機制就是你把這個東西從郵局寄給你的鄰居了[/b][/size] 
相關文章
相關標籤/搜索