SSH相關問題

1.  1.  BeanFactory的作用是什麼?   [中]  

2.  BeanFactory是配置、創建、管理bean的容器,有時候也稱爲bean上下文。Bean與bean的依賴關係,也是由BeanFactory負責維護的。  

3.  2.  bean在spring的容器中兩種基本行爲是什麼? [中]  

4.  Singleton:單態  

5.  Non-singleton或prototype:原型  

6.  3.  spring配置文件中的ref元素的作用是什麼?它的兩個基本屬性是什麼?  [中]  

7.  用於指定屬性值爲spring容器中的其它bean.兩個基本屬性是bean和local  

8.  4.  什麼是DWR?它有哪些功能?  [中]  

9.  DWR(Direct Web Remoting)是一個WEB遠程調用框架.  

10. 可以在客戶端利用JavaScript直接調用服務端的Java方法並返回值給JavaScript  

11. DWR根據Java類來動態生成JavaScrip代碼.  

12. 支持Dom Trees,支持Spring,支持commons-logging  

13. 5.  Ajax的工作原理 ? [難]  

14. 在會話的開始,瀏覽器加載Ajax引擎  

15. 請求動作通過JavaScript調用Ajax引擎來代替.   

16. 引擎負責繪製用戶界面以及與服務器端通訊。  

17. Ajax引擎採用異步交互過程--不用等待服務器的通訊。  

18. 6.  XMLHttpRequest對象是什麼,它有哪些常用方法? [難]     

19. 一個 JavaScript 對象。是Ajax 的核心。  

20. 該對象的方法和屬性。  

21.     open():建立到服務器的新請求。   

22.     send():向服務器發送請求。   

23.     abort():退出當前請求。   

24.     readyState:提供當前 HTML 的就緒狀態。   

25.     responseText:服務器返回的請求響應文本。.    

31. 8.  什麼是Ajax?  [易]  

32. AJAX(Asynchronous JavaScript and XML),它不是一門新的語言或技術,而是多種技術的綜合,包括:  

33. Javascript  

34. XHTML  

35. CSS  

36. DOM  

37. XML  

38. XSTL  

39. XMLHttpRequest  

40.   

41. 9.  同步與異步的區別? [ 難]  

42. 普通B/S模式(同步)AJAX技術(異步)  

43. 同步:提交請求->等待服務器處理->處理完畢返回 這個期間客戶端瀏覽器不能幹任何事,而異步則是 請求通過事件觸發->服務器處理->處理完畢  

44. 同步是阻塞模式,異步是非阻塞模式。    

45. 同步(發送方發出數據後,等接收方發回) 異步(發送方發出數據後,不等接收方發回響應)  

46.   

47. 10. Struts+Hibernate+Spring開發模式中Hibernate扮演的角色  [中]  

48.   答:Hibernate扮演的是數據持久層 它的作用是實現持久化對象和數據庫表  

49. 之間的映射,形成持久化對象和數據庫表中數據的一個轉換平臺  

50.   

51. 11. 什麼是Hibernate 的抓取策略  [難]  

52.   抓取策略是指當應用程序需要利用關聯關係進行對象獲取的時候。  

53. 12. 何爲容器  [中]  

54.   容器就是符合某種規範的能夠提供一系列服務的管理器。  

55. 13. Spring實現了那幾種模式  [中]  

56. 答: 工廠模式 和 單例模式  

57.   

58. 14 :Hibernate實體對象生命週期的三種狀態  [難]  

59. 答 Transient(瞬態) ,persistent(持久態)和Detached(遊歷態)  

60.   

61. 15: HQL查詢參數的處理方法  [中]  

62. 答:直接將參數拼寫爲HQL語句  

63. 通過參數名稱來標識參數  

64.   

65. 16. Hibernate實體之間的關聯關係的三種形式  [中]  

66.    答  一對一關聯  

67.        一對多關聯  

68.        多對多關聯  

69.   

70. 17.  Hibernate具用的三種檢索方式  [難]  

71. 答:HQL檢索方式  

72.     QBC檢索方式  

73.     SQL檢索方式  

74. 18. spring 中<Bean>的depends-on屬性是什麼  [中]  

75. Depends-on用於當前Bean初始化之前顯示的強制一個或多個bean被初始化  

76. 19.  spring 中的BeanWrapper類是什麼  [難]  

77. BeanWrapper類是一個對JavaBean進行各種操作的工具類  

78. BeanWrapper本身是一個接口BeanWrapperImpl實現了BeanWrapper  

79. 20 . <set>元素有一個cascade屬性,如果希望Hibernate級聯保存集合中的對象,casecade屬性應該取什麼值?  [難]  

80.    答:save-update  

81. 21.  Hibernate中session什麼時候是遊離態  [中]  

82. 答:session.close();方法後   

83. 22. Hibernate中映射文件<hibernate-mapping> inverse屬性和cascade屬性的區別  [中]  

84.    答:inverse屬性只存在於集合標記的元素中集合元素包括<set/>,<map/>,<list/>,<array/>,<bag/>  

85.   Inverse屬性的作用是是否將對集合對象的修改反射到數據庫中 inverse=”false”時修改反射到數據庫中 inverse=”true” 時修改不反射到數據庫中  

86.   Cascade屬性的作用是描述關聯對象進行操作時的級聯特性,因此只有涉及到關係的元素纔有cascade屬性  

87.   

88. 23. : Hibernate中Session對象的load()方法和get()方法的區別(請列舉出兩點)[難]  

89. 答:①記錄不存在時 get()方法會返回空(null),而load()方法將會拋出一個HibernateException異常 ② load()方法查詢數據時會先找Hibernate的內部緩存和二級緩  

90. 存中的現有數據,get()方法在內部緩存中沒有打到相對應的數據時裝直接執行SQL語句  

91. 進行查詢  

92. 24. : Hibernate中HQL屬於什麼語言  [易]  

93.   答:HQL是面向對象的查詢語言,它可以查詢以對象形式存在的數據。  

94.   

95. 25.  Hibernate簡介以及主要功能  [中]  

96.   答:Hibernate是採用ORM模式實現數據持久層的一個優秀的JAVA組件,它提供了  

97. 強大,高效的將JAVA對象進行持久化操作的服務  

98.   

99. 26. 簡述Hibernate的優點 [難]  

100.   答:開源和免費的License,我可以在需要的時候研究源代碼,改寫源代碼,進行功能的定製。輕量級封裝,避免引入過多複雜的問題,調試容易,也減輕程序員的負擔。   

101.  具有可擴展性,API開放,當本身功能不夠用的時候,可以自己編碼進行擴展。  

102.    

103.  27. 怎樣構建SessionFactory  [難]  

104.    答: Hibernate的SessionFactory接口提供Session類的實例,Session類用於完成對數據庫的操作。  

105.  由於SessionFactory實例是線程安全的(而Session實例不是線程安全的),所以每個操作都可以共用同一個SessionFactory來獲取Session。Hibernate配置文件分爲兩種格式,一種是xml格式的配置文件,另一種是Java屬性文件格式的配置文件  

106.  28. :從XML文件讀取配置信息構建SessionFactory的具體步驟如下。  [難]  

107.  1)創建一個Configuration對象,並通過該對象的configura()方法加載Hibernate配置文件,代碼如下。  

108.  Configuration config = new Configuration().configure();  

109.  configura()方法:用於告訴Hibernate加載hibernate.cfg.xml文件。Configuration在實例化時默認加載classpath中的hibernate.cfg.xml,當然也可以加載名稱不是hibernate.cfg.xml的配置文件,例如wghhibernate.cfg.xml,可以通過以下代碼實現。  

110.  Configuration config = new Configuration().configure("wghhibernate.cfg.xml");  

111.  2)完成配置文件和映射文件的加載後,將得到一個包括所有Hibernate運行期參數的Configuration實例,通過Configuration實例的buildSessionFactory()方法可以構建一個惟一的SessionFactory,代碼如下:  

112.  SessionFactory sessionFactory = config.buildSessionFactory();  

113.  構建SessionFactory要放在靜態代碼塊中,因爲它只在該類被加載時執行一次。  

114.    

115.  29. 寫出使用構造方法進行注入的關鍵代碼  [難]  

116.  <bean id=”constructBean” class=”com.huang.ConstructBean”>  

117.   <constructor-arg><ref  bean=”bean_1”/></ constructor-arg >  

