java高級軟件工程師面試題_第1頁
java高級軟件工程師面試題_第2頁
java高級軟件工程師面試題_第3頁
java高級軟件工程師面試題_第4頁
java高級軟件工程師面試題_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

精選工程方案文件編號:2020年6

版本號:A

java高級軟件工程師面試題修改號:1

頁次:1.0

編制:________________

會簽:________________

審核:________________

批準:________________

發(fā)布日期:________________

實施日期:

java高級軟件工程師面試題

招聘java高級工程師,職位描述如下,有興趣的加0交流,打擾了,謝謝!

職位名稱:java高級開發(fā)工程師(急)

職位描述:互聯(lián)網(wǎng)產(chǎn)品的開發(fā)和維護。

職位要求:1.熟悉JAVA、J2EE體系結(jié)構(gòu),熟練掌握Spring、Struts>Hibernate、ibatis的開

發(fā)技術(shù)。

2.熟悉MySql等數(shù)據(jù)庫開發(fā),熟練掌握SQL語句,有較好的數(shù)據(jù)庫設(shè)計能力。

3.熟練掌握HTML、javascript、ajax等web開發(fā)技術(shù),熟悉http協(xié)議。

4.熟悉SVN、Maven、Junit等工具。

5.具有良好的學習能力、溝通能力,樂于承擔工作壓力。

6.有大型門戶或社區(qū)網(wǎng)站開發(fā)經(jīng)驗者優(yōu)先。

職位所在城市:杭州

職位所在行業(yè):高科技

1.說一下struts中常用的對象

2.怎樣整合apatche和tomcat

3.說一下在linx系統(tǒng)中搭建服務(wù)器

4.簡述一下sqlserver建模

5.請寫一個程序,把一個10進制轉(zhuǎn)換成16進制

6.表student列idnameageWA(本科以上,大專,高中,初中以下)畢業(yè)學校ID,

學校信息表

問:統(tǒng)計出文化學歷本科以上,大專,高中,初中以下,每個年齡各有多少人(一條

SQL語句)

7.有兩位少年從隧道的一端向另一端行走.當他們走過隧道的五分之二時,發(fā)現(xiàn)隧

道外面迎來一輛火車.火車很快就要進入隧道.兩位少年向來時隧道跑去.兩位少

年都是每小時10公里.兩位在千鈞一發(fā)跑出了隧道.假設(shè)火車速度恒定,并且兩位

少年都在瞬間達到最大速度,請問火車的速度

8.請寫出常用的oracle語句及說明,存儲過程的語句及說明

幾個JAVA高級軟件工程師筆試面試題:

一、tomcat有哪些性能調(diào)優(yōu)方法,請舉例說明

二、Spring中bean的作用域有哪些

三、struts?flstruts1有哪些區(qū)別

四、相比于主要有哪些新特性

五、如何理解軟件的模塊獨立性

六、如何設(shè)計實現(xiàn)外網(wǎng)數(shù)據(jù)庫和內(nèi)網(wǎng)數(shù)據(jù)庫的數(shù)據(jù)交換

七、Spring最有用的功能是什么舉例說明IOC和AOP的作用。

八、關(guān)于sql的面試題:sql語句性能調(diào)優(yōu)的方法有哪些

九、關(guān)于sql的筆試題:假設(shè)有如下表:

TABLE:test

寫一條SQL語句,選擇所有a=l或b=2的記錄,使得a=l且b=2的記錄排在最

前面,并且a=l且b=2的記錄按id降序排列。

1、類、對象的概念:

1)類:具有共同屬性和行為的對象的抽象。類是創(chuàng)建對象的模板。

2)對象:現(xiàn)實世界中的實體。在計算機中,是指可標識的存儲區(qū)域。

3)類是對象的抽象、對象是類的實例。

2、抽象:是從特定的實例中抽取共同性質(zhì)形成一般化概念的過程。

3、接口與抽象類:

1)接口和抽象類都用于抽象,接口是抽象類的抽象。

2)接口中只有方法聲明,沒有實現(xiàn)(無方法體);在接口中聲明的方法具有public和abstract

屬性,一個類可以實現(xiàn)多個接口(即多繼承),接口以,,‘分隔;接口中的方法必須全部實現(xiàn)。

3)抽象類可以有部分方法實現(xiàn),抽象類必須通過繼承才能使用。

4,內(nèi)部類(InnerClass):

1)內(nèi)部類是嵌套在另一個類中的類。

2)內(nèi)部類用于名稱隱藏和程序代碼的組織,另外內(nèi)部類擁有直接訪問其外部類所有成員(包

括private的)的權(quán)限(無需任何關(guān)鍵字修飾)。

3)內(nèi)部類不可以在其他類或main方法里實例化,必須使用如下方法(非靜態(tài)內(nèi)部類)

外部類.內(nèi)部類對象名=new外部類O.new內(nèi)部類();

靜態(tài)內(nèi)部類調(diào)用方式:

