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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上高級軟件工程師、項目經理面試題1、 類、對象的概念?2、 簡述抽象?3、 接口與抽象類?4、內部類(Inner Class)?5、訪問修飾符限制?6、Static關鍵字的使用?7、final關鍵字?8、abstract關鍵字?9、native關鍵字?10、synchronized關鍵字?11、運行時異常與一般異常有何異同?12、編程題:寫一個Singleton出來。13、分類列舉服務器和組件技術?14、Http與Https ?15、OSI(Open System Interconnection)網絡抽象模型?16、J2EE的容器與服務器?17、繼承限制?18、邏輯操作

2、:c=(ab)?a:b;等同于下式?19、列舉常見集合框架類型?20、面向對象的特征?21、Java命名規(guī)范?22、Java語言共包含47個關鍵字?23、設計模式?24、簡述MVC的應用(如STRUTS1.x、STRUTS2.x架構等)?25、WEBSERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。26、存儲過程和函數的區(qū)別?27、游標的作用?如何知道游標已經到了最后?28、你認為一個項目如何進行才正確?29、你經??椿蜃屑氀凶x過的書有哪些?30、你認為你應聘我們公司的項目經理,你自身的優(yōu)勢在哪?31、你認為項目中最重要的是哪些過程32

3、、如果給你一個46個人的Team,那么你怎么分配他們、管理他們?33、簡述常用的軟件開發(fā)文檔34、簡述類的關系高級軟件工程師面試題答案1、 類、對象的概念: 1) 類:具有共同屬性和行為的對象的抽象。類是創(chuàng)建對象的模板。 2) 對象:現實世界中的實體。在計算機中,是指可標識的存儲區(qū)域。 3) 類是對象的抽象、對象是類的實例。 2、 抽象:是從特定的實例中抽取共同性質形成一般化概念的過程。3、 接口與抽象類: 1)接口和抽象類都用于抽象,接口是抽象類的抽象。 2)接口中只有方法聲明,沒有實現(無方法體);在接口中聲明的方法具有public和abstract屬性,一個類可以實現多個接口(即多繼承)

4、,接口以,分隔;接口中的方法必須全部實現。 3)抽象類可以有部分方法實現,抽象類必須通過繼承才能使用。4、 內部類(Inner Class): 1)內部類是嵌套在另一個類中的類。 2)內部類用于名稱隱藏和程序代碼的組織,另外內部類擁有直接訪問其外部類所有成員(包括private的)的權限(無需任何關鍵字修飾)。 3)內部類不可以在其他類或main方法里實例化,必須使用如下方法(非靜態(tài)內部類) 外部類.內部類 對象名=new 外部類().new 內部類(); 靜態(tài)內部類調用方式: 外部類.內部類 對象名=new 外部類.內部類(); 4)非靜態(tài)內部類不可以聲明靜態(tài)成員;靜態(tài)內部類的非靜態(tài)成員可以

5、訪問其外部類的靜態(tài)成員,聲明為靜態(tài)的成員不可以訪問外部的非靜態(tài)成員。5、 訪問修飾符限制: Private protected friendly(default) public 同類 Y Y Y Y 同包不同類 N Y Y Y 同包子類 N Y Y Y 不同包不同類 N N N Y 不同包子類 N Y N Y6、 Static關鍵字的使用: 1)類成員,直接使用 類名.成員 調用。 2)靜態(tài)方法只能訪問靜態(tài)成員。 3)靜態(tài)方法不能使用this、super關鍵字。 4)靜態(tài)方法不能被非靜態(tài)方法重寫或重載。 7、 final關鍵字: 1)被final修飾的變量為常量不能改變。 2)被final修飾