118.  <constructor-arg><ref  bean=”bean_2”/></ constructor-arg >  

119.  <constructor-arg><ref  bean=”bean_3”/></ constructor-arg >  

120.  </bean>  

121.    

122.    

123.  30. 什麼是IOC?  [難]  

124.  不創建對象,但是描述創建它們的方式。在代碼中不直接與對象和服務連接,但在配置文件中描述哪一個組件需要哪一項服務。容器(在Spring 框架中是 IOC 容器) 負責將這些聯繫在一起。   

125.  就是由容器控制程序之間的關係,而非傳統實現中,由程序代碼直接操控,控制權由應用代碼中轉到了外部容器,控制權的轉移,就是所謂的反轉。  

126.    

127.  31. 編程題: 寫一個Singleton出來。  [難]  

128.  Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。  

129.    

130.  第一種形式: 定義一個類,它的構造函數爲private的,它有一個staticprivate的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。  

131.  public class Singleton {  

132.  private Singleton(){}  

133.        private static Singleton instance = new Singleton();  

134.        public static Singleton getInstance() {  

135.          return instance;     

136.        }   

137.      }   

138.      第二種形式:   

139.  public class Singleton {   

140.    private static Singleton instance = null;  

141.    public static synchronized Singleton getInstance() {  

142.    if (instance==null)  

143.      instance=new Singleton();  

144.          return instance;   }   

145.  }  

146.    

147.    

148.      String tempStr = "";  

149.      try {  

150.        tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");  

151.        tempStr = tempStr.trim();  

152.      }  

153.      catch (Exception e) {  

154.        System.err.println(e.getMessage());  

155.      }  

156.      return tempStr;  

157.    }  

158.  32. J2EE是技術還是平臺還是框架?  [中]  

159.      J2EE本身是一個標準,一個爲企業分佈式應用的開發提供的標準平臺。  

160.      J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。  

161.    

162.  33. 我們在web應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?  [難]  

163.    Public String translate (String str) {  

164.      String tempStr = "";  

165.      try {  

166.        tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");  

167.        tempStr = tempStr.trim();  

168.      }  

169.      catch (Exception e) {  

170.        System.err.println(e.getMessage());  

171.      }  

172.      return tempStr;  

173.    }  

174.  34.如何使用靜態工廠方法來創建Bean的實例  [易]  

175.     <bean id=”staticFactoryBean” class=”com.huang.StaticFactoryBean”  

176.  factory-method=”靜態方法名”/>  

177.  相當於: StaticFactoryBean staticFactoryBean=StaticFactoryBean.靜態方法名  

178.    

179.  使用實例化的工廠方法來創建Bean的實例  

180.     <!—注意此時bean的class屬性爲空-->  

181.    <bean id=”dynamicFactory”class=”com.huang.DynamicFactory”/>  

182.    <bean id=”dynamiceFactoryBean” factory-bean=”dynamicFactory”  

183.     Factory-method=”方法名”/>  

184.  相當於: DynamicFactory dynamicFactory=new DynamicFactory();  

185.        DynamiceFactoryBean dynamiceFactoryBean=dynamicFactory.方法名  

186.  35.  從Java屬性文件讀取配置信息構建SessionFactory的具體步驟如下:  [難]  

187.     (1)創建一個Configuration對象,此時Hibernate會默認加載classpath中的配置文件hibernate.properties,代碼如下。  

188.  Configuration config = new Configuration();  

189.  2)由於在配置文件中缺少相應的配置映射文件的信息,所以此處需要通過編碼方式加載,這可以通過Configuration對象的addClass()方法實現,具體代碼如下。  

190.  config.addClass(BranchForm.class);  

191.  addClass()方法用於加載實體類。  

192.  3)完成配置文件和映射文件的加載後,將得到一個包括所有Hibernate運行期參數的Configuration實例,通過Configuration實例的buildSessionFactory()方法可以構建一個惟一的SessionFactory,代碼如下。  

193.  SessionFactory sessionFactory = config.buildSessionFactory();  

194.    

195.    

196.    

197.  36. spring框架的7個模塊是什麼?   [ 難]  

198.  答: (1) spring  AOP  --面象切面編程  

199.     (2)spring  DAO  --數據訪問對象  

200.     (3)spring ORM   --對象關係影射  

201.  (4)spring Contect  -- 上下文配置,向Spring框架提供上下文信息  

202.  (5)spring WEB  - -WEB上下文模塊  

203.  (6)\spring WEB-MVC  --實現了MVC  

204.  (7)spring CORE –核心容器提供Spring框架基本功能  

205.    

206.  37. 什麼是AOP 請祥述  [中]  

207.    答: 是面向切面編程   

208.       AOP 把軟件系統分爲兩個部分:核心關注點和橫切關注點。所謂的核心關注點,是業務處理的主要流程,也就是說這個解決方案要做的事。所謂橫切關注點,是與核心業務無關的部分,它把常發生在覈心關注點的多處,而各處基本相似,如日誌,事務,權限等 。  

209.    

210.  38.  Hinbernate和EJB的區別  [中]  

211.   答:Hibernate可以用在任何JDBC使用的場合,例如Java應用程序的數據庫訪問代碼,DAO接口的實現類,甚至可以是BMP裏面的訪問數據庫的代碼。從這個意義上來說,Hibernate和EB不是一個範疇的東西,也不存在非此即彼的關係。  

212.    

213.  39.  一般情況下,關係數據模型與對象模型之間有哪些匹配關係 [難]  

214.     答:表對應類  

215.  記錄對應表的對象  

216.  表的字段對應類的屬性  

217.    

218.  40.  事務隔離級別是由誰實現的?  [難]  

219.   答:數據庫系統‘  

220.    

221.  41. 什麼是IOC  [難]  

222.  答:IOC 是控制反轉,實現了對象之間的依賴關係的轉移成而使程序的菘耦合  

223.  42. 在Spring中給屬性有幾種賦值方式 請祥敘   [難]  

224.    答:有四種 分別是  

225.  (1)普通屬性賦值   

226.  2)集合屬性賦值  

227.  3)Properties賦值  

228.  (4)Map 屬性賦值    

229.    

230.  43.  在Spring說說Bean的alias元素和name屬性有什麼區別  [難]  

231.   答: <bean>元素name屬性可以一次爲<bean>定義多個別名  

232.         例:<bean id=”beanName” name=”alias_1,alias_2”/>  

233.         <alias>元素一次只能定義一個別名  

234.           例:<alias name=”beanName” alias=”toName”/>  

235.        注意: alias元素name屬性是bean實例名  

236.  44. Bean 的作用域用幾種,請祥敘  [難]  

237.      答: 用5種   

238.  分別是:   

239.  1. singleton  IOC容器只會創建一個Bean的唯一的實例  

240.  2. prototype  IOC容器在每次請求該Bean的時候都創建一個新的實例  

241.  3. request 在一次Http請求中 IOC容器會返回該Bean的同一個實例,而對於不同的用戶請求,則會返回不同的實例  

242.  4. session 在一次Http請求Session 中 IOC容器會返回該Bean的同一個實例,而對於不同的用戶Session,則會返回不同的實例  

243.  5. global session在一個全局Http請求Session 中  

244.    

245.  45. 簡述什麼是ORM   [中]  

246.  答:ORM的全稱是Object-Relational Mapping 翻譯成中文就是“對象-關係映射”  

247.  ORM組件的主要功能就是實現實體域對象的持久化並封裝數據庫訪問的細節  

248.     ORM本身並不是一個組件,它是具用某種功能的組件的總稱,也可以說是一種框  

249.  架結構  

250.    

251.  46.:struts中的幾個關鍵對象的作用(說說幾個關鍵對象的作用)  [中]  

252.   struts中的幾個關鍵對象:Action Global(設置語言靠它了) ModuleConfig(獲取mapping),  

253.  47.Action的作用  [中]  

254.     Action的作用是接受用戶的請求,通過調用業務方法實現業務處理的功能。  

255.  48. 在通常情況下軟件系統由表示層,業務層,持久層和數據庫層組成,Struts屬於哪一層? [難]  

256.     Struts屬於表示層組件,它的作用主要體現在以下幾個方面:  

257.  1)     輸出用戶界面和接收用戶的輸入,實現與用戶的交互。  

258.  2) 調用業務方法,完成業務處理,還要包括處理後的顯示工作。  