外部類.內(nèi)部類對象名=new外部類.內(nèi)部類0;

4)非靜態(tài)內(nèi)部類不可以聲明靜態(tài)成員;靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問其外部類的靜態(tài)成

員,聲明為靜態(tài)的成員不可以訪問外部的非靜態(tài)成員。

5、訪問修飾符限制:

Privateprotectedfriendly(default)public

同類YYYY

同包不同類NYYY

同包子類NYYY

不同包不同類NNNY

不同包子類NYNY

6、Static關(guān)鍵字的使用:

1)類成員,直接使用類名.成員調(diào)用。

2)靜態(tài)方法只能訪問靜態(tài)成員。

3)靜態(tài)方法不能使用this、super關(guān)鍵字。

4)靜態(tài)方法不能被非靜態(tài)方法重寫或重載。

7、final關(guān)鍵字:

1)被final修飾的變量為常量不能改變。

2)被final修飾的方法不可以重寫。

3)被final修飾的類不能被繼承。

8、abstract關(guān)鍵字:

1)被abstract修飾的類不能實例化。

2)被abstract修飾的方法只能在子類中實現(xiàn)。

9、native關(guān)鍵字:非Java語言的編寫,例如JNI技術(shù)。

10、synchronized關(guān)鍵字:多線程的同步訪問控制。

11、分類列舉服務(wù)器和組件技術(shù):

1)服務(wù)器端技術(shù):Jsp、Servlet;

2)組件技術(shù):JavaBean、EJB。

12、Http與Https:Https即多了安全的Http,s(SecuritySocketLayer)指加密套接字協(xié)議層(簡

寫SSL)。

13、OSI(OpenSystemInterconnection)網(wǎng)絡(luò)抽象模型:

1)由國際標準化組織(ISO)提出。

2)將互聯(lián)網(wǎng)分為七層,從下至上分別為:物理層(physical)、數(shù)據(jù)鏈路層(datalink)、網(wǎng)絡(luò)

層(network)>傳送層(transport)、會話層(session)>表示層(presentation)、應(yīng)用層(application)o

底層通過提供接口支持上層功能。各層詳解:

物理層:LAN/ATM,為硬件層。

數(shù)據(jù)鏈路層:LAN/ATM

網(wǎng)絡(luò)層:IP協(xié)議,IOS

傳輸層:TCP/UDP協(xié)議,支持JavaSocket。

會話層:

表示層:HTML、XML

應(yīng)用層:HTTP協(xié)議,使用JavaServlet/JSP

〈第八層(Web服務(wù)層):SOAP/UDDI>

14、J2EE的容器與服務(wù)器:

容器負責EJB組件中生命周期的控制;

服務(wù)器包含在容器外,提供系統(tǒng)級操作底層服務(wù),包括事務(wù)、事件、多線程……。

15、繼承限制:

父類對象不可以賦給子類對象,因為子類可能具有更多的成員,反之可以。

16、邏輯操作:c=(a>b)a:b;等同于下式

if(a>b)c=a;elsec=b;

17、列舉常見集合框架類型:

1)List、SetsMap。由這三個接口實現(xiàn)出ArrayList、LinkedList、HashSet>TreeSet>HashMap、

TreeMap等常用集合框架。

2)Vector屬于重量級組件不推薦使用。

3)Map類型維護鍵/值對,Hashtable與HashMap相近但效率略低于HashMap、高于TreeMap,

TreeMap優(yōu)點是可以排序。

4)Set類型可裝入唯一值,HashSet效率高于TreeSet但TreeSet可以維護內(nèi)部元素的排序狀態(tài)。

5)List類型可按某種特定順序維護元素。ArrayList允許快速隨機訪問,但如果添加或刪除位

于中間的元素時效率很低;LikedList提供最佳循序訪問及快速的中間位置添加刪除元素,并有

addFirst、addLast^getFirst、getLast、removeFirst、removeLast方法。

18、面向?qū)ο蟮奶卣鳎?/p>

1)繼承:通過子類可以實現(xiàn)繼承,子類繼承父類的所有狀態(tài)和行為,同時添加自身的狀態(tài)和

行為。

2)封裝:將代碼及處理數(shù)據(jù)綁定在一起的一種編程機制,該機制保證程序和數(shù)據(jù)不受外部干

擾。

3)多態(tài):包括重載和重寫。重載為編譯時多態(tài),重寫是運行時多態(tài)。重載必須是同類中名稱

相同參數(shù)不同(包括個數(shù)不同和類型不同),但返回類型不同不構(gòu)成重載;重寫發(fā)生于子類對父

類的覆蓋,子類繼承父類方法名相同、參數(shù)列表相同、返回類型相同才構(gòu)成重寫。

19、Java命名規(guī)范:必須以英文字母、下劃線或$開始,其余可以有數(shù)字但不允許包

含空格,且組合后的名稱不能是Java關(guān)鍵字或保留字。

