日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java、Java Web面试题(来源于MLDN、北方网)

發布時間:2023/12/9 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java、Java Web面试题(来源于MLDN、北方网) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源于MLDN:

1.垃圾回收的優點和原理。

???????將無用的對象空間進行釋放。兩種回收:自動回收和手動回收。手動回收實際上就是調用System.gc(),調用此方法于調用了Runtime.getRuntime().gc()方法。

2.ErrorException的區別。

?????? ErrorJVM進行處理,是JVM出錯。Exception是可以由程序進行處理的。

3.匿名內部類是否可以extends其他類,是否可以實現interface

允許繼承或者實現,因為匿名內部類是在抽象類或者接口的基礎上發展起來的。

4.Static Nested ClassInner Class的不同

???????使用static聲明的內部類就是外部類,可以通過外部類.內部類直接進行訪問

???????普通的內部類是不能直接被外部所訪問的,需要通過外部類實例在找到內部類的實例。

5.HashMapHashTable的區別。

?????? HashMap:采用異步處理方式,性能高,但是屬于非線程安全。允許設置null

HashTable:采用同步處理方式,性能較低,線程安全,不允許設置null

6.GC是什么?為什么要GC?

?????? GC是垃圾收集。使用GC可以進行垃圾空間的釋放操作。

7.sleep()wait()的區別

?????? sleep()Thread類中定義的方法,表示線程的休眠,會自動喚醒。Sleep不釋放鎖。

?????? Waitobject中定義的方法,需要使用notify或者notifyAll方法喚醒。Wait釋放鎖。

8.Java中的那些類是滿足單例模式?

?????? Class類和Runtime類。
9.char
能不能存中文?

???????能,因為使用的是Unicode編碼。

10.多線程有幾種實現方法?同步有幾種方法?

???????多線程有兩種方法:繼承Thread類和實現Runnable接口。Thread類是Runnable接口的子類,使用Runnable接口可以實現資源共享的目的,所有的線程操作都必須使用Thread類的start方法啟動。

實現同步的方法有兩種:synchronized代碼塊和synchronized方法。

11.StringStringBuffer的區別?

?????? String不能修改,StringBuffer能夠修改。

12.Class.forName的作用是什么?

?????? Class.forName屬于向容器之中加載驅動程序。

13.說出類集合框架的完整結構。

???????類集框架最大的幾個接口:ConnectionMapInteratorEnumeration

?????? |-Connection:存放單值的:

????????????? |-List:允許有重復內容

???????????????????? |-ArrayList:異步處理,新的操作類,非線程安全

???????????????????? |-Vector:同步處理,舊的操作類,線程安全,支持Enumeration輸出

???????????? |-Set:不允許有重復內容,依靠hashCodeequals記性重復的驗證

???????????????????? |-HashSet:無序存放

???????????????????? |-TreeSet:有序排列,按照Comparable排序

?????? |-Map:存放一對值

????????????? |-HashMap:新的類,異步處理,非線程安全,允許null

????????????? |-HashTable:舊的類,同步處理,線程安全,不允許為null

???????????????????? |-Properties:屬性操作類

????????????? |-TreeMap:有序排列,按照key排序,根據Comparaable指定排序規則

?????? |-Iterator:迭代輸出,依靠Collection接口中的iterator方法輸出,是新的輸出標準。

?????? |-Enumeration:舊的輸出操作。

14.Sting能不能繼承?

???????不能,因為使用final修飾。

15.JSP有哪些內置對象?(ROSEAPPRC(玫瑰應用發行版))

???????一共九個內置對象。

?????? 1.pageContext->javax.servlet.jsp.PageContet.表示頁容器

2.request->javax.servlet.http.HttpServletRequest.服務器端取得客戶端的信息

3.response->javax.servlet.http.HttpServletResponse.服務器端回應給客戶端的信息

4.session->javax.servlet.http.HttpSession.表示每一個用戶用于登錄驗證

5.application->javax.servlet.ServletContext.可以通過this.getServletContext()方法替代.表示整個服務器的上下文,常用方法是getRealPath()????

6.config->javax.servletServletConfig.取得初始化參數,在web.xml中配置