259.    

260.  48:Struts標籤庫由哪些組件組成?  [難]  

261.  標籤庫是組合在一起的一組JSP自定義標籤。  

262.       標籤庫由以下組件組成:  

263.  1) 標籤處理程序  

264.  2) 標籤庫描述符(TLD)文件  

265.  3) 應用程序部署描述符(web.xml)文件  

266.  4) JSP頁面中標籤庫的聲明  

267.  49. 用<bean:write>讀出一個URL和一個名稱,    [難]   

268.    用<html:link>的話怎麼組合起來。   

269.    即要達到這樣的效果     

270.    <a   href="<bean:write   name="data"   property="url">">     

271.             <bean:write   name="data"   property="tilte">     

272.    </a>  

273.  <html:link   page="<bean:write   name="data"   property="url">">     

274.        <bean:write   name="data"   property="title"/>     

275.    </html:link>     會報出屬性data無值的錯誤!(page="<bean:write   name="data"   property="url">"中的data無值。)    

276.  50:怎樣才能配置<html:button>的資源文件? [難]  

277.     在資源文件 ApplicationResourses.properties 中加入  label.login=login     

278.    在jsp頁面寫:     

279.    <html:button   name="btn_login"><bean:message   key="label.login"/></html:button>     

280.    這樣顯示頁面時,button上就會顯示label.login的對應內容“login”  

281.    

282.    

283.  51. 說說struts框架,的方法的工作原理或流程   [易]  

284.    答: 對於採用Struts框架的web應用, 在web應用啓動時會加載並初始化ActionServlet,ActionServlet從struts-config.xml中讀取配置信息,  

285.   把它們存放到各種配置對象中,例如把Action的映射信息存放在ActionMapping對象中。  

286.   當ActionServlet接收到客戶請求時,執行以下流程:     

287.      1.檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回用戶請求路徑無效信息;       

288.       2.如果ActionForm實例不存在,就創建一個ActionForm對象並在其中保存客戶提交的表單內容;       

289.       3.根據配置信息決定是否調用ActionForm的validate()方法;     

290.       4.如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,就表示表單驗證成功;     

291.       5.ActionServlet根據ActionMapping實例包含的映射信息將請求轉發給Action(如果Action實例不存在,就先創建Action實例),然後調用Action的excute()方法;       

292.     6.Action的excute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指向的JSP組件;   

293.  7.ActionForward對象指向的JSP組件生成動態網頁,返回給客戶。   

294.    

295.  52: strust的Action是不是線程安全的? [難]  

296.      答:線程安全就是你可以在多線程環境下使用它,而不需要你來對它進行特殊的處理。action都是繼承至servlet的,由於servlet就是線程不安全的(指多個線程共享一個servlet對象,所以),所以不要再action中定義類變量和實例變量,否則其他線程改變了這些值,可本線程還在使用  

297.  53 :MVC,分析一下struts是如何實現MVC的 [難]  

298.  從MVC角度來看看struts的體系結構(Model 2)與工作原理:  

299.    1)模型(Model)  

300.    在Struts的體系結構中,模型分爲兩個部分:系統的內部狀態和可以改變狀態的操作(事務邏輯)。內部狀態通常由一組ActinForm Bean表示。根據設計或應用程序複雜度的不同,這些Bean可以是自包含的並具有持續的狀態,或只在需要時才獲得數據(從某個數據庫)。大型應用程序通常在方法內部封裝事務邏輯(操作),這些方法可以被擁有狀態信息的bean調用。比如購物車bean,它擁有用戶購買商品的信息,可能還有checkOut()方法用來檢查用戶的信用卡,並向倉庫發定貨信息。 小型程序中,操作可能會被內嵌在Action類,它是struts框架中控制器角色的一部分。當邏輯簡單時這個方法很適合。 建議用戶將事務邏輯(要做什麼)與Action類所扮演的角色(決定做什麼)分開。  

301.  2)視圖(View)  

302.    視圖主要由JSP建立,struts包含擴展自定義標籤庫(TagLib),可以簡化創建完全國際化用戶界面的過程。目前的標籤庫包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。  

303.   3)控制器(Controller)  

304.    

305.    在struts中,基本的控制器組件是ActionServlet類中的實例servelt,實際使用的servlet在配置文件中由一組映射(由ActionMapping類進行描述)進行定義。對於業務邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協調完成的,其中Action扮演了真正的業務邏輯的實現者,ActionMapping與ActionForward則指定了不同業務邏輯或流程的運行方向。struts-config.xml 文件配置控制器。  

306.  54  :簡述什麼是Struts  [中]  

307.   Struts只是一個MVC框架(Framework),用於快速開發Java Web應用。Struts實現的重點在C(Controller),包括ActionServlet/RequestProcessor和我們定製的Action,也爲V(View)提供了一系列定製標籤(Custom Tag)。但Struts幾乎沒有涉及M(Model),所以Struts可以採用JAVA實現的任何形式的商業邏輯。   

308.  Spring是一個輕型容器(light-weight container),其核心是Bean工廠(Bean Factory),用以構造我們所需要的M(Model)。在此基礎之上,Spring提供了AOP(Aspect-Oriented Programming, 面向層面的編程)的實現,用它來提供非管理環境下申明方式的事務、安全等服務;對Bean工廠的擴展ApplicationContext更加方便我們實現J2EE的應用;DAO/ORM的實現方便我們進行數據庫的開發;Web MVC和Spring Web提供了Java Web應用的框架或與其他流行的Web框架進行集成。   

309.  就是說可將兩者一起使用,達到將兩者自身的特點進行互補。  

310.    

311.  55   :Struts有哪些主要功能:[難]  

312.  1.包含一個controller servlet,能將用戶的請求發送到相應的Action對象。  

313.  2. JSP自由tag庫,並且在controller servlet中提供關聯支持,幫助開發員創建交互式表單應用。  

314.  3. 提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。  

315.  Struts項目的目標是爲創建Java web應用提供一個開放源代碼的framework。Struts framework的內核是基於例如Java Servlets, JavaBeans, ResourceBundles, 和 XML,以及各種 Jakarta Commons包的標準技術的靈活的控制層。  

316.  Struts提供了它自身的控制器組件,並整合了其他技術,以提供模型和視圖。對於模型,同大多數的第三方軟件包一樣,如Hibernate, iBATIS, 或者 Object Relational Bridge,Struts能夠和標準數據連接技術相結合,如JDBC和EJB。對於視圖,Struts與JavaServer Pages協同工作,包含JSTL和JSF。  

317.  56   :Stuts框架中控制器組件的類主要有哪些?  [難]  

318.  ActionServlet ,  

319.  RequestProcessor  

320.  , Action,   

321.   ActionMapping,  

322.  ActionForward  

323.  41:Validator的組成與作用  [難]  

324.  Validator框架主要包括以下幾個部分:  

325.  1) 實現各種驗證規則的Java類  

326.  2) 配置文件  

327.  3) 資源文件  

328.  4) JSP自定義標籤  

329.  Validator組件可以很好地解決用戶輸入數據的驗證問題,但它並不是一個獨立運行的組件,它可以被嵌入到目前大部分的Web應用開發框架中。Validator組件的驗證方式有多種,既可以通過JavaScript腳本實現用戶輸入數據的頁面驗證,也可以實現在後臺處理程序中的Java驗證  

330.  57. ActionForm的作用?[難]  

331.    ActionForm屬於一種數據傳輸對象,聯繫了前臺頁面與後臺的Action方法,實現了前臺與後臺之間的數據轉換和傳遞。它的作用主要體現在以下幾個方面:   

332.  1) 在顯示頁面的時候用於完成頁面中各種控件的初始化工作。  

333.  2) 在用戶提交請求的時候,ActionForm又代表了用戶所提交的數據,供Action以及後續的業務處理方法使用  

334.  ActionForm還有另外一個作用就是對用戶提交數據的合法性進行驗證  

335.                Java  基礎就業題庫  

336.    

337.  1.  類和對象的區別?    [易]  

338.  類是對象的抽象,是模型概念,而對象是實實在在存在的事物,是現實中存在的實體  

339.  2.  Java類庫中八個標準包分別是什麼?  [易]  

340.  java.lang    提供常用的類、接口、一般異常、系統等編程語言的核心內容。   

341.  java.util    包含日期、日曆、向量、堆棧等實用工具。   