匈牙利命名法:以m開始為類成員變量,以g開始為全局變量,以v開始為本地局部變量,常

量命名一般不以下劃線、美元符開始。

駝峰命名:一般稱由多個單詞或縮寫組成的變量名,并且該變量名每個單詞首字母均為大寫(一

般類名全部首字母大寫,方法或?qū)傩悦谝粋€字母小寫)的稱為駝峰命名。

20、Java語言共包含47個關(guān)鍵字。

21、設(shè)計模式:

一個設(shè)計模式描述了一個被證實可行的方案。這些方案非常普遍,是具有完整定義的最常用的

模式。一般模式有4個基本要素:模式名稱(patternname)>問題(problem解決方案(solution)、

效果(consequences)o

常見23種模式概述:

1)抽象工廠模式(AbstractFactory):提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無

需指定它們具體的類。

2)適配器模式(Adapter):將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。適配器模式使

得原本由于接口不兼容而不能一起工作的類可以一起工作。

3)橋梁模式(Bridge):將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。

4)建造模式(Builder):將一個復(fù)雜對象的構(gòu)建與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)

建不同的表示。

5)責任鏈模式(ChainofResponsibility):為解除請求的發(fā)送者和接收者之間耦合,而使多個

對象都有機會處理這個請求。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對

象處理它。

6)命令模式(Command):將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參

數(shù)化;對請求排隊或記錄請求日志,以及支持可取消的操作。

7)合成模式(Composite):將對象組合成樹形結(jié)構(gòu)以表示“部分一整體”的層次結(jié)構(gòu)。它使得

客戶對單個對象和復(fù)合對象的使用具有一致性。

8)裝飾模式(Decorator):動態(tài)地給一個對象添加一些額外的職責。就擴展功能而言,它能

生成子類的方式更為靈活。

9)門面模式(Facade):為子系統(tǒng)中的一組接口提供一個一致的界面,門面模式定義了一個高

層接口,這個接口使得這一子系統(tǒng)更加容易使用。

10)工廠方法(FactoryMethod):定義一個用于創(chuàng)建對象的接口,讓子類決定將哪一個類實

例化。FactoryMethod使一個類的實例化延遲到其子類。

11)享元模式(Flyweight):運用共享技術(shù)以有效地支持大量細粒度的對象。

12)解釋器模式(Interpreter):給定一個語言,定義它的語法的一種表示,并定義一個解釋器,

該解釋器使用該表示解釋語言中的句子。

13)迭代子模式(Iterator):提供一種方法順序訪問一個聚合對象中的各個元素,而又不需暴

露該對象的內(nèi)部表示。

14)調(diào)停者模式(Mediator):用一個中介對象來封裝一系列的對象交互。中介者使各對象不

需要顯式的內(nèi)部表示。

15)備忘錄模式(Memento):在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該

對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到保存的狀態(tài)。

16)觀察者模式(Observer):定義對象間的一種一對多的依賴關(guān)系,以便當一個對象的狀態(tài)

發(fā)生改變時,所有依賴于它的對象都得到通知并自動刷新。

17)原始模型模式(Prototype):用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這個原型創(chuàng)

建新的對象。

18)代理模式(Proxy):為其他對象提供一個代理以控制對這個對象的訪問。

19)單例模式(Singleton):保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。

20)狀態(tài)模式(State):允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。對象看起來似乎修

改了它所屬的類。

21)策略模式(Strategy):定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替

換。本模式使得算法的變化可獨立于使用它的客戶。

22)模板模式(TemplateMethod):定義一個操作中的算法的骨架,而將一些步驟延遲到子類

中。模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。

23)訪問者模式(Visitor):表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。該模式可以實現(xiàn)

在不改變各元素的類的前提下定義作用于這些元素的新操作。

1、你認為一個項目如何進行才正確(比如:盡一切可能快的完成任務(wù)或完全按照類似CMM

來操作)

根據(jù)林銳博士的觀點:企業(yè)的根本目標是合法地賺取盡可能多的利潤,使企業(yè)利益最大化。企

業(yè)所有的特定目標和行動都是圍繞上述根本目標開展的,任何背離根本目標的行動都將對企業(yè)造

成傷害,應(yīng)當杜絕。

基于此任何人都不要強調(diào)我將嚴格遵守XX模式,帶領(lǐng)團隊開發(fā)出具有XX等級的產(chǎn)品,企業(yè)

需要的是能夠帶領(lǐng)團隊按時、合格的開發(fā)出產(chǎn)品的Managero

2、你經(jīng)??椿蜃屑氀凶x過的書有哪些

不用回答你看過的課本,枚舉幾個經(jīng)典的當然前提是必須真的看過至少瀏覽過主題和目錄。比

如《Java編程思想》、《Java模式》、《人月神話》等,由于將來要做的是team中的替補leader或

真正的leader所以你必須說出軟工的東西。

3、你認為你應(yīng)聘我們公司的項目經(jīng)理,你自身的優(yōu)勢在哪

