軟件工程筆試題及答案
職場軟件工程筆試題及答案
從小學、初中、高中到大學乃至工作,我們最不陌生的就是試題了,筆試題是學?;蚋髦鬓k方考核某種知識才能的標準。你知道什么樣的試題才算得上好試題嗎?這里小編給大家分享一些關(guān)于軟件工程筆試題及答案,方便大家學習了解。
軟件工程師面試筆試題及答案
一、填空(10__1分=10);(1)產(chǎn)品設(shè)想是產(chǎn)品用途和形式的概括描述,可以通;(2)項目范圍是項目中要完成的工作;(3)產(chǎn)品設(shè)計過程的特點可以概括為自頂向下和以用;(4)備選需求的思想可以來自設(shè)計團隊的內(nèi)部或外部;(5)工程設(shè)計的第一步是工程設(shè)計分析;(6)體系結(jié)構(gòu)設(shè)計必須既考慮功能需求,又考慮非功;(7)設(shè)計模式出現(xiàn)在幾個不同的抽象級別上,包括體;(8)
一、填空(10 __1分=10)
(1)產(chǎn)品設(shè)想是產(chǎn)品用途和形式的概括描述,可以通過主要產(chǎn)品功能列表的形式詳細闡明。
(2)項目范圍是項目中要完成的工作。風險承擔者是受產(chǎn)品影響或參與。影響產(chǎn)品開發(fā)的任何人。
(3)產(chǎn)品設(shè)計過程的特點可以概括為自頂向下和以用戶為中心。前者意味著設(shè)計人員首先要在高抽象級別上引出需要并生成、改進、評估和選擇需求,然后再依次在更低的級別上引出需要并生成、改進、評估和選擇需求。后者意味著設(shè)計過程是以風險承擔者為焦點,使用實驗評估,而且高度重復。
(4)備選需求的思想可以來自設(shè)計團隊的內(nèi)部或外部。前一種來源包括用戶和其他風險承擔者、專家、現(xiàn)實物品和比喻、競爭產(chǎn)品和相似產(chǎn)品。后一種來源包括團隊集體討論、個人獨立思考和建模。
(5)工程設(shè)計的第一步是工程設(shè)計分析。這項活動的輸入包括可能以各種模型和原型作為其補充的SRS,它們都是在產(chǎn)品設(shè)計過程中產(chǎn)生的。從軟件的生命周期的觀點來說,工程設(shè)計發(fā)生在設(shè)計階段。在這項活動中分析問題的好方法是建模,這將產(chǎn)生該活動的主要輸出。
(6)體系結(jié)構(gòu)設(shè)計必須既考慮功能需求,又考慮非功能需求。使程序能夠滿足其功能需求的體系結(jié)構(gòu)可能有任意多個,但其中只有質(zhì)量特性能夠同時使程序滿足其非功能需求。軟件體系結(jié)構(gòu)設(shè)計者必須考慮多種程序以找出那些所能指定的程序既能滿足功能需求,又能滿足非功能需求的結(jié)構(gòu)。
(7)設(shè)計模式出現(xiàn)在幾個不同的抽象級別上,包括體系結(jié)構(gòu)風格,它是處于體系結(jié)構(gòu)級別的模式;中級設(shè)計模型它是設(shè)計類及其交互作用的模式;數(shù)據(jù)結(jié)構(gòu)和算法它是實現(xiàn)抽象數(shù)據(jù)類型和有效操作的模式;編程慣用法,它是能夠有效使用特定編程語言的模式。
(8)在應(yīng)用樹中,樹根以utility加以標記,根的子樹是概貌的名稱,樹葉表示場景。這些樹幫助生成用來評估體系結(jié)構(gòu)方案的場景的集合。
(9)正確使用表示方法的SAD是結(jié)構(gòu)良好的SAD,全部可以由一個程滿足的一組設(shè)計說明是一致的。所指定的程序能夠滿足其所有需求的軟件體系結(jié)構(gòu)是完整的。如果SAD易于理解,則是清晰的。
(10)詳細設(shè)計解析非常類似于體系結(jié)構(gòu)設(shè)計解析。可用于生成和改進設(shè)計方案的技術(shù)包括基于程序功能的分解、基于質(zhì)量特性的分解、從概念模型中復制設(shè)計、根據(jù)類似程序的設(shè)計模型創(chuàng)建設(shè)計以及使設(shè)計基于設(shè)計模式之上。
二、名詞解釋(5__3分=15)
1. 模型
模型是用來表示另一個實體(目標)的實體,建立模型要確定目標的部件或元素與模型的部件或元素之間的對應(yīng)關(guān)系,還要確定目標的部件或元素間相互關(guān)系與模型的部件或元素間相互關(guān)系之間的對應(yīng)關(guān)系。
2. 靜態(tài)設(shè)計模型
靜態(tài)設(shè)計模型表示不會在程序執(zhí)行過程中發(fā)生變化的程序方面。
3. 動態(tài)設(shè)計模型
動態(tài)設(shè)計模型表示在程序執(zhí)行過程中所發(fā)生的事情。
4. 用例
用例是產(chǎn)品與環(huán)境之間完整交互作用的類型。
5. 場景
場景是產(chǎn)品與特定個人之間的交互作用。
6. 類模型
問題或軟件解決方案中類的表示。
7. 抽象類
它是一個不能被實例化的類,任何至少有一個抽象操作的類都必定是抽象類,因為如果實例化這樣的類,那么客戶并不能調(diào)用其包含的抽象操作,不是抽象類的類是具體類。
8. UML接口
是公有的屬性和抽象操作的有名集合。
9. 虛擬設(shè)備
真實硬件設(shè)備或系統(tǒng)的軟件模擬或接口。
10. 同步消息
從一個對象到另一個對象的通信,而這個發(fā)送個體在發(fā)送信息之后暫停執(zhí)行。
11. 異步消息
從一個對象到另一個對象的通信,而這個發(fā)送個體在發(fā)送信息之后繼續(xù)執(zhí)行。
12. 嚴格分層體系結(jié)構(gòu)
允許每層只使用緊鄰其下的那一層的分層體系結(jié)構(gòu)
13. 松弛分層體系結(jié)構(gòu)
允許每層都可以使用其下的所有層的分層體系結(jié)構(gòu)
14. 黑板體系結(jié)構(gòu)風格
當共享數(shù)據(jù)庫改變時,共享數(shù)據(jù)庫將激活存取器。這種變體稱為黑板體系結(jié)構(gòu)風格,共享數(shù)據(jù)庫稱為黑板
15. 倉庫體系結(jié)構(gòu)風格
共享數(shù)據(jù)庫是被動的,由存取器對其進行查詢,這些存取器可以繼續(xù)運行,或者由其他某個組件控制,這種變體稱為倉庫體系結(jié)構(gòu)風格,共享數(shù)據(jù)庫稱為倉庫
16. 異構(gòu)體系結(jié)構(gòu)
采用兩種或多種體系結(jié)構(gòu)風格的體系結(jié)構(gòu)
三、簡答題(30分)
1. 說出設(shè)計當作問題解決方案來考慮的3個優(yōu)點。
第一:這意味著信息在問題和解決方案之間可能是隔離的
第二:由此產(chǎn)生的看待設(shè)計的觀點
第三:意味著要在設(shè)計中使用歷史悠久的一般的問題解決技術(shù)
2. 為什么說抽象化是重要的問題解決技術(shù)?說出3點理由。
a) 使問題簡化——真實的問題總是有許多與其解決方案無關(guān)的細節(jié)
b) 使問題的解決結(jié)構(gòu)化——許多設(shè)計問題都太大太復雜,以致不能完全解決
c) 有助于以自頂向下的方式構(gòu)成問題解決過程
3. 例舉建模的好處和危險。
好處:可以簡化要表示的目標,從而使我們更容易理解,記錄和研究目標。研究模型還可能比直接研究目標更省成本,更安全。
危險:模型永遠不能精確再現(xiàn)所表示的目標,因此研究模型得出的結(jié)論有可能不正確。
4. 例舉軟件的產(chǎn)品設(shè)計人員和工程設(shè)計人員所關(guān)注的具體方面。
部分具體的軟件產(chǎn)品設(shè)計:屏幕布局——包括用戶界面組件的布置以及這些組件的大小,字體顏色和外觀;用戶與程序之間的交互順序;消息的編寫;圖像的使用和外觀;
程序?qū)?zhí)行的功能;程序所需的輸入和產(chǎn)生的輸出;程序的質(zhì)量和可靠性;用戶使用該程序達到其目標的易用性;程序是如何適應(yīng)和改變用戶工作方式
部分具體的軟件工程設(shè)計:構(gòu)成程序的主要部件或子系統(tǒng),包括它們的接口,功能,交互作用,速度等;程序中的模塊以及這些模塊的接口;程序中模塊之間的交互作用;模塊的內(nèi)部細節(jié),包括它們的數(shù)據(jù)和行為;程序中使用的數(shù)據(jù)結(jié)構(gòu)和算法;程序中異常和錯誤處理機制;程序中的進程和線程。
5. 為了核實某個用例圖是否包括所有應(yīng)該包括的用例,設(shè)計人員應(yīng)該怎樣做?
通過檢查產(chǎn)品需要清單來確保所有需要都已得到滿足,或者確保所有未被滿足的需要都是故意為之的,設(shè)計人員可以檢查用例圖的完整性
6. 給出3個因太小而不應(yīng)成為用例的活動示例。
某些因太小而不宜作為用例的活動示例是:給設(shè)備或另一個系統(tǒng)發(fā)送信號或消息,接收來自設(shè)備或另一個系統(tǒng)的信號或消息,向用戶顯示消息。
7. 哪些表示法可用于用例描述?
任何能夠說明交互作用中活動流程的表示法都可以用于用例描述,其中包括uml活動圖,uml交互作用圖,流程圖,編程語言和自然語言。
8. 為什么至少必須有一個風險承擔者的需要與用例有關(guān)?
如果某種產(chǎn)品的任何風險承擔者都沒有與某個用例相關(guān)的需要,則該產(chǎn)品就沒有理由支持這個用例。產(chǎn)品應(yīng)該滿足風險承擔者的需要和要求,產(chǎn)品的所有特點和功能都應(yīng)該服務(wù)于這個目標。
9. 如果在開始工作時沒有完整、正確和一致的產(chǎn)品設(shè)計,那么工程設(shè)計人員必須做什么?
如果工程設(shè)計人員沒有得到由產(chǎn)品設(shè)計人員提供的完整,正確和一致的產(chǎn)品設(shè)計,則除了親自完成產(chǎn)品設(shè)計以外別無選擇,如果完全不知道產(chǎn)品是什么,就不可能想出如何來實現(xiàn)產(chǎn)品。
10.對工程設(shè)計分析最有用的靜態(tài)和動態(tài)模型是什么?
對面向?qū)ο蟮墓こ谭治鲎钣杏玫撵o態(tài)模型是分析類模型,最有用的動態(tài)模型是用例模型
11.給出一些不應(yīng)該出現(xiàn)在概念模型中但應(yīng)該出現(xiàn)在設(shè)計類模型中的實例。
不應(yīng)該出現(xiàn)在概念模型中但應(yīng)當出現(xiàn)在設(shè)計類模型中的示例是那些與軟件系統(tǒng)有關(guān)而問題無關(guān)的實體,具體例子包括只與實現(xiàn)有關(guān)的類屬性,比如:計數(shù)器,引用以及僅僅為了方便的變量;還有只與實現(xiàn)有關(guān)的屬性的特征,比如屬性是公有還是私有,屬性的數(shù)據(jù)結(jié)構(gòu)是什么;以及只與實現(xiàn)有關(guān)的操作,比如構(gòu)造函數(shù),析構(gòu)函數(shù),結(jié)束函數(shù),獲取惡化設(shè)置屬性的方法;或者是只與實現(xiàn)有關(guān)的操作的特征,比如操作是公有還是私有,它們支持哪種并發(fā)性。
12.給出一些不應(yīng)該出現(xiàn)在設(shè)計類模型中但應(yīng)該出現(xiàn)在實現(xiàn)類模型中的實例。
不應(yīng)該出現(xiàn)在設(shè)計類模型中但應(yīng)當出現(xiàn)在實現(xiàn)類模型中的示例是那些與特定環(huán)境和語言中的程序?qū)崿F(xiàn)有關(guān)的實體。具體的例子有來自類庫的具體類,比如Java.lang.integer;還有哪些為語言所特有的數(shù)據(jù)類型,比如unsinged long;以及操作和初始化表達式
13.在軟件體系結(jié)構(gòu)文檔中應(yīng)該包括什么信息?
軟件體系結(jié)構(gòu)文檔應(yīng)該包括產(chǎn)品概述,給出體系結(jié)構(gòu)模型,提供模型之間的`映射,解釋設(shè)計的理論依據(jù),并包括詞匯表
14.什么圖可以用來模擬程序部件之間的協(xié)作?說出五種。
Uml順序圖,通信圖,活動圖,用例模型,數(shù)據(jù)流程圖
15.描述用于生成中級設(shè)計模型的兩種創(chuàng)建技術(shù)和兩種轉(zhuǎn)換技術(shù)。
兩種創(chuàng)建技術(shù)是功能分解和基于主題的分解。在功能分解技術(shù)中,為得到低級別的組件而分解高級別組件的功能。在基于主題的分解技術(shù)中,設(shè)計主題從設(shè)計故事中被吸取出來,然后用來生成解決各個主題的模式。
兩種轉(zhuǎn)換技術(shù)是把概念模型轉(zhuǎn)換為設(shè)計模型以及轉(zhuǎn)換類似程序的設(shè)計,轉(zhuǎn)換概念模型從概念模型著手,將其元素從問題實體轉(zhuǎn)換為設(shè)計組件,修改這些組件并添加必要的新組件,。轉(zhuǎn)換類似的設(shè)計需要修改原來的設(shè)計,以滿足新產(chǎn)品的需求。
16.職責是如何幫助做出模塊中應(yīng)該放入哪些操作和數(shù)據(jù)的決策?
某個模塊為履行其職能所需的全部數(shù)據(jù)和操作都應(yīng)該被放入該模塊中,也只有這樣的數(shù)據(jù)和操作才應(yīng)該被放入該模塊之中。這將增強模塊的內(nèi)聚性,并降低模塊的耦合性。
17.解釋操作何時活動、暫?;驁?zhí)行。對象可以暫停嗎?為什么?
操作當某個進程在運行其代碼時處于執(zhí)行狀態(tài),當?shù)却较⒎祷貢r處于暫停狀態(tài),當執(zhí)行或暫停時屬于活動狀態(tài),對象可以是活動的,因為對象可以有一個或多個活動的操作,但對象不能被暫停,。有人可能會說,如果某個對象的一個或多個操作被暫停,則該對象就處于暫停狀態(tài),但是,一個或多個操作被暫停的對象卻可能有一個或多個操作正在執(zhí)行,因為可能有多個進程在運行該對象的代碼,因此說一個或多個操作被暫停的對象處于暫停狀態(tài)是沒有意義的。
18.可選、選擇、中斷和循環(huán)片斷分別可以有多少個操作數(shù)?
可選,中斷和循環(huán)片段只能有一個操作數(shù),選擇片段可以有一個或多個操作數(shù)。
19.解釋分層風格如何支持重用的?
在分層體系結(jié)構(gòu)中,每一層都應(yīng)當包含內(nèi)聚元素,并只和它下面的那個模塊耦合,這樣可以比較容易的提取有一個層并在另一個程序中使用它,此外,類似的程序可能需要類似的層,所以層的重用也將更加容易。
20.解釋分層風格的程序難以調(diào)試的原因。
在具有分層體系結(jié)構(gòu)的程序中實現(xiàn)許多程序特性將跨越幾個層,也許是大部分層,如果出現(xiàn)bug,則難以確定發(fā)生故障的層,從而使程序難以調(diào)試。
10. 下面的UML序列圖是對一個自動氣象站中對象的交互行為建模。在圖中直接圈出所有
錯誤,并重新繪制順序圖。(10分)
(1) 根據(jù)上圖中,什么消息被發(fā)送Weathervane對象?
cheeckDirection() checkSpeed()
(2)創(chuàng)建了多少個Observation 對象?
1個
(3)record( )操作在其參數(shù)設(shè)置前是否能被調(diào)用?
否
(4)self對象的類型是什么?
整型
(5)Weathervane對象的名稱是什么?
W
11. 下面兩張圖中,哪一張圖是框線圖,并簡述框線圖的用途。(5分)
第一張圖是
框線圖的用途:因為關(guān)于框線圖的規(guī)定非常松散,所以它們不僅可用于靜態(tài)建模,也可用于動態(tài)建模,還能表示體系結(jié)構(gòu)設(shè)計者想要表示的任何程序方面。在實踐中,框線圖的最常見用途是表示把系統(tǒng)分解為主要構(gòu)件或子系統(tǒng),并表明其交互作用關(guān)系的靜態(tài)模型。
12. 下面兩張圖中,哪一張圖是部署圖,并簡述部署圖的用途。(5分)
?device?ServerPC;?artifact?GameServer;TCP/IPRMI?device?GameDat;?device?ClientPC?deploy?;第二張圖是;部署圖的用途:部署圖顯示了系統(tǒng)中使用的實際和虛擬;
13.下面兩張圖中,哪一張圖描述的管道過濾器風格;(10分);第一張圖是;管道過濾器風格的特征:a:以數(shù)據(jù)流向的過程為核心
?device?ServerPC
?artifact?GameServer
1
TCP/IPRMI?device?GameDataServer?DB?GameDataRulesBoardImageTokenImage
?device?ClientPC?deploy??artifact?GameClient
第二張圖是
部署圖的用途:部署圖顯示了系統(tǒng)中使用的實際和虛擬的機器,這些機器的通信路徑、實現(xiàn)該系統(tǒng)的程序和數(shù)據(jù)文件以及程序運行和數(shù)據(jù)主流所在的位置。因此,部署圖為模擬物理體系結(jié)構(gòu)提供了功能豐富的表示方法。部署圖在體系結(jié)構(gòu)(特別是分布式系統(tǒng))的設(shè)計過程中是有用的,在詳細設(shè)計過程中亦可用于模擬物理的部署。
13. 下面兩張圖中,哪一張圖描述的管道過濾器風格。簡述管道過濾器風格的特征和優(yōu)缺點。
(10分)
第一張圖是
管道過濾器風格的特征:a:以數(shù)據(jù)流向的過程為核心,因此也被稱為:數(shù)據(jù)流風格。
b:過濾器自身功能獨立而完整,不需要知道其他過濾器的存在與否,相互之間無狀態(tài)交互。 c:過濾器對輸入的數(shù)據(jù)流有限制,并必須保證輸出流的正確性。
d:系統(tǒng) 優(yōu)點
(1)過濾器易于修改或替換,這樣在解決問題或修改程序的行為時,程序的修改將非常簡單。
(2)過濾器的重新排列幾乎毫不費力,這便于開發(fā)幾個完成類似任務(wù)的程序。
(3)過濾器具有高可重用性。
(4)假設(shè)可以使用同步管道,那么這種風格支持并執(zhí)行,而且相對容易實現(xiàn)。
缺點
(1)過濾器只能通過管道進行通行,所以它們的活動難以協(xié)調(diào)。
(2)過濾器通產(chǎn)使用和生成非常簡單的數(shù)據(jù)流,如字符流,這意味著,在把輸入轉(zhuǎn)換成有用的格式,然后再把結(jié)果轉(zhuǎn)換成輸出時使用的簡單格式時,過濾器可能必須完成大量的操作。
(3)錯誤處理非常困難,錯誤信息只能通過管道輸出或傳送。當可靠性和安全性很重要時,由于錯誤檢測和恢復難以完成,所以不適合使用這種風格。
(4)并行執(zhí)行的好處可能并不牢靠。管線也許不能有效地同步過濾器,一些過濾器在進行輸出之前可能需要等待所有的輸入。
14. 下面兩張圖中,哪一張圖描述的事件驅(qū)動風格。簡述事件驅(qū)動風格的特征和優(yōu)缺點。(10分)
第二張圖是
事件驅(qū)動風格的特征:事件驅(qū)動系統(tǒng)的基本觀點是一個系統(tǒng)對外部的表現(xiàn)可以從它對事件的處理表現(xiàn)出來。
優(yōu)點:(1)易于添加、刪除和修改組件,所以利用這種風格編寫的程序具有可變性和可維護性(2)程序組件的獨立性支持可重用性、健壯性和容錯性。
缺點:(1)盡管時間可以攜帶數(shù)據(jù),但是在由事件分配器進行中介時,組件的交互作用將難以到達。為了解決這個問題,事件驅(qū)動的系統(tǒng)通常還支持顯示的調(diào)用操作,盡管這將耦合組件。(2)宣布事件的組件不能保證有組件對他們進行相應(yīng),也不能對組件相應(yīng)他們的順序寄予任何期望。有時,這會造成難以編寫出正確的程序。(3)事件通信量往往有很大的變化:事件分配器經(jīng)常處于空閑狀態(tài),而在其他時間,它則會收到大量事件,這樣將難以達到性能目標。
四、綜合設(shè)計題(每小題14分,共35分)
1. 繪制活動圖,說明一般設(shè)計的步驟,并說明活動圖的用途。(7分)
一般設(shè)計的步驟:一般設(shè)計過程遵循一般的問題解決策略。首先是理解設(shè)計問題。尋找設(shè)計問題解決方案的過程是重復生成新候選解決方案或細化現(xiàn)有候選解決方案,然后依據(jù)設(shè)計問題對它們進行評估。最終應(yīng)該有一個或多個令人滿意的解決方案出現(xiàn),然后即可把最好的一個以文檔形式記錄下來并交付。
活動圖的用途:一般設(shè)計過程分析和解析之間的重復。表示任何在問題解析過程中發(fā)現(xiàn)的對問題的誤解都將導致返回到分析活動。
2. 繪制活動圖,模擬洗衣過程。該模型中應(yīng)包括并發(fā)動作,并說明活動圖的用途。(7分) 活動圖的用途:簡化描述了洗衣過程:包括對系統(tǒng)的工作流建?;蛘邔唧w的操作建模。
3. 繪制自助洗車系統(tǒng)的用例圖,并說明用例圖的用途。(7分)
4. 繪制自動取款機的用例圖,并說明用例圖的用途。(7分)
5. 使用狀態(tài)機圖繪制交通路口紅綠燈的并發(fā)行為模型,并說明狀態(tài)機圖的用途。(7分)
軟件工程師面試題小練
一、JAVA編程基礎(chǔ)部分 1. "=="和equals方法究竟有什么區(qū)別?
答:==操作符專門用來比較兩個變量的值是否相等,也就是用于比較變量所對應(yīng)的內(nèi)存中所存儲的數(shù)值是否相同,要比較兩個基本類型的數(shù)據(jù)或兩個引用變量是否相等,只能用==操作符。
Equals()方法是用于比較兩個獨立對象的內(nèi)容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。 2. 作用域(訪問修飾符)public,private,protected,以及不寫時的區(qū)別?
答:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示friendly。(C#中是internal) 訪問修飾符
public
protected
friendly
private 當前類 √ √ √ √ 同一個包 √ √ √ × 子孫類 √ √ × × 其他包 √ × × ×
3. 請簡述面向?qū)ο笥心乃膫€方面的特征?
答:
1).封裝:即將對象封裝成一個高度自治和相對封閉的個體,對象狀態(tài)(屬性)由這個對象自己的行為(方法)來讀取和改變;
2).抽象:抽象就是找出一些事物的相似和共性之處,然后將這些事物歸為一個類,這個類只考慮這些事物的相似和共性之處
3). 繼承:繼承是子類自動共享父類數(shù)據(jù)和方法的機制,這是類之間的一種關(guān)系,提高了軟件的可重用性和可擴展性。
4).多態(tài): 多態(tài)性增強了軟件的靈活性和擴展性。
4. 請簡述abstract class和interface的區(qū)別。
答:含有abstract修飾符的class即為抽象類,接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。
兩者的語法區(qū)別:
1).抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。
2).抽象類中可以包含非抽象的普通方法,接口不能。
3). 抽象類中可以包含靜態(tài)方法,接口中不能
4). 一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類。
兩者的應(yīng)用上的區(qū)別:
1).接口更多在系統(tǒng)框架設(shè)計方法發(fā)揮作用。
2).抽象類在代碼實現(xiàn)方面發(fā)揮作用,實現(xiàn)代碼的重用。
5.下面代碼有錯嗎?有何錯誤呢?
①. abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
答:大俠們,這有何錯誤?
答案: 錯。abstract method(抽象方法)必須以分號結(jié)尾,且不帶花括號。(沒有方法體)
②. abstract class Something {private abstract String doSomething (); }
答:這好像沒什么錯吧?
答案: 錯。abstract的methods(方法)不能以private修飾。abstract的methods(方法)就是讓子類implement(實現(xiàn))具體細節(jié)的,怎么可以用private把abstract私有化呢
③. class Something {int i;public void doSomething() {System.out.println("i = " + i);}}
答:有什么錯呢? 看不出來啊。
答案: 正確。輸出的是"i = 0"。int i屬於instant variable (實例變量,或叫成員變量)。instant variable有默認值。int的默認值是0。
二、SQL Server部分 1. 可以用什么來確保表格里的字段只接受特定范圍里的值?
答:這個問題可以用多種方式來回答,但是只有一個答案是“好”答案:Check約束,它在數(shù)據(jù)庫表格里被定義,用來限制輸入該列的值。觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段能夠接受的值,但是這種辦法要求觸發(fā)器在表格里被定義,這可能會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的'方式來限制域的完整性。 2.什么是主鍵?什么是外鍵?
答:主鍵是表格里的(一個或多個)字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關(guān)系的約束。這種關(guān)系一般都涉及一個表格里的主鍵字段與另外一個表格(盡管可能是同一個表格)里的一系列相連的字段。那么這些相連的字段就是外鍵。
3.什么是事務(wù)?有哪四個屬性(原則)?
答:事務(wù)是作為一個邏輯單元執(zhí)行的一系列操作,要么全都執(zhí)行,要么全都不執(zhí)行。一個邏輯工作單元必須有四個屬性,稱為 ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才能成為一個事務(wù)。
附:
原子性:事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,
一致性:事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。
隔離性:由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。
持久性:事務(wù)完成之后,它對于系統(tǒng)的影響是永久性的。
4.觸發(fā)器和存儲過程有何區(qū)別?(講解時回顧觸發(fā)器和存儲過程分別是什么)
答:只有一個區(qū)別:存儲過程,你調(diào)用的時候才會執(zhí)行
觸發(fā)器就是你設(shè)定了數(shù)據(jù)庫里比如刪除,修改,插入時,就會自動觸發(fā)執(zhí)行
軟件工程師面試題目
1. 用預(yù)處理指令#define 聲明一個常數(shù),用以表明1年中有多少秒(忽略閏年問題)
#define SECONDS_PER_YEAR (60 __ 60 __ 24 __ 365)UL
我在這想看到幾件事情:
1). #define 語法的基本知識(例如:不能以分號結(jié)束,括號的使用,等等)
2). 懂得預(yù)處理器將為你計算常數(shù)表達式的值,因此,直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的。
3). 意識到這個表達式將使一個16位機的整型數(shù)溢出-因此要用到長整型符號L,告訴編譯器這個常數(shù)是的長整型數(shù)。
4). 如果你在你的表達式中用到UL(表示無符號長整型),那么你有了一個好的起點。記住,第一印象很重要。
2. 寫一個“標準”宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個。
#define MIN(A,B) ((A) <= (B) (A) : ))
C/C++試題集 C/C++ Development這個測試是為下面的目的而設(shè)的:
1). 標識#define在宏中應(yīng)用的基本知識。這是很重要的,因為直到嵌入(inline)操作符變?yōu)闃藴蔆的一部分,宏是方便產(chǎn)生嵌入代碼的唯一方法,對于嵌入式系統(tǒng)來說,為了能達到要求的性能,嵌入代碼經(jīng)常是必須的方法。
2). 三重條件操作符的知識。這個操作符存在C語言中的原因是它使得編譯器能產(chǎn)生比if-then-else更優(yōu)化的'代碼,了解這個用法是很重要的。
3). 懂得在宏中小心地把參數(shù)用括號括起來
4). 我也用這個問題開始討論宏的副作用,例如:當你寫下面的代碼時會發(fā)生什么事?
Least = MIN(__p++, b);
3. 預(yù)處理器標識#error的目的是什么?
如果你不知道答案,請看參考文獻1。這問題對區(qū)分一個正常的伙計和一個書呆子是很有用的。只有書呆子才會讀C語言課本的附錄去找出象這種
問題的答案。當然如果你不是在找一個書呆子,那么應(yīng)試者最好希望自己不要知道答案。