342.  java.io      包含輸入輸出流類、文件類等與輸入輸出I/O有關的類。       

343.  java.awt     包含窗口和屏幕元素類,事件處理接口等與圖形用戶界面有關的內容。      

344.  java.applet  提供爲編寫applet小程序所需要的類。   

345.  java.text    提供與文本有關的類。   

346.  java.net     包含url類等與網絡傳輸有關的東西。       

347.  java.sql     提供與數據庫應用相關的類和接口。  

348.    

349.  3.  接口和抽象類有什麼區別?    [中]  

350.    

351.  接口是公開的,不能包含私有的方法或變量,而抽象類是可以有私有方法或私有變量的,   

352.  實現接口的一定要實現接口裏定義的所有方法,而實現抽象類可以有選擇地重寫需要用到的方法,  

353.  接口可以實現多重繼承,而一個類只能繼承一個超類,但可以通過繼承多個接口實現多重繼承,  

354.  接口還有標識(裏面沒有任何方法,如Remote接口)和數據共享(裏面的變量全是常量)的作用.  

355.  一般的應用裏,最頂級的是接口,然後是抽象類實現接口,最後纔到具體類實現。  

356.    

357.    

358.  4.  說說java中的內存分配?  [難]  

359.  Java把內存分成兩種,一種叫做棧內存,一種叫做堆內存  

360.  在函數中定義的一些基本類型的變量和對象的引用變量都是在函數的棧內存中分配。當在一段代碼塊中定義一個變量時,java就在棧中爲這個變量分配內存空間,當超過變量的作用域後,java會自動釋放掉爲該變量分配的內存空間,該內存空間可以立刻被另作他用。   

361.    

362.  堆內存用於存放由new創建的對象和數組。在堆中分配的內存,由java虛擬機自動垃圾回收器來管理。在堆中產生了一個數組或者對象後,還可以在棧中定義一個特殊的變量,這個變量的取值等於數組或者對象在堆內存中的首地址,在棧中的這個特殊的變量就變成了數組或者對象的引用變量,以後就可以在程序中使用棧內存中的引用變量來訪問堆中的數組或者對象,引用變量相當於爲數組或者對象起的一個別名,或者代號。   

363.    

364.  引用變量是普通變量,定義時在棧中分配內存,引用變量在程序運行到作用域外釋放。而數組&對象本身在堆中分配,即使程序運行到使用new產生數組和對象的語句所在地代碼塊之外,數組和對象本身佔用的堆內存也不會被釋放,數組和對象在沒有引用變量指向它的時候,才變成垃圾,不能再被使用,但是仍然佔着內存,在隨後的一個不確定的時間被垃圾回收器釋放掉。這個也是java比較佔內存的主要原因。但是在寫程序的時候,可以人爲的控制  

365.    

366.  5.  Character類有哪些常用方法?  [難]  

367.  charValue()   

368.  返回字符對象對應的值。   

369.  digit(charint)   

370.  以指定基數返回字符 ch 對應的數值。   

371.  equals(Object)   

372.  比較該對象和指定對象。   

373.  forDigit(intint)   

374.  確定以指定基數指定的數對應的字符。   

375.  getNumericValue(char)   

376.  返回此字符對應的 Unicode 的非負整型值。   

377.  getType(char)   

378.  返回一個表示字符種類的值。   

379.  hashCode()   

380.  返回此字符對應的哈希碼。   

381.  isDefined(char)   

382.  判定一個字符在 Unicode 中是否有定義。   

383.  isDigit(char)   

384.  判定指定字符是否爲數字。   

385.  isIdentifierIgnorable(char)   

386.  判定指定字符在 Java 標識符中或 Unicode 標識符中是否應看作是一個可忽略字符。   

387.  isISOControl(char)   

388.  判定指定字符是否爲 ISO 控制字符。   

389.  isJavaIdentifierPart(char)   

390.  判定指定字符是否爲 Java 標識符中除首字符外的字符。   

391.  isJavaIdentifierStart(char)   

392.  判定指定字符是否可作爲 Java 標識符的首字符。   

393.  isJavaLetter(char)   

394.  判定指定字符是否爲 Java 字母,若是,它可作爲 Java 語言中一個標識符的首字符。 不推薦使用該方法。   

395.  isJavaLetterOrDigit(char)   

396.  判定指定字符是否爲 Java 字母或數字,若是,它可作爲 Java 語言中的一個標識符除首字符外的字符。 不推薦使用該方法。   

397.  isLetter(char)   

398.  判定指定字符是否爲字母。   

399.  isLetterOrDigit(char)   

400.  判定指定字符是否爲字母或數字。   

401.  isLowerCase(char)   

402.  判定指定字符是否爲小寫字符。   

403.  isSpace(char)   

404.  判定指定字符是否爲 ISO-LATIN-1 空格。 不推薦使用該方法。   

405.  isSpaceChar(char)   

406.  判定指定字符是否爲 Unicode 空白字符。   

407.  isTitleCase(char)   

408.  判定指定字符是否爲標題字符。   

409.  isUnicodeIdentifierPart(char)   

410.  判定指定字符是否爲 Unicode 標識符中除首字符外的字符。   

411.  isUnicodeIdentifierStart(char)   

412.  判定指定字符是否可作爲 Unicode 標識符首字符。   

413.  isUpperCase(char)   

414.  判定指定字符是否爲大寫字符。   

415.  isWhitespace(char)   

416.  據 Java 語言,判定指定字符是否爲空格。   

417.  toLowerCase(char)   

418.  將給定字符映射爲對應的小寫字符,若沒有對應的小寫字符,返回此字符本身。   

419.  toString()   

420.  返回表示此字符值的串對象。   

421.  toTitleCase(char)   

422.  將字符參數轉換爲標題字符。   

423.  toUpperCase(char)   

424.  將字符參數轉換爲大寫字符。   

425.  5.Boolean類有哪些方法?  

426.  booleanValue()   

427.  返回 Boolean 對象對應的布爾值。   

428.  equals(Object)   

429.  當且僅當參數非空,且是包含與此對象相同的布爾值的布爾對象時,返回 true。   

430.  getBoolean(String)   

431.  當且僅當以參數命名的系統屬性存在,且等於 "true" 時,返回爲 true。   

432.  hashCode()   

433.  返回此布爾值對應的哈希碼。   

434.  toString()   

435.  返回表示當前布爾值的一個串對象。   

436.  valueOf(String)   

437.  返回表示指定串的布爾值。  

438.    

439.  6.  String s = new String("xyz");創建了幾個String Object?    [中]  

440.     兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。   

441.  7.  String與StringBuffer有什麼區別?    [難]  

442.  從表面看來String類只用一個加號(+)便完成了字符串的拼接,而StringBuffer類卻要調用一個append()方法,是否實現起來更簡潔,更單純呢?其實不然,讓我們瞭解一下程序運行內部發生了哪些事情:   

443.    

444.  經編譯後程序的bytecode(字節碼)展示出了實質: 在用String類對象直接拼接時,JVM會創建一個臨時的StringBuffer類對象,並調用其append()方法完成字符串的拼接,這是因爲String類是不可變的,拼接操作不得不使用StringBuffer類(並且--JVM會將"You are nice.""I love you so much."創建爲兩個新的String對象)。之後,再將這個臨時StringBuffer對象轉型爲一個String,代價不菲!可見,在這一個簡單的一次拼接過程中,我們讓程序創建了四個對象:兩個待拼接的String,一個臨時StringBuffer,和最後將StringBuffer轉型成爲的String--它當然不是最初的str了,這個引用的名稱沒變,但它指向了新的String對象。   

445.    

446.  而如果直接使用StringBuffer類,程序將只產生兩個對象:最初的StringBuffer和拼接時的String("I love you so much."),也不再需要創建臨時的StringBuffer類對象而後還得將其轉換回String對象。  

447.    

448.  short s1 = 1; s1 = s1 + 1;有什麼錯?  

449.  short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型)  

450.      short s1 = 1; s1 += 1;有什麼錯?   

451.  short s1 = 1; s1 += 1;(可以正確編譯)   

452.    

453.  8.  是否可以繼承String類?   [難]  

454.  String類是final類故不可以繼承。  

455.    

456.    

457.  9.  throwthrows有什麼區別?    [中]  

458.    

459.  throws是用來聲明一個方法可能拋出的所有異常信息  