1)融洽,沒有領(lǐng)導(dǎo)希望你帶領(lǐng)團隊每天打嘴仗然后他還要去開屁股(Sorry,這似乎不很文明),

你必須說明你能在以往團隊中與其他人和諧相處。

2)技術(shù),千萬不要謙虛,對方要的就是技術(shù)過硬、能力出眾的人才,你只需要說明你成功解

決過什么難題并且你對J2EE、XX中間件、XX系統(tǒng)有多么的熟悉。

4、如果給你一個Team,公司決定讓你的Team開發(fā)A產(chǎn)品,0K這恰好是你的強項,你們很

快開發(fā)出來了,但很沮喪的結(jié)果是它(你們的產(chǎn)品)沒有銷路;經(jīng)過討論公司又決定讓你的Team

開發(fā)B產(chǎn)品,0K這恰好又是你的強項,你們很快開發(fā)出來了,但很沮喪的結(jié)果是它(你們的產(chǎn)

品)又沒有銷路。請問你怎么面對這個問題,你是否覺得決策層很無能甚至要推翻他或者去一個

更有前途的公司

不要以為這個故事很單純,這應(yīng)該是人力在考核你。你一定要告訴她(人力多半是女的),我

個人對于失敗的項目肯定會難過(是的,我想了很久才想出“難過”這個詞,它很中性),不過我

認為這恰恰認證了公司在革新和新技術(shù)探索方面的魄力(自己想怎么說,如果天下人都說這句那

才是悲劇呢),我肯定會以個人的名義向領(lǐng)導(dǎo)層提出我自己的建議和看法當然它未必正確,我不

會離開公司,因為有點小挫折未嘗不是好事。(你應(yīng)該在這個問題上好好想想,盡量發(fā)揮到10

分鐘)

5、你認為項目中最重要的是哪些過程

分析、設(shè)計階段(也可以加上測試,但千萬別說編碼或開發(fā)階段),根據(jù)《人月神話》的觀點:

1/3計劃;1/6編碼;1/4構(gòu)件測試和早期系統(tǒng)測試;1/4系統(tǒng)測試,所有的構(gòu)件已完成

但根據(jù)國內(nèi)目前的狀況一般公司不會有很多的分析與設(shè)計時間(這取決于公司規(guī)模和時間成

本),這樣在一個工期很緊張的項目中我們應(yīng)該盡量分配出進度優(yōu)先級來,首先拿出客戶最希望

看到的和最能證明成果的東西來,其他的留待2期甚至3期去作,你可以告訴客戶需要進一步調(diào)

試(專業(yè)人員的欺騙手段,實際上就是在進行后續(xù)的開發(fā))。

6、如果給你一個4~6個人的Team,那么你怎么分配他們、管理他們

管理能力和經(jīng)驗的綜合題,可能沒有人有相同的觀點,那你可以按照某些思路來側(cè)面解答:我

會挑選一個技術(shù)過硬的人作為我的替補和項目的輕騎兵,是的團隊中必須有機動人員,否則你的

項目十有八九會夭折。其他的人會被平均的分配任務(wù)。

我們會在每周進行全面的任務(wù)分配,每個人獲取一周的大概工作,然后每天的工作由他自己完

成并匯報。(很好,如果答出這些就差不多了,多說可能會出現(xiàn)漏洞)

7、簡述常用的軟件開發(fā)文檔。

1)可行性研究報告(某些公司或模型沒有)

2)項目開發(fā)計劃

3)軟件需求說明書(必有)

4)數(shù)據(jù)要求說明書

5)概要設(shè)計說明書(必有)

6)詳細設(shè)計說明書(必有)

7)數(shù)據(jù)庫設(shè)計說明書(必有)

8)用戶手冊(一般會有)

9)操作手冊(必有)

10)模塊開發(fā)卷宗

11)測試計劃(必有)

12)測試分析報告

13)開發(fā)進度月報

14)項目開發(fā)總結(jié)報告

8、簡述類的關(guān)系。

1)當一個類是“一種”另一個類時:is-a關(guān)系

2)當兩個類之間有關(guān)聯(lián)時:

一個類"包含“另一個類:has-a關(guān)系

一個類“使用”另一個類

還可以細分有聚合和組合(UML寶典)或聚集和組成(包括國內(nèi)某些知名學術(shù)團體都這么說)。

聚集(aggregation)表示整體與各部分之間的關(guān)系。例如汽車與輪胎,沒有了汽車輪胎依然是

一個整體。(用空心菱形表示)

組成是一種整體和部分所屬更強的聚集關(guān)系,每個部分只能屬于一個整體,沒有整體部分也就

沒有存在的價值。比如桌子和桌腿,沒有桌子也就沒有桌腿的價值了。(用實心菱形表示)

選擇題

1:whichisthemain()methodreturnofaapplication

2:

whatwillhappenwhenyouattempttocompileandrunthefollowingcode