6、的方法不可以重寫。 3)被final修飾的類不能被繼承。 8、 abstract關鍵字: 1)被abstract修飾的類不能實例化。 2)被abstract修飾的方法只能在子類中實現。 9、 native關鍵字:非Java語言的編寫,例如JNI技術。 10、 synchronized關鍵字:多線程的同步訪問控制。 11、運行時異常與一般異常有何異同?異常表示程序運行過程中可能出現的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。(Throwable是所有Jav

7、a程序中錯誤處理的父類,有兩種資類:Error和Exception。 Error:表示由JVM所偵測到的無法預期的錯誤,由于這是屬于JVM層次的嚴重錯誤,導致JVM無法繼續(xù)執(zhí)行,因此,這是不可捕捉到的,無法采取任何恢復的操作,頂多只能顯示錯誤信息。Exception:表示可恢復的例外,這是可捕捉到的。Java提供了兩類主要的異常:runtime exception和checked exception。checked異常也就是我們經常遇到的IO異常,以及SQL異常都是這種異常。對于這種異常,JAVA編譯器強制要求我們必需對出現的這些異常進行catch。所以,面對這種異常不管我們是否愿意,只能自己

8、去寫一大堆catch塊去處理可能的異常。 但是另外一種異常:runtime exception,也稱運行時異常,我們可以不處理。當出現這樣的異常時,總是由虛擬機接管。比如:我們從來沒有人去處理過NullPointerException異常,它就是運行時異常,并且這種異常還是最常見的異常之一。 出現運行時異常后,系統(tǒng)會把異常一直往上層拋,一直遇到處理代碼。如果沒有處理塊,到最上層,如果是多線程就由Thread.run()拋出,如果是單線程就被main()拋出。拋出之后,如果是線程,這個線程也就退出了。如果是主程序拋出的異常,那么這整個程序也就退出了。運行時異常是Exception的子類,也有一般

9、異常的特點,是可以被Catch塊處理的。只不過往往我們不對他處理罷了。也就是說,你如果不對運行時異常進行處理,那么出現運行時異常之后,要么是線程中止,要么是主程序終止。 如果不想終止,則必須撲捉所有的運行時異常,決不讓這個處理線程退出。隊列里面出現異常數據了,正常的處理應該是把異常數據舍棄,然后記錄日志。不應該由于異常數據而影響下面對正常數據的處理。在這個場景這樣處理可能是一個比較好的應用,但并不代表在所有的場景你都應該如此。如果在其它場景,遇到了一些錯誤,如果退出程序比較好,這時你就可以不太理會運行時異常,或者是通過對異常的處理顯式的控制程序退出。異常處理的目標之一就是為了把程序從異常中恢復

10、出來。)12、編程題:寫一個Singleton出來。Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。一般Singleton模式通常有幾種種形式:第一種形式:定義一個類,它的構造函數為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調用其中的方法。publicclassSingletonprivateSingleton()/在自己內部定義自己一個實例,是不是很奇怪?/注意這是private只供內部調用privatestaticSingletonin

11、stance=newSingleton();/這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問publicstaticSingletongetInstance()returninstance;第二種形式:publicclassSingletonprivatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance()/這個方法比上面有所改進,不用每次都進行生成對象,只是第一次/使用時生成實例,提高了效率!if(instance=null)instancenewSingleton();retur

12、ninstance;其他形式:定義一個類,它的構造函數為private的,所有方法為static的。一般認為第一種形式要更加安全些13、分類列舉服務器和組件技術:1)服務器端技術:Jsp、Servlet; 2)組件技術:JavaBean、EJB。 14、Http與Https:Https即多了安全的Http,s(Security Socket Layer)指加密套接字協(xié)議層(簡寫SSL)。 15、OSI(Open System Interconnection)網絡抽象模型: 1)由國際標準化組織(ISO)提出。 2)將互聯(lián)網分為七層,從下至上分別為:物理層(physical)、數據鏈路層(dat

13、a link)、網絡層(network)、傳送層(transport)、會話層(session)、表示層(presentation)、應用層 (application)。底層通過提供接口支持上層功能。各層詳解: 物理層:LAN/ATM,為硬件層。 數據鏈路層:LAN/ATM 網絡層:IP協(xié)議,IOS 傳輸層:TCP/UDP協(xié)議,支持Java Socket。 會話層: 表示層:HTML、XML 應用層:HTTP協(xié)議,使用Java Servlet/JSP 16、J2EE的容器與服務器: 容器負責EJB組件中生命周期的控制; 服務器包含在容器外,提供系統(tǒng)級操作底層服務,包括事務、事件、多線程。 17

14、、繼承限制:父類對象不可以賦給子類對象,因為子類可能具有更多的成員,反之可以。 18、邏輯操作:c=(ab)?a:b;等同于下式 if(ab) c=a; else c=b; 19、列舉常見集合框架類型:1)List、Set、Map。由這三個接口實現出ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等常用集合框架。 2)Vector屬于重量級組件不推薦使用。 3)Map類型維護鍵/值對,Hashtable與HashMap相近但效率略低于HashMap、高于TreeMap,TreeMap優(yōu)點是可以排序。 4)Set類型可裝入唯一值,HashS