460.  throw則是指拋出的一個具體的異常類型。  

461.  通常在一個方法(類)的聲明處通過throws聲明方法(類)可能拋出的異常信息,而在方法(類)內部通過throw聲明一個具體的異常信息。  

462.  throws通常不用顯示的捕獲異常,可由系統自動將所有捕獲的異常信息拋給上級方法;  

463.  throw則需要用戶自己捕獲相關的異常,而後在對其進行相關包裝,最後在將包裝後的異常信息拋出。  

464.    

465.  throws語句  

466.  throws用來標明一個成員函數可能拋出的各種"異常"。對大多數Exception子類來說,Java編譯器會強迫你聲明在一個成員函數中拋出的"異常"的類型。如果"異常"的類型是Error或RuntimeException,或它們的子類,這個規則不起作用,因爲這copy;在程序 的正常部分中是不期待出現的。如果你想明確地拋出一個RuntimeException,你必須用throws語句來聲明它的類型。這就重新定義了成員函數的定義語法:type method-name(arg-list) throws exception-list { }下面是一段程序,它拋出了一個"異常", 但既沒有捕捉它,也沒有用throws來聲明。這在編譯時將不會通過。  

467.    

468.  try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?  

469.  會執行,在return前執行。  

470.    

471.  10. 常見的runtime exception有哪些?。   [中]  

472.  ArithmeticException,   

473.  ArrayStoreException,   

474.  BufferOverflowException,   

475.  BufferUnderflowException,   

476.  CannotRedoException, CannotUndoException,  

477.  ClassCastException,  

478.  CMMException,   

479.  ConcurrentModificationException,  

480.  DOMException,   

481.  EmptyStackException, IllegalArgumentException,   

482.  IllegalMonitorStateException,   

483.  IllegalPathStateException,   

484.  IllegalStateException,   

485.  ImagingOpException, IndexOutOfBoundsException,   

486.  MissingResourceException,   

487.  NegativeArraySizeException,   

488.  NoSuchElementException, NullPointerException,   

489.  ProfileDataException,   

490.  ProviderException,   

491.  RasterFormatException,   

492.  SecurityException,   

493.  SystemException, UndeclaredThrowableException,   

494.  UnmodifiableSetException,   

495.  UnsupportedOperationException  

496.  NullPointException  

497.    

498.  11. 介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?    [難]  

499.  答:Collection FrameWork如下:   

500.  Collection   

501.  ├List   

502.  │├LinkedList   

503.  │├ArrayList   

504.  │└Vector   

505.  │ └Stack   

506.  └Set   

507.  Map   

508.  ├Hashtable   

509.  ├HashMap   

510.  └WeakHashMap   

511.  Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)   

512.  Map提供key到value的映射   

513.    

514.    

515.  12. ArrayList和Vector的區別,HashMap和Hashtable的區別  [難]  

516.  答:就ArrayList與Vector主要從二方面來說.   

517.  一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的   

518.  二.數據增長:當需要增長時,Vector 默認增長爲原來一培,而ArrayList卻是原來的一半   

519.  就HashMap與HashTable主要從三方面來說。  

520.  一.歷史原因:Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現   

521.  二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的   

522.  三.值:只有HashMap可以讓你將空值作爲一個表的條目的key或value  

523.    

524.    

525.  13. Math.round(11.5)等於多少? Math.round(-11.5)等於多少?    [難]  

526.  Math.round(11.5)==12  

527.  Math.round(-11.5)==-11  

528.  round方法返回與參數最接近的長整數.  

529.  14. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?  [難]  

530.  switch(expr1)中,expr1是一個整數表達式。應該是 int、 short、 char byte。  

531.  long,string 都不能作用於swtich。  

532.    

533.    

534.  15. GC是什麼? 爲什麼要有GC?    [難]  

535.  GC是垃圾收集的意思(Gabage Collection)  

536.  Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,  

537.  Java語言沒有提供釋放已分配內存的顯示操作方法。  

538.    

539.    

540.    

541.  16. 什麼叫方法重載   [中]  

542.  方法重載就是一個同名方法,有多種不同的簽名   

543.  說白了就是一個同名方法可以傳入不同個數或類型的參數   

544.  之間可以互相調用  

545.    

546.    

547.  17. 數組有沒有length()這個方法? String有沒有length()這個方法?  [中]  

548.  數組沒有length()這個方法,有length的屬性。String有有length()這個方法  

549.    

550.  18.   什麼是抽象類抽象類  [中]  

551.  僅提供一個類型的部分實現。抽象類可以有實例變量,以及一個或多個構造函數。抽象類可以同時有抽象方法和具體方法。一個抽象類不會有實例,這些構造函數不能被客戶端調用來創建實例。一個抽象類的構造函數可以被其子類調用,從而使一個抽象類的所有子類都可以有一些共同的實現,而不同的子類可以在此基礎上有其自己的實現。  

552.    

553.  19.  抽象類的用途  [中]  

554.  1)  具體類不是用來繼承的。 Scott Meyers曾指出,只要有可能,不要叢具體類繼承。2)  假設有2個具體類,類A和類B,類B是類A 的子類,那麼一個最簡單的修改方案是應當建立一個抽象類(或java接口)C,然後讓類A和類B成爲抽象類C的子類。3)  抽象類應當擁有儘可能多的共同代碼。以提高代碼的複用率。4)  抽象類應當擁有儘可能少的數據。  

555.  20  .java中接口有什麼用?   [難]  

556.  java不允許多重繼承,也就是說一個子類只能有一個父類,Son extends FatherA,FatherB 是錯誤的   

557.  爲了彌補這點不足,java允許實現多個接口,Son extends FatherA implements AnotherFatherA,AnotherFatherB是允許的   

558.  接口中的方法沒有實體,就這一點而言就相當於abstact class,如:   

559.  interface ainter{   

560.  void dosth(int i);   

561.  }   

562.  ainter是一個接口,它僅僅聲明瞭一個方法dosth,而沒有具體實現它   

563.  class aclass implements ainter   

564.  {   

565.  public void dosth(int i) {   

566.    

567.  //在這裏你可以不作任何處理,但是必須實現方法體   

568.  }   

569.  }   

570.  aclass實現了ainter這個接口,因此它必須實現ainter中的方法dosth  

571.    

572.  21. 什麼叫方法重載  [易]  

573.  方法重載就是一個同名方法,有多種不同的簽名   

574.  說白了就是一個同名方法可以傳入不同個數或類型的參數   

575.  之間可以互相調用  

576.    

577.    

578.  22. 垃圾回收機制的原理?  [難]  

579.  在JAVA中 ,JAVA VM 每隔一段時間就會查看每一塊由NEW分配的內存空間,看指向它的有效引用是否存在,如果這個引用不存在,系統會自動將這塊空間歸入空閒內存區.這個過程被稱爲 垃圾收集.  

580.    

581.    

582.  23.. 什麼叫面向對象?   [中]  

583.  面向對象是一種新興的程序設計方法,或者是一種新的程序設計規範(paradigm),其基本思想是使用對象、類、繼承、封裝、消息等基本概念來進行程序設計。從現實世界中客觀存在的事物(即對象)出發來構造軟件系統,並且在系統構造中儘可能運用人類的自然思維方式。開發一個軟件是爲了解決某些問題,這些問題所涉及的業務範圍稱作該軟件的問題域。其應用領域不僅僅是軟件,還有計算機體系結構和人工智能等。  

584.    

585.    

586.    

587.  24. 面向對象的涉及方法有哪些?   [中]  

588.   OOA-Object Oriented Analysis     面向對象的分析  

589.      

590.    OOD-Object Oriented Design      面向對象的設計  

591.      

592.  OOI-Object Oriented Implementation  面向對象的實現  

593.    

594.    

595.  25. jvm工作原理   [難]  

596.  運行jvm 字符碼的工作是由解釋器來完成的。解釋執行過程分三步進行:  

597.    

598.  代碼的裝入、代碼的校驗、和代碼的執行。  

599.  裝入代碼的工作由“類裝載器class loader”完成。類裝載器負責裝入運  

600.    

601.  行一個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被調  

602.    

603.  用的類。當類裝載器裝入一個類時,該類被放在自己的名字空間中。除了  

604.    

605.  通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其他  

606.    

607.  類。在本臺計算機的所有類都在同一地址空間中,而所有從外部引進的類  

608.    

609.  ,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間  