intoutput=10;

booleanbl=false;

if((bltrue)&&((output+=10)20))

(

"weareequal"+output);

)

else

(

"notequal!”+output);

)

choices:

whatwillhappenwhenyouattempttocompileandrunthefollowingcode

intoutput=10;

booleanbl=false;

if((bltrue)&&((output+=10)20))

(

nweareequaln+output);

)

else

(

"notequal!”+output);

)

choices:

error,attemptingtoperformbinarycomparisononlogicaldatatype

andoutputofHweareequal10".

andoutputof"notequal!20".

andoutputof"notequal!10".

3:

whatwillhappenwhenyouattempttocompileandrunthefollowingcode

classbase

(

inti=99;

publicvoidamethod()

(

"()");

)

base()

(

amethod();

)

)

publicclassderivedextendsbase

(

inti=-1;

publicstaticvoidmain(stringargv[])

(

baseb=newderived();

0;

)

publicvoidamethodQ

(

"()");

)

)

choices:

whatwillhappenwhenyouattempttocompileandrunthefollowingcode

classbase

inti=99;

publicvoidamethod()

(

"()");

)

base()

(

amethod();

)

)

publicclassderivedextendsbase

(

inti=-l;

publicstaticvoidmain(stringargv[])

(

baseb=newderived();

0;

)

publicvoidamethodQ

(

"()");

)

)

choices:

-1()

99

timeerror

4:

下述程序代碼中有語法錯誤的行是()。

inti,ia[10],ib[10];/*第一行*/

for(i=0;i<=9;i++)/*第2行*/

ia[i]=0;/*第3行*/

ib=ia;/*第4行*/

下述程序代碼中有語法錯誤的行是()。

inti,ia[10],ib[10];/*第一行*/

for(i=0;i<=9;i++)/*第2行*/

ia[i]=0;/*第3行*/

ib=ia;/*第4行*/

a.第1行

b.第2行

c.第3行

d.第4行

5:

whatwillbetheresultofexecutingthefollowingcode

classsubclassyextendssuperclassx

4.(

objx=newsubclassyO;

objy=newsubclassyO;

subclassmethody()

8.{

i;

一,

12.}

13.}

choices:

whatwillbetheresultofexecutingthefollowingcode

classsubclassyextendssuperclassx

4.(

objx=newsubclassy();

objy=newsubclassy();

subclassmethodyO

8.{

i;

一,

12.}

13.}

choices:

erroratline5

erroratline9

exceptionatline11

ofthese

6:whicharenotjavakeywords

7:considertheclasshierarchyshownbelow:

classfourwheelerimplementsdrivingutilities

classcarextendsfourwheeler

classtruckextendsfourwheeler

classbusextendsfourwheeler

classcraneextendsfourwheeler

considerthefollowingcodebelow:

du;

fw;

mytruck=newtruck();

=(drivingutilities)mytruck;

=newcrane();

=du;

whichofthestatementsbelowaretrue

choices:

4willnotcompilebecauseaninterfacecannotrefertoanobject.

codewillcompileandrun.

codewillnotcompilewithoutanexplicitcastatline6,becausegoingdownthehierarchy

withoutcastingisnotallowed.

codewillcompileifweputanexplicitcastatline6butwillthrowanexceptionatruntime.

8:exhibit:

1.publicclasstest(

2.privatestaticintj=0;

3.

4.privatestaticbooleanmethodb(intk)(

5.j+=k;

6.returntrue;

6.)

7.

8.publicstaticvoidmethoda(inti){

9.booleanb:

10.b=i<10|methodb(4);

11.b=i<10||methodb(8);

12.)

13.

14.publicstaticvoidmain(stringargs[]}(

15.methoda(0);

16.17.)

18.)

whatistheresult

programprints“0”

programprints"4”

programprints“8”

programprints“12”

9:

