欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Java面試題個(gè)人總結(jié) + 答案

      時(shí)間:2019-05-15 14:07:22下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《Java面試題個(gè)人總結(jié) + 答案》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《Java面試題個(gè)人總結(jié) + 答案》。

      第一篇:Java面試題個(gè)人總結(jié) + 答案

      本人最近參加了大大小小很多公司的面試,在這里我把自己面試遇到的問(wèn)題給大家說(shuō)一下

      JAVA基礎(chǔ)篇

      1、在java類加載器中,系統(tǒng)類加載器和用戶自定義加載器那個(gè)先加載?(遇到這個(gè)問(wèn)題時(shí)感覺(jué)很意外,沒(méi)有想到會(huì)問(wèn)這樣的問(wèn)題)

      先加載系統(tǒng)類加載器

      Java類加載器加載類順序依次為:

      JVM類加載器:這個(gè)模式會(huì)加載JAVA_HOME/lib下的jar包

      擴(kuò)展類加載器:會(huì)加載JAVA_HOME/lib/ext下的jar包

      系統(tǒng)類加載器:這個(gè)會(huì)去加載指定了classpath參數(shù)指定的jar文件

      用戶自定義類加載器:sun提供的ClassLoader是可以被繼承的,允許用戶自己實(shí)現(xiàn)類加載器

      2、堆和棧分別存放什么?

      棧:基本數(shù)據(jù)類型和對(duì)象的引用

      堆:對(duì)象和數(shù)組

      3、String、StringBuffer、StringBuilder的區(qū)別

      (1)String是不可變對(duì)象,也就是說(shuō)每次修改String都是新建了一個(gè)對(duì)象并賦值(2)StringBuffer是字符緩沖區(qū),修改它不會(huì)新建對(duì)象,可以使用append()方法和delete()方法修改StringBuffer的值

      (3)StringBuilder可以替代StringBuffer,它是一個(gè)單線程使用的類,和StringBuffer比速度快、效率高,但是是非安全的

      (4)三者都是被final修飾的(這一點(diǎn)面試官的問(wèn)我的時(shí)候一直在說(shuō),你確定嗎?搞得我有點(diǎn)虛)

      4、Java的異常和錯(cuò)誤有什么區(qū)別?

      (1)Error Error是JVM的錯(cuò)誤,這種錯(cuò)誤會(huì)嚴(yán)重影響程序的運(yùn)行,設(shè)計(jì)者不會(huì)設(shè)計(jì)程序代碼去捕捉這種錯(cuò)誤,因?yàn)榧词共蹲降揭矡o(wú)法給予適當(dāng)?shù)奶幚恚热鐑?nèi)存溢出。(2)Exception Exception包含了一般性的異常,這些異常同在在捕捉到之后便可做妥善的處理,以確保程序繼續(xù)運(yùn)行。Exception有很多種分類,從Exception產(chǎn)生的時(shí)機(jī)上我們可以把Exception分為

      ①運(yùn)行時(shí)異常

      運(yùn)行時(shí)異常是指程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài) ②非運(yùn)行時(shí)異常

      非運(yùn)行時(shí)異常是指方法聲明時(shí)throws的異常

      5、&和&&的區(qū)別

      &是位運(yùn)算符,表示按位與運(yùn)算。&&是邏輯運(yùn)算符,表示邏輯與。在條件判斷的時(shí)候&必須逐一檢查各個(gè)條件,&&具有短路功能,只要一個(gè)條件為false則不會(huì)進(jìn)行后續(xù)的判斷。

      6、abstract class和interface的區(qū)別

      (1)abstract class是抽象類,聲明方法的存在而不去實(shí)現(xiàn)它的類叫做抽象類,它用于創(chuàng)建一個(gè)體現(xiàn)某些基本行為的類。抽象類中不能有構(gòu)造方法、不能有靜態(tài)方法,抽象類不能被實(shí)例化。抽象類中可以有變量、可以有普通方法、可以有抽象方法,在繼承抽象方法后,必須實(shí)現(xiàn)它的所有抽象方法。

      (2)interface是接口,接口中的變量必須是靜態(tài)常量(static final),接口中的方法必須都是抽象方法(abstract),不過(guò)由于接口中所有變量、方法修飾符都一致,因可以不寫(xiě)。接口的實(shí)現(xiàn)必須實(shí)現(xiàn)接口中所有的方法。

      7、final、finally、finalize的區(qū)別

      (1)final是用來(lái)描述變量、方法、類的關(guān)鍵字,表示變量值不可變、方法不可被重寫(xiě)、類不可被繼承

      (2)finally是異常處理的關(guān)鍵字,表示finally塊里面的代碼一定會(huì)被運(yùn)行到(3)finalize是Object類中的protected方法,垃圾回收器執(zhí)行的時(shí)候會(huì)調(diào)用被回收的類的此方法。

      8、接口是否可以繼承接口?抽象類是否可以實(shí)現(xiàn)接口?抽象類是否可以實(shí)現(xiàn)實(shí)體類?

      (1)接口可以繼承接口

      (2)抽象類里可以有普通方法,因此抽象類可以實(shí)現(xiàn)接口,只需要實(shí)現(xiàn)接口內(nèi)所有方法就可以了

      (3)抽象類里可以有普通方法,變量也不需要是常量,因此抽象類可以實(shí)現(xiàn)實(shí)體類

      9、一個(gè)”.java”源文件中是否可以包含多個(gè)類(非內(nèi)部類)?有什么限制?

      可以。必須只有一個(gè)類名與文件名相同且該類以public修飾

      10、java是怎么通過(guò)包名.類名來(lái)獲得該類的實(shí)例的?

      通過(guò)Class.forName()方法

      11、介紹一下集合?

      ①Collection:是最基本的集合接口,一個(gè)collection代表一組Object,即collection的元素。

      ②List:是collection的擴(kuò)展,作用是收集對(duì)象,并以索引方式保留收集對(duì)象的順序。其元素有放入順序,元素可重復(fù)。

      1)ArrayList:利用類似于數(shù)組的形式來(lái)存儲(chǔ)數(shù)據(jù),它的隨機(jī)訪問(wèn)速度極快。

      2)LinkedList:內(nèi)部實(shí)現(xiàn)是鏈表,它適合于在鏈表中間需要頻繁的插入和刪除操作。

      3)Vector:與ArrayList相似,但是兩者不同,Vector主要用在事先不知道數(shù)組的大小,或者只是需要一個(gè)可以改變大小的數(shù)組的情況。

      4)ArrayList與Vector的區(qū)別:

      ArrayList是非線程安全的,效率高

      Vector是基于線程安全的,效率低。

      ③Set:也是collection的擴(kuò)展,在Set中的元素對(duì)象要求不能重復(fù)(注意:元素雖然無(wú)放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實(shí)是固定的)。常用實(shí)現(xiàn)類有HashSet和TreeSet。

      1)HashSet:其核心是HashMap,HashSet中存放的值為HashMap中的key,這也就是HashSet不允許重復(fù)的原因。

      2)TreeSet:底層由平衡二叉樹(shù)實(shí)現(xiàn),它會(huì)將投入其中的元素自動(dòng)排序,這就要求投入其中的元素是可排序的,也就是說(shuō),存放的必須是同一種數(shù)據(jù)類型。其實(shí)現(xiàn)自動(dòng)排序的實(shí)質(zhì)是compareable,即

      public int compareTo(Object obj){ if(equals(obj)){

      return 0;}else{ Return 1;} }

      這個(gè)方法稱為比較器,可以比較兩個(gè)對(duì)象,如果對(duì)象都一致相等,則返回0 ④Map:沒(méi)有繼承collection接口,提供key到value的映射,也就是說(shuō),它是一種把鍵對(duì)象和值對(duì)象進(jìn)行關(guān)聯(lián)的容器。

      1)HashMap:key不允許重復(fù),如果后面的key重復(fù),則會(huì)覆蓋前面的值,key允許為null,但是只能有一個(gè)。

      2)TreeMap:key如果是一個(gè)對(duì)象的話,這個(gè)對(duì)象所在的類一定要實(shí)現(xiàn)compareable接口,并且重寫(xiě)compareTo方法。3)HashMap與HashTable比較:

      HashMap:非線程安全,高效率,支持null HashTable:線程安全,低效率,不支持null

      12、list、set和map的遍歷方法比較:

      List:可以用for循環(huán)、for each循環(huán)和Iterator迭代。

      Set:可以用for each循環(huán)和Iterator迭代。

      Map:HashMap只能用Iterator迭代。

      13、寫(xiě)一個(gè)單例設(shè)計(jì)模式: Public class Apple{ Private static Apple apple;Private Apple(){ } Public static Apple getApple(){ If(null == apple){ apple = new Apple();return apple;}else{ return apple;} } }

      14、說(shuō)說(shuō)static關(guān)鍵字:

      Static表示“全局”或“靜態(tài)”的意思,可以用來(lái)修飾成員變量和成員方法,也可以形成靜態(tài)代碼塊,還可以用來(lái)修飾類,但只能修飾內(nèi)部類。

      ①static變量:被static修飾的變量叫靜態(tài)變量或者類變量;沒(méi)有被static修飾的變量叫實(shí)例變量。二者的區(qū)別是:

      靜態(tài)變量:在內(nèi)存中只有一個(gè)拷貝(節(jié)省內(nèi)存),jvm只會(huì)為靜態(tài)分配一次內(nèi)存,而且在加載類的過(guò)程中就完成靜態(tài)變量的內(nèi)存分配??捎妙惷苯釉L問(wèn)(方便),也可以用對(duì)象來(lái)訪問(wèn)(不推薦)。靜態(tài)變量一般用于對(duì)象之間需要共享值時(shí)。

      實(shí)例變量:每創(chuàng)建一個(gè)實(shí)例,就會(huì)為實(shí)例分配一次內(nèi)存,實(shí)例變量在內(nèi)存中可以有多個(gè)拷貝,互不影響(靈活)。

      ②靜態(tài)方法:它可以直接通過(guò)“類名.靜態(tài)方法”來(lái)訪問(wèn),任何的實(shí)例亦可以調(diào)用。靜態(tài)方法中不能用this和super關(guān)鍵字。不能直接訪問(wèn)所屬類的實(shí)例變量和實(shí)例方法,只能訪問(wèn)所屬類的靜態(tài)變量和成員方法。

      ③static代碼塊:static代碼塊也叫靜態(tài)代碼塊,是在類中獨(dú)立于類成員的static語(yǔ)句塊,可以有多個(gè),位置也可以隨便放,它不在任何的方法體內(nèi),jvm在加載類時(shí)會(huì)執(zhí)行這些靜態(tài)代碼塊,如果有多個(gè),則會(huì)按照他們?cè)陬愔谐霈F(xiàn)的先后順序一次執(zhí)行它們,而且每個(gè)代碼塊只會(huì)執(zhí)行一次。

      15、Servlet的生命周期:

      ①加載和實(shí)例化:在Servlet容器檢測(cè)到需要這個(gè)Servlet來(lái)響應(yīng)第一個(gè)請(qǐng)求時(shí),創(chuàng)建Servlet實(shí)例。

      ②初始化:在Servlet實(shí)例化后,容器將調(diào)用Servlet的init()方法初始化這個(gè)對(duì)象。

      ③請(qǐng)求處理:Servlet容器將調(diào)用Servlet的service()方法對(duì)請(qǐng)求進(jìn)行處理。

      ④服務(wù)終止:當(dāng)容器檢測(cè)到一個(gè)Servlet的實(shí)例應(yīng)該從服務(wù)中被移除的時(shí)候,容器就會(huì)調(diào)用實(shí)例的destroy()方法

      16、jsp九大內(nèi)置對(duì)象范圍比較:

      排序?yàn)椋篈pplication > Session > Request > Page = Response = out = PageContext = config = exception。

      Application:服務(wù)器啟動(dòng)到停止這段時(shí)間。

      Session:Http會(huì)話開(kāi)始到結(jié)束這段時(shí)間(瀏覽器打開(kāi)到關(guān)閉)

      Request:Http請(qǐng)求開(kāi)始到結(jié)束這段時(shí)間,即一個(gè)jsp頁(yè)面發(fā)出請(qǐng)求到另一個(gè)jsp頁(yè)面之間。

      Page:頁(yè)面執(zhí)行,當(dāng)前頁(yè)面從打開(kāi)到關(guān)閉這段時(shí)間,它只能在同一個(gè)頁(yè)面中有效

      Response:頁(yè)面執(zhí)行,包含了客戶請(qǐng)求的有關(guān)信息,但jsp中很少用到它。

      Out:頁(yè)面執(zhí)行,向客戶端輸入內(nèi)容時(shí)常用的對(duì)象

      PageContext:頁(yè)面執(zhí)行,取得任何范圍的參數(shù),通過(guò)它可以獲得out、Requset、Response、Session、application等對(duì)象。

      Config:頁(yè)面執(zhí)行,取得服務(wù)器的配置信息。

      Exception:僅在錯(cuò)誤處理頁(yè)面

      17、jsp和servlet的區(qū)別與聯(lián)系:

      ①JSP第一次運(yùn)行的時(shí)候會(huì)編譯成Servlet,駐留在內(nèi)存中以供調(diào)用

      ②JSP是web開(kāi)發(fā)技術(shù),Servlet是服務(wù)器端運(yùn)用的小程序 ③JSP更多的是進(jìn)行頁(yè)面顯示,Servlet更多的是處理業(yè)務(wù),即JSP是頁(yè)面,Servlet是實(shí)現(xiàn)JSP方法

      ④開(kāi)發(fā)界面是JSP時(shí),可以直接編寫(xiě):

      [數(shù)據(jù)]
      ;而Servlet中則需要這樣寫(xiě):

      out.println(“

      [數(shù)據(jù)]
      ”);

      18、final關(guān)鍵字的作用

      (1)final修飾的基本數(shù)據(jù)類型的值不可被改變,final修飾的引用類型的引用不可變而引用的值還是可以變的

      (2)final修飾的方法不可被重寫(xiě)(3)final修飾的類不可被繼承

      (4)final修飾的基本數(shù)據(jù)類型的形參在方法體內(nèi)不可以被重新賦值,final修飾的引用類型的形參不可以被賦予一個(gè)新的引用

      數(shù)據(jù)庫(kù)方面

      1、問(wèn)你怎么同時(shí)更新一個(gè)表中的兩個(gè)字段?(假設(shè)表名為A,要更新的字段分別為name、age)

      update A set name = ‘ 姚明’ , age = 35 where id = 10;

      2、給student添加一個(gè)來(lái)自classes的外鍵:(這個(gè)很容易被我們自己忽視)

      alter table student add constraint fk_stu_cls foreign key(cid)references classes(cid);

      3、數(shù)據(jù)庫(kù)三范式:屬性唯

      一、記錄唯

      一、表唯一

      4、查詢結(jié)果按tid排序(降序):select * from test order by tid desc;(默認(rèn)是按升序的)

      5、oracle的左外連接

      Select * from dept d left outer join emp e on d.deptno = e.deptno

      order by d.deptno,e.ename;

      SSH框架

      1、hibernate和JDBC相比有什么優(yōu)勢(shì)?

      1.對(duì)JDBC訪問(wèn)數(shù)據(jù)庫(kù)的代碼做了封裝,大大簡(jiǎn)化了數(shù)據(jù)訪問(wèn)層繁瑣的重復(fù)性代碼。2.Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡(jiǎn)化DAO層的編碼工作

      3.hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。

      4.hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。

      2、為什么要用struts?

      JSP、Servlet、JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,所以在此之上,我們需要一個(gè)規(guī)則、一個(gè)把這些技術(shù)組織起來(lái)的規(guī)則,這就是框架,Struts便應(yīng)運(yùn)而生。

      3、為什么要用spring?

      AOP 讓開(kāi)發(fā)人員可以創(chuàng)建非行為性的關(guān)注點(diǎn),稱為橫切關(guān)注點(diǎn),并將它們插入到應(yīng)用程序代碼中。使用 AOP 后,公共服務(wù)(比如日志、持久性、事務(wù)等)就可以分解成方面并應(yīng)用到域?qū)ο笊希瑫r(shí)不會(huì)增加域?qū)ο蟮膶?duì)象模型的復(fù)雜性。

      IOC 允許創(chuàng)建一個(gè)可以構(gòu)造對(duì)象的應(yīng)用環(huán)境,然后向這些對(duì)象傳遞它們的協(xié)作對(duì)象。正如單詞倒置所表明的,IOC 就像反過(guò)來(lái)的 JNDI。沒(méi)有使用一堆抽象工廠、服務(wù)定位器、單元素(singleton)和直接構(gòu)造(straight construction),每一個(gè)對(duì)象都是用其協(xié)作對(duì)象構(gòu)造的。因此是由容器管理協(xié)作對(duì)象(collaborator)。

      Spring即使一個(gè)AOP框架,也是一IOC容器。Spring 最好的地方是它有助于您替換對(duì)象。有了 Spring,只要用 JavaBean 屬性和配置文件加入依賴性(協(xié)作對(duì)象)。然后可以很容易地在需要時(shí)替換具有類似接口的協(xié)作對(duì)象。

      4、什么是MVC模式?有什么作用?

      MVC全名Model View Controller,即模型-視圖-控制器,是一種非常經(jīng)典的軟件架構(gòu)模 式。從設(shè)計(jì)角度看,它將多個(gè)設(shè)計(jì)模式在一種解決方案中結(jié)合起來(lái),用來(lái)解決許多設(shè)計(jì)問(wèn)題。MVC模式把用戶界面交互分拆到不同的三個(gè)角色中,即:

      (1)模型:持有所有的數(shù)據(jù)、狀態(tài)和程序邏輯,獨(dú)立于視圖和控制器。

      (2)視圖:用來(lái)呈現(xiàn)模型。視圖通常直接從模型中取得它要顯示的狀態(tài)和數(shù)據(jù)。對(duì)于相同 的信息可以有多個(gè)不同的顯示形式或視圖。(3)控制器:位于視圖和模型中間,負(fù)責(zé)接收用戶的輸入,將輸入進(jìn)行解析并反饋給模型,通常有一個(gè)模型具有一個(gè)控制器。

      5、hibernate的三種狀態(tài):

      瞬時(shí)狀態(tài)

      持久狀態(tài)

      游離狀態(tài)

      6、C/S和B/S的區(qū)別:

      優(yōu)點(diǎn):

      C/S:占用網(wǎng)速小,對(duì)于一些網(wǎng)速比較慢的電腦有明顯的優(yōu)勢(shì)。

      B/S:不需要安裝客戶端,只需要瀏覽器就能打開(kāi)。缺點(diǎn):

      C/S:需要安裝客戶端,有時(shí)候需要更新。

      B/S:對(duì)網(wǎng)速的需求大,對(duì)于一些網(wǎng)速慢的電腦不適合。

      7、struts2 的核心是什么?它與struts1有什么關(guān)系?

      struts2的核心是WebWork,與struts1沒(méi)關(guān)系

      8、列舉五個(gè)struts2中的攔截器: ①alias:實(shí)現(xiàn)在不同請(qǐng)求中相似參數(shù)別名的轉(zhuǎn)換。②autowiring:自動(dòng)裝配的攔截器,主要用于當(dāng)struts2和spring整合時(shí),struts2可以使用自動(dòng)裝配的方式來(lái)訪問(wèn)spring容器中的bean。

      ③createSession:該攔截器負(fù)責(zé)創(chuàng)建一個(gè)httpSession對(duì)象,主要用于那些需要有httpSession對(duì)象才能正常工作的攔截器。

      ④debugging:當(dāng)使用struts2的開(kāi)發(fā)模式時(shí),這個(gè)攔截器會(huì)提供更多的調(diào)試信息。

      ⑤exception:這個(gè)攔截器負(fù)責(zé)處理異常,它將異常映射為結(jié)果。

      ⑥fileUpload:這個(gè)攔截器主要用于文件上傳,它負(fù)責(zé)解析表單文件域中的內(nèi)容。

      ⑦i18n:支持國(guó)際化的攔截器,它負(fù)責(zé)把所選的語(yǔ)言、區(qū)域放入用戶session中。

      ⑧params:這是一個(gè)最基本的攔截器,它負(fù)責(zé)解析HTTP請(qǐng)求中的參數(shù),并將參數(shù)值設(shè)置成對(duì)應(yīng)的Action屬性值。⑨t(yī)oken:防止重復(fù)提交,它檢查傳到Action中的token,從而防止多次提交。⑩validation:通過(guò)執(zhí)行XXXAction-validation.xml中定義的校驗(yàn)器,從而完成數(shù)據(jù)校驗(yàn)。

      9、Spring注入方法:

      ①設(shè)值注入:通過(guò)setter訪問(wèn)容器實(shí)現(xiàn)

      ②構(gòu)造注入:通過(guò)構(gòu)造函數(shù)實(shí)現(xiàn)

      ③P命名空間注入

      10、spring實(shí)現(xiàn)注解的配置:

      其中base-package是指需要掃描的基類包,多個(gè)包之間用逗號(hào)隔開(kāi),默認(rèn)掃描所有類路徑

      第二篇:Java面試題總結(jié)

      二、Get和Post的區(qū)別

      1.get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù),2.get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。

      3.get安全性非常低,post安全性較高。但是執(zhí)行效率卻比Post方法好。4.在進(jìn)行文件上傳時(shí)只能使用post而不能是get。

      四、StringBuffer StringBuilder String 區(qū)別

      String 字符串常量 不可變 使用字符串拼接時(shí)是不同的2個(gè)空間 StringBuffer 字符串變量 可變 線程安全 字符串拼接直接在字符串后追加 StringBuilder 字符串變量 可變 非線程安全 字符串拼接直接在字符串后追加

      1.StringBuilder執(zhí)行效率高于StringBuffer高于String.2.String是一個(gè)常量,是不可變的,所以對(duì)于每一次+=賦值都會(huì)創(chuàng)建一個(gè)新的對(duì)象,StringBuffer和StringBuilder都是可變的,當(dāng)進(jìn)行字符串拼接時(shí)采用append方

      法,在原來(lái)的基礎(chǔ)上進(jìn)行追加,所以性能比String要高,又因?yàn)镾tringBuffer 是

      線程安全的而StringBuilder是線程非安全的,所以StringBuilder的效率高于

      StringBuffer.3.對(duì)于大數(shù)據(jù)量的字符串的拼接,采用StringBuffer,StringBuilder.七、Forword(請(qǐng)求轉(zhuǎn)發(fā))與Redirect(重定向)區(qū)別:

      十四、List,Set,Collection,Collections 集合特點(diǎn)、框架

      (寫(xiě)在紙上)作業(yè) 總結(jié)錯(cuò)誤

      總結(jié)中級(jí)知識(shí)點(diǎn)圖(用電腦鍵wend文件)

      第三篇:java程序員部分面試題答案

      一、你對(duì)MVC的理解,MVC有什么優(yōu)缺點(diǎn)?結(jié)合Struts,說(shuō)明在一個(gè)Web應(yīng)用如何去使用? 答:

      MVC設(shè)計(jì)模式(應(yīng)用觀察者模式的框架模式)M: Model(Business process layer),模型,操作數(shù)據(jù)的業(yè)務(wù)處理層,并獨(dú)立于表現(xiàn)層(Independent of presentation)。

      V: View(Presentation layer),視圖,通過(guò)客戶端數(shù)據(jù)類型顯示數(shù)據(jù),并回顯模型層的執(zhí)行結(jié)果。C: Controller(Control layer),控制器,也就是視圖層和模型層橋梁,控制數(shù)據(jù)的流向,接受視圖層發(fā)出的事件,并重繪視圖

      MVC框架的一種實(shí)現(xiàn)模型 模型二(Servlet-centric):

      JSP+Servlet+JavaBean,以控制為核心,JSP只負(fù)責(zé)顯示和收集數(shù)據(jù),Sevlet,連接視圖和模型,將視圖層數(shù)據(jù),發(fā)送給模型層,JavaBean,分為業(yè)務(wù)類和數(shù)據(jù)實(shí)體,業(yè)務(wù)類處理業(yè)務(wù)數(shù)據(jù),數(shù)據(jù)實(shí)體,承載數(shù)據(jù),基本上大多數(shù)的項(xiàng)目都是使用這種MVC的實(shí)現(xiàn)模式。

      StrutsMVC框架(Web application frameworks)

      Struts是使用MVC的實(shí)現(xiàn)模式二來(lái)實(shí)現(xiàn)的,也就是以控制器為核心。

      Struts提供了一些組件使用MVC開(kāi)發(fā)應(yīng)用程序:

      Model:Struts沒(méi)有提供model類。這個(gè)商業(yè)邏輯必須由Web應(yīng)用程序的開(kāi)發(fā)者以JavaBean或EJB的形式提供

      View:Struts提供了action form創(chuàng)建form bean, 用于在controller和view間傳輸數(shù)據(jù)。此外,Struts提供了自定義JSP標(biāo)簽庫(kù),輔助開(kāi)發(fā)者用JSP創(chuàng)建交互式的以表單為基礎(chǔ)的應(yīng)用程序,應(yīng)用程序資源文件保留了一些文本常量和錯(cuò)誤消息,可轉(zhuǎn)變?yōu)槠渌Z(yǔ)言,可用于JSP中。

      Controller:Struts提供了一個(gè)核心的控制器ActionServlet,通過(guò)這個(gè)核心的控制器來(lái)調(diào)用其他用戶注冊(cè)了的自定義的控制器Action,自定義Action需要符合Struts的自定義Action規(guī)范,還需要在struts-config.xml的特定配置文件中進(jìn)行配置,接收J(rèn)SP輸入字段形成Action form,然后調(diào)用一個(gè)Action控制器。Action控制器中提供了model的邏輯接口。

      二、什么是WebService?

      答:

      WebService是一個(gè)SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語(yǔ)言,不依賴于平臺(tái),可以實(shí)現(xiàn)不同的語(yǔ)言間的相互調(diào)用,通過(guò)Internet進(jìn)行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互。

      WebService實(shí)現(xiàn)不同語(yǔ)言間的調(diào)用,是依托于一個(gè)標(biāo)準(zhǔn),webservice是需要遵守WSDL(web服務(wù)定義語(yǔ)言)/SOAP(簡(jiǎn)單請(qǐng)求協(xié)議)規(guī)范的。WebService=WSDL+SOAP+UDDI(webservice的注冊(cè))

      Soap是由Soap的part和0個(gè)或多個(gè)附件組成,一般只有part,在part中有Envelope和Body。

      Web Service是通過(guò)提供標(biāo)準(zhǔn)的協(xié)議和接口,可以讓不同的程序集成的一種SOA架構(gòu)。

      Web Service的優(yōu)點(diǎn)

      (1)可以讓異構(gòu)的程序相互訪問(wèn)(跨平臺(tái))

      (2)松耦合

      (3)基于標(biāo)準(zhǔn)協(xié)議(通用語(yǔ)言,允許其他程序訪問(wèn))Web Service的基本原理

      (1)Service Provider采用WSDL描述服務(wù)

      (2)Service Provider 采用UDDI將服務(wù)的描述文件發(fā)布到UDDI服務(wù)器(Register server)

      (3)Service Requestor在UDDI服務(wù)器上查詢并 獲取WSDL文件

      (4)Service requestor將請(qǐng)求綁定到SOAP,并訪問(wèn)相應(yīng)的服務(wù)。

      三、什么是中間件?

      中間件就是程序中可織入的,可重用的,與業(yè)務(wù)邏輯無(wú)關(guān)的各種組件。

      中間件(middleware)是基礎(chǔ)軟件的一大類,屬于可復(fù)用軟件的范疇。顧名思義,中間件處于操作系統(tǒng)軟件與用戶的應(yīng)用軟件的中間。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)之上,應(yīng)用軟件的下層,總的作用是為處于自己上層的應(yīng)用軟件提供運(yùn)行與開(kāi)發(fā)的環(huán)境,幫助用戶靈活、高效地開(kāi)發(fā)和集成復(fù)雜的應(yīng)用軟件。

      在眾多關(guān)于中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源,中間件位于客戶機(jī)服務(wù)器的操作系統(tǒng)之上,管理計(jì)算資源和網(wǎng)絡(luò)通信。

      分類:數(shù)據(jù)訪問(wèn)中間件,遠(yuǎn)程調(diào)用中間件,消息中間件,交易中間件,對(duì)象中間件。舉例:

      1,RMI(Remote Method Invocations, 遠(yuǎn)程調(diào)用)

      2,Load Balancing(負(fù)載均衡,將訪問(wèn)負(fù)荷分散到各個(gè)服務(wù)器中)3,Transparent Fail-over(透明的故障切換)4,Clustering(集群,用多個(gè)小的服務(wù)器代替大型機(jī))

      5,Back-end-Integration(后端集成,用現(xiàn)有的、新開(kāi)發(fā)的系統(tǒng)如何去集成遺留的系統(tǒng))6,Transaction事務(wù)(全局/局部)全局事務(wù)(分布式事務(wù))局部事務(wù)(在同一數(shù)據(jù)庫(kù)聯(lián)接內(nèi)的事務(wù))

      7,Dynamic Redeployment(動(dòng)態(tài)重新部署,在不停止原系統(tǒng)的情況下,部署新的系統(tǒng))8,System Management(系統(tǒng)管理)9,Threading(多線程處理)10,Message-oriented Middleware面向消息的中間件(異步的調(diào)用編程)11,Component Life Cycle(組件的生命周期管理)12,Resource pooling(資源池)13,Security(安全)14,Caching(緩存)

      四、什么是典型的軟件三層結(jié)構(gòu)?軟件設(shè)計(jì)為什么要分層?軟件分層有什么好處? 答:(1)Presentation layer(表示層)

      (1)表示邏輯(生成界面代碼)

      (2)接收請(qǐng)求

      (3)處理業(yè)務(wù)層拋出的異常

      (4)負(fù)責(zé)規(guī)則驗(yàn)證(數(shù)據(jù)格式,數(shù)據(jù)非空等)

      (5)流程控制

      (2)Service layer(服務(wù)層/業(yè)務(wù)層)

      (1)封裝業(yè)務(wù)邏輯處理,并且對(duì)外暴露接口

      (2)負(fù)責(zé)事務(wù),安全等服務(wù)(3)Persistence layer(持久層)

      (1)封裝數(shù)據(jù)訪問(wèn)的邏輯,暴露接口

      (2)提供方便的數(shù)據(jù)訪問(wèn)的方案(查詢語(yǔ)言,API,映射機(jī)制等)Domain layer(域?qū)樱?/p>

      (1)業(yè)務(wù)對(duì)象以及業(yè)務(wù)關(guān)系的表示

      (2)處理簡(jiǎn)單的業(yè)務(wù)邏輯

      (3)域?qū)拥膶?duì)象可以穿越表示層,業(yè)務(wù)層,持久層

      軟件分層結(jié)構(gòu)使得代碼維護(hù)非常方便,設(shè)計(jì)明確,各層獨(dú)立,專注自己擅長(zhǎng)的領(lǐng)域。

      五、什么是OOP?OOP相對(duì)于面向過(guò)程編程有哪些優(yōu)點(diǎn)?

      OOP,Object-Oriented Programming,面向?qū)ο缶幊滩煌诿嫦蜻^(guò)程編程:

      (1)OOP關(guān)注對(duì)象和角色,也就是事物的本質(zhì)

      1)OOP把客觀世界中的對(duì)象抽象成對(duì)應(yīng)的類;

      2)通過(guò)類構(gòu)造實(shí)例;

      3)通過(guò)依賴、繼承、實(shí)現(xiàn)等形式建立對(duì)象間的通信關(guān)系

      (2)OOP易于擴(kuò)展,增加或改變業(yè)務(wù)的功能,無(wú)需大幅改動(dòng)改變?cè)创a

      (3)OOP易于建模,OOP就是軟件架構(gòu)師在計(jì)算機(jī)高級(jí)語(yǔ)言中對(duì)客觀世界的抽象和再現(xiàn),人們可以很好地理解和建立起計(jì)算機(jī)中的抽象模型

      六、談?wù)凮verload和Override的區(qū)別。

      答:

      方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫(xiě)Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說(shuō)該方法被重寫(xiě)(Overriding)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)它而言,父類中的定義如同被“屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。

      七、談?wù)凥ashMap和Hashtable的區(qū)別。

      答:

      HashMap是輕量級(jí)的(線程不安全的,效率高的)集合,Hashtable是重量級(jí)的(線程安全的,效率低的)集合。

      都屬于Map接口的類,實(shí)現(xiàn)了將惟一鍵映射到特定的值上。

      HashMap 類沒(méi)有分類或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。

      Hashtable 類似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?/p>

      八、請(qǐng)問(wèn)abstract class和interface有什么區(qū)別? 答:

      1)接口沒(méi)有任何的實(shí)現(xiàn),而抽象類它可以有部分的實(shí)現(xiàn)也可以沒(méi)有;

      2)如果需要復(fù)用或者共享部分代碼,應(yīng)該用抽象類而不是接口;

      3)繼承無(wú)法解決類型的轉(zhuǎn)換問(wèn)題,接口就是為了解決這一問(wèn)題而產(chǎn)生的(Java的單繼

      承是接口產(chǎn)生的根本原因)接口是一種抽象的 DML

      [Data Manipulation Language, 數(shù)據(jù)操作語(yǔ)言] WYSIWYG

      所見(jiàn)即所得 [What You See is What You Get] CMP CMT B2B C2C B2C IDE DOM Client/Server CMM ORM MIS MVC

      MVC是Model-View-Controller的簡(jiǎn)寫(xiě)?!癕odel” 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò)JavaBean,EJB組件實(shí)現(xiàn)),“View” 是應(yīng)用的表示面(由JSP頁(yè)面產(chǎn)生),“Controller” 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè)Servlet),通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程 和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。OLE CORBA

      CORBA 標(biāo)準(zhǔn)是公共對(duì)象請(qǐng)求代理結(jié)構(gòu)(Common Object Request Broker Architecture),由對(duì)象管理組織(Object Management Group,縮寫(xiě)為 OMG)標(biāo)準(zhǔn)化。它的組成是接口定義語(yǔ)言(IDL), 語(yǔ)言綁定(binding:也譯為聯(lián)編)和允許應(yīng)用程序間互操作的協(xié)議。其目的為: 用不同的程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)

      在不同的進(jìn)程中運(yùn)行

      為不同的操作系統(tǒng)開(kāi)發(fā)。UML

      UML,標(biāo)準(zhǔn)建模語(yǔ)言,包含用例圖,靜態(tài)圖(包括類圖、對(duì)象圖和包圖),行為圖,交互圖(順序圖,合作圖),實(shí)現(xiàn)圖等。XML CMMI JRE J2EE J2EE是Sun公司提出的多層(multi-diered),分布式(distributed),基于組件(component-base)的企業(yè)級(jí)應(yīng)用

      模型(enterpriese application model).在這樣的一個(gè)應(yīng)用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在不同計(jì)算機(jī)上,并且處于相應(yīng)的層次(tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業(yè)信息系統(tǒng)(EIS)層。JDK AOP OO Container W3C JMS Domain POJO JVM JNDI JTA SOAP

      [Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議] WSDL JDO

      JDO是Java對(duì)象持久化的新的規(guī)范,為Java Data Object的簡(jiǎn)稱,也是一個(gè)用于存取某種數(shù)據(jù)倉(cāng)庫(kù)中的對(duì)

      象的標(biāo)準(zhǔn)化API。JDO提供了透明的對(duì)象存儲(chǔ),因此對(duì)開(kāi)發(fā)人員來(lái)說(shuō),存儲(chǔ)數(shù)據(jù)對(duì)象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到JDO產(chǎn)品提供商身上,使開(kāi)發(fā)人員解脫出來(lái),從而集中時(shí)間和精力在業(yè)務(wù)邏輯上。另外,JDO很靈活,因?yàn)樗梢栽谌魏螖?shù)據(jù)底層上運(yùn)行。JDBC只是面向關(guān)系數(shù)據(jù)庫(kù)(RDBMS)JDO更通用,提供到任何數(shù)據(jù)底層的存儲(chǔ)功能,比如關(guān)系數(shù)據(jù)庫(kù)、文件、XML以及對(duì)象數(shù)據(jù)庫(kù)(ODBMS)等等,使得應(yīng)用可移植性更強(qiáng)。TDD DAO IoC

      [Inversion of Control, 控制反轉(zhuǎn)] RMI DNS

      [Internet Domain Name System, 因特網(wǎng)域名系統(tǒng)] URL URI

      二十四、數(shù)據(jù)庫(kù)連接池的工作機(jī)制 二

      十五、互聯(lián)網(wǎng)提供哪些服務(wù)?

      十六、請(qǐng)寫(xiě)出JSP的幾個(gè)隱含內(nèi)置對(duì)象 答:JSP中隱含內(nèi)置對(duì)象

      名稱

      類型

      注釋和范圍

      request

      javax.servlet.http.HttpServletRequest

      request

      response

      javax.servlet.http.HttpServletResponse

      response

      page

      javax.lang.Object

      page

      Exception

      java.lang.Throwable

      page

      pageContext javax.servlet.jsp.PageContext

      page

      session

      javax.servlet.http.HttpSession

      session

      application javax.servlet.ServletContext

      ServletContext

      out

      javax.servlet.jsp.JspWriter

      OutputStream

      config

      javax.servlet.ServletConfig

      ServletConfig

      JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對(duì)應(yīng)):

      request

      用戶端請(qǐng)求,此請(qǐng)求會(huì)包含來(lái)自GET/POST請(qǐng)求的參數(shù)

      response

      網(wǎng)頁(yè)傳回用戶端的回應(yīng)

      page JSP

      網(wǎng)頁(yè)本身

      exception

      針對(duì)錯(cuò)誤網(wǎng)頁(yè),未捕捉的例外 pageContext

      網(wǎng)頁(yè)的屬性是在這里管理

      session

      與請(qǐng)求有關(guān)的會(huì)話期

      application servlet 正在執(zhí)行的內(nèi)容

      out

      用來(lái)傳送回應(yīng)的輸出

      config

      Servlet的構(gòu)架部件

      二十七、請(qǐng)你談?wù)凷SH整合 答:SSH:

      Struts(表示層)+Spring(業(yè)務(wù)層)+Hibernate(持久層)

      Struts:

      Struts是一個(gè)表示層框架,主要作用是界面展示,接收請(qǐng)求,分發(fā)請(qǐng)求。

      在MVC框架中,Struts屬于VC層次,負(fù)責(zé)界面表現(xiàn),負(fù)責(zé)MVC關(guān)系的分發(fā)。(View:沿用JSP,HTTP,F(xiàn)orm,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)

      Hibernate:

      Hibernate是一個(gè)持久層框架,它只負(fù)責(zé)與關(guān)系數(shù)據(jù)庫(kù)的操作。

      Spring:

      Spring是一個(gè)業(yè)務(wù)層框架,是一個(gè)整合的框架,能夠很好地黏合表示層與持久層。

      二十八、應(yīng)用服務(wù)器與Web Server的區(qū)別

      二十九、Java Servlet API中forward()與redirect()的區(qū)別 答:

      前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時(shí),盡量使用forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用sendRedirect()方法。

      十、寫(xiě)一個(gè)簡(jiǎn)單的C/S結(jié)構(gòu)程序,Java 的通信編程,編程題(或問(wèn)答),用JAVA SOCKET編程,讀服務(wù)器幾個(gè)字符,再寫(xiě)入本地顯示?

      答:Server端程序: package test;import java.net.*;import java.io.*;public class Server { private ServerSocket ss;private Socket socket;private BufferedReader in;private PrintWriter out;public Server(){ try { ss=new ServerSocket(10000);while(true){ socket = ss.accept();String RemoteIP = socket.getInetAddress().getHostAddress();String RemotePort = “:”+socket.getLocalPort();System.out.println(“A client come

      in!IP:”+RemoteIP+RemotePort);in = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = in.readLine();System.out.println(“Cleint send is :” + line);out = new PrintWriter(socket.getOutputStream(),true);out.println(“Your Message Received!”);out.close();in.close();socket.close();} }catch(IOException e){ out.println(“wrong”);} } public static void main(String[] args){ new Server();} };

      Client端程序: package test;import java.io.*;import java.net.*;public class Client { Socket socket;BufferedReader in;PrintWriter out;public Client(){ try { System.out.println(“Try to Connect to 127.0.0.1:10000”);socket = new Socket(“127.0.0.1”,10000);System.out.println(“The Server Connected!”);System.out.println(“Please enter some Character:”);BufferedReader line = new BufferedReader(new InputStreamReader(System.in));out = new PrintWriter(socket.getOutputStream(),true);out.println(line.readLine());in = new BufferedReader(new InputStreamReader(socket.getInputStream()));System.out.println(in.readLine());out.close();in.close();socket.close();}catch(IOException e){ out.println(“Wrong”);} } public static void main(String[] args){ new Client();} };

      第四篇:Java面試題(答案版)

      作者:楊金輝

      1、一個(gè)“.java”源文件中是否可以包括多個(gè)類(不是內(nèi)部類)?有什么限制?

      可以,但是只能有一個(gè)類用public修飾,并且用public修飾的類名與文件名要一致

      2、&和&&的區(qū)別。

      &和&&都可以用作邏輯與;&&還具有短路功能,即如果第一個(gè)表達(dá)式的結(jié)果為false,則不再計(jì)算第二個(gè)表達(dá)式;&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時(shí),&表示按位與操作。

      3、Java有沒(méi)有g(shù)oto? java中的保留字,現(xiàn)在沒(méi)有在java中使用。

      4、在JAVA中,如何跳出當(dāng)前的多重嵌套循環(huán)?

      break+變量控制 與 return

      5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上?

      Switch可以作用在int上,而byte可以隱式轉(zhuǎn)換為int 所以能作用在byte上

      不能作用在long上,也不能作用在String上

      6、short s1 = 1;s1 = s1 + 1;有什么錯(cuò)? short s1 = 1;s1 += 1;有什么錯(cuò)?

      1在java中為int數(shù)據(jù)類型,short+int=int,大類型轉(zhuǎn)為小類型,編譯時(shí),會(huì)報(bào)告需要強(qiáng)制轉(zhuǎn)換類型的錯(cuò)誤。s1+=1不會(huì)報(bào),因?yàn)镴VM會(huì)對(duì)它特殊處理(自動(dòng)強(qiáng)轉(zhuǎn))

      7、char型變量中能不能存貯一個(gè)中文漢字?為什么? 可以,char型變量是用來(lái)存儲(chǔ)unicode(依妮Q特)編碼的,而unicode編碼包含了中文,所以是可以保存的

      8、編程題: 用最有效率的方法算出2乘以8等於幾?

      2<<3,表示將2左移3位;一個(gè)數(shù)左移幾位就表示這個(gè)數(shù)乘以了2的幾次方,左移運(yùn)算,CPU直接支持,所以是最有效率的

      9、請(qǐng)?jiān)O(shè)計(jì)一個(gè)一百億的計(jì)算器

      思路:用兩個(gè)數(shù)組分別保存兩個(gè)操作數(shù),再新建一個(gè)數(shù)組保存結(jié)果。

      10、使用final關(guān)鍵字修飾一個(gè)變量時(shí),是引用不能變,還是引用的對(duì)象不能變?

      引用變量不能變

      11、“==”和equals方法究竟有什么區(qū)別?

      ==和equals方法都可以用來(lái)比較兩個(gè)對(duì)象是否是同一個(gè)對(duì)象。

      ==還可以比較兩個(gè)變量的值是否相等。

      equals是Object類中的方法,可以由子類重寫(xiě)此方法,實(shí)現(xiàn)內(nèi)容相等。

      12、靜態(tài)變量和實(shí)例變量的區(qū)別?

      語(yǔ)法上不同: 靜態(tài)變量前要加static關(guān)鍵字,實(shí)例變量不需要

      程序運(yùn)行時(shí)不同: 實(shí)例變量是屬于某個(gè)對(duì)象的,只有創(chuàng)建了對(duì)象,才會(huì)為這個(gè)對(duì)象的實(shí)例變量分配空間。靜態(tài)變量是屬于類的,當(dāng)程序加載了這個(gè)類的字節(jié)碼文件,就會(huì)為靜態(tài)變量分配空間,并且所有對(duì)象共享這個(gè)變量

      13、是否可以從一個(gè)static方法內(nèi)部發(fā)出對(duì)非static方法的調(diào)用?

      不可以,非static方法需要與對(duì)象關(guān)聯(lián)在一起的,而static方法調(diào)用時(shí)不需要對(duì)象,可以直接調(diào)用,也就是說(shuō)調(diào)用static方法時(shí),可能還沒(méi)有創(chuàng)建任何實(shí)例

      14、Integer與int的區(qū)別

      int是java中的8種基本數(shù)據(jù)類型之一,默認(rèn)值是0,Integer是int的包裝類,默認(rèn)值是null,即Integer可以表示未賦值和賦值為0

      15、(麥死)Math.round(亂的)(11.5)等於多少? Math.round(-11.5)等於多少?

      作者:楊金輝

      12,-11,Math.round()方法的實(shí)現(xiàn)是: Math.floor(n+0.5);

      16、作用域public,private,protected,以及不寫(xiě)時(shí)的區(qū)別

      本類 同包 子類 其他類

      public ?

      ?

      ?

      ? protected ?

      ?

      ?

      ? friendly ?

      ?

      ?

      ? private ?

      ?

      ?

      ?

      17、Overload(喔我樓的)和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?

      Overload是重載,Override是重寫(xiě)。

      Overload是指在一個(gè)類中,方法名相同,參數(shù)列表不同,那么這些方法之間構(gòu)成重載。

      Override是指在父子類之間,子類的方法簽名和父類的方法簽名完全一樣,那么這兩個(gè)方法構(gòu)成重寫(xiě)。

      Overload的方法可以改變返回值。因?yàn)檎{(diào)用方法時(shí),返回值可以接受也可以不接受,所以編譯器無(wú)法根據(jù)返回值來(lái)判斷是否重載。

      18、構(gòu)造器Constructor(看似爪克特)是否可被override?

      Constructor不能被繼承,所以不能override

      19、接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承具體類(concrete class)? 抽象類中是否可以有靜態(tài)的main方法?

      接口可以繼承接口,抽象類可以實(shí)現(xiàn)接口,抽象類可以繼承具體類,抽象類中可以有靜態(tài)的main方法

      20、寫(xiě)clone()方法時(shí),通常都有一行代碼,是什么?

      super.clone();克隆時(shí),首先得將父類的成員克隆完。

      21、面向?qū)ο蟮奶卣饔心男┓矫?/p>

      封裝

      封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。

      繼承

      繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過(guò)程稱為類繼承。新類 繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或 增加新的方法使之更適合特殊的需要。

      抽象

      抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數(shù)據(jù)抽象。

      多態(tài)

      多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。

      作者:楊金輝

      22、java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?

      靠的是父類或接口能夠指向子類或?qū)崿F(xiàn)類。程序運(yùn)行時(shí),JVM會(huì)根據(jù)內(nèi)存中實(shí)際的對(duì)象調(diào)用方法。

      23、abstract(抽象)class和interface有什么區(qū)別?

      1、abstract class 本質(zhì)是類,用abstract修飾類,而interface是接口,將class替換為interface

      2、abstract class可以有構(gòu)造方法,interface不能有

      3、abstract class中可以包含普通變量,interface所有的變量都是final static的4、abstract class中可以包含普通方法,interface中所有的方法都是抽象的。

      5、abstract class中除抽象方法不可以是private修飾符外,其它成員任意;而interface中所有成員的修飾符都為public

      6、abstract class可以繼承一個(gè)類實(shí)現(xiàn)多個(gè)接口,interface只能繼承接口

      24、abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?

      abstract的方法不可以是static,abstract方法必須由子類去實(shí)現(xiàn),而static方法可以由當(dāng)前類調(diào)用。

      abstract的方法不可以是native,abstract方法必須由子類去實(shí)現(xiàn),而native是調(diào)用其它程序語(yǔ)言的代碼,所以不存在由子類去實(shí)現(xiàn)的問(wèn)題,矛盾。

      關(guān)于abstract和synchronized同用的問(wèn)題,我覺(jué)得也不行,因?yàn)樵谶@幾年的開(kāi)發(fā)中,從沒(méi)見(jiàn)過(guò)這種情況,而且我覺(jué)得synchronized應(yīng)該是作用在一個(gè)具體的方法上才有意義。

      25、什么是內(nèi)部類?

      在一個(gè)類的內(nèi)部定義的類叫做內(nèi)部類。

      26、內(nèi)部類可以引用外部類的成員嗎?有沒(méi)有什么限制?

      如果不是靜態(tài)內(nèi)部類,完全可以。

      27、Static Nested Class 和 Inner Class的不同。

      Nested Class一般是C++的說(shuō)法,Inner Class一般是Java的說(shuō)法,指的是同一意思。

      內(nèi)部類分為靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類。

      靜態(tài)內(nèi)部類中可以包含靜態(tài)成員,非靜態(tài)內(nèi)部類中不可以包含靜態(tài)成員。

      靜態(tài)內(nèi)部類中不能引用外部類中的實(shí)例成員。非靜態(tài)內(nèi)部類則沒(méi)有這個(gè)限制。

      28、Anonymous Inner Class(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?

      可以繼承其它類,可以實(shí)現(xiàn)接口

      29、String是最基本的數(shù)據(jù)類型嗎?

      不是,基本數(shù)據(jù)類型是:byte short int long float double char boolean 30、String s = “Hello”;s = s + “ world!”;這兩行代碼執(zhí)行后,原始的String對(duì)象中的內(nèi)容到底變了沒(méi)有?

      沒(méi)有,String類被設(shè)計(jì)為不可變的類。所以它的所有對(duì)象都不可變。

      31、是否可以繼承String類?

      不可以。String被final修飾,被final修飾的類不可被繼承。

      32、String s = new String(“xyz”);創(chuàng)建了幾個(gè)String Object? 二者之間有什么區(qū)別?

      2個(gè)對(duì)象。一個(gè)放在常量區(qū),不管寫(xiě)多少遍,永遠(yuǎn)只有一個(gè)。一個(gè)放在堆內(nèi)存中。每次new String就產(chǎn)生一個(gè)新的。

      33、String 和StringBuffer的區(qū)別

      String和StringBuffer都是操作字符串的類。

      String類被設(shè)計(jì)為不可變,而StringBuffer可變。

      34、如何把一段逗號(hào)分割的字符串轉(zhuǎn)換成一個(gè)數(shù)組?

      作者:楊金輝

      第一種用正則表達(dá)式的方式:String類的split方法

      第二種方式:StringTokenizer,代碼為: new StringTokenizer(“1,2,3,4”,”,”);

      35、數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?

      數(shù)組是length屬性,String有l(wèi)ength()這個(gè)方法

      36、try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?

      會(huì),return前

      38、final, finally, finalize的區(qū)別。

      final用來(lái)修飾類,變量,方法的。修飾類表示類不可被繼承,修飾變量表示變量的引用不可變,修飾方法表示方法不可被重寫(xiě)。

      finally是異常處理結(jié)構(gòu)中的一部分,表示一定會(huì)執(zhí)行。

      finalize是Object類的方法,當(dāng)垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用此對(duì)象的這個(gè)方法。

      39、運(yùn)行時(shí)異常與一般異常有何異同?

      一般異常強(qiáng)制要求捕獲或聲明。

      運(yùn)行時(shí)異??梢圆东@,也可以不捕獲。40、error和exception有什么區(qū)別?

      error表示恢復(fù)不是不可能但是很困難的情況下的一種嚴(yán)重問(wèn)題。例如:內(nèi)存溢出

      exception表示程序的設(shè)計(jì)或?qū)崿F(xiàn)有問(wèn)題。也就是說(shuō)如果程序正常運(yùn)行,不會(huì)發(fā)生的情況。

      41、Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。

      當(dāng)Java程序違反了Java的語(yǔ)義規(guī)則時(shí),JVM就會(huì)將發(fā)生的錯(cuò)誤表示為一個(gè)異常。違反語(yǔ)義規(guī)則包括兩種:一種是Java類庫(kù)內(nèi)置的語(yǔ)義檢查,另一種是程序員自己定義的異常。

      42、給我一個(gè)你最常見(jiàn)到的runtime(茹二樓)exception。

      ArithMaticException NullPointException IndexOfBoundException HibernateException(子類:CacheException,LazyInitializationException,MappingException)NestedRuntimeException(AopConfigException,AopInvocationException)

      43、JAVA語(yǔ)言如何進(jìn)行異常處理,關(guān)鍵字:throws,throw,try,catch,finally分別代表什么意義?在try塊中可以拋出異常嗎?

      throws 用來(lái)表名方法可能拋出異常。throw 用來(lái)明確的拋一個(gè)異常。

      try 用來(lái)監(jiān)控一段可能出現(xiàn)異常的代碼。當(dāng)出現(xiàn)異常后進(jìn)入catch塊,進(jìn)行異常類型匹配

      finally表示無(wú)論是否出現(xiàn)異常都要執(zhí)行的代碼。

      44、java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?用什么關(guān)鍵字修飾同步方法? stop()和suspend()方法為何不推薦使用?

      有兩種實(shí)現(xiàn)方法,分別是繼承Thread(斯 read)類與實(shí)現(xiàn)Runnable(軟的包)接口

      用synchronized(新鬼耐斯特)關(guān)鍵字修飾同步方法

      因?yàn)樗麄兪蔷€程的方法,不安全,當(dāng)已啟動(dòng)后,就想脫韁野馬難以把控

      45、sleep()(斯瑞譜)和 wait()(外特)有什么區(qū)別?

      1、sleep是線程類的方法 wait 是Object類的方法

      2、sleep會(huì)自動(dòng)醒來(lái) wait需要notify喚醒

      3、sleep不會(huì)釋放鎖 wait會(huì)釋放鎖

      46、同步和異步有何異同,在什么情況下分別使用他們?舉例說(shuō)明。

      作者:楊金輝

      48、多線程有幾種實(shí)現(xiàn)方法?同步有幾種實(shí)現(xiàn)方法?

      多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口

      同步的實(shí)現(xiàn)方面有三種:

      1、同步代碼塊

      2、同步方法

      3、Lock

      49、啟動(dòng)一個(gè)線程是用run()還是start()?.Start()(斯達(dá)特)

      50、當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?

      分幾種情況:

      1.其他方法前是否加了synchronized關(guān)鍵字,如果沒(méi)加,則能。

      2.如果這個(gè)方法內(nèi)部調(diào)用了wait,則可以進(jìn)入其他synchronized方法。

      3.如果其他個(gè)方法都加了synchronized關(guān)鍵字,并且內(nèi)部沒(méi)有調(diào)用wait,則不能。

      51、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系

      線程就是進(jìn)程中的一個(gè)執(zhí)行線路。

      新建new Thread();就緒:thread.start();運(yùn)行,阻塞,掛起,結(jié)束。

      創(chuàng)建一個(gè)線程,這時(shí)狀態(tài)為新建,當(dāng)調(diào)用start方法后轉(zhuǎn)為就緒,再由線程調(diào)度器將就緒狀態(tài)轉(zhuǎn)為運(yùn)行狀態(tài),遇到synchronized語(yǔ)句后,可能由運(yùn)行狀態(tài)改為阻塞狀態(tài),當(dāng)獲得synchronized鎖后由阻塞狀態(tài)轉(zhuǎn)為運(yùn)行,這時(shí)調(diào)用wait方法轉(zhuǎn)為掛起狀態(tài)。當(dāng)線程關(guān)聯(lián)的代碼執(zhí)行完成后。線程轉(zhuǎn)為結(jié)束。

      52、簡(jiǎn)述synchronized和java.util.concurrent.locks.Lock的異同 ?

      主要相同點(diǎn):Lock(拉克)能完成synchronized所實(shí)現(xiàn)的所有功能

      主要不同點(diǎn):Lock有比synchronized更精確的線程語(yǔ)義和更好的性能。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

      54、ArrayList和Vector的區(qū)別

      ArrayList和Vector都實(shí)現(xiàn)了List接口。

      ArrayList是線程不安全的,Vector是線程安全的。

      ArrayList的增長(zhǎng)方式為*3/2+1 Vector的增長(zhǎng)方式為*2,Vector還可以設(shè)置增長(zhǎng)量。

      55、HashMap和Hashtable的區(qū)別

      Hashtable和HashMap都實(shí)現(xiàn)了Map接口。

      Hashtable是線程安全的,HashMap是線程不安全的。

      Hashtable不允許鍵值為null,HashMap允許。

      Hashtable自JDK1.0就有了,HashMap到1.2才出來(lái)。

      Map中有2個(gè)方法分別是containsKey(康騰思Key)和containsValue;Hashtable中還有個(gè)contains方法,容易讓人誤解,HashMap沒(méi)有。

      56、List 和 Map 區(qū)別? List是存儲(chǔ)單列數(shù)據(jù)的有序集合,允許重復(fù)。而Map是鍵值對(duì)雙列數(shù)據(jù)的集合。鍵不允許重復(fù),值可以重復(fù)。

      57、List, Set, Map是否繼承自Collection接口?

      Collection(克萊克神)是集合類的頂級(jí)接口,其子接口分別是List和Set List下有ArrayList,LinkedList Set下有HashSet TreeSet Collection和Map沒(méi)有關(guān)系,Map是HashMap的父接口

      58、List、Map、Set三個(gè)接口,存取元素時(shí),各有什么特點(diǎn)?

      作者:楊金輝

      List以特定的次序來(lái)持有元素,允許重復(fù)。

      Set無(wú)法擁有重復(fù)元素,內(nèi)部排序。

      Map保存key-value值,key不可重復(fù),value可重復(fù)。

      59、說(shuō)出ArrayList,Vector, LinkedList的存儲(chǔ)性能和特性

      ArrayList和Vector都是使用數(shù)組存儲(chǔ)數(shù)據(jù)。查找快,插入慢。由于Vector是線程安全的,所以性能上比ArrayList差。

      LinkedList是鏈表結(jié)構(gòu)。插入快,查找慢。60、去掉一個(gè)Vector集合中重復(fù)的元素

      最簡(jiǎn)單的方式:HashSet set = new HashSet(vector);61、Collection 和 Collections的區(qū)別。

      Collection是集合類的頂級(jí)接口,而Collections是集合類的輔助類,如:將一個(gè)數(shù)組的元素copy到另一個(gè)集合。

      62、Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?

      equals,區(qū)別見(jiàn)11題

      63、你所知道的集合類都有哪些?主要方法?

      集合類有(畫(huà)集合類的體系結(jié)構(gòu))ArrayList的主要方法:add,get,remove,contains,indexOf,isEmpty,toArray,iterator LinkedList的主要方法:add,get,remove,addFirst,addLast,getFirst,getLast,iterator HashSet的主要方法:add,iterator,remove HashMap的主要方法:put,get,remove,entrySet,keyset,values 64、兩個(gè)對(duì)象值相同(x.equals(y)== true),但卻可有不同的hash code,這句話對(duì)不對(duì)?

      對(duì)。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 65、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請(qǐng)說(shuō)出他們分別是哪些類?

      根據(jù)功能分:輸入流,輸出流 根據(jù)類型分:字節(jié)流,字符流

      輸入字節(jié)流的抽象類:InputStream 輸出字節(jié)流的抽象類:OutputStream(Stream斯俊木)

      輸入字符流的抽象類:Reader(瑞得)

      輸出字符流的抽象類:Writer(ruai 的)66、什么是java序列化,如何實(shí)現(xiàn)java序列化?

      序列化就是指將內(nèi)存中的一個(gè)對(duì)象存儲(chǔ)到硬盤(pán)中或者轉(zhuǎn)為字節(jié)碼作網(wǎng)絡(luò)傳輸。

      實(shí)現(xiàn)Serializable(修兒奈斯啵)接口。

      67、描述一下JVM加載class文件的原理機(jī)制?

      JVM中類的加載是由ClassLoader和它的子類來(lái)實(shí)現(xiàn)的。Java Class Loader是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件。它是一個(gè)負(fù)責(zé)查找和裝入類文件的類。68、heap(細(xì)譜)和stack(死大克)有什么區(qū)別。

      stack是用來(lái)保存基本數(shù)據(jù)類型,以及變量的引用。小,速度快

      heap是用來(lái)保存new 出來(lái)的對(duì)象。大,速度慢。69、GC是什么? 為什么要有GC?

      GC是Garbage Collection(垃圾回收)。內(nèi)存處理是程序員容易出現(xiàn)問(wèn)題的地方。忘記回收或錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰。Java提供的GC可以自動(dòng)檢測(cè)對(duì)象是否已經(jīng)死亡,從而進(jìn)行回收內(nèi)存。

      70、垃圾回收的優(yōu)點(diǎn)和原理。并考慮2種回收機(jī)制。

      垃圾回收機(jī)制使得程序員不需要關(guān)注內(nèi)存的回收和釋放,提高了程序的健壯性。

      作者:楊金輝

      垃圾回收器通常是作為一個(gè)單獨(dú)的低級(jí)別線程運(yùn)行。當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)測(cè)這個(gè)對(duì)象的地址、大小及使用情況,通常,GC采用有向圖的方式記錄和管理堆中的所有對(duì)象。通過(guò)這種方式確定哪些對(duì)象是”不可達(dá)”時(shí),GC就有責(zé)任回收這些內(nèi)存空間。

      標(biāo)記垃圾回收機(jī)制和分帶復(fù)制垃圾回收機(jī)制。71、垃圾回收器的基本原理是什么?垃圾回收器可以馬上回收內(nèi)存嗎?有什么辦法主動(dòng)通知虛擬機(jī)進(jìn)行垃圾回收?

      垃圾回收器通常是作為一個(gè)單獨(dú)的低級(jí)別線程運(yùn)行。當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)測(cè)這個(gè)對(duì)象的地址、大小及使用情況,通常,GC采用有向圖的方式記錄和管理堆中的所有對(duì)象。通過(guò)這種方式確定哪些對(duì)象是”不可達(dá)”時(shí),GC就有責(zé)任回收這些內(nèi)存空間。

      可以。通過(guò)System.gc();或者Runtime.getRuntime().gc();來(lái)通知GC回收內(nèi)存,但是Java語(yǔ)言規(guī)范不保證GC一定會(huì)執(zhí)行。72、什么時(shí)候用assert(額色特)。

      assert(斷言)是程序開(kāi)發(fā)中一種常見(jiàn)的調(diào)試方式。73、java中會(huì)存在內(nèi)存泄漏嗎,請(qǐng)簡(jiǎn)單描述。

      會(huì)。內(nèi)存泄漏就是指一個(gè)不再被程序使用的對(duì)象一直占據(jù)著內(nèi)存。

      長(zhǎng)生命周期的對(duì)象持有短生命周期對(duì)象的引用就很可能發(fā)生內(nèi)存泄露,盡管短生命周期對(duì)象已經(jīng)不再需要,但是因?yàn)殚L(zhǎng)生命周期對(duì)象持有它的引用而導(dǎo)致不能被回收,這就是java中內(nèi)存泄露的發(fā)生場(chǎng)景

      75、說(shuō)出一些常用的類,包,接口,請(qǐng)各舉5個(gè)

      包:(Spring)org.springframework.context,org.springframework.web.context, org.springframework.web.context.filter,org.springframework.orm.hibernate3.support

      (Hibernate)org.hibernate,org.hibernate.cfg

      (Struts)org.apache.struts.actions,org.apache.struts.upload

      (DWR)org.directwebremoting.servlet

      接口:(Spring)ApplicationContext,(Hibernate)SessionFactory,Session,Query,Criteria,SQLQuery,Transaction

      (Struts)FormFile

      類:(Spring)ClassPathApplicationContext, OpenSessionInViewFilter,CharacterEncodingFilter

      (Hibernate)Configuration,Hibernate

      (Struts)ActionForm,Action,DispatchAction,MappingDisactionAction

      (DWR)DwrServlet 77、能不能自己寫(xiě)個(gè)類,也叫java.lang.String?

      能,但是沒(méi)什么價(jià)值。

      79、說(shuō)明生活中遇到的二叉樹(shù),用java實(shí)現(xiàn)二叉樹(shù) 81、寫(xiě)一個(gè)Singleton(省構(gòu)騰)出來(lái)。

      1、構(gòu)造私有

      2、一個(gè)靜態(tài)的自身屬性,初始化

      3、提供共有的訪問(wèn)自身屬性的方法

      84、排序都有哪幾種方法?請(qǐng)列舉。用JAVA實(shí)現(xiàn)一個(gè)快速排序。

      冒泡排序,插入排序,選擇排序,快速排序 90、HTTP請(qǐng)求的GET與POST方式的區(qū)別

      1、Get方式請(qǐng)求的字符串長(zhǎng)度不能超過(guò)255,Post理論上沒(méi)有限制。

      作者:楊金輝

      2、Get方式會(huì)將請(qǐng)求的內(nèi)容在地址欄顯示,Post不會(huì)。所以Get方式不安全,Post方式安全。

      91、解釋一下什么是servlet;servlet就是運(yùn)行在服務(wù)器端的java小程序。92、說(shuō)一說(shuō)Servlet的生命周期?

      出生(new),學(xué)習(xí)(init),服務(wù)(service),死亡(destroy)93、Servlet的基本架構(gòu)

      public MyServlet extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse resp)throws IOException,ServletException{} public void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{} } 94、SERVLET API中forward()與redirect()(瑞滴ruai克特)的區(qū)別?

      1、forward是請(qǐng)求對(duì)象的方法,redirect是響應(yīng)對(duì)象的方法;

      2、forward是轉(zhuǎn)發(fā),地址欄不會(huì)顯示轉(zhuǎn)發(fā)后的路徑,redirect是重定向,地址欄會(huì)顯示

      3、forward比redirect效率更高

      4、forward是1次請(qǐng)求,redirect是2次請(qǐng)求

      5、forward只能在本工程內(nèi)轉(zhuǎn)向,redirect可以跳轉(zhuǎn)到其他工程 95、什么情況下調(diào)用doGet()和doPost()?

      jsp頁(yè)面中的form標(biāo)簽里的method屬性為get時(shí)調(diào)用doGet(),為post時(shí)調(diào)用doPost()。96、Request對(duì)象的主要方法:

      setAttribute(String name,Object):設(shè)置名字為name的request的參數(shù)值

      getAttribute(String name):返回由name指定的屬性值

      getAttributeNames():返回request對(duì)象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例

      getCookies():返回客戶端的所有Cookie對(duì)象,結(jié)果是一個(gè)Cookie數(shù)組

      getCharacterEncoding():返回請(qǐng)求中的字符編碼方式

      getContentLength():返回請(qǐng)求的Body的長(zhǎng)度

      getHeader(String name):獲得HTTP協(xié)議定義的文件頭信息

      getHeaders(String name):返回指定名字的request Header的所有值,結(jié)果是一個(gè)枚舉的實(shí)例

      getHeaderNames():返回所以request Header的名字,結(jié)果是一個(gè)枚舉的實(shí)例

      getInputStream():返回請(qǐng)求的輸入流,用于獲得請(qǐng)求中的數(shù)據(jù)

      getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法

      getParameter(String name):獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值

      getParameterNames():獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個(gè)枚舉的實(shí)例

      getParametervalues(String name):獲得有name指定的參數(shù)的所有值

      getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱

      getQueryString():獲得查詢字符串

      getRequestURI():獲取發(fā)出請(qǐng)求字符串的客戶端地址

      getRemoteAddr():獲取客戶端的IP地址

      getRemoteHost():獲取客戶端的名字

      getSession([Boolean create]):返回和請(qǐng)求相關(guān)Session

      作者:楊金輝

      getServerName():獲取服務(wù)器的名字

      getServletPath():獲取客戶端所請(qǐng)求的腳本文件的路徑

      getServerPort():獲取服務(wù)器的端口號(hào)

      removeAttribute(String name):刪除請(qǐng)求中的一個(gè)屬性

      97、forward 和redirect的區(qū)別

      98、request.getAttribute()和 request.getParameter()有何區(qū)別?

      1、request.getParameter()從 請(qǐng)求中的參數(shù)中取值;request.getAttribute()從 請(qǐng)求的作用域中取值

      2、request.getParameter()返回 String類型;request.getAttribute()返回Object類型

      99、jsp有哪些內(nèi)置對(duì)象?作用分別是什么? 分別有什么方法?

      JSP共有以下9個(gè)內(nèi)置的對(duì)象:

      request----用戶端請(qǐng)求,此請(qǐng)求會(huì)包含來(lái)自GET/POST請(qǐng)求的參數(shù)

      response----網(wǎng)頁(yè)傳回用戶端的回應(yīng)

      pageContext----網(wǎng)頁(yè)的屬性是在這里管理

      session----與請(qǐng)求有關(guān)的會(huì)話期

      application servlet 正在執(zhí)行的內(nèi)容

      out----用來(lái)傳送回應(yīng)的輸出

      config----servlet的構(gòu)架部件

      page----JSP網(wǎng)頁(yè)本身

      exception----針對(duì)錯(cuò)誤網(wǎng)頁(yè),未捕捉的例外 100、jsp有哪些動(dòng)作?作用分別是什么?

      JSP共有以下6種基本動(dòng)作

      jsp:include:在頁(yè)面被請(qǐng)求的時(shí)候引入一個(gè)文件。

      jsp:useBean:尋找或者實(shí)例化一個(gè)JavaBean。

      jsp:setProperty:設(shè)置JavaBean的屬性。

      jsp:getProperty:輸出某個(gè)JavaBean的屬性。

      jsp:forward:把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁(yè)面。

      jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標(biāo)記 101、JSP的常用指令

      page指令 屬性: language(指示使用什么語(yǔ)言編譯JSP網(wǎng)頁(yè),暫時(shí)只支持Java語(yǔ)言,默認(rèn)java)、extends(定義JSP網(wǎng)頁(yè)產(chǎn)生的Servlet繼承的父類)、import(同Java的import)、session(設(shè)置當(dāng)前網(wǎng)頁(yè)是否可以使用Session對(duì)象,默認(rèn)為true)、buffer(設(shè)置輸出流是否有緩沖區(qū),默認(rèn)為8KB)、autoFlush(設(shè)置是否自動(dòng)清除緩沖區(qū),緩沖區(qū)如果溢出會(huì)產(chǎn)生異常,默認(rèn)true)、isThreadSafe(設(shè)置當(dāng)前頁(yè)面是否允許處理超過(guò)1個(gè)以上的請(qǐng)求,不建議更改,默認(rèn)為true)、info(設(shè)置當(dāng)前JSP網(wǎng)頁(yè)的相關(guān)信息)、errorPage(設(shè)置一旦發(fā)生異常后重新定向哪個(gè)url)、isErrorPage(設(shè)置該JSP頁(yè)面是否為異常處理的頁(yè)面)、contentType(置MIME類型和編碼方式:text/html;charset=GBK)、pageEncoding(設(shè)置編碼方式)、isELIgnored(設(shè)置是否忽略EL表達(dá)式,默認(rèn)值為false)taglib指令

      include指令

      102、JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?

      1、靜態(tài)是指令

      動(dòng)態(tài)是動(dòng)作

      2、靜態(tài)只產(chǎn)生一個(gè)文件

      動(dòng)態(tài)產(chǎn)生兩個(gè)

      3、靜態(tài)不可以帶參數(shù)

      動(dòng)態(tài)可以帶參數(shù)

      作者:楊金輝

      4、靜態(tài)不會(huì)動(dòng)態(tài)更新

      動(dòng)態(tài)可以。

      104、頁(yè)面間對(duì)象傳遞的方法

      session、cookie、隱藏表單域、url重寫(xiě)

      105、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?

      JSP 轉(zhuǎn)義以后就是servlet

      1、jsp后綴名是.jsp servlet的后綴名是.java

      2、jsp 側(cè)重于顯示

      servlet側(cè)重于邏輯

      3、jsp在mvc中屬于view

      servlet屬于controller 106、MVC的各個(gè)部分都有那些技術(shù)來(lái)實(shí)現(xiàn)?如何實(shí)現(xiàn)? MVC 是Model-View-Controller的簡(jiǎn)寫(xiě).“Model” 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò)JavaBean,EJB組件實(shí)現(xiàn)), “View” 是應(yīng)用的表示面(由JSP頁(yè)面產(chǎn)生),“Controller” 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè)Servlet),通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn).這些組件可以進(jìn)行交互和重用。

      107、我們?cè)趙eb應(yīng)用開(kāi)發(fā)過(guò)程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個(gè)某種編碼的字符串?

      new String(str.getByte(“原編碼”),”新編碼”);

      108、現(xiàn)在輸入n個(gè)數(shù)字,以逗號(hào),分開(kāi);然后可選擇升或者降序排序;按提交鍵就在另一頁(yè)面顯示按什么排序,結(jié)果為,提供reset 109、數(shù)據(jù)庫(kù)三范式是什么? 第一范式:保證每列的原子性。

      第二范式:必須要有主鍵[,并且其它列都依賴于該主鍵];第三范式:取消傳遞依賴

      110、說(shuō)出一些數(shù)據(jù)庫(kù)優(yōu)化方面的經(jīng)驗(yàn)?

      1、存儲(chǔ)優(yōu)化

      A、通過(guò)表空間將數(shù)據(jù)分散到不同的硬盤(pán)上

      B、通過(guò)表分區(qū)分散數(shù)據(jù),方便備份還原

      2、查詢優(yōu)化

      A、通過(guò)表分區(qū)方便查詢 B、為表建立索引 C、SQL語(yǔ)句

      111、union(優(yōu)妮安)和union all(哦)有什么不同? union去重復(fù)

      union all不去重復(fù) 113、、什么是存儲(chǔ)過(guò)程和如何編寫(xiě)

      存儲(chǔ)過(guò)程就是存儲(chǔ)在數(shù)據(jù)庫(kù)中帶有名字的PL/SQL塊,完成一定的功能。

      Create or replace procedure procName(參數(shù)in,out,in out)As|is Variable….Begin exception end 114、、注冊(cè)Jdbc驅(qū)動(dòng)程序的三種方式

      Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);System.setProperty(“jdbc.drivers”,” com.microsoft.sqlserver.jdbc.SQLServerDriver”);

      作者:楊金輝

      DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());115、、用JDBC如何調(diào)用存儲(chǔ)過(guò)程

      CallableStatement callSta = con.prepareCall(“{call 過(guò)程名}”);callSta.execute();116、JDBC中的PreparedStatement相比Statement的好處

      速度快,可以防止sql 注入攻擊。118、Class.forName的作用?為什么要用?

      加載類文件,創(chuàng)建類對(duì)象。注冊(cè)驅(qū)動(dòng)。119、大數(shù)據(jù)量下的分頁(yè)解決方法。

      我們一般采用后臺(tái)SQL語(yǔ)句分頁(yè)

      121、說(shuō)出數(shù)據(jù)連接池的工作機(jī)制是什么?

      因?yàn)槲覀冊(cè)诓僮鲾?shù)據(jù)庫(kù)的時(shí)候,打開(kāi)連接和關(guān)閉連接是耗時(shí),耗性能,我們希望通過(guò)一種機(jī)制減少這種開(kāi)銷,這就是數(shù)據(jù)連接池的初衷;

      J2EE服務(wù)器啟動(dòng)時(shí)會(huì)建立一定數(shù)量的池連接,并放入到一個(gè)池中,當(dāng)我需要獲得連接的時(shí)候,只需要從此池中拿到連接并標(biāo)記為繁忙,用完之后放回池中并標(biāo)記為空閑,這樣就能提高我們的訪問(wèn)性能。

      122、為什么要用 ORM? 和 JDBC 有何不一樣?

      ORM就是Object Relational Mapping 對(duì)象關(guān)系映射,因?yàn)橛胘dbc操作數(shù)據(jù)庫(kù)代碼非常繁瑣,ORM可以將表映射成實(shí)體,與我們的OOP編程思想完全一致的,方便程序開(kāi)發(fā)。但速度比jdbc慢

      123、xml有哪些解析技術(shù)?區(qū)別是什么? DOM、SAX DOM是一次性將一個(gè)文件載入內(nèi)存,產(chǎn)生DOM樹(shù),適合多次讀寫(xiě)操作,適合操作小型文檔

      SAX 是事件驅(qū)動(dòng)的解析方式,它不是一次性載入整個(gè)文件,而是遇到文檔開(kāi)頭標(biāo)記等等觸發(fā)事件來(lái)處理,適合解析大型文檔

      124、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?

      1、數(shù)據(jù)交換

      2、配置文件

      3、存儲(chǔ)數(shù)據(jù)

      125、用jdom解析xml文件時(shí)如何解決中文問(wèn)題?如何解析?

      import javax.xml.transform.*;Transformer transformer = TransformerFactory.newInstance().newTransformer();transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, “gb2312”);transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, “yes”);126、編程用JAVA解析XML的方式.127、XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式?

      a: 兩種形式 dtd schema,(是給帽)

      b: 本質(zhì)區(qū)別:schema本身是xml的,比DTD有更精確的規(guī)則定義;128、BS與CS的聯(lián)系與區(qū)別。

      C/S是Client/Server的縮寫(xiě)。B/S是Brower/Server的縮寫(xiě),1、硬件不同,一個(gè)是局域網(wǎng),一個(gè)是廣域網(wǎng)

      2、安全不同

      C/S安全高

      B/S

      3、速度不同

      C/S速度塊

      作者:楊金輝

      4、維護(hù)

      C/S不方便維護(hù)

      B/S方便維護(hù) 129、應(yīng)用服務(wù)器與WEB SERVER的區(qū)別?

      1、應(yīng)用服務(wù)器處理業(yè)務(wù)邏輯,web服務(wù)器則主要是讓客戶可以通過(guò)瀏覽器進(jìn)行訪問(wèn)。

      2、應(yīng)用服務(wù)器處理業(yè)務(wù)邏輯,web服務(wù)器是用于處理HTML文件的。web服務(wù)器通常比應(yīng)用服務(wù)器簡(jiǎn)單,如apache就是web服務(wù)器,Jboss就是EJB應(yīng)用服務(wù)器。應(yīng)用服務(wù)器:Weblogic、Tomcat、Jboss WEB SERVER:IIS、Apache 130、應(yīng)用服務(wù)器有那些?

      BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat 131、J2EE是什么?

      J2EE是應(yīng)用平臺(tái),是標(biāo)準(zhǔn),是框架

      133、請(qǐng)對(duì)以下在J2EE中常用的名詞進(jìn)行解釋(或簡(jiǎn)單描述)

      Web容器:能解析Jsp和Servlet的應(yīng)用服務(wù)器 EJB 容器:就是能解析EJB組件的應(yīng)用服務(wù)器

      JNDI(Java Naming And Directory Interface)Java命名與目錄接口 JMS(Java Message Service)Java 消息服務(wù) JTA(Java Transaction API)Java事務(wù)接口

      JAF(Java Action Framework)Java 安全認(rèn)證框架

      RMI/IIOP(Remote Method Invocation/Internet Inter Object Request Broker Protocol)遠(yuǎn)程方法調(diào)用/互聯(lián)網(wǎng)內(nèi)部對(duì)象請(qǐng)求代理協(xié)議

      150、WEB SERVICE名詞解釋。JSWDL開(kāi)發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。

      JAXP(Java API for XML Parsing)JAXM(Java API for XML Messaging)SOAP(Simple Object Access Protocol)UDDI(Universal Description, Discovery and Integration)WSDL(Web Services Description Language)151、CORBA是什么?用途是什么?

      CORBA(Common Object Request Broker Architecture,公共對(duì)象代理體系結(jié)構(gòu)

      為解決分布式處理環(huán)境(DCE)中,硬件和軟件系統(tǒng)的互連而提出的一種解決方案; 152、流行的框架與新技術(shù)

      Apache Struts,Spring Hibernate,Ibatis, JQuery,ext,JSF 153、談?wù)凷truts中的Action servlet。154、Struts優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):簡(jiǎn)化了mvc的開(kāi)發(fā),標(biāo)簽庫(kù)提高開(kāi)發(fā)效率 缺點(diǎn):

      1、每個(gè)action都要配一個(gè)form

      2、action、form之間緊耦合

      3、action與web對(duì)象也是緊耦合

      4、它是單實(shí)例,多線程的,安全,速度慢

      5、擴(kuò)展不靈活

      155、STRUTS的應(yīng)用(如STRUTS架構(gòu))

      Struts是采用Servlet和Jsp技術(shù)開(kāi)發(fā)的Web應(yīng)用程序的framework。

      作者:楊金輝

      采用Struts能開(kāi)發(fā)基于MVC設(shè)計(jì)模式的應(yīng)用架構(gòu),Struts有如下的主要功能,1、包含一個(gè)Controller Servlet,將用戶的請(qǐng)求發(fā)送到不同的Action

      2、為JSP頁(yè)面提供了大量的標(biāo)簽庫(kù)

      3、支持國(guó)際化

      156、hibernate中的update()和saveOrUpdate()的區(qū)別,session的load()和get()的區(qū)別。

      update()方法將游離對(duì)象轉(zhuǎn)變?yōu)槌志没瘜?duì)象,然后計(jì)劃執(zhí)行一條update語(yǔ)句。saveOrUpdate()方法包含了save()和update(),如果傳入的參數(shù)是自由對(duì)象,則調(diào)用save()如果是游離對(duì)象,則調(diào)用update()方法

      1、當(dāng)數(shù)據(jù)庫(kù)中的記錄不存在時(shí)load()方法拋出ObjectNotFoundException()而get()返回null

      2、load()默認(rèn)采用的是延遲加載策略,返回的是代理對(duì)象; get()方法總是采用立即檢索策略,返回的是實(shí)際對(duì)象

      157、簡(jiǎn)述 Hibernate 和 JDBC 的優(yōu)缺點(diǎn)? 如何書(shū)寫(xiě)一個(gè) one to many 配置文件.Hibernate其實(shí)就是對(duì)JDBC的封裝。

      Hibernate操作簡(jiǎn)單,性能差。

      JDBC操作復(fù)雜,性能好。

      158、iBatis與Hibernate有什么不同? iBatis介于Hibernate與JDBC之間,性能比Hibernate好,操作比JDBC簡(jiǎn)單,都是持久層的框架。

      159、介紹一下Hibernate的二級(jí)緩存

      緩存就是指把查詢出來(lái)的數(shù)據(jù)或?qū)ο蟊4嬖趦?nèi)存(Hashmap)中,以減少查詢除數(shù)。

      Session是Hibernate的一級(jí)緩存。只能是當(dāng)前Session共享緩存。

      SessionFactory是Hibernate的二級(jí)緩存,它可以使多個(gè)Session中共享緩存。

      160、Spring 的依賴注入是什么意思? 給一個(gè) Bean 的 message 屬性, 字符串類型, 注入值為 “Hello” 的 XML 配置文件該怎么寫(xiě)? 161、Jdo是什么?

      Java Data Object,java數(shù)據(jù)對(duì)象,比jdbc更通用 162、什么是spring的IOC AOP 163、STRUTS的工作流程!

      164、怎樣消除遞歸?

      使用棧和循環(huán)。165、UML方面

      Unified Modeling Language統(tǒng)一建模語(yǔ)言,用來(lái)畫(huà)用例圖,靜態(tài)圖(包括類圖,對(duì)象圖和包圖),行為圖,交互圖(順序圖,合作圖),實(shí)現(xiàn)圖,流程圖 166、軟件開(kāi)發(fā)的

      167、j2ee常用的設(shè)計(jì)模式?說(shuō)明工廠模式。

      工廠模式,代理模式,單例模式,責(zé)任鏈,觀察者 168、開(kāi)發(fā)中都用到了那些設(shè)計(jì)模式?用在什么場(chǎng)合?

      工廠模式,代理模式,單例模式

      170、LINUX下線程,GDI類的解釋。

      作者:楊金輝

      LINUX實(shí)現(xiàn)的就是基于核心輕量級(jí)進(jìn)程的“一對(duì)一”線程模型,一個(gè)線程實(shí)體對(duì)應(yīng)一個(gè)核心輕量級(jí)進(jìn)程,而線程之間的管理在核外函數(shù)庫(kù)中實(shí)現(xiàn).GDI類為圖像設(shè)備編程接口類庫(kù)

      172、四種會(huì)話跟蹤技術(shù)

      URL重寫(xiě),Cookie,Session,隱藏表單域

      173、簡(jiǎn)述邏輯操作(&,|,^)與條件操作(&&,||)的區(qū)別。

      174、請(qǐng)用英文簡(jiǎn)單介紹一下自己.175、請(qǐng)把 http://tomcat.apache.org/ 首頁(yè)的這一段話用中文翻譯一下? 176、美資軟件公司JAVA工程師電話面試題目

      177、左聯(lián)跟外聯(lián)各指什么?有什么區(qū)別? 178、javascript怎么創(chuàng)建一個(gè)xml document

      第五篇:JAVA面試題

      1、面向?qū)ο蟮乃膫€(gè)特征:封裝、繼承、多態(tài)、抽象

      封裝:

      繼承:子類繼承父類,除private修飾以外的所以方法和屬性 多態(tài):一個(gè)對(duì)象多種狀態(tài),可以把子類對(duì)象當(dāng)作父類對(duì)象來(lái)看,一旦這樣做了,就只能

      去調(diào)用父類中原有定義的屬性和方法,也就是子類中擴(kuò)展的方法或?qū)傩跃筒荒苷{(diào)用了。

      抽象:

      2、abstractclass 和interface的區(qū)別

      聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract 類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract 類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。

      接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對(duì)象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類是否實(shí)現(xiàn)了接口。

      3、final、finally、finalize的區(qū)別

      final 用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

      finalize是Object類的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。

      4、匿名內(nèi)部類是否可以作為父類被其他類繼承,或做為接口被實(shí)現(xiàn)?

      匿名內(nèi)部類不被繼承也不能被實(shí)現(xiàn),因?yàn)樗鼪](méi)有名字,而一個(gè)內(nèi)部類只要有名字就可以作為父類被繼承,也可以作為借口被實(shí)現(xiàn)。

      5、多線程有幾種實(shí)現(xiàn)方法,同步有幾種實(shí)現(xiàn)方法,都是什么?

      多線程有兩種實(shí)現(xiàn)方法,分別繼承繼承Thread類與實(shí)現(xiàn)runnable借口。

      同步的實(shí)現(xiàn)方法有兩種,分別是synchronized,wait與notify。

      6、string 與 stringbuffer的區(qū)別?

      String的長(zhǎng)度是不可變的,而stringbuffer的長(zhǎng)度是可變的。如果你對(duì)字符中的內(nèi)容經(jīng)常進(jìn)行操作,特別是內(nèi)容修改時(shí),那么就要使用stringbuffer,如果最后需要使用string,那么使用stringbuffer的tostring()方法。

      7、解析XML文件的幾種方式和區(qū)別

      DOM:處理大型文件時(shí)其性能下降的非常厲害

      SAX:SAX是事件驅(qū)動(dòng)型的XML解析方式,它是順序讀取XML文件,不需要一次性全部裝載整個(gè)文件。

      8、sleep()和wait()有什么區(qū)別?

      sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。

      wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。

      9、數(shù)組有沒(méi)有l(wèi)ength這個(gè)方法?string有沒(méi)有l(wèi)ength這個(gè)方法?

      數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength這個(gè)屬性

      String有l(wèi)ength()這個(gè)方法

      10、LinkedList、ArrayList和Vector的區(qū)別? ArrayList和Vector是采用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素總數(shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)以便增加和插入元素,二者都允許直接序號(hào)索引元素,但是插入數(shù)據(jù)要移動(dòng)數(shù)組元素等內(nèi)存操作,所以它們索引數(shù)據(jù)快、插入數(shù)據(jù)慢。

      Vector由于使用了synchronized同步方法(如add、insert、remove、set、equals、hashcode等操作),因此是線程安全,性能上比ArrayList要差。

      LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行向前或向后遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入數(shù)度較快!LinkedList雙向鏈表,是指可以從first依次遍歷至last(從頭到尾),也可以從last遍歷至first(從尾到頭),但首尾沒(méi)有構(gòu)成環(huán),不同于雙向循環(huán)鏈表(注意區(qū)分):

      11、hashmap與hashtable的區(qū)別?

      都屬于Map接口的類,實(shí)現(xiàn)了將惟一鍵映射到特定的值上。

      HashMap類沒(méi)有分類或者排序。它允許一個(gè)null鍵和多個(gè)null值。

      Hashtable類似于HashMap,但是不允許null鍵和null值。它也比HashMap慢,因?yàn)樗峭降摹?/p>

      12、Jsp有哪些內(nèi)置對(duì)象,作用分別是什么?(至少能說(shuō)出五個(gè))

      request表示HttpServletRequest對(duì)象。它包含了有關(guān)瀏覽器請(qǐng)求的信息,并且提供了幾個(gè)用于獲取cookie, header, 和session數(shù)據(jù)的有用的方法。

      response表示HttpServletResponse對(duì)象,并提供了幾個(gè)用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)

      out對(duì)象是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果。

      pageContext表示一個(gè)javax.servlet.jsp.PageContext對(duì)象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對(duì)象的API,并且包裝了通用的servlet相關(guān)功能的方法。

      session表示一個(gè)請(qǐng)求的javax.servlet.http.HttpSession對(duì)象。Session可以存貯用戶的狀態(tài)信息

      applicaton 表示一個(gè)javax.servle.ServletContext對(duì)象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息

      config表示一個(gè)javax.servlet.ServletConfig對(duì)象。該對(duì)象用于存取servlet實(shí)例的初始化參數(shù)。

      page表示從該頁(yè)面產(chǎn)生的一個(gè)servlet實(shí)例

      13、Javaservletapi中forward()與redirect()的區(qū)別?

      前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時(shí),盡量使用forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用sendRedirect()方法。

      14、重載(overload)與重寫(xiě)(override)的區(qū)別?

      Overload:方法名相同,參數(shù)不同,與返回值無(wú)關(guān)

      Override:方法名相同,參數(shù)相同,相同的返回值,建立在繼承的基礎(chǔ)之上

      15、什么是單例模式,在程序中如何使用?

      單例模式確保一個(gè)類只有一個(gè)實(shí)例 餓漢式單例類

      public class Singleton {

      private Singleton(){}

      private static Singleton instance = new Singleton();

      public static Singleton getInstance(){

      return instance;

      }

      }

      懶漢式單例類

      public class Singleton {

      private static Singleton instance = null;

      public static synchronized Singleton getInstance(){

      if(instance==null)

      instance=new Singleton();

      return instance;

      }

      }

      16、Servlet生命周期?

      加載和實(shí)例化

      初始化init()

      請(qǐng)求處理service()

      服務(wù)終止destroy()

      17、spring中IOC與AOP的含義?

      IOC:控制反轉(zhuǎn),是一種設(shè)計(jì)模式,一層含義控制權(quán)的轉(zhuǎn)移,由傳統(tǒng)的在程序中控制依賴轉(zhuǎn)移到由容器來(lái)控制,第二層是依賴注入將互相依賴的對(duì)象分離,在spring配置文件中描述它們的依賴關(guān)心,它們的依賴關(guān)系只是在使用的時(shí)候才建立

      AOP:面向切面,是一種編程思想,oop的延續(xù),將系統(tǒng)中非核心的業(yè)務(wù)提取出來(lái),進(jìn)行單獨(dú)的處理,比如事務(wù)、日志和安全等

      Spring的AOP和IOC都是為了解決系統(tǒng)代碼耦合度過(guò)高的問(wèn)題,使用代碼重用性高,易于維護(hù),不過(guò)AOP和IOC并不是spring中特有的,只是spring把它們應(yīng)用的更靈活方便。

      18、hibernate與JDBC的區(qū)別?

      相同點(diǎn):

      1>兩者都是JAVA的數(shù)據(jù)庫(kù)操作中間件。

      2>兩者對(duì)于數(shù)據(jù)庫(kù)進(jìn)行直接操作的對(duì)象都不是線程安全的,都需要及時(shí)關(guān)閉。

      3>兩者都可以對(duì)數(shù)據(jù)庫(kù)的更新操作進(jìn)行顯式的事務(wù)處理。

      不同點(diǎn):

      1>使用的SQL語(yǔ)言不同:JDBC使用的是基于關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)SQL語(yǔ)言,Hibernate使用的是HQL(Hibernate query language)語(yǔ)言

      2>操作的對(duì)象不同:JDBC操作的是數(shù)據(jù),將數(shù)據(jù)通過(guò)SQL語(yǔ)句直接傳送到數(shù)據(jù)庫(kù)中執(zhí)行,Hibernate操作的是持久化對(duì)象,由底層持久化對(duì)象的數(shù)據(jù)更新到數(shù)據(jù)庫(kù)中。3>數(shù)據(jù)狀態(tài)不同:JDBC操作的數(shù)據(jù)是“瞬時(shí)”的,變量的值無(wú)法與數(shù)據(jù)庫(kù)中的值保持一致,而Hibernate操作的數(shù)據(jù)是可持久的,即持久化對(duì)象的數(shù)據(jù)屬性的值是可以跟數(shù)據(jù)庫(kù)中的值保持一致的。

      19、struts中的標(biāo)簽庫(kù)有幾種,分別是?

      有5種標(biāo)簽,分別是:bean標(biāo)簽庫(kù)、html標(biāo)簽庫(kù)、logic標(biāo)簽庫(kù)、tiles標(biāo)簽庫(kù)nested標(biāo)簽庫(kù)

      20、Error與Exception有什么區(qū)別?

      Error表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,Exception表示需要捕捉或者需要程序進(jìn)行處理的異常。

      21、Collection和Collections的區(qū)別。

      Collection是集合類的上級(jí)接口,繼承與他的接口主要有Set 和List.Collections是針對(duì)集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、線程安全化等操作

      22、GC是什么?為什么要有GC?(基礎(chǔ))。

      GC是垃圾收集器。Java程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。

      要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:

      System.gc()

      Runtime.getRuntime().gc()

      23、啟動(dòng)一個(gè)線程是用run()還是start()?

      啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。

      24、&和&&的區(qū)別。

      &是位運(yùn)算符,表示按位與運(yùn)算,&&是邏輯運(yùn)算符,表示邏輯與(and)。

      25、heap和stack有什么區(qū)別。

      棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進(jìn)先出的方

      式進(jìn)行處理。

      堆是棧的一個(gè)組成元素

      26、List, Set, Map是否繼承自Collection接口?

      List,Set是,Map不是

      27、MVC的各個(gè)部分都有那些技術(shù)來(lái)實(shí)現(xiàn)?如何實(shí)現(xiàn)?

      MVC 是Model-View-Controller的簡(jiǎn)寫(xiě)?!癕odel” 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò)JavaBean,EJB組件實(shí)現(xiàn)),“View” 是應(yīng)用的表示面(由JSP頁(yè)面產(chǎn)生),“Controller” 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè)Servlet),通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。

      28、Static Nested Class 和 Inner Class的不同。

      Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實(shí)例被實(shí)例化。而通常的內(nèi)部類需要在外部類實(shí)例化后才能實(shí)例化。

      29、接口是否可繼承接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承實(shí)體類

      (concrete class)?

      接口可以繼承接口。抽象類可以實(shí)現(xiàn)(implements)接口,抽象類是否可繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù)

      30、JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么?

      JSP 是Servlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡(jiǎn)易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是“類servlet”。Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開(kāi)來(lái)。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯

      31、當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法? 不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問(wèn)。

      32、運(yùn)行時(shí)異常與一般異常有何異同?

      異常表示程序運(yùn)行過(guò)程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見(jiàn)運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。

      33、JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?

      動(dòng)態(tài)INCLUDE用jsp:include動(dòng)作實(shí)現(xiàn) 它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁(yè)面,并且可以帶參數(shù)。

      靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁(yè)面<%@ include file=“included.htm” %>

      下載Java面試題個(gè)人總結(jié) + 答案word格式文檔
      下載Java面試題個(gè)人總結(jié) + 答案.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        Java經(jīng)典面試題大全-帶答案

        Java經(jīng)典面試題 帶答案 一、單項(xiàng)選擇題 1.Java是從()語(yǔ)言改進(jìn)重新設(shè)計(jì)。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列語(yǔ)句哪一個(gè)正確() A. Java程序經(jīng)編譯后會(huì)產(chǎn)生machine code B.Java......

        2016年10月份java面試題總結(jié)

        2016年10月Java面試常見(jiàn)筆試題 1、有哪些XML解析方法? 2、頁(yè)面間的參數(shù)傳遞方法有哪一些? 3、Session有什么作用? 4、JSP有哪些動(dòng)作?作用分別是什么? 5、Ajax的基本原理是什么? 6......

        JAVA程序員面試題

        JAVA程序員面試題 第一,談?wù)刦inal, finally, finalize的區(qū)別。 final?修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不......

        java程序員面試題

        1、 你怎樣理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 實(shí)現(xiàn)低耦合,便于程序的維護(hù)~ 配置文件控制......

        java程序員面試題

        姓名: 年齡: 工作年限: 1.int和Integer有什么區(qū)別?2.抽象類(abstract class)和接口(interface)有什么異同?3.List、Set、Map的區(qū)別?4.Spring支持的ORM有哪些,哪些是你用過(guò)的?5.使用Spri......

        java開(kāi)發(fā)面試題

        1、 編寫(xiě)程序 題目:古典問(wèn)題:有一對(duì)公母豬,從出生后第3個(gè)月起每個(gè)月都生一對(duì)豬,小豬長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)豬,假如豬都不死,問(wèn)每個(gè)月的豬總數(shù)為多少? 答案: public class li......

        Java預(yù)備面試題

        ? 作用域public,private,protected,以及不寫(xiě)時(shí)的區(qū)別 答:區(qū)別如下: 作用域當(dāng)前類同一package子孫類其他package public√√√√ protected√√√× friendly√√×× private√......

        Java程序員面試題

        Java程序員面試題 1、面向?qū)ο蟮奶卣饔心男┓矫? 答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面:1)抽象2)繼承3)封裝4)多態(tài)性 2、作用域public,private,protected,以及不寫(xiě)時(shí)的區(qū)別 答......