610.    

611.  獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。  

612.    

613.  當裝入了運行程序需要的所有類後,解釋器便可確定整個可執行程序的內  

614.    

615.  存佈局。解釋器爲符號引用與特定的地址空間建立對應關係及查詢表。通  

616.    

617.  過在這一階段確定代碼的內佈局,java很好地解決了由超類改變而使子類  

618.    

619.  崩潰的問題,同時也防止了代碼的非法訪問。  

620.  隨後,被裝入的代碼由字節碼校驗器進行檢查。校驗器可以發現操作數棧  

621.    

622.  益處、非法數據類型轉化等多種錯誤。通過校驗後,代碼便開始執行了。  

623.  java字節碼的執行有兩種方式:  

624.  1) 即時編譯方式:解釋器先將字節編譯成機器碼,然後再執行該機器碼  

625.  。  

626.  2)解釋執行方式:解釋器通過每次解釋並執行一小段代碼來完成java字節  

627.    

628.  碼程序的所有操作。  

629.    

630.    

631.    

632.  26. .java中輸入輸出流有哪些相關的類?  [難]  

633.  Input和Output   

634.  1. stream代表的是任何有能力產出數據的數據源,或是任何有能力接收數據的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括兩種類型:   

635.    

636.  1.1 以字節爲導向的stream   

637.  以字節爲導向的stream,表示以字節爲單位從stream中讀取或往stream中寫入信息。以字節爲導向的stream包括下面幾種類型:   

638.  1) input stream:   

639.  1) ByteArrayInputStream:把內存中的一個緩衝區作爲InputStream使用   

640.  2) StringBufferInputStream:把一個String對象作爲InputStream   

641.  3) FileInputStream:把一個文件作爲InputStream,實現對文件的讀取操作   

642.  4) PipedInputStream:實現了pipe的概念,主要在線程中使用   

643.  5) SequenceInputStream:把多個InputStream合併爲一個InputStream   

644.  2) Out stream   

645.  1) ByteArrayOutputStream:把信息存入內存中的一個緩衝區中   

646.  2) FileOutputStream:把信息存入文件中   

647.  3) PipedOutputStream:實現了pipe的概念,主要在線程中使用   

648.  4) SequenceOutputStream:把多個OutStream合併爲一個OutStream   

649.  1.2 以Unicode字符爲導向的stream   

650.  以Unicode字符爲導向的stream,表示以Unicode字符爲單位從stream中讀取或往stream中寫入信息。以Unicode字符爲導向的stream包括下面幾種類型:   

651.  1) Input Stream   

652.  1) CharArrayReader:與ByteArrayInputStream對應   

653.  2) StringReader:與StringBufferInputStream對應   

654.  3) FileReader:與FileInputStream對應   

655.  4) PipedReader:與PipedInputStream對應   

656.  2) Out Stream   

657.  1) CharArrayWrite:與ByteArrayOutputStream對應   

658.  2) StringWrite:無與之對應的以字節爲導向的stream   

659.  3) FileWrite:與FileOutputStream對應   

660.  4) PipedWrite:與PipedOutputStream對應   

661.  以字符爲導向的stream基本上對有與之相對應的以字節爲導向的stream。兩個對應類實現的功能相同,字是在操作時的導向不同。   

662.  如CharArrayReader:和ByteArrayInputStream的作用都是把內存中的一個緩衝區作爲InputStream使用,所不同的是前者每次從內存中讀取一個字節的信息,而後者每次從內存中讀取一個字符。   

663.  1.3 兩種不現導向的stream之間的轉換   

664.  InputStreamReader和OutputStreamReader:把一個以字節爲導向的stream轉換成一個以字符爲導向的stream。   

665.  2. stream添加屬性   

666.  2.1 “爲stream添加屬性”的作用   

667.  運用上面介紹的Java中操作IO的API,我們就可完成我們想完成的任何操作了。但通過FilterInputStream和FilterOutStream的子類,我們可以爲stream添加屬性。下面以一個例子來說明這種功能的作用。   

668.  如果我們要往一個文件中寫入數據,我們可以這樣操作:   

669.  FileOutStream fs = new FileOutStream(“test.txt”);   

670.  然後就可以通過產生的fs對象調用write()函數來往test.txt文件中寫入數據了。但是,如果我們想實現“先把要寫入文件的數據先緩存到內存中,再把緩存中的數據寫入文件中”的功能時,上面的API就沒有一個能滿足我們的需求了。但是通過FilterInputStream和FilterOutStream的子類,爲FileOutStream添加我們所需要的功能。   

671.  2.2 FilterInputStream的各種類型   

672.  2.2.1 用於封裝以字節爲導向的InputStream   

673.  1) DataInputStream:從stream中讀取基本類型(intchar等)數據。   

674.  2) BufferedInputStream:使用緩衝區   

675.  3) LineNumberInputStream:會記錄input stream內的行數,然後可以調用getLineNumber()和setLineNumber(int)   

676.  4) PushbackInputStream:很少用到,一般用於編譯器開發   

677.  2.2.2 用於封裝以字符爲導向的InputStream   

678.  1) 沒有與DataInputStream對應的類。除非在要使用readLine()時改用BufferedReader,否則使用DataInputStream   

679.  2) BufferedReader:與BufferedInputStream對應   

680.  3) LineNumberReader:與LineNumberInputStream對應   

681.  4) PushBackReader:與PushbackInputStream對應   

682.  2.3 FilterOutStream的各種類型   

683.  2.2.3 用於封裝以字節爲導向的OutputStream   

684.  1) DataIOutStream:往stream中輸出基本類型(intchar等)數據。   

685.  2) BufferedOutStream:使用緩衝區   

686.  3) PrintStream:產生格式化輸出   

687.  2.2.4 用於封裝以字符爲導向的OutputStream   

688.  1) BufferedWrite:與對應   

689.  2) PrintWrite:與對應   

690.  3. RandomAccessFile   

691.  1) 可通過RandomAccessFile對象完成對文件的讀寫操作   

692.  2) 在產生一個對象時,可指明要打開的文件的性質:r,只讀;w,只寫;rw可讀寫   

693.  3) 可以直接跳到文件中指定的位置   

694.  4. I/O應用的一個例子   

695.  import java.io.*;   