publicclassouterclass{

privatedoubledl=;

whichtwoinnerclassdeclarationsare

valid

publicclassouterclass{

privatedoubledl=;

whichtwoinnerclassdeclarationsare

valid

innerone{publicstaticdoublemethoda(){returndl;}}

classinnerone{staticdoublemethoda(){returndl;}}

classinnerone{doublemethodaQ{returndl;}}

classinnerone{protecteddoublemethoda(){returndl;}}

10:

thefollowingcodeisentirecontentsofafilecalled,causespreciselyoneerrorduring

compilation:

classsubclassextendsbaseclass{

)

classbaseclass(){

stringstr;

publicbaseclass(){

publicbaseclass(strings){

str=s;}}

publicclassexample(

publicvoidmethod(){

subclasss=newsubclass("hello");

baseclassb=newbaseclass("world");

)

)

whichlinewouldbecausetheerror

thefollowingcodeisentirecontentsofafilecalled,causespreciselyoneerrorduring

compilation:

classsubclassextendsbaseclass{

)

classbaseclass(){

stringstr;

publicbaseclass(){

publicbaseclass(strings){

str=s;}}

publicclassexample{

publicvoidmethod(){

subclasss=newsubclass("hello");

baseclassb=newbaseclass("world");

)

whichlinewouldbecausetheerror

11:

strings二"examplestring^;whichoperationisnotlegal

strings="examplestring”;whichoperationisnotlegal

i=0;

[3]="x";

short_s=();

t="root"+s;

12:軟件生命周期的瀑布模型把軟件項目分為3個階段、8個子階段,以下哪一個是正常

的開發(fā)順序

a.計劃階段、開發(fā)階段、運行階段

b.設(shè)計階段、開發(fā)階段、編碼階段

c.設(shè)計階段、編碼階段、維護階段

d.計劃階段、編碼階段、測試階段

13:whichstatementsaboutjavacodesecurityarenottrue

bytecodeverifierloadsallclassesneededfortheexecutionofaprogram.

codeisperformedbytheruntimeinterpreter.

runtimethebytecodesareloaded,checkedandruninaninterpreter.

classloaderaddssecuritybyseparatingthenamespacesfortheclassesofthelocalfilesystem

fromthoseimportedfromnetworksources.

14:aclassdesignrequiresthatamembervariableshouldbeaccessibleonlybysamepackage,

whichmodiferwordshouldbeused

modifer

15:

givethefollowingmethod:

publicvoidmethod(){

stringa,b;

a=newstring("helloworld,,);

b=newstring("gameover");

a=null;

a=b;

)

intheabsenceofcompileroptimization,whichistheearliestpointtheobjectareferedis

definitelyelibiletobegarbagecollection.

givethefollowingmethod:

publicvoidmethod(){

stringa,b;

a=newstring(uhelloworld");

b=newstring("gameover");

a=null;

a=b;

)

intheabsenceofcompileroptimization,whichistheearliestpointtheobjectareferedis

definitelyelibiletobegarbagecollection.

line5

line6

line7

line9

簡答題

16:請闡述一下你對java多線程中“鎖”的概念的理解。

17:列出jsp中包含外部文件的方式,兩者有何區(qū)別。

18:請談?wù)剬σ粋€系統(tǒng)設(shè)計的總體思路。針對這個思路,你覺得應(yīng)該具備哪些方面的知

19:struts2中的攔截器,你用過那些自帶的攔截器,自己寫過的嗎

20:怎樣在復(fù)雜的各種形式的網(wǎng)頁中提取mp3下載的結(jié)構(gòu)化數(shù)據(jù)

21:編寫一個在二叉排序樹中查找大小為第k的元素的算法。

22:java多線程編程。用java寫一個多線程程序,如寫四個線程,二個加1,二個對一

個變量減一,輸出。

23:不允許使用系統(tǒng)時間,寫出一個隨機數(shù)生成函數(shù)。

24:hibemate中的id(主鍵)生成器有那些或者你常用的是那些

25:error和exception有什么區(qū)別

第一,談?wù)刦inal,finally,finalize的區(qū)別。

final如果一個類被聲明為final,意味著它不能再派生出新的子類,因此一個類

不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可

以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,

而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,

不能重載。

finally用來清除異常。如果拋出一個異常,那么相匹配的catch子句就會執(zhí)行,

然后控制就會進入finally塊(如果有的話)。

finalize。在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。它是在

Object類中定義的,因此所有的類都繼承了它。

第二,AnonymousInnerClass(匿名內(nèi)部類)是否可以繼承其它類,是否可以實現(xiàn)

接口

匿名的內(nèi)部類是沒有名字的內(nèi)部類。不能繼承其它類,但可作為一個接口,由另

一個內(nèi)部類實現(xiàn)。

第三,StaticNestedClass和InnerClass的不同。

NestedClass(一般是C++的說法),InnerClass(一般是JAVA的說法)。Java內(nèi)

部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。

注:靜態(tài)內(nèi)部類(InnerClass)意味著:

1創(chuàng)建一個static內(nèi)部類的對象

2不能從一個static內(nèi)部類的一個對象訪問一個外部類對象

第四,&和&&的區(qū)別。

&是位運算符。&&是布爾邏輯運算符。

第五,HashMap和Hashtable的區(qū)別。

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

HashMap類允許一個null鍵和多個null值。

Hashtable類不允許null鍵和null值。它也比HashMap慢,因為它是同步的。

第六,Collection和Collections的區(qū)別。

Collections是個下的類,它包含有各種有關(guān)集合操作的靜態(tài)方法。

Collection是個下的接口,它是各種集合結(jié)構(gòu)的父接口。

第七,什么時候用asserto

斷言是一個包含布爾表達式的語句,在執(zhí)行這個語句時假定該表達式為true。如

果表達式計算為false,那么系統(tǒng)會報告一個AssertionErroro

示例:

assert(a>0);c()

第九,Strings=newString("xyz");創(chuàng)建了幾個StringObject

兩個對象,一個是String類型的“xyx”,一個是指向“xyx”的引用對象s。

第十,等於多少等於多少

返回(long)12,返回(long)-11;

第二4,abstract的method是否可同時是static,是否可同時是native,是否可

同時是synchronized

都不能

第二十二,接口是否可繼承接口抽象類是否可實現(xiàn)(implements)接口抽象類是否

可繼承實體類(concreteclass)

接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實體

類,但前提是實體類必須有明確的構(gòu)造函數(shù)。

第二十三,啟動一個線程是用run()還是start()

啟動一個線程是調(diào)用start。方法,使線程所代表的虛擬處理機處于可運行狀態(tài),

這意味著它可以由JVM調(diào)度并執(zhí)行。

這并不意味著線程就會立即運行。run()方法可以產(chǎn)生必須退出的標志來停止一個

線程。

個人猜測,可能是以下結(jié)構(gòu):

run(){

0;

第二十四,構(gòu)造器Constructor是否可被override

構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載

Overloadingo

第二十五,是否可以繼承String類

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

第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是否

可進入此對象的其它方法

不能,一個對象的一個synchronized方法只能由一個線程訪問。

第二十七,try{}里有一個return語句,那么緊跟在這個try后的finally{}里的code

會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后

會執(zhí)行,在return前執(zhí)行。

第二十八,編程題:用最有效率的方法算出2乘以8等於幾

有C背景的程序員特別喜歡問這種問題。

第二十九,兩個對象值相同(y)==true),但卻可有不同的hashcode,這句話對不

不對,有相同的hashcode。

第三十,當一個對象被當作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬

性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞

是值傳遞。Java編程語言只有值傳遞。當一個對象實例作為一個參數(shù)被傳遞到方

法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,

但對象的引用是永遠不會改變的。

第三4^一swtich是否能作用在byte上,是否能作用在long上,是否能作用在

String上

switch(exprl)中,exprl是一個整數(shù)表達式。因此傳遞給switch和case語句的

參數(shù)應(yīng)該是int、short、char或者byte。long,string都不能作用于swtich。

第三十二,編程題:寫一個Singleton出來。

Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存

在。

一般Singleton模式通常有幾種種形式:

第一種形式:定義一個類,它的構(gòu)造函數(shù)為private的,它有一個static的private

的該類變量,在類初始化時實例話,通過一個public的getlnstance方法獲取對它

的引用,繼而調(diào)用其中的方法。

publicclassSingleton{

privateSingleton(){}

Java不支持缺省函數(shù)參數(shù),而c十十支持

在C中,代碼組織在函數(shù)中,函數(shù)可以訪問程序的全局變量。C十十增加了類,提供了類算

法,該算法是與類相連的函數(shù),c十十類方法與Java類方法十分相似,然而,由于c十十仍

然支持c,所以不能阻止c十十開發(fā)人員使用函數(shù),結(jié)果函數(shù)和方法混合使用使得程序比較

混亂。

Java沒有函數(shù),作為一個比c十十更純的面向?qū)ο蟮恼Z言,Java強迫開發(fā)人員把所有例行程

序包括在類中,事實上,用方法實現(xiàn)例行程序可激勵開發(fā)人員更好地組織編碼。

8字符串

c和c十十不支持字符串變量,在c和c十十程序中使用Null終止符代表字符串的結(jié)束,在

Java中字符串是用類對象(strinR和stringBuffer)來實現(xiàn)的,這些類對象是Java語言的核心,

用類對象實現(xiàn)字符串有以下幾個優(yōu)點:

(1)在整個系統(tǒng)中建立字符串和訪問字符串元素的方法是一致的;

(2)13陽字符串類是作為Java語言的一部分定義的,而不是作為外加的延伸部分;

(3)Java字符串執(zhí)行運行時檢空,可幫助排除一些運行時發(fā)生的錯誤;

(4)可對字符串用“十”進行連接操作。

9"goto語句

“可怕”的goto語句是C和C++的“遺物”,它是該語言技術(shù)上的合法部分,引用goto語句引起

了程序結(jié)構(gòu)的混亂,不易理解,goto語句子要用于無條件轉(zhuǎn)移子程序和多結(jié)構(gòu)分支技術(shù)。鑒

于以廣理由,Java不提供goto語句,它雖然指定goto作為關(guān)鍵字,但不支持它的使用,使

程序簡潔易讀。

10.類型轉(zhuǎn)換

在C和C十十中有時出現(xiàn)數(shù)據(jù)類型的隱含轉(zhuǎn)換,這就涉及了自動強制類型轉(zhuǎn)換問題。例如,

在C十十中可將一浮點值賦予整型變量,并去掉其尾數(shù)。Java不支持c十十中的自動強制類

型轉(zhuǎn)換,如果需要,必須由程序顯式進行強制類型轉(zhuǎn)換。

1L異常

JAVA中的異常機制用于捕獲例外事件,增強系統(tǒng)容錯能力

try{//可能產(chǎn)生例外的代碼

}catch(exceptionTypename){

StringBuilder是非線程安全的,StringBuffer是線程安全的。

1.一下a,b兩段代碼那個執(zhí)行速度更快

a.for(inti=100000;i>0;i-){}

b.for(inti=1;i<100001;i++){}

答案:a

2.一下兩段代碼那個執(zhí)行速度更快

a.(a,b);

b.(a>b)a:b

答案:b

3.Array操作是不是比Vector更快是的,Array更快

4.如果Pointp的如下方法被調(diào)用之前是(700,800),那么當如下a,b方法執(zhí)行后,Pointp的值

分別為多少

a.staticvoidchangePoint(Pointp){

=100;=200;

}

b.staticvoidchangePoint(Pointp){

p=newPoint(100,200);

}

答案:a.(100,200)b.(700,800)基本類型在方法參數(shù)中是按值傳遞的,而對象是按引用的值

傳遞的,在一個方法內(nèi)如果對象的值改變了,會有影響。但是如果我們改變引用本身,它的

原始引用/對象不會改變,只有引用的拷貝會改變。

5.和空文件是合法的java源文件,這個說法正確嗎答案:是的

6.下面哪種說法正確

1.Char\u0061ra=,a9;

2.Char\u0062=,b,;

3.Charc=,\u0063,;

1.1b.2d.ALLe.NONE

答案:d

1.下面哪種基本類型是無符號的

1.int

2.long

3.char

4.double

5.float

答案:c.char(所有的數(shù)字類型都是帶符號的,char是唯一的無符號的整形)

2.Java同時支持多維數(shù)組和嵌套數(shù)組對嗎

答案:不對,Java只支持嵌套數(shù)組,不支持多維數(shù)組

3.publicmain(intnumber){}是一個合法的方法嗎

答案:正確的

4.publicstaticfinalmain(String[]args){}是一個合法的方法嗎

是的

5.一個沒有方法的類可以在JVM執(zhí)行嗎如果它的祖先類有main方法

是的

6.GC是一個高優(yōu)先級線程嗎

不對,GC是一個低優(yōu)先級線程

7.循環(huán)引用可以避免一個對象被垃圾回收嗎

不會

8.如果在finalize方法里面發(fā)生了exception,這個對象會被垃圾回收嗎

finalize方法里面的Exception不能避免垃圾回收

DispatchAction是Struts包含的另一個能大量節(jié)省開發(fā)時間的Action類。與其它Action類僅

提供單個execute。方法實現(xiàn)單個業(yè)務(wù)不同,DispatchAction允許你在單個Action類中編寫多

個與業(yè)務(wù)相關(guān)的方法。這樣可以減少Action類的數(shù)量,并且把相關(guān)的業(yè)務(wù)方法集合在一起

使得維護起來更容易。

要使用DispatchAction的功能,需要自己創(chuàng)建一個類,通過繼承抽象的DispatchAction得到。

對每個要提供的業(yè)務(wù)方法必須有特定的方法signature。例如,我們想要提供一個方法來實現(xiàn)

對購物車添加商品清單,創(chuàng)建了一個類ShoppingCartDispatchAction提供以下的方法:

publicActionForwardaddItem(ActionMappingmapping,ActionFormform,HttpServletRequest

request,HttpServletResponseresponse)(

throwsException;

)

那么,這個類很可能還需要一個deleteltem。方法從客戶的購物車中刪除商品清單,還有

clearCart()方法清除購物車等等。這時我們就可以把這些方法集合在單個Action類,不用為

每個方法都提供一個Action類。

在調(diào)用ShoppingCartDispatchAction里的某個方法時,只需在URL中提供方法名作為參數(shù)值。

就是說,調(diào)用addltem。方法的URL看起來可能類似于:

這里使用的"method”只是一個例子。參數(shù)的名稱可以在Struts配置文件中自行設(shè)定。

如何在Web項目中保護JSP源代碼不被未經(jīng)授權(quán)的訪問和窺視

JSP

通常JSP開發(fā)人員會把他們的頁面文件存放在Web應(yīng)用相應(yīng)的子目錄下。一個典型的商店

應(yīng)用程序的目錄結(jié)構(gòu)如圖2所示。跟catalog(商品目錄)相關(guān)的JSP被保存在catalog子目

錄下。跟customer相關(guān)的JSP,跟訂單相關(guān)的JSP等都按照這種方法存放。

基于不同的功能JSP被放置在不同的目錄下

這種方法的問題是這些頁面文件容易被偷看到源代碼,或被直接調(diào)用。某些場合下這可能不

是個大問題,可是在特定情形中卻可能構(gòu)成安全隱患。用戶可以繞過Struts的controller直

接調(diào)用JSP同樣也是個問題。

為了減少風險,可以把這些頁面文件移到WEB-INF目錄下?;赟ervlet的聲明,WEB-INF

不作為Web應(yīng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論