15、et效率高于TreeSet但TreeSet可以維護內部元素的排序狀態(tài)。 5)List類型可按某種特定順序維護元素。ArrayList允許快速隨機訪問,但如果添加或刪除位于中間的元素時效率很低;LikedList提供最 佳循序訪問及快速的中間位置添加刪除元素,并有addFirst、addLast、getFirst、getLast、removeFirst、 removeLast方法。20、面向對象的特征: 1)繼承:通過子類可以實現繼承,子類繼承父類的所有狀態(tài)和行為,同時添加自身的狀態(tài)和行為。 2)封裝:將代碼及處理數據綁定在一起的一種編程機制,該機制保證程序和數據不受外部干擾。 3)多態(tài):包括重

16、載和重寫。重載為編譯時多態(tài),重寫是運行時多態(tài)。重載必須是同類中名稱相同參數不同(包括個數不同和類型不同),但返回類型不同不構成重載;重寫發(fā)生于子類對父類的覆蓋,子類繼承父類方法名相同、參數列表相同、返回類型相同才構成重寫。21、Java命名規(guī)范:必須以英文字母、下劃線(_)或$開始,其余可以有數字但不允許 包含空格,且組合后的名稱不能是Java關鍵字或保留字。 匈牙利命名法:以m開始為類成員變量,以g開始為全局變量,以v開始為本地局部變量,常量命名一般不以下劃線、美元符開始。 駝峰命名:一般稱由多個單詞或縮寫組成的變量名,并且該變量名每個單詞首字母均為大寫(一般類名全部首字母大寫,方法或屬性名

17、第一個字母小寫)的稱為駝峰命名。22、Java語言共包含47個關鍵字。23、設計模式: 一個設計模式描述了一個被證實可行的方案。這些方案非常普遍,是具有完整定義的最常用的模式。一般模式有4個基本要素:模式名稱(pattern name)、問題(problem)、解決方案(solution)、效果(consequences)。 常見23種模式概述: 1) 抽象工廠模式(Abstract Factory):提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。 2) 適配器模式(Adapter):將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工

18、作的類可以一起工作。 3) 橋梁模式(Bridge):將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 4) 建造模式(Builder):將一個復雜對象的構建與它的表示分離,使同樣的構建過程可以創(chuàng)建不同的表示。 5) 責任鏈模式(Chain of Responsibility):為解除請求的發(fā)送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它。 6) 命令模式(Command):將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日志,以及支持可取消的操作。 7) 合成模式(Compos

19、ite):將對象組合成樹形結構以表示“部分整體”的層次結構。它使得客戶對單個對象和復合對象的使用具有一致性。 8) 裝飾模式(Decorator):動態(tài)地給一個對象添加一些額外的職責。就擴展功能而言,它能生成子類的方式更為靈活。 9) 門面模式(Facade):為子系統(tǒng)中的一組接口提供一個一致的界面,門面模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。 10) 工廠方法(Factory Method):定義一個用于創(chuàng)建對象的接口,讓子類決定將哪一個類實例化。Factory Method 使一個類的實例化延遲到其子類。 11) 享元模式(Flyweight):運用共享技術以有效地支持

20、大量細粒度的對象。 12) 解釋器模式(Interpreter):給定一個語言,定義它的語法的一種表示,并定義一個解釋器,該解釋器使用該表示解釋語言中的句子。 13) 迭代子模式(Iterator):提供一種方法順序訪問一個聚合對象中的各個元素,而又不需暴露該對象的內部表示。 14) 調停者模式(Mediator):用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式的內部表示。 15) 備忘錄模式(Memento):在不破壞封裝性的前提下,捕獲一個對象的內部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復到保存的狀態(tài)。 16) 觀察者模式(Observer):定義對象間的

21、一種一對多的依賴關系,以便當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動刷新。 17) 原始模型模式(Prototype):用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這個原型創(chuàng)建新的對象。 18) 代理模式(Proxy):為其他對象提供一個代理以控制對這個對象的訪問。 19) 單例模式(Singleton):保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。 20) 狀態(tài)模式(State):允許一個對象在其內部狀態(tài)改變時改變它的行為。對象看起來似乎修改了它所屬的類。 21) 策略模式(Strategy):定義一系列的算法,把它們一個個封裝起來,并且使它們可相互替換。本模式使

22、得算法的變化可獨立于使用它的客戶。 22) 模板模式(Template Method):定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 23) 訪問者模式(Visitor):表示一個作用于某對象結構中的各元素的操作。該模式可以實現在不改變各元素的類的前提下定義作用于這些元素的新操作。 24、STRUTS的應用(如STRUTS架構)Struts是采用JavaServlet/JavaServerPages技術,開發(fā)Web應用程序的開放源碼的framework。采用Struts能開發(fā)出基于MVC(Model-View-C

23、ontroller)設計模式的應用構架。Struts有如下的主要功能:一.包含一個controllerservlet,能將用戶的請求發(fā)送到相應的Action對象。二.JSP自由tag庫,并且在controllerservlet中提供關聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應用。三.提供了一系列實用對象:XML處理、通過JavareflectionAPIs自動處理JavaBeans屬性、國際化的提示和消息。25、WEBSERVICE名詞解釋。JSWDL開發(fā)包的介紹。JAXP、JAXM的解釋。SOAP、UDDI,WSDL解釋。WebServiceWebService是基于網絡的、分布式的模塊化組件,它執(zhí)