696.  public class TestIO{   

697.  public static void main(String[] args)   

698.  throws IOException{   

699.  //1.以行爲單位從一個文件讀取數據   

700.  BufferedReader in =   

701.  new BufferedReader(   

702.  new FileReader("F:\\nepalon\\TestIO.java"));   

703.  String s, s2 = new String();   

704.  while((s = in.readLine()) != null)   

705.  s2 += s + "\n";   

706.  in.close();   

707.    

708.  //1b. 接收鍵盤的輸入   

709.  BufferedReader stdin =   

710.  new BufferedReader(   

711.  new InputStreamReader(System.in));   

712.  System.out.println("Enter a line:");   

713.  System.out.println(stdin.readLine());   

714.    

715.  //2. 從一個String對象中讀取數據   

716.  StringReader in2 = new StringReader(s2);   

717.  int c;   

718.  while((c = in2.read()) != -1)   

719.  System.out.println((char)c);   

720.  in2.close();   

721.    

722.  //3. 從內存取出格式化輸入   

723.  try{   

724.  DataInputStream in3 =   

725.  new DataInputStream(   

726.  new ByteArrayInputStream(s2.getBytes()));   

727.  while(true)   

728.  System.out.println((char)in3.readByte());   

729.  }   

730.  catch(EOFException e){   

731.  System.out.println("End of stream");   

732.  }   

733.    

734.  //4. 輸出到文件   

735.  try{   

736.  BufferedReader in4 =   

737.  new BufferedReader(   

738.  new StringReader(s2));   

739.  PrintWriter out1 =   

740.  new PrintWriter(   

741.  new BufferedWriter(   

742.  new FileWriter("F:\\nepalon\\ TestIO.out")));   

743.  int lineCount = 1;   

744.  while((s = in4.readLine()) != null)   

745.  out1.println(lineCount++ + "" + s);   

746.  out1.close();   

747.  in4.close();   

748.  }   

749.  atch(EOFException ex){   

750.  System.out.println("End of stream");   

751.  }   

752.    

753.  //5. 數據的存儲和恢復   

754.  try{   

755.  DataOutputStream out2 =   

756.  new DataOutputStream(   

757.  new BufferedOutputStream(   

758.  new FileOutputStream("F:\\nepalon\\ Data.txt")));   

759.  out2.writeDouble(3.1415926);   

760.  out2.writeChars("\nThas was pi:writeChars\n");   

761.  out2.writeBytes("Thas was pi:writeByte\n");   

762.  out2.close();   

763.  DataInputStream in5 =   

764.  new DataInputStream(   

765.  new BufferedInputStream(   

766.  new FileInputStream("F:\\nepalon\\ Data.txt")));   

767.  BufferedReader in5br =   

768.  new BufferedReader(   

769.  new InputStreamReader(in5));   

770.  System.out.println(in5.readDouble());   

771.  System.out.println(in5br.readLine());   

772.  System.out.println(in5br.readLine());   

773.  }   

774.  catch(EOFException e){   

775.  System.out.println("End of stream");   

776.  }   

777.    

778.    

779.  27. 構造器Constructor是否可被(覆蓋)override?  [難]  

780.  構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。  

781.    

782.    

783.  28. JAVA反射機制作用是什麼?   [難]  

784.  可以於運行時加載、探知、使用編譯期間完全未知的   

785.  classes。換句話說,Java程序可以加載一個運行時才得知名稱   

786.  class,獲悉其完整構造(但不包括methods定義),並生成其   

787.  對象實體、或對其fields設值、或喚起其methods1。  

788.    

789.    

790.    

791.    

792.  29. web應用程序體系結構是怎樣的?   [難]  

793.  一般分爲表示層、業務層、數據存取層  

794.  30. .GET和POST有什麼區別?   [難]  

795.  GET是明碼傳遞,POST是暗碼傳遞  

796.    

797.    

798.  31. HTTP協議的特點?  [中]  

799.  使用端口發送和接受消息 。端口是協議發送和接收數據的信道或機制 ,80是默認端口  

800.  通過這種協議傳遞數據服務器不會保存連接信息,因此又稱爲連接信息。  

801.    

802.  32. 如何通過RandomAccessFile操作文件  [難]   

803.  RandomAccessFile rf =   

804.  new RandomAccessFile("F:\\nepalon\\ rtest.dat""rw");   

805.  for(int i=0; i<10; i++)   

806.  rf.writeDouble(i*1.414);   

807.  rf.close();   

808.    

809.  rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat""r");   

810.  for(int i=0; i<10; i++)   

811.  System.out.println("Value " + i + "" + rf.readDouble());   

812.  rf.close();   

813.    

814.  rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat""rw");   

815.  rf.seek(5*8);   

816.  rf.writeDouble(47.0001);   

817.  rf.close();   

818.    

819.  rf = new RandomAccessFile("F:\\nepalon\\ rtest.dat""r");   

820.  for(int i=0; i<10; i++)   

821.  System.out.println("Value " + i + "" + rf.readDouble());   

822.  rf.close();   

823.  }   

824.  }   

825.    

826.    

827.  32. 靜態方法有什麼好處?  [難]  

828.    

829.  1)在Java裏,可以定義一個不需要創建對象的方法,這種方法就是靜態方法。要實現這樣的效果,只需要在類中定義的方法前加上static關鍵字。例如:public static int maximum(int n1,int n2)  

830.  使用類的靜態方法時,注意:  

831.  a)           在靜態方法裏只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因爲,對於非靜態的方法和變量,需要先創建類的實例對象後纔可使用,而靜態方法在使用前不用創建任何對象。  

832.  b)          靜態方法不能以任何方式引用thissuper關鍵字,因爲靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生。  

833.  2)靜態變量是屬於整個類的變量而不是屬於某個對象的。注意不能把任何方法體內的變量聲明爲靜態,例如:  

834.  fun()  

835.  {  

836.     static int i=0;//非法。  

837.  }  

838.  3)一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且之被執行一次,靜態塊常用來執行類屬性的初始化。例如:  

839.  static  

840.  {  

841.  }  

842.    

843.    

844.  33. Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?   [中]  

845.  Set裏的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判斷兩個對象是否相等。  

846.    

847.    

848.    

849.  34. JAVA中的靜態方法有什麼理解?   [難]  

850.    

851.  在Java裏,可以定義一個不需要創建對象的方法,這種方法就是靜態方法。要實現這樣的效果,只需要在類中定義的方法前加上static關鍵字。例如:public static int maximum(int n1,int n2)  

852.  使用類的靜態方法時,注意:  

853.  a)           在靜態方法裏只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因爲,對於非靜態的方法和變量,需要先創建類的實例對象後纔可使用,而靜態方法在使用前不用創建任何對象。  

854.  b)          靜態方法不能以任何方式引用thissuper關鍵字,因爲靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生。  

855.  2)靜態變量是屬於整個類的變量而不是屬於某個對象的。注意不能把任何方法體內的變量聲明爲靜態,例如:  

856.  fun()  

857.  {  

858.     static int i=0;//非法。  

859.  }  

860.  3)一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且之被執行一次,靜態塊常用來執行類屬性的初始化。例如:  

861.  static  

862.  {  

863.  }  

864.    

865.  35. JSP中動態INCLUDE與靜態INCLUDE的區別? [難]  

866.  動態INCLUDE用jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,  

867.  適合用於包含動態頁面,並且可以帶參數。  

868.  靜態INCLUDE用include僞碼實現,定不會檢查所含文件的變化,適用於包含靜態頁面<%@ include file="included.htm" %>  

869.    

870.    

871.  36. Java有沒有goto?  

872.  java中的保留字,現在沒有在java中使用。  

873.    

874.  37. 啓動一個線程是用run()還是start()?   [難]  

875.  啓動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀態,這意味着它可以由JVM調度並執行。這並不意味着線程就會立即運行。run()方法可以產生必須退出的標誌來停止一個線程。  

876.    

877.    

878.  38. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? [易]  

879.  switch(expr1)中,expr1是一個整數表達式。應該是 int、 short、 char byte。  

880.  long,string 都不能作用於swtich。  

881.    

882.  39try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?  [難]  

883.  會執行,在return前執行。  

884.    

885.  40. 兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?  

886.  不對,有相同的hash code。  [易]  

887.  \  

888.  41char型變量中能不能存貯一箇中文漢字?爲什麼?   [難]  

889.  可以,因爲java中以unicode編碼,一個char16個字節,所以放一箇中文是沒問題的  

890.    

891.  42. Java中的線程有四種狀態分別是是什麼? [難]  

892.  運行、就緒、掛起、結束。  

893.    

894.  43. java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?  [難]  

895.  字節流,字符流。  

896.  字節流繼承於InputStream \ OutputStream,  

897.  字符流繼承於InputStreamReader \ OutputStreamWriter。  

898.    

899.  44. 靜態變量和實例變量的區別? [中]  

900.  static i = 10//常量  

901.  class A a;  a.i =10;//可變  

902.    

903.  45. 什麼是java序列化,如何實現java序列化?  [難]  

904.  序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操作時所引發的問題。  

905.  序列化的實現:  

906.  將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是爲了標註該對象是可被序列化  

907.    

908.  46. 是否可以從一個static方法內部發出對非static方法的調用? [難]  

909.  不可以,如果其中包含對象的method();不能保證對象初始化.  

910.    

911.  47. 在JAVA中,如何跳出當前的多重嵌套循環? [難]  

912.  breakreturn 方法。  

913.    

914.  48. 面向對象的特徵有哪些方面    [中]  

915.  1.抽象:  

916.  抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。  

917.  2.繼承:  

918.  繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱爲類繼承。新類繼承了原始類的特性,新類稱爲原始類的派生類(子類),而原始類稱爲新類的基類(父類)。派生類可以從它的基類那裏繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要。  

919.  3.封裝:  

920.  封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。  

921.  4. 多態性:  

922.  多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行爲共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。  

923.    

924.  49. String是最基本的數據類型嗎?  [中]  

925.  基本數據類型包括byteintcharlongfloatdoublebooleanshort。  

926.  java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。爲了提高效率節省空間,我們應該用StringBuffer類  

927.  50int 和 Integer 有什麼區別  [中]  

928.  Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java爲int提供的封裝類。Java爲每個原始類型提供了封裝類。  

929.    

930.  51. 運行時異常與一般異常有何異同?   [ 難]  

931.  異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。  

932.    

933.  52. &和&&的區別。 [ 中]   

934.  &是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。  

