版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
java高級軟件工程師面試題
招聘java高級工程師,職位描述如下,有興趣的加394504340交流,打擾了,謝謝!
職位名稱:java高級開發(fā)工程師(急)
職位描述:互聯(lián)網(wǎng)產(chǎn)品的開發(fā)和維護。
職位要求:1.熟悉JAVA、J2EE體系結構,熟練掌握Spring、Struts、Hibernateibatis
的開發(fā)技術。
2.熟悉MySql等數(shù)據(jù)庫開發(fā),熟練掌握SQL語句,有較好的數(shù)據(jù)庫設計能力。
3.熟練掌握HTML、javascript>ajax等web開發(fā)技術,熟悉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)中搭建服務器
4.簡述一下sqlserver建模
5.請寫一個程序,把一個10進制轉換成16進制
6.表student列idnameageWA(本科以上,大專,高中,初中以下)畢業(yè)學
校ID,學校信息表
問:統(tǒng)計出文化學歷本科以上,大專,高中,初中以下,每個年齡各有多少人(一條
SQL語句)
7.有兩位少年從隧道的一端向另一端行走.當他們走過隧道的五分之二時,發(fā)現(xiàn)隧
道外面迎來一輛火車.火車很快就要進入隧道.兩位少年向來時隧道跑去.兩位少
年都是每小時10公里.兩位在千鈞一發(fā)跑出了隧道.假設火車速度恒定,并旦兩位
少年都在瞬間達到最大速度,請問火車的速度
8.請寫出常用的oracle語句及說明,存儲過程的語句及說明
幾個JAVA高級軟件工程師筆試面試題:
一、tomcat有哪些性能調(diào)優(yōu)方法,請舉例說明?
二、Spring中bean的作用域有哪些?
三、struts2和strutsi有哪些區(qū)別?
四、JDK1.5相比于JDK1.4主要有哪些新特性?
五、如何理解軟件的模塊獨立性?
六、如何設計實現(xiàn)外網(wǎng)數(shù)據(jù)庫和內(nèi)網(wǎng)數(shù)據(jù)庫的數(shù)據(jù)交換?
七、Spring最有用的功能是什么?舉例說明IOC和AOP的作用。
八、關于sql的面試題:sql語句性能調(diào)優(yōu)的方法有哪些?
九、關于sql的筆試題:假設有如下表:
TABLE:test
寫一條SQL語句,選擇所有a=i或b=2的記錄,使得a=i且b=2的記錄排在最
前面,并且a=i且b=2的記錄按id降序排列。
1、類、對象的概念:
1)類:具有共同屬性和行為的對象的抽象。類是創(chuàng)建對象的模板。
2)對象:現(xiàn)實世界中的實體。在計算機中,是指可標識的存儲區(qū)域。
3)類是對象的抽象、對象是類的實例。
2、抽象:是從特定的實例中抽取共同性質形成?般化概念的過程。
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的)的權限(無需任何關鍵字修飾)。
3)內(nèi)部類不可以在其他類或main方法里實例化,必須使用如下方法(非靜態(tài)內(nèi)部類)
外部類.內(nèi)部類對象名=new外部類0.new內(nèi)部類。;
靜態(tài)內(nèi)部類調(diào)用方式:
外部類.內(nèi)部類對象名=new外部類.內(nèi)部類();
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關鍵字的使用:
1)類成員,直接使用類名.成員調(diào)用。
2)靜態(tài)方法只能訪問靜態(tài)成員。
3)靜態(tài)方法不能使用this、super關鍵字。
4)靜態(tài)方法不能被非靜態(tài)方法重寫或重載。
7、final關鍵字:
1)被final修飾的變量為常量不能改變。
2)被final修飾的方法不可以重寫。
3)被final修飾的類不能被繼承。
8、abstract關鍵字:
1)被abstract修飾的類不能實例化。
2)被abstract修飾的方法只能在子類中實現(xiàn)。
9、native關鍵字:非Java語言的編寫,例如JNI技術。
10、synchronized關鍵字:多線程的同步訪問控制。
11、分類列舉服務器和組件技術:
1)服務器端技術:Jsp、Servlet;
2)組件技術:JavaBean、EJB。
駝峰命名:一般稱由多個單詞或縮寫組成的變量名,并且該變量名每個單詞首字母均為大寫(一
般類名全部首字母大寫,方法或屬性名第一個字母小寫)的稱為駝峰命名。
20、Java語言共包含47個關鍵字。
21、設計模式:
一個設計模式描述了?個被證實可行的方案。這些方案非常普遍,是具有完整定義的最常用的模
式。一般模式有4個基本要素:模式名稱(patternname)、問題(problem)、解決方案
(solution)、效果(consequences)o
常見23種模式概述:
1)抽象工廠一模式(AbstractFactory):提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而
無需指定它們具體的類。
2)適配器模式(Adapter):將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使
得原本由于接口不兼容而不能一起工作的類可以一起工作。
3)橋梁模式(Bridge):將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。
4)建造模式(Builder):將?個復雜對象的構建與它的表示分離,使同樣的構建過程可以創(chuàng)
建不同的表示。
5)責任鏈模式(ChainofResponsibility):為解除請求的發(fā)送者和接收者之間耦合,而使多
個對象都有機會處理這個請求。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個
對象處理它。
6)命令模式(Command):將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參
數(shù)化:對請求排隊或記錄請求日志,以及支持可取消的操作。
7)合成模式(Composite):將對象組合成樹形結構以表示''部分一整體〃的層次結構。它使得
客戶對單個對象和復合對象的使用具有一致性。
8)裝飾模式(Decorator):動態(tài)地給?個對象添加?些額外的職責。就擴展功能而言,它能
生成子類的方式更為靈活。
9)門面模式(Facade):為子系統(tǒng)中的一組接口提供一個一致的界面,門面模式定義了一個
高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
10)工廠方法(FactoryMethod):定義一個用于創(chuàng)建對象的接口,讓子類決定將哪一個類實
例化。FactoryMethod使一個類的實例化延遲到其子類。
11)享元模式(Flyweight):運用共享技術以有效地支持大量細粒度的對象。
12)解釋器模式(Interpreter):給定一個語言,定義它的語法的一種表示,并定義一個解釋
器,該解釋器使用該表示解釋語言中的句子。
13)迭代子模式(Iterator):提供一種方法順序訪問一個聚合對象中的各個元素,而又不需
暴露該對象的內(nèi)部表示。
14)調(diào)停者模式(Mediator):用一個中介對象來封裝一系列的對象交互。中介者使各疝象不
需要顯式的內(nèi)部表小。
15)備忘錄模式(Memento):在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該
對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復到保存的狀態(tài)。
16)觀察者模式(Observer):定義對象間的一種一對多的依賴關系,以便當一個對象的狀態(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):定義一個操作中的算法的骨架,而將一些步驟延遲到子
類中。模板方法使得子類可以不改變?個算法的結構即可直定義該算法的某些特定步驟。
23)訪問者模式(Visitor):表示一個作用于某對象結構中的各元素的操作。該模式可以實現(xiàn)
在不改變各元素的類的前提下定義作用于這些元素的新操作。
1、你認為一個項目如何進行才正確?(比如:盡一切可能快的完成任務或完全按照類似CMM
來操作)
根據(jù)林銳博士的觀點:企業(yè)的根本目標是合法地賺取盡可能多的利潤,使企業(yè)利益最大化。企業(yè)
所有的特定目標和行動都是圍繞上述根本目標開展的,任何背離根本目標的行動都將對企業(yè)造成
傷害,應當杜絕。
基于此任何人都不要強調(diào)我將嚴格遵守XX模式,帶領團隊開發(fā)出具有XX等級的產(chǎn)品,企業(yè)需
要的是能夠帶領團隊按時、合格的開發(fā)出產(chǎn)品的Manager
2、你經(jīng)??椿蜃屑氀凶x過的書有哪些?
不用P1答你看過的課本,枚舉幾個經(jīng)典的當然前提是必須真的看過至少瀏覽過主題和目錄。比如
《Java編程思想》、《Java模式》、《人月神話》等,由于將來要做的是team中的替補leader
或真正的leader所以你必須說出軟工的東西。
3、你認為你應聘我們公司的項目經(jīng)理,你自身的優(yōu)勢在哪?
1)融治,沒有領導希望你芍領團隊每天打嘴仗然后他還要去開屁股(Sorry,這似乎不很文明),
你必須說明你能在以往團隊中與其他人和諧相處。
2)技術,千萬不要謙虛,對方要的就是技術過硬、能力出眾的人才,你只需要說明你成功解決
過什么難題并且你對J2EE、XX中間件、XX系統(tǒng)有多么的熟悉。
4、如果給你一個Team,公司決定讓你的Team開發(fā)A產(chǎn)品,0K這恰好是你的強項,你們
很快開發(fā)出來了,但很沮喪的結果是它(你們的產(chǎn)品)沒有銷路;經(jīng)過討論公司又決定讓你的
Team開發(fā)B產(chǎn)品,0K這份好乂是你的強項,你們很快開發(fā)出來了,但很沮喪的結果是它(你
們的產(chǎn)品)又沒有銷路。請問你怎么面對這個問題,你是否覺得決策層很無能扶至要推翻他或者
去一個更有前途的公司?
不要以為這個故事很單純,這應該是人力在考核你。你一定要告訴她(人力多半是女的),我個
人對于失敗的項目肯定會難過(是的,我想了很久才想出''難過〃這個詞,它很中性),不過我認
為這恰恰認證了公司在革新和新技術探索方面的魄力(白己想怎么說,如果天下人都說這句那才
是悲劇呢),我肯定會以個人的名義向領導層提出我自己的建議和看法當然它未必正確,我不會
離開公司,因為有點小挫折未嘗不是好事。(你應該在這個問題上好好想想,盡量發(fā)揮到10分
鐘)
5、你認為項目中最重要的是哪些過程?
分析、設計階段(也可以加上測試,但千萬別說編碼或開發(fā)階段),根據(jù)《人月神話》的觀點:
1/3計劃;1/6編碼;1/4構件測試和早期系統(tǒng)測試;1/4系統(tǒng)測試,所有的構件己完成
但根據(jù)國內(nèi)目前的狀況一般公司不會有很多的分析與設計時間(這取決于?公司規(guī)模和時間成本),
這樣在一個工期很緊張的項目中我們應該盡量分配出進度優(yōu)先級來,首先拿出客戶最希望看到的
和最能證明成果的東西來,其他的留待2期甚至3期去作,你可以告訴客戶需要進一步調(diào)試(專
業(yè)人員的欺騙手段,實際上就是在進行后續(xù)的開發(fā))。
6、如果給你一個4—6個人的Team,那么你怎么分配他們、管理他們?
管理能力和經(jīng)驗的綜合題,可能沒有人有相同的觀點,那你可以按照某些思路來側面解答:我會
挑選?個技術過硬的人作為我的替補和項目的輕騎兵,是的團隊中必須有機動人員,否則你的項
目十有八九會夭折。其他的人會被平均的分配任務。
我們會在每周進行全面的任務分配,每個人獲取一周的大概工作,然后每天的工作由他自己完成
并匯報。(很好,如果答出這些就差不多了,多說可能會出現(xiàn)漏洞)
7、簡述常用的軟件開發(fā)文檔。
1)可行性研究報告(某些公司或模型沒有)
2)項目開發(fā)計劃
3)軟件需求說明書(必有)
4)數(shù)據(jù)要求說明書
5)概要設汁說明書(必有)
6)詳細設計說明書(必有)
7)數(shù)據(jù)庫設計說明書(必有)
8)用戶手冊(一般會有)
9)操作手冊(必有)
10)模塊開發(fā)卷宗
11)測試計劃(必有)
12)測試分析報告
13)開發(fā)進度月報
14)項目開發(fā)總結報告
8、簡述類的關系。
1)當一個類是''一種〃另一個類時:is-a關系
2)當兩個類之間有關聯(lián)時:
一個類''包含〃另一個類:has-a關系
一個類''使用〃另一個類
還可以細分有聚合和組合(UML寶典)或聚集和組成(包括國內(nèi)某些知名學術團體都這么說)。
聚集(aggregation)表示整體與各部分之間的關系。例如汽車與輪胎,沒有了汽車輪胎依然是
一個整體。(用空心菱形表示)
組成是一種整體和部分所屬更強的聚集關系,每個部分只能屬于一個整體,沒有整體部分也就沒
有存在的價值。比如桌子和桌腿,沒有案子也就沒有桌腿的價值了。(用實心菱形表示)
選擇題
1:whichisthemainOmethodreturnofaapplication?
a.string
b.byte
c.char
d.void
2:
whatwillhappenwhenyouattempttocompileandrunthefollowingcode?
intoutput=10;
booleanbl=false;
if((bltrue)&&((output+=10)20))
(
system,out.printlnC^weareequal"+output);
)
else
(
system.out.printlnC^notequal!”+output);
)
choices:
whatwillhappenwhenyouattempttocompileandrunthefollowingcode?
intoutput=10;
booleanbl=false;
if((bltrue)&&((output+=10)20))
(
system,out.println(wwcarcequal'+output);
)
else
{
system,out.printlnC^notequal!”+output);
)
choices:
pilationerror,attemptingtoperformbinarycomparisononlogicaldata
type
b.compilationandoutputof"weareequal10".
c.compilationandoutputof"notequal!20”.
d.compilationandoutputof"notequal!10”.
3:
whatwi11happenwhenyouattempttocompi1eandrunthefollowingcode?
classbase
(
inti=99;
pub1icvoidamethodO
{
system.out.println("base.amethodO");
)
base()
{
amethodO;
)
)
publicclassderivedextendsbase
{
inti=-1;
publicstaticvoidmain(stringargv[])
{
baseb=newderived();
system,out.println(b.i);
b.amethodO;
)
publicvoidamethodO
{
system,out.printlnC^derivcd.amethodO");
)
)
choices:
whatwillhappenwhenyouattempttocompi1candrunthefollowingcode?
classbase
inti=99;
publicvoidamethod()
{
system,out.printIn("base,amethod(),z);
)
base()
(
amethod();
)
)
pubIicclassderivedextendsbase
{
inti=-1;
publicstaticvoidmain(stringargv[])
(
baseb=newderived();
system,out.println(b.i);
b.amethod();
)
publicvoidamethod()
{
system.out.printlnC^derived.amethod()”);
)
)
choices:
a.derived.amethod(>-1derived,amethod()
b.derived,amethod()99
piletimeerror
d.derived,amethod()
4:
下述程序代碼中有語法錯誤的行是()o
inti,ia[10],ib[10];/*第一行*/
for(i=0;i<=9;i++)/*第2行*/
ia[i]=0;/*第3行*/
ib=ia;/*第4行水/
下述程序代碼中有語法錯誤的行是()。
inti,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?
//filename;superclassx.java
packagepackagex;
publicclasssuperclassx
{
protectedvoidsuperclassmethodx()
(
)
intsuperclassvarx:
)
//filenamesubclassy.java
1.packagepackagex.packagey;
2.
3.publicclasssubclassyextendssuperclassx
4.(
5.superclassxobjx=newsubclassy0;
6.subclassyobjy=newsubclassy();
7.voidsubclassmethody()
8.(
9.objy.superclassmethodx();
10.inti;
11.i=objy.superclassvarx;
12.)
13.)
choices:
whatwillbetheresultofexecutingthefollowingcode?
//filename;suporclassx.java
packagepackagex;
publicclasssuperclassx
(
protectedvoidsuperclassmethodx()
{
)
intsuperclassvarx;
)
//filenamesubclassy.java
1.packagepackagex.packagey;
2.
3.publicclasssubclassyextendssuperclassx
4.(
5.superclassxobjx=newsubclassy();
6.subclassyobjy=newsubclassy();
7.voidsubclassmethody()
8.(
9.objy.superc1assmethodx();
10.inti;
11.i=objy.superclassvarx;
12.)
13.)
choices:
pilationerroratline5
pilationerroratline9
c.runtimeexceptionatline11
d.noneofthese
6:whicharenotjavakeywords?
a.true
b.const
c.super
d.void
7:considertheclasshierarchyshownbelow:
classfourwheelerimplementsdrivingutilities
classcarextendsfourwheeler
classtruckextendsfourwhceler
classbusextendsfourwheeler
classcraneextendsfourwheeler
considerthefollowingcodebelow:
1.drivingutilitiesdu;
2.fourwheelerfw;
3.truckmytruck=newtruck();
4.du=(drivingutilities)mytruck;
5.fw=newcrane();
6.fw=du;
whichofthestatementsbelowaretrue?
choices:
a.line4willnotcompilebecauseaninterfacecannotrefertoanobject.
b.thecodewillcompileandrun.
c.thecodewillnotcompilewithoutanexplicitceistatline6,becausegoing
downthehierarchywithoutcastingisnotallowed.
d.thecodewillcoir.pilcifwcputanexplicitcastatline6butwillthrowan
exceptionatruntime.
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<1()|rnethodb(4);
11.b=i<10||methodb(8);
12.)
13.
14.publicstaticvoidmain(stringargs[]}(
15.methoda(0);
16.system,out.printin(j);
17.)
18.)
whatistheresult?
a.theprogramprints“0”
b.theprogramprints"4”
c.theprogramprints“8”
d.theprogramprints"12”
9:
publicclassouterclass{
privatedoubledl=1.0;
//insertcodehere
)
youneedtoinsertaninnerclassdeclarationatline3.whichtwoinnerclass
declarationsare
valid?
publicclassouterclass(
privatedoubledl=1.0;
//insertcodehere
)
youneedtoinsertaninnerclassdeclarationatline3.whichtwoinnerclass
declarationsare
valid?
a.classinnerone{publicstaticdoublemethodaO{returndl;}}
b.publicclassinnerone{staticdoublemethodaO{returndl;}}
c.privateclassinnerone{doublemethodaO{returndl;))
d.staticclassinnerone{protecteddoublemethoda(){returndl;))
10:
thefollowingcodeisentirecontentsofafilecalledex<imple.java,causes
preciselyoneerrorduringcompilation:
classsubclassextendsbascclass{
)
classbaseclass(){
stringstr;
publicbaseclass(){
system.out.println("ok");)
publicbaseclassCstrings){
str=s;}}
publicclassexample{
publicvoidmethod(){
subclasss=newsubclass("hello”);
baseclassb=newbaseclass("world");
)
)
which1inewou1dbecausetheerror?
thefollowingcodeisentirecontentsofafilecalledexample,java,causes
preciselyoneerrorduringcompilation:
classsubclassextendsbaseclass{
)
classbaseclass(){
stringstr;
publicbascclass(){
system,oul.prinlln("ok");}
publicbaseclass(strings){
str=s;}}
publicclassexample{
publicvoidmethod(){
subclasss=newsubclass("hello");
baseclassb=newbaseclass("world");
)
)
whichlinewouldbecausetheerror?
a.9
b.10
c.11
d.12
11:
strings="examplestring”;whichoperationisnotlegal?
strings="examplestring”;whichoperationisnotlegal?
a.inti=s.length();
b.s[3]="x";
c.stringshort_s=s.trim();
d.stringt="rootM+s;
12:軟件生命周期的瀑布模型把軟件項目分為3個階段、8個子階段,以下哪一個是正
常的開發(fā)順序?
a.計劃階段、開發(fā)階段、運行階段
b.設計階段、開發(fā)階段、編碼階段
c.設計階段、編碼階段、維護階段
d.計劃階段、編碼階段、測試階段
13:whichstatementsaboutjavacodesecurityarenottrue?
a.thebytecodeverifierloadsallclassesneededfortheexecutionofaprogram.
b.executingcodeisperformedbytheruntimeinterpreter.
c.atruntimethebytecodesareloaded,checkedandruninaninterpreter.
d.theclassloaderaddssecuritybyseparatingthenamespacesfortheclasses
ofthelocalfilesystemfromthoseimportedfromnetworksources.
14:aclassdesignrequiresthatamembervariableshouldbeaccessibleonlyby
samepackage,whichmodiferwordshouldbeused?
tected
b.public
c.nomodifer
d.private
15:
givethefollowingmethod:
publicvoidmethod(){
stringa,b;
a=newstring("helloworlcln);
b=ncwstring("gameover");
system,out.println(a+b+“ok”);
a=null;
a=b;
system,out.println(a);
)
intheabsenceofcompileroptimization,whichistheearliestpointtheobject
areferedisdefinitelyelibiletobegarbagecollection.
givethefollowingmethod:
publicvoidmethod(){
stringa,b;
a二newstring("helloworld");
b=newstring("gameoverw;
system,out.println(a+b+vok”);
a=nul1;
a二b;
system.out.printIn(a);
)
intheabsenceofcompileroptimization,whichistheearliestpointtheobject
areferedisdefinitelyelibiletobegarbagecollection.
a.beforeline5
b.beforeline6
c.before1ine7
d.beforeline9
簡答題
16:請闡述一下你對java多線程中“鎖”的概念的理解。
17:列出jsp中包含外部文件的方式,兩者有何區(qū)別。
18:請談談對一個系統(tǒng)設計的總體思路。針對這個思路,你覺得應該具備哪些方面的知
識?
19:struts2中的攔截器,你用過那些自帶的攔截器,自己寫過的嗎?
20:怎樣在復雜的各種形式的網(wǎng)頁中提取mp3下載的結構化數(shù)據(jù)?
21:編寫一個在二叉排序樹中查找大小為第k的元素的算法。
22:java多線程編程。用java寫一個多線程程序,如寫四個線程,二個加1,二個對
一個變量減一,輸出。
23:不允許使用系統(tǒng)時間,寫出一個隨機數(shù)生成函數(shù)。
24:hibernate中的id(主鍵)生成器有那嗎?或者你常用的是那些?
25:error和exception有什么區(qū)別?
第一,談談final,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是個java.util下的類,它包含有各種有關集合操作的靜態(tài)方法,
Collection是個java.util下的接口,它是各種集合結構的父接口。
第七,什么時候用
asserto
斷言是一個包含布爾表達式的語句,在執(zhí)行這個語句時假定該表達式為true。
如果表達式計算為那么系統(tǒng)會報告一個
false,AssertionErroro
示例:
assert(a>0);//throwsanAssertionErrorifa<=0
斷言可以有兩種形式:
assertExpressionl;
assertExpressionl:Expression2;
Expressionl應該總是產(chǎn)生一個布爾值。
Expression2可以是得出一個值的任意表達式。這個值用于生成顯示更多調(diào)試信
息的String消息。
斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用source1.4標記:
javac-source1.4Test.java
要在運行時啟用斷言,可使用-enableassertions或者-ea標記。
要在運行時選擇禁用斷言,可使用-da或者-disableassertions標記。
要系統(tǒng)類中啟用斷言,可使用-esa或者-dsa標記。還可以在包的基礎上啟用
或者禁用斷言。
可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞
給私有方法的參數(shù)。不過,斷言不應該用于驗證傳遞給公有方法的參數(shù),因為不
管是否啟用了斷言,公有方法都必須檢查其
參數(shù)。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條
件。另外,斷言不應該以任何方式改變程序的狀態(tài)。
第八,GC是什么?為什么要有GC?
GC是垃圾收集器。Java程序員不用擔心內(nèi)存管理,因為垃圾收集器會自動進行
管理。要請求垃圾收集,可以調(diào)用下面的方法之一:
System.gc()
Runtime.getRuntimeQ.gcO
第九,Strings=newSt「ing("xyz");倉I」建了幾個StringObject?
兩個對象,一個是String類型的〃xyx〃,一個是指向〃xyx〃的引用對象s。
第十,Math.roundQL5)等於多少?Math.round(-11.5)等於多少?
Math.roundQ1.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第二■一的是否可同時是是否可同時是
H,abstractmethodstaticfnative,
是否可同時是synchronized?
都不能
第二十二,接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類
是否可繼承實體類(concreteclass)?
接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實
體類,但前提是實體類必須有明確的構造函數(shù)。
第二十三,啟動一個線程是用run()還是startO?
啟動一個線程是調(diào)用start。方法,使線程所代表的虛擬處理機處于可運行狀態(tài),
這意味著它可以由JVM調(diào)度并執(zhí)行。
這并不意味著線程就會立即運行。run。方法可以產(chǎn)生必須退出的標志來停止一
個線程。
個人猜測,可能是以下結構:
run(){
myThread.start();
)
第二十四,構造器Constructor是否可被override?
構造器Construct?!覆荒鼙焕^承,因此不能重寫Overriding,但可以被重載
Overloading。
第二十五,是否可以繼承String類?
String類是final類故不可以繼承。
第二十六,當一個線程進入一個對象的一個synchronized方法后,其它線程是
否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
第二十七,try{}里有一個return語句,那么緊跟在這個try后的finally{}里的
code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
會執(zhí)行,在return前執(zhí)行。
第二十八,編程題:用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問這種問題。
第二十九,兩個對象值相同(x.equals(y)==true),但卻可有不同的hashcode,
這句話對不對?
不對,有相同的hashcode。
第三十,當一個對象被當作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬
性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?
是值傳遞。Java編程語言只有值傳遞。當一個對象實例作為一個參數(shù)被傳遞到
方法中時,參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改
變,但對象的引用是永遠不會改變的。
第三H■一,swtich是否能作用在byte上,是否能作用在long上,是否能作用
在String上?
switch(exprl)中,exprl是一個整數(shù)表達式。因此傳遞給switch和case語
句的參數(shù)應該是、、或者都不能作用于
intshortcharbyte0long,string
swtich0
第三十二,編程題:寫一個Singleton出來。
Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實
例存在。
一般Singleton模式通常有幾種種形式:
第一種形式:定義一個類,它的構造函數(shù)為private的,它有一個static的private
的該類變量,在類初始化時實例話,通過一個public的getlnstance方法獲取
對它的引用雒而調(diào)用其中的方法。
publicclassSingleton{
privateSingleton(){}
〃在自己內(nèi)部定義自己一個實例,是不是很奇怪?
〃注意這是private只供內(nèi)部調(diào)用
privatestaticSingletoninstance=newSingleton();
〃這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問
publicstaticSingletongetlnstance(){
returninstance;
)
)
第二種形式:
publicclassSingleton{
privatestaticSingletoninstance=null;
publicstaticsynchronizedSingletongetlnstance(){
〃這個方法比上面有所改進,不用每次都進行生成對象,只是第一次
〃使用時生成實例,提高了效率!
if(instance==null)
instance=newSingletonQ;
returninstance;}
)
這是Java與C++區(qū)別的一個比較完整的答案,大家可以學習一下。
JAVA和C++都是面向對象語言。也就是說,它們都能夠實現(xiàn)面向對象思想(封裝,繼乘,
多態(tài))。而由于C++為了照顧大量的C語言使用者,
而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向對象的徹底性!
JAVA則是完全的面向對象語言,它句法更清晰,規(guī)模更小,更易學。它是在對多種程序設
計語言進行了深入細致研究的基礎上,據(jù)棄了其他語言的不足之處,從根本上解決了C++
的固有缺陷。
Java和C++的相似之處多于不同之處,但兩種語言問幾處主要的不同使得Java更容易學習,
并且編程環(huán)境更為簡單。
我在這里不能完全列出不同之處,僅列出比較顯著的區(qū)別:
1.指針
JAVA語言讓編程者無法找到指針來直接訪問內(nèi)存無指針,并且增添了自動的內(nèi)存管理功
能,從而有效地防止了C/C++語言中指針操作失誤,如野指針所造成的系統(tǒng)崩潰。但也不
是說JAVA沒有指針,虛擬機內(nèi)部還是使用了指針,只是外人不得使用而己。這有利于Java
程序的安全。
2.多重繼承
C++支持多重繼承,這是C++的一個特征,它允許多父類派生一個類。盡管多重繼承功能很
強,但使用復雜,而且會引起許多麻煩,編譯程序實現(xiàn)它也很不容易。Java不支持多重繼
承,但允許■個類繼承多個接口(extends+implement),實現(xiàn)了C++多重繼承的功能,又避
免了C++中的多重繼承實現(xiàn)方式帶來的諸多不便。
3.數(shù)據(jù)類型及類
Java是完全面向對象的語言,所有函數(shù)和變量部必須是類的一部分。除了基本數(shù)據(jù)類型之
外,其余的都作為類對象,包括數(shù)組。對象將數(shù)據(jù)和方法結合起來,把它們封裝在類中,這
樣每個對象都可實現(xiàn)自己的特點和行為。而C++允許將函數(shù)和變量定義為全局的。此外,Java
中取消了C/C++中的結構和聯(lián)合,消除了不必要的麻煩。
4.自動內(nèi)存管理
Java程序中所有的對象都是用new操作符建立在內(nèi)存堆棧,,這個操作符類似于C++的
new操作符。下面的語句由一個建立了一個類Read的對象,然后調(diào)用該對象的work方法:
Readr=newRead();
r.work():
語句Readr=newRead();在堆棧結構上建立了一個Read的實例。Java自動進行無用內(nèi)
存回收操作,不需要程序員進行刪除。而c十十中必須由程序貝釋放內(nèi)存資源,增加了程序
設計者的負扔。Java中當一個對象不被再用到時,無用內(nèi)存回收器將給它加.上標簽以示刪
除。JAVA里無用內(nèi)存回收程序是以線程方式在后臺運行的,利用空閑時間工作。
5.操作符重載
Java不支持操作符重載。操作符重載被認為是c卜十的突出特征,在Java中雖然類大體上
可以實現(xiàn)這樣的功能,但操作符重載的方便性仍然丟失了不少。Java語言不支持操作符重
載是為了保持Java語言盡可能簡單。
6.預處理功能
Java不支持預處理功能。c/c十十在編譯過程中都有一個預編澤階段,即眾所周知的預處
理器。預處理器為開發(fā)人員提供了方便,但增加丁編譯的復雜性。JAVA虛擬機沒有預處理
器,但它提供的引入語句import)與c十十預處理器的歡能類似。
7.Java不支持缺省函數(shù)參數(shù),而c卜十支持
在c中,代碼組織在函數(shù)中,函數(shù)可以訪問程序的全局變量。c十十增加了類,提供了類算
法,該算法是與類相連的函數(shù),c十十類方法與Java類方法十分相似,然而,由于c十十
仍然支持c,所以不能阻止c十十開發(fā)人員使用函數(shù),結果函數(shù)和方法混合使用使得程序比
較混亂。
Java沒有函數(shù),作為一個比c十十更純的面向對象的語言,Java強迫開發(fā)人員把所有例行
程序包拈在類中,事實_L,用方法實現(xiàn)例行程序可激勵開發(fā)人員更好地組織編碼。
8字符串
c和c十十不支持字符串變量,在c和c十十程序中使用Null終止符代表字符串的結束,在
Java中字符串是用類對象(strinR和stringBuffer)來實現(xiàn)的,這些類對象是Java語言的核心,
用類對象實現(xiàn)字符串有以下幾個優(yōu)點:
(1)在整個系統(tǒng)中建立字符串和訪問字符串元素的方法是一致的;
(2)J3陽字符串類是作為Java語言的一部分定義的,而不是作為外加的延伸部分;
(3)Java字符串執(zhí)行運行時檢空,可幫助排除一些運行時發(fā)生的錯誤;
(4)可對字符串用“十”進行連接操作。
9"goto語句
“可怕”的goto語句是c和C++的“遺物”,它是該語言技術上的合法部分,引用goto語句引
起了程序結構的混亂,不易理解,got。語句子要用于無條件轉移子程序和多結構分支技術。
鑒于以廣理由,Java不提供got。語句,它雖然指定got。作為關鍵字,但不支持它的使用,
使程序簡潔易讀。
I0.類型轉換
在c和c十十中有時出現(xiàn)數(shù)據(jù)類型的隱含轉換,這就涉及了自動強制類型轉換問題。例如,
在c十十中可將一浮點值賦予整型變量,并去掉其尾數(shù)。Java不支持c十十中的自動強制
類型轉換,如果需要,必須由程序顯式進行強制類型轉換。
11.異常
JAVA中的異常機制用于捕獲例外事件,增強系統(tǒng)容錯能力
try{//可能產(chǎn)生例外的代碼
}catch(exceptionTypename){
〃處理
)
其中exceptionType表示異常類型。而C++則沒有如此方便的機制。
施叱8而加「類是心1<5.0引入的新的類,實質上,StringBuffer是一個線程安全的
StringBuilder,如果只在同一個線程內(nèi)對字符串進行操作,StringBuilder會更快一些,如
果是使用多線程進行操作,需要使用StringBuffer.
StringBuilder是非線程安全的,StringBuffer是線程安全的。
1.一下a,b兩段代碼那個執(zhí)行速度更快?
a.for(inti=100000;i>0;i-){}
b.for(inti=1;i<100001;i++){}
答案:a
2.一下兩段代碼那個執(zhí)行速度更快?
a.Math.max(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){
p.x=100;p.y=200;
)
b.staticvoidchangePoint(Pointp){
p=newPoint(100,200);
)
答案:a.(100,200)b.(700,800)基本類型在方法參數(shù)中是按值傳遞的,而對象是按引用的
值傳遞的,在一個方法內(nèi)如果對象的值改變了,會有影響。但是如果我們改變引用本身,它
的原始弓I用/對象不會改變,只有引用的拷貝會改變。
5.MyClass.java和空文件是合法的java源文件,這個說法正確嗎?答案:是的
6.下面哪種說法正確?
1.Char\u0061ra=,a';
2.Char\u0062='b';
3.Charc='\u0063';
1.1b.2c.3d.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è)務不同,DispatchAction允許你在單個Action類中編
寫多個與業(yè)務相關的方法,這樣可以減少Action類的數(shù)量,并且把相關的業(yè)務方法集合在
一起使得維護起來更容易,
要使用DispatchAction的功能,需要自己創(chuàng)建一個類,通過繼承抽象的DispatchAction得
到。對每個要提供的業(yè)務方法必須有特定的方法signature。例如,我們想要提供一個方法
來實現(xiàn)對購物車添加商品清單,創(chuàng)建了一個類ShoppingCartDispatchAction提供以下的方
法:
publicActionForwardaddltem(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse){
throwsException;
)
那么,這個類很可能還需要一個deleteltem()方法從客戶的購物車中刪除商品清單,還有
clearCart()方法清除購物車等等。這時我們就可以把這些方法集合在單個Action類,不用為
每個方法都提供一個Action類。
在調(diào)用ShoppingCartDispatchAction里的某個方法時,只需在URL中提供方法名作為參數(shù)
值。就是說,調(diào)用addlterO方法的URL看起來可能類似于:
http://myhost/storefront/action/cart?method=addltem
其中method參數(shù)指定ShoppingCartDispatchAction中要調(diào)用的方法。參數(shù)的名稱可以任
意配置,這里使用的"method”只
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物標志物在藥物臨床試驗中的藥物研發(fā)應用
- 生物材料與干細胞聯(lián)合應用策略
- 生物制劑臨床試驗中免疫原性檢測標準化
- 生物傳感器在腫瘤耐藥監(jiān)測中的應用
- 深度解析(2026)GBT 19701.2-2016外科植入物 超高分子量聚乙烯 第2部分:模塑料
- 中石油安全監(jiān)督專員面試題庫與解析
- 生命末期兒童壓瘡預防的全程護理方案
- 項目經(jīng)理的績效考核與反饋
- 新能源項目運維主管技能考核題庫含答案
- 會員運營專員面試題及答案
- 2025年教育技術學專業(yè)研究生入學考試試題及答案
- 2025侵襲性肺真菌病診斷與治療指南解讀課件
- 2025至2030中國核電儀器儀表行業(yè)市場深度調(diào)研及發(fā)展前景與投資報告
- 2025年商業(yè)房地產(chǎn)市場調(diào)研:寫字樓、商鋪及運營效益分析報告
- 2025四川宜賓市新興產(chǎn)業(yè)投資集團有限公司及其子公司第二批員工招聘18人備考題庫附答案解析
- 統(tǒng)編版(部編版)2024一年級上冊道德與法治2025秋期末測試卷(含知識點+答案)
- 5.3《角的初步認識》(課件)-2025-2026學年三年級上冊數(shù)學 人教版
- 2025年國家義務教育質量監(jiān)測小學德育模擬測評估考試題庫+答案
- 市場監(jiān)督管理局安全生產(chǎn)
- 集成電路封裝測試廠建設項目可行性研究報告
- 2025年高中歷史會考條件真題試卷及答案
評論
0/150
提交評論