24、行特定的任務,遵守具體的技術規(guī)范,這些規(guī)范使得WebService能與其他兼容的組件進行互操作。JAXP(JavaAPIforXMLParsing)定義了在Java中使用DOM,SAX,XSLT的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當你需要改變具體的實現時候也不需要修改代碼。JAXM(JavaAPIforXMLMessaging)是為SOAP通信提供訪問方法和傳輸機制的API。WSDL是一種XML格式,用于將網絡服務描述為一組端點,這些端點對包含面向文檔信息或面向過程信息的消息進行操作。這種格式首先對操作和消息進行抽象描述,然后將其綁定到具體的網絡協(xié)議和消息格式上以定義端點。

25、相關的具體端點即組合成為抽象端點(服務)。SOAP即簡單對象訪問協(xié)議(SimpleObjectAccessProtocol),它是用于交換XML編碼信息的輕量級協(xié)議。UDDI的目的是為電子商務建立標準;UDDI是一套基于Web的、分布式的、為WebService提供的、信息注冊中心的實現標準規(guī)范,同時也包含一組使企業(yè)能將自身提供的WebService注冊,以使別的企業(yè)能夠發(fā)現的訪問協(xié)議的實現標準。26、存儲過程和函數的區(qū)別 存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶可以調用存儲過程,而函數通常是數據庫已定義的方法,它接收參數并返回某種類型的值并且不涉及特定用戶

26、表。 27、 你認為一個項目如何進行才正確?(比如:盡一切可能快的完成任務或完全按照類似CMM來操作)根據林銳博士的觀點:企業(yè)的根本目標是合法地賺取盡可能多的利潤,使企業(yè)利益最大化。企業(yè)所有的特定目標和行動都是圍繞上述根本目標開展的,任何背離根本目標的行動都將對企業(yè)造成傷害,應當杜絕。 基于此任何人都不要強調我將嚴格遵守XX模式,帶領團隊開發(fā)出具有XX等級的產品,企業(yè)需要的是能夠帶領團隊按時、合格的開發(fā)出產品的Manager。 28、 你經??椿蜃屑氀凶x過的書有哪些? 不用回答你看過的課本,枚舉幾個經典的當然前提是必須真的看過至少瀏覽過主題和目錄。比如Java編程思想、Java模式、人月神話等

27、,由于將來要做的是team中的替補leader或真正的leader所以你必須說出軟工的東西。29、 你認為你應聘我們公司的項目經理,你自身的優(yōu)勢在哪?1)融洽,沒有領導希望你帶領團隊每天打嘴仗然后他還要去開屁股(Sorry,這似乎不很文明),你必須說明你能在以往團隊中與其他人和諧相處。 2)技術,千萬不要謙虛,對方要的就是技術過硬、能力出眾的人才,你只需要說明你成功解決過什么難題并且你對J2EE、XX中間件、XX系統(tǒng)有多么的熟悉。4、 如果給你一個Team,公司決定讓你的Team開發(fā)A產品,OK這恰好是你的強項,你們很快開發(fā)出來了,但很沮喪的結果是它(你們的產品)沒有銷路;經過討論公司又決定讓

28、你的Team開發(fā)B產品,OK這恰好又是你的強項,你們很快開發(fā)出來了,但很沮喪的結果是它(你們的產品)又沒有銷路。請問你怎么面對這個問題,你是否覺得決策層很無能甚至要推翻他或者去一個更有前途的公司? 不要以為這個故事很單純,這應該是人力在考核你。你一定要告訴她(人力多半是女的),我個人對于失敗的項目肯定會難過(是的,我想了很久才想出“難過”這個詞,它很中性),不過我認為這恰恰認證了公司在革新和新技術探索方面的魄力(自己想怎么說,如果天下人都說這句那才是悲劇呢),我肯定會以個人的名義向 領導層提出我自己的建議和看法當然它未必正確,我不會離開公司,因為有點小挫折未嘗不是好事。(你應該在這個問題上好好想想,盡量發(fā)揮到10分鐘) 30、 你認為項目中最重要的是哪些過程? 分析、設計階

溫馨提示

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

評論

0/150

提交評論