935.    

936.  53finalfinally, finalize的區別。  [中]  

937.  final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。  

938.  finally是異常處理語句結構的一部分,表示總是執行。  

939.  finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉文件等。  

940.    

941.    

942.  Jsp/servlet面試題  

943.  1. 四種會話跟蹤技術是什麼?(jsp) (中)  

944.  答:cookie,url重寫,session,隱藏表單域。  

945.  2.不同客戶端可不可以共享Session?不可以 (易)  

946.  Jps和Servlet之間可不可以用session傳值?可以  

947.  3.簡介cookie的有關知識 (中)  

948.  瀏覽器與WEB服務器之間是使用HTTP協議進行通信的,當某個用戶發出頁面請求時,WEB服務器只是簡單的進行響應,然後就關閉與該用戶的連接。因此當一個請求發送到WEB服務器時,無論其是否是第一次來訪,服務器都會把它當作第一次來對待,這樣的不好之處可想而知。爲了彌補這個缺陷,Netscape 開發出了cookie這個有效的工具來保存某個用戶的識別信息,因此人們暱稱爲“小甜餅”。cookies是一種WEB服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段:Netscape Navigator使用一個名爲cookies.txt本地文件保存從所有站點接收的Cookie信息;而IE瀏覽器把Cookie信息保存在類似於C: \windows\cookies的目錄下。當用戶再次訪問某個站點時,服務端將要求瀏覽器查找並返回先前發送的Cookie信息,來識別這個用戶。  

949.    cookies給網站和用戶帶來的好處非常多:  

950.  1、Cookie能使站點跟蹤特定訪問者的訪問次數、最後訪問時間和訪問者進入站點的路徑  

951.  2、Cookie能告訴在線廣告商廣告被點擊的次數 ,從而可以更精確的投放廣告  

952.  3、Cookie有效期限未到時,Cookie能使用戶在不鍵入密碼和用戶名的情況下進入曾經瀏覽過的一些站點  

953.  4、Cookie能幫助站點統計用戶個人資料以實現各種各樣的個性化服務   

954.  JSP是使用如下的語法格式來創建cookie的:  

955.    Cookie cookie_name =new Cookie(""Parameter"",""Value"");  

956.    例如:Cookie newCookie =new Cookie(""username"",""zheng""); response.addCookie(newCookie);  

957.    

958.  4.在瀏覽器的打開時再新打開一個瀏覽器還是同一個session嗎? (中)  

959.  對IE而言不是同一個SESSION  

960.  5.描述Cookie和Session的作用,區別和各自的應用範圍 (中)  

961.  Cookie和Session都可以用來在多個頁面之間共享數據,區別是Cookie保存在客戶端,可以設置比較長的保存時間.而Session保存在服務器端,通常生存時間較短。如果客戶端禁用了Cookie,Cookie將無法工作,而session不受這一影響。一般來說保密性高、保存時間短的信息適合用session來存放,而Cookie適合存放需要長期保存的非敏感數據。  

962.    

963.  6.如何實現購物車添加新項,又不使購物車中原有項目被取消? (易)  

964.  可以將購物車存放在session當中  

965.    

966.  7.Cookie的過期時間如何設置? (易)  

967.  使用setMaxAge(int exp)方法  

968.    

969.  8.如果BROWSER已關閉了cookies,在JSP中我如何打開session? (中)  

970.  如果Cookie被禁用,session將通過url重寫的方式來傳送,所以不會影響session的使用  

971.    

972.  9.include指令和include動作的區別  (中)  

973.     

974.  10. Jsp有哪些常用動作?作用分別是什麼?(jsp)  (中)  

975.  答:JSP有6種常用基本動作 jsp:include:在頁面被請求的時候引入一個文件。   

976.  jsp:useBean:尋找或者實例化一個JavaBean。   

977.  jsp:setProperty:設置JavaBean的屬性。   

978.  jsp:getProperty:輸出某個JavaBean的屬性。   

979.  jsp:forward:把請求轉到一個新的頁面。   

980.  jsp:plugin:根據瀏覽器類型爲Java插件生成OBJECT或EMBED標記。  

981.    

982.  11. "forward與redirect區別? (中)  

983.  Forward是在服務器端進行分發,分發後地址欄無變化,用戶看不到分發後的地址.而redirect是在客戶端進行的頁面重定向,地址欄上會顯示重定向後的網頁.forward的頁面只能是在同一個web應用程序之內,而重定向可以定位到外部資源.forward後還是同一個request請求,而重定向後以前的request請求就不存在了.  

984.    

985.  12.Jsp和Servlet中的請求轉發分別如何實現? (易)  

986.  Jsp中使用<jsp:forward>動作,servlet中使用RequestDistpatcher對象的forward方法"  

987.    

988.  13.什麼是web容器?(易)  

989.  答:給處於其中的應用程序組件(JSP,SERVLET)提供一個環境,使JSP,SERVLET直接更容器中的環境變量接口交互,不必關注其它系統問題。主要有WEB服務器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵守J2EE規範中的WEB APPLICATION 標準。我們把遵守以上標準的WEB服務器就叫做J2EE中的WEB容器。  

990.    

991.  14.應用服務器有那些? (中)  

992.  答:BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,JBoss,Tomcat。"  

993.    

994.  15.請說出JSP的內置對象及方法 (中)  

995.  答:request表示HttpServletRequest對象。它包含了有關瀏覽器請求的信息,並且提供了幾個用於獲取cookie,   

996.  header, 和session數據的有用的方法。  

997.      response表示HttpServletResponse對象,並提供了幾個用於設置送回   

998.  瀏覽器的響應的方法(如cookies,頭信息等)  

999.      out對象是javax.jsp.JspWriter的一個實例,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。  

1000.      pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各種範圍的名字空間、servlet相關的對象的API,並且包裝了通用的servlet相關功能的方法。  

1001.      session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態信息  

1002.      applicaton 表示一個javax.servle.ServletContext對象。這有助於查找有關servlet引擎和servlet環境的信息  

1003.      config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。  

1004.  page表示從該頁面產生的一個servlet實例。  

1005.    

1006.  16.使用JSP如何獲得客戶瀏覽器的信息?  (易)  

1007.  request對象的getXXXX方法"  

1008.    

1009.  17.B/S與C/S的聯繫與區別。  (中)  

1010.  答:C/S是Client/Server的縮寫。服務器通常採用高性能的PC、工作站或小型機,並採用大型數據庫系統,如Oracle、Sybase、Informix或   

1011.  SQL Server。客戶端需要安裝專用的客戶端軟件。  

1012.  B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器(Browser),如Netscape   

1013.  Navigator或Internet Explorer,服務器安裝Oracle、Sybase、Informix或 SQL   

1014.  Server等數據庫。在這種結構下,用戶界面完全通過WWW瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現。瀏覽器通過Web   

1015.  Server 同數據庫進行數據交互。  

1016.  C/S 與 B/S 區別:  

1017.  1).硬件環境不同:  

1018.    C/S 一般建立在專用的網絡上, 小範圍裏的網絡環境,   

1019.  局域網之間再通過專門服務器提供連接和數據交換服務.  

1020.    B/S 建立在廣域網之上的, 不必是專門的網絡硬件環境,例與電話上網, 租用設備.   

1021.  信息自己管理. 有比C/S更強的適應範圍, 一般只要有操作系統和瀏覽器就行  

1022.  2).對安全要求不同  

1023.    C/S 一般面向相對固定的用戶羣, 對信息安全的控制能力很強.   

1024.  一般高度機密的信息系統採用C/S 結構適宜. 可以通過B/S發佈部分可公開信息.  

1025.    B/S 建立在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。  

1026.  3).對程序架構不同  

1027.    C/S 程序可以更加註重流程, 可以對權限多層次校驗,   

1028.  對系統運行速度可以較少考慮.  

1029.    B/S 對安全以及訪問速度的多重的考慮, 建立在需要更加優化的基礎之上.   

1030.  比C/S有更高的要求 B/S結構的程序架構是發展的趨勢, 從MS的.Net系列的BizTalk   

1031.  2000 Exchange 2000等, 全面支持網絡的構件搭建的系統. SUN 和IBM推的JavaBean   

1032.  構件技術等,使 B/S更加成熟.  

1033.  4).軟件重用不同  

1034.    C/S 程序可以不可避免的整體性考慮,   

構件的  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章