7.exception->java.lang.Throwable.表示錯誤頁的處理操作

8.page->java.lang.Object.如同this一樣,表示整個JSP頁面。

9.out->javax.servlet.jsp.JspWriter.輸出,盡量使用表達式輸出。

16.JSP有哪些動作?

???????所謂的動作,指的是標簽指令。

?????? 1.<jsp:include>:包含

?????? 2.<jsp:forward>:跳轉

?????? 3.<jsp:useBean>:使用JavaBean

?????? 4.<jsp:setProperty>:設置屬性,通過反射調用方法

?????? 5.<jsp:getProperty>:取得屬性

?????? 6.<jsp:plugin>:插入Applet程序的代碼

17.JSP中動態include與靜態include的區別

???????動態include<jsp:include>,如果包含的是動態頁,則先編譯之后再進行處理

???????靜態include<@include%>:直接將內容先包含后處理

18.兩種跳轉的方式分別是什么,什么區別?

???????服務器跳轉:<jsp:forward>,跳轉之后地址欄不改變,可以傳遞request屬性,實際上是ResquestDispatch接口的封裝。

???????客戶端跳轉:response.sendRedirect(),跳轉之后地址欄改變。

19.總結Web開發中會話跟蹤的實現。

?????? 1.session,最常用的一種

?????? 2.Cookie

?????? 3.地址重寫

?????? 4.表單隱藏域

20.說明JSP中的errorPage的作用,應用范圍。

???????表示錯誤頁的操作,在一般的站點中,只要一個程序出現錯誤或者一行,則可以進行顯示。簡單的錯誤頁基本上都是在JSP的開發中使用。要先使用errorPage需要滿足:

1.???????在錯誤處理的頁面上的page指令中,增加isErrorPage=”true”

2.???????在每個頁面中指定errorPage,指定isErrorPagetrue的頁面

如果想要建立全局的錯誤處理,需要在web.xml中進行配置。

21.JDBC連接Oracle的程序,實現查詢。

?????? 1.定義一系列的全局常量:驅動路徑、連接地址、用戶名、密碼

?????? 2.加載驅動程序

?????? 3.連接數據庫

?????? 4.操作數據庫,更新或查詢

?????? 5.關閉數據庫

Public static final String DBDRIVER = “oracle.jdbc.driver.OracleDriver”;

Public static final String DBURL = “jdbc:oracle:thin:@loalhost:1521:CONAN”;

Public static final String DBUSER = “scott”;

Public static final String DBPASSWORD = “tiger”;

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

String sql = “SELECT empno,ename,job FROM emp”;

Class.forName(DBDRIVER);

Conn.Drever,Manager.getConnection(DBURL,DBUSER,DBPASSWORD);

Pstmt=conn.prepareStatement(sql);

rs=pstmt.executeQuery();
while(rs.next())

{

Int empno = rs.getInt(1);

String ename = rs.getString(2);

String job = rs.getString(3);

}

Rs.close();

Pstmt.close();

Conn.close();//正著打開,反著關閉

22.JSP中如何實現分頁操作?

???????分頁分為真分頁和假分頁。

???????真分頁:性能高,基于數據庫的操作,只是從數據庫中去純白虎部分的數據進行顯示,但可移植性低。

???????假分頁:性能低,查詢全部結果,之后依靠算法分頁,可移植性高。

???????實現原理:

1.???????定義一些列的變量:curruentPagelineSize,計算出pageSizeallRecorders

2.???????pageSize=allRecords+lineSize-1/lineSize

3.???????之后的數據查詢執行lineSizecurrentPage進行數據的查詢

4.???????通過表單不斷的修改currentPagelineSize就可以實現分頁顯示

23.Servlet聲明周期。

?????? 0.加載

?????? 1.初始化。正常一次,對應init()方法,有兩個inti()方法,其中一個是ServletConfig對象,此方法存在則無參不調用,正常情況下在第一次使用Servlet的時候才進行初始化操作。當然,也可以通過在容器啟動的時候自動進行初始化:<load-on-startup>

?????? 2.服務。服務多次。所有的服務都由services方法分配,主要由doGetdoPost

?????? 3.銷毀。正常一次,調用destroy方法。如果一個servlet長時間不使用,也會自動銷毀,而當再次使用時也會重新初始化。

?????? 4.卸載。加載和卸載有容器處理。

24.Servlet中的forwardredirect的區別

?????? ForwardRequestDispatcher接口定義的,而redirectresponse定義的。一個是服務器端跳轉,一個是客戶端跳轉。

25.MVC各部分的技術,如何實現。

?????? MVC:MODELVIEWCONTROLLER

?????? |-Mode:JavaBean:業務處理、數據處理

?????? |-View:最好不存在Scriptlet,可使用標簽消除

|-Controller:控制,接受View傳遞的內容和調用JavaBean,并根據JavaBean的處理結果進行跳轉。

實現原理:所有的JSP將內容提交給ServletServlet接受這些內容并調用相應的JavaBean進行業務及數據的處理,JavaBean完成業務的操作。之后Servlet將其提交給JSP顯示。

26.實現國際化的思路。

?????? Local、屬性文件、ResourceBundle

???????國際化程序的實現,是根據本機操作系統的語言類型,根據不同的屬性文件,所有的程序代碼基本一樣,但是文字顯示不一樣,所以將內容作為屬性文件出現之后,可以值顯示屬性文件中的字。

27.描述JSPServlet的區別、共同點、各自應用的范圍。

?????? JSP:先有Servlet,再有JSPServlet是在Java中嵌入HTMLJSP是在HTML中嵌入Java代碼。

JSP可以完成的,Servlet都可以完成,但是對于過濾器、監聽器只能由Servlet完成。

應用范圍:JSP用于顯示,Servlet用于控制。

28.簡述web.xml的作用

???????稱為部署描述符,在整個Java中是容器都會存在部署描述符,此部署描述符可以控制整個web中各個組件的運行狀態。


北風網筆試面試精講

1.????找奇數:public static Boolean isOdd(int i){return i%2==1;}

忽略了對負數進行考慮。比如-1%2就是false,但是-1是奇數。應該為return i%2!=0;

2.????浮點數想加減:System.out.pirntln(2.0-1.1);輸出結果為0.9999999999

Java默認為double,因此輸出的小數位數長。可改為System.out.printf(“%.2f”,2.0-1.1);輸出為0.9.

3.????長整除:final long MICRO = 24*60*60*1000*1000;final MILL = 24*60*60*1000;System.out.println(MICRO/MILL);結果不為1000

應該為:final long MICRO = 24L*60*60*1000*1000;final MILL = 24L*60*60*1000;因為之前都是int型,最終MICROMILL都是int型,計算式溢出。可以通過在其中一個數加上L提升整體的類型為long型。

4.????交換變量:int x =1948;int y = 2001; x^=y^=x^y=y;

C/C++中可以這樣,但是Java中應該改為:y=(x^=(y^=x))^y

?????? 5.??? System.out.proint(‘H’+’a’);

??????????????輸出結果為169。因為單引號表示字符char,相加的會自動提升為int型。

6.????字符數組:char[] numbers = {’1’,’2’};System.out.println(number);輸出為12.而如下語句System.out.println(“number”+number);輸出為number@2342.

???????因為跟字符串運算時默認調用toStirng方法,數組的toString默認為ObjecttoString,打印出來的是hashCode

7.?????????轉義字符:System.out.println(“a\u0022.length()+\u0022b”.length());

輸出結果為2。因為\u0022表示的是雙引號的轉義字符。

8.?????????打印輸出類名:MyClass.class.getName().replaceAll(“.”,”/”+”.class”);

還是需要注意轉義字符的使用。“.”應該改為“\\.”。

?????? 9.??? StringBuffer的使用;

StringBuffer構造時有StringBuffer(int capacity),因此使用StringBuffer sb = new StringBuffer(‘p’);需要格外注意,?‘P’表示的是int類型的數!!!可改為“P”

?????? 10.?? Math.rand(-11.5)=-11.四舍五入往前如!

?????? 11.?? I/Ofinally中其實也不能寫close關閉語句,因為close關閉語句也會拋出異常。


總結

以上是生活随笔為你收集整理的Java、Java Web面试题(来源于MLDN、北方网)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。