- 相關(guān)推薦
360軟件工程筆試真題分享
無論在學(xué)習(xí)或是工作中,我們都不可避免地要接觸到試題,試題可以幫助學(xué);蚋髦鬓k方考察參試者某一方面的知識才能。你知道什么樣的試題才算得上好試題嗎?以下是小編整理的360軟件工程筆試真題分享,歡迎大家分享。
360軟件工程筆試真題分享 1
一、選擇題(每題 2 分,共 30 分)
1. 軟件生命周期中,花費時間最多的階段是( )。
A. 需求分析
B. 設(shè)計
C. 編碼
D. 測試
答案:D
解析:在軟件生命周期中,測試階段需要對軟件進行全面的功能、性能、兼容性等多方面的測試,發(fā)現(xiàn)并修復(fù)問題,通常會花費大量的時間和精力。需求分析、設(shè)計和編碼階段雖然也很重要,但相對來說,測試階段涉及的工作更為繁瑣和復(fù)雜,需要反復(fù)進行以確保軟件質(zhì)量。
2. 以下哪種軟件測試方法不屬于黑盒測試?( )
A. 等價類劃分法
B. 邊界值分析法
C. 因果圖法
D. 語句覆蓋法
答案:D
解析:黑盒測試是把軟件看作一個黑盒子,不考慮內(nèi)部邏輯結(jié)構(gòu),只根據(jù)軟件的需求規(guī)格說明書來設(shè)計測試用例。等價類劃分法、邊界值分析法、因果圖法都屬于黑盒測試方法。而語句覆蓋法是白盒測試中的一種邏輯覆蓋測試方法,它關(guān)注的是程序內(nèi)部的邏輯結(jié)構(gòu)。
3. 在面向?qū)ο笤O(shè)計中,( )關(guān)系表示一個類是另一個類的特殊類型,并且具有其所有的特征和行為。
A. 關(guān)聯(lián)
B. 依賴
C. 繼承
D. 聚合
答案:C
解析:繼承是面向?qū)ο缶幊讨械闹匾拍睿试S一個類(子類)繼承另一個類(父類)的屬性和方法,子類是父類的特殊類型,體現(xiàn)了“is-a”的關(guān)系。關(guān)聯(lián)表示類之間的一種結(jié)構(gòu)關(guān)系;依賴表示一個類的變化會影響到另一個類;聚合表示整體與部分的關(guān)系,但部分可以脫離整體而存在。
4. 以下關(guān)于軟件項目管理中風(fēng)險管理的說法,錯誤的是( )。
A. 風(fēng)險識別是風(fēng)險管理的第一步
B. 風(fēng)險評估主要包括風(fēng)險發(fā)生的概率和影響程度的評估
C. 風(fēng)險應(yīng)對措施只有規(guī)避風(fēng)險這一種方式
D. 風(fēng)險監(jiān)控是貫穿整個項目生命周期的重要過程
答案:C
解析:風(fēng)險應(yīng)對措施有多種,包括規(guī)避風(fēng)險、減輕風(fēng)險、轉(zhuǎn)移風(fēng)險、接受風(fēng)險等。風(fēng)險識別是風(fēng)險管理的起始點,要先識別出可能存在的風(fēng)險;風(fēng)險評估要對風(fēng)險發(fā)生的可能性和影響進行量化評估;風(fēng)險監(jiān)控在項目全過程中持續(xù)進行,以確保風(fēng)險得到有效管理。
5. UML 中有多種圖,用于描述系統(tǒng)靜態(tài)結(jié)構(gòu)的是( )。
A. 序列圖
B. 狀態(tài)圖
C. 類圖
D. 活動圖
答案:C
解析:類圖用于描述系統(tǒng)中的類、類的屬性和方法以及類之間的關(guān)系,是描述系統(tǒng)靜態(tài)結(jié)構(gòu)的重要工具。序列圖用于展示對象之間的交互順序;狀態(tài)圖用于描述對象的狀態(tài)及其轉(zhuǎn)換;活動圖用于描述系統(tǒng)的業(yè)務(wù)流程和操作步驟。
6. 軟件測試的目的是( )。
A. 發(fā)現(xiàn)程序中的所有錯誤
B. 盡可能多地發(fā)現(xiàn)程序中的錯誤
C. 證明程序是正確的
D. 調(diào)試程序
答案:B
解析:軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤,但由于軟件的復(fù)雜性和測試的局限性,不可能發(fā)現(xiàn)所有的錯誤。測試不是為了證明程序正確,而是為了找出錯誤。調(diào)試程序是在發(fā)現(xiàn)錯誤后進行的查找和修復(fù)錯誤的過程,與測試目的不同。
7. 下列關(guān)于敏捷開發(fā)方法的說法,正確的是( )。
A. 敏捷開發(fā)強調(diào)文檔的完整性和規(guī)范性
B. 敏捷開發(fā)不適合大型項目的'開發(fā)
C. 敏捷開發(fā)采用迭代和增量的開發(fā)方式
D. 敏捷開發(fā)不需要進行需求分析
答案:C
解析:敏捷開發(fā)注重快速迭代和增量交付,通過不斷的迭代來逐步完善產(chǎn)品。它并不強調(diào)傳統(tǒng)的大量詳細文檔,而是更注重團隊的溝通和協(xié)作。敏捷開發(fā)適用于各種規(guī)模的項目,包括大型項目。雖然敏捷開發(fā)強調(diào)快速響應(yīng)變化,但也需要進行需求分析,只是需求分析是在整個開發(fā)過程中持續(xù)進行和不斷調(diào)整的。
8. 數(shù)據(jù)庫設(shè)計中,E - R 圖用于( )。
A. 描述數(shù)據(jù)庫的物理結(jié)構(gòu)
B. 描述數(shù)據(jù)庫的邏輯結(jié)構(gòu)
C. 描述數(shù)據(jù)庫的存儲結(jié)構(gòu)
D. 描述實體之間的關(guān)系
答案:D
解析:E - R 圖(Entity - Relationship Diagram,實體 - 關(guān)系圖)主要用于描述現(xiàn)實世界中的實體以及實體之間的關(guān)系,是數(shù)據(jù)庫概念設(shè)計階段的重要工具,用于構(gòu)建數(shù)據(jù)庫的邏輯模型,而不是物理結(jié)構(gòu)或存儲結(jié)構(gòu)。
9. 以下哪種軟件開發(fā)模型不適合需求不明確的項目?( )
A. 瀑布模型
B. 原型模型
C. 螺旋模型
D. 迭代模型
答案:A
解析:瀑布模型是一種線性的、順序的軟件開發(fā)模型,要求在項目開始階段就明確所有需求,然后按照需求分析、設(shè)計、編碼、測試等階段依次進行,不適合需求不明確的項目。原型模型、螺旋模型和迭代模型都可以在開發(fā)過程中逐步明確和完善需求,更適合需求不明確或易變的項目。
10. 軟件質(zhì)量保證的主要活動不包括( )。
A. 技術(shù)評審
B. 軟件測試
C. 過程改進
D. 軟件維護
答案:D
解析:軟件質(zhì)量保證的主要活動包括技術(shù)評審以確保設(shè)計和代碼的質(zhì)量、軟件測試來發(fā)現(xiàn)錯誤、過程改進以提高軟件開發(fā)過程的效率和質(zhì)量等。軟件維護是軟件交付后對軟件進行的修改和完善,不屬于軟件質(zhì)量保證的主要活動范疇,它是軟件生命周期的另一個階段。
11. 以下關(guān)于面向?qū)ο缶幊讨卸鄳B(tài)性的說法,錯誤的是( )。
A. 多態(tài)性分為編譯時多態(tài)和運行時多態(tài)
B. 函數(shù)重載是編譯時多態(tài)的一種體現(xiàn)
C. 虛函數(shù)是實現(xiàn)運行時多態(tài)的重要手段
D. 多態(tài)性會增加程序的復(fù)雜性,應(yīng)盡量避免使用
答案:D
解析:多態(tài)性是面向?qū)ο缶幊痰闹匾匦灾,它具有很多?yōu)點,如提高代碼的可擴展性、可維護性和靈活性等,不應(yīng)盡量避免使用。多態(tài)性分為編譯時多態(tài)(如函數(shù)重載)和運行時多態(tài)(通過虛函數(shù)實現(xiàn))。函數(shù)重載是在編譯階段根據(jù)函數(shù)參數(shù)的不同來確定調(diào)用哪個函數(shù);虛函數(shù)則是在運行時根據(jù)對象的實際類型來決定調(diào)用哪個類的函數(shù)實現(xiàn)。
12. 在軟件需求分析階段,常用的工具不包括( )。
A. 數(shù)據(jù)流圖
B. 數(shù)據(jù)字典
C. 判定表
D. 甘特圖
答案:D
解析:數(shù)據(jù)流圖用于描述系統(tǒng)中數(shù)據(jù)的流動和處理過程;數(shù)據(jù)字典用于定義和解釋數(shù)據(jù)流圖中的數(shù)據(jù)元素;判定表用于表示復(fù)雜的條件組合與相應(yīng)動作之間的關(guān)系,它們都是需求分析階段常用的工具。甘特圖主要用于項目管理中展示項目進度計劃,不屬于需求分析工具。
13. 以下關(guān)于軟件配置管理的說法,錯誤的是( )。
A. 軟件配置管理可以保證軟件的一致性和可追溯性
B. 版本控制是軟件配置管理的核心功能之一
C. 軟件配置管理只在軟件開發(fā)階段進行
D. 配置項可以是軟件項目中的文檔、代碼、數(shù)據(jù)等
答案:C
解析:軟件配置管理貫穿整個軟件生命周期,不僅僅在軟件開發(fā)階段進行,在軟件維護等階段也同樣重要。它可以確保軟件的一致性和可追溯性,版本控制是其核心功能之一,配置項包括軟件項目中的各種文檔、代碼、數(shù)據(jù)等。通過有效的軟件配置管理,可以更好地管理軟件的變更和版本。
14. 以下哪種設(shè)計模式用于將對象組合成樹形結(jié)構(gòu)以表示部分 - 整體的層次結(jié)構(gòu)?( )
A. 策略模式
B. 裝飾模式
C. 組合模式
D. 外觀模式
答案:C
解析:組合模式允許你將對象組合成樹形結(jié)構(gòu)來表示“部分 - 整體”的層次結(jié)構(gòu),使得用戶對單個對象和組合對象的使用具有一致性。策略模式用于定義一系列算法,并將每個算法封裝起來,使它們可以相互替換;裝飾模式動態(tài)地給一個對象添加一些額外的職責(zé);外觀模式為子系統(tǒng)中的一組接口提供一個一致的界面。
15. 軟件性能測試中,以下哪個指標(biāo)不屬于響應(yīng)時間的范疇?( )
A. 系統(tǒng)處理時間
B. 網(wǎng)絡(luò)傳輸時間
C. 用戶思考時間
D. 數(shù)據(jù)庫查詢時間
答案:C
解析:響應(yīng)時間是指系統(tǒng)對請求作出響應(yīng)的時間,包括系統(tǒng)處理時間、網(wǎng)絡(luò)傳輸時間、數(shù)據(jù)庫查詢時間等。用戶思考時間是指用戶在進行操作時思考和決策的時間,不屬于系統(tǒng)響應(yīng)時間的范疇。在性能測試中,通常關(guān)注的是系統(tǒng)的響應(yīng)時間,以評估系統(tǒng)的性能和用戶體驗。
二、簡答題(每題 10 分,共 40 分)
1. 簡述軟件測試的基本流程。
答案:
軟件測試的基本流程如下:
。1)測試計劃和需求分析:
確定測試目標(biāo)和范圍,明確要測試的功能和特性。
分析軟件需求規(guī)格說明書,理解軟件的功能和業(yè)務(wù)邏輯。
制定測試計劃,包括測試策略、測試資源、測試進度安排等。
。2)測試設(shè)計:
根據(jù)需求分析結(jié)果,設(shè)計測試用例。測試用例應(yīng)包括測試步驟、預(yù)期結(jié)果、輸入數(shù)據(jù)等。
對測試用例進行評審,確保其有效性和覆蓋率。
(3)測試環(huán)境搭建:
準(zhǔn)備測試所需的硬件、軟件和網(wǎng)絡(luò)環(huán)境。
安裝和配置測試工具,如測試管理工具、自動化測試工具等。
。4)測試執(zhí)行:
按照測試用例執(zhí)行測試,記錄測試結(jié)果。
對發(fā)現(xiàn)的缺陷進行記錄和跟蹤,包括缺陷的詳細描述、出現(xiàn)的環(huán)境、嚴重程度等。
(5)缺陷管理:
對缺陷進行分類、優(yōu)先級排序,提交給開發(fā)人員進行修復(fù)。
跟蹤缺陷的修復(fù)情況,進行回歸測試,確保缺陷已被正確修復(fù)且沒有引入新的缺陷。
(6)測試報告:
匯總測試結(jié)果,編寫測試報告。測試報告應(yīng)包括測試執(zhí)行情況、缺陷統(tǒng)計分析、測試結(jié)論等內(nèi)容。
向相關(guān)人員(如開發(fā)團隊、項目管理人員等)提交測試報告,為項目決策提供依據(jù)。
2. 請解釋什么是面向?qū)ο缶幊讨械姆庋b、繼承和多態(tài),并舉例說明它們在軟件開發(fā)中的應(yīng)用。
答案:
(1)封裝:
定義:封裝是將數(shù)據(jù)和操作數(shù)據(jù)的方法綁定在一起,形成一個類。通過封裝,類的內(nèi)部實現(xiàn)細節(jié)對外部是隱藏的,外部只能通過類提供的公共接口來訪問和操作數(shù)據(jù)。
應(yīng)用示例:在一個銀行賬戶類中,可以將賬戶余額、賬戶所有者等數(shù)據(jù)以及存款、取款、查詢余額等操作封裝在一個類中。外部用戶只能通過類提供的公共方法(如 deposit()、withdraw()、getBalance())來對賬戶進行操作,而不需要了解賬戶內(nèi)部數(shù)據(jù)的存儲和管理方式。這樣可以提高代碼的安全性和可維護性,避免外部代碼直接操作類的內(nèi)部數(shù)據(jù)導(dǎo)致數(shù)據(jù)不一致或錯誤。
(2)繼承:
定義:繼承是一種允許一個類(子類)繼承另一個類(父類)的屬性和方法的機制。子類可以擴展父類的功能,同時還可以重新定義父類中的方法以滿足自己的特定需求。
應(yīng)用示例:假設(shè)有一個動物類(Animal),它具有一些基本的屬性(如年齡、體重)和方法(如 eat()、sleep())。然后可以創(chuàng)建一個子類(如 Dog)繼承自 Animal 類,Dog 類可以繼承 Animal 類的屬性和方法,同時還可以添加自己特有的屬性(如品種)和方法(如 bark())。這樣可以實現(xiàn)代碼的復(fù)用,減少代碼冗余,并且便于對不同類型的對象進行統(tǒng)一管理和擴展。
(3)多態(tài):
定義:多態(tài)是指同一個行為具有多種不同的表現(xiàn)形式。在面向?qū)ο缶幊讨,多態(tài)主要通過方法重載和方法重寫來實現(xiàn)。方法重載是在同一個類中,定義多個同名但參數(shù)不同的方法;方法重寫是子類對父類中已有的方法進行重新定義,使其具有不同的實現(xiàn)。
應(yīng)用示例:在一個圖形繪制系統(tǒng)中,有一個抽象的圖形類(Shape),它有一個繪制方法(draw())。然后可以創(chuàng)建多個子類(如 Circle、Rectangle、Triangle 等)繼承自 Shape 類,每個子類都重寫 draw()方法來實現(xiàn)自己特定的繪制邏輯。在程序運行時,可以根據(jù)實際創(chuàng)建的圖形對象類型,自動調(diào)用相應(yīng)子類的 draw()方法,實現(xiàn)不同圖形的繪制。這體現(xiàn)了多態(tài)性,使得代碼更加靈活和可擴展,能夠方便地處理不同類型的圖形對象。
3. 什么是軟件項目管理中的關(guān)鍵路徑?請舉例說明如何確定一個項目的關(guān)鍵路徑。
答案:
。1)關(guān)鍵路徑的定義:
在軟件項目管理中,關(guān)鍵路徑是項目網(wǎng)絡(luò)圖中最長的路徑,它決定了項目的最短工期。關(guān)鍵路徑上的活動如果延遲,將會導(dǎo)致整個項目工期的延遲,因為這些活動沒有松弛時間(浮動時間)。
。2)確定項目關(guān)鍵路徑的步驟(舉例說明):
假設(shè)一個簡單的軟件項目包含以下活動及其時間估計(以天為單位):
活動 A:需求分析,持續(xù)時間 3 天。
活動 B:設(shè)計,持續(xù)時間 5 天。
活動 C:編碼,持續(xù)時間 4 天。
活動 D:測試,持續(xù)時間 3 天。
活動之間的依賴關(guān)系如下:需求分析完成后才能開始設(shè)計,設(shè)計完成后才能開始編碼,編碼完成后才能開始測試。
首先,繪制項目網(wǎng)絡(luò)圖:
根據(jù)活動之間的依賴關(guān)系,可以繪制出如下的項目網(wǎng)絡(luò)圖(節(jié)點表示活動,箭頭表示活動之間的先后順序):
開始 -> A -> B -> C -> D -> 結(jié)束
然后,計算每個活動的最早開始時間(ES)、最早結(jié)束時間(EF)、最晚開始時間(LS)和最晚結(jié)束時間(LF):
活動 A:ES = 0,EF = 0 + 3 = 3;LS = 0,LF = 3。
活動 B:ES = 3,EF = 3 + 5 = 8;LS = 3,LF = 8。
活動 C:ES = 8,EF = 8 + 4 = 12;LS = 8,LF = 12。
活動 D:ES = 12,EF = 12 + 3 = 15;LS = 12,LF = 15。
最后,確定關(guān)鍵路徑:
通過比較每個活動的 ES 和 LS(或 EF 和 LF),如果兩者相等,則該活動在關(guān)鍵路徑上。在這個例子中,活動 A、B、C、D 的 ES 和 LS 都相等,所以整個路徑“開始 -> A -> B -> C -> D -> 結(jié)束”就是關(guān)鍵路徑,項目的最短工期為 15 天。
如果在項目執(zhí)行過程中,關(guān)鍵路徑上的某個活動(如活動 B)延遲了 2 天,那么整個項目的工期也將延遲 2 天,因為關(guān)鍵路徑上沒有松弛時間來彌補這個延遲。
360軟件工程筆試真題分享 2
一、選擇題(每題2分,共30分)
1. 以下哪種軟件生命周期模型最適合需求不明確且項目規(guī)模較大的項目?( )
A. 瀑布模型
B. 快速原型模型
C. 迭代模型
D. 螺旋模型
答案:D
解析:螺旋模型將軟件開發(fā)過程視為一個螺旋式上升的過程,每一次迭代都會增加新的功能和需求分析,適合需求不明確且規(guī)模較大的項目。瀑布模型適用于需求明確、穩(wěn)定的項目;快速原型模型用于快速獲取需求;迭代模型適用于需求逐漸明確的項目,但對風(fēng)險的把控不如螺旋模型全面。
2. 軟件測試的目的是( )
A. 發(fā)現(xiàn)程序中的所有錯誤
B. 盡可能多地發(fā)現(xiàn)程序中的錯誤
C. 證明程序是正確的
D. 調(diào)試程序
答案:B
解析:軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤,但不能保證發(fā)現(xiàn)所有錯誤。它不是為了證明程序正確,調(diào)試程序是在發(fā)現(xiàn)錯誤后進行的修復(fù)工作。
3. 在面向?qū)ο笤O(shè)計中,( )是一種將對象組合成更復(fù)雜結(jié)構(gòu)的方式,以表示整體與部分的關(guān)系。
A. 繼承
B. 聚合
C. 多態(tài)
D. 封裝
答案:B
解析:聚合表示整體與部分的關(guān)系,例如汽車和輪胎的關(guān)系。繼承是實現(xiàn)代碼復(fù)用和擴展的機制;多態(tài)是同一操作作用于不同對象可以有不同的解釋和實現(xiàn);封裝是將數(shù)據(jù)和操作封裝在一個類中。
4. 以下關(guān)于軟件需求分析的說法,錯誤的是( )
A. 需求分析是軟件開發(fā)過程中的重要階段
B. 需求分析可以采用面談、問卷調(diào)查等方式進行
C. 需求分析只需要關(guān)注用戶的功能需求
D. 需求規(guī)格說明書是需求分析的重要成果
答案:C
解析:需求分析不僅要關(guān)注功能需求,還包括非功能需求,如性能、安全性、可靠性等。需求分析是軟件開發(fā)的關(guān)鍵階段,面談和問卷調(diào)查是常用的需求獲取方式,需求規(guī)格說明書是其重要成果。
5. 下列哪種測試方法不屬于黑盒測試?( )
A. 等價類劃分法
B. 邊界值分析法
C. 決策表法
D. 語句覆蓋法
答案:D
解析:語句覆蓋法屬于白盒測試方法,它關(guān)注程序內(nèi)部的`代碼邏輯覆蓋情況。等價類劃分法、邊界值分析法、決策表法是黑盒測試中常用的基于輸入輸出的測試方法。
6. UML中有多種圖形,用于描述系統(tǒng)靜態(tài)結(jié)構(gòu)的是( )
A. 用例圖
B. 序列圖
C. 類圖
D. 狀態(tài)圖
答案:C
解析:類圖用于描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括類、類之間的關(guān)系等。用例圖用于描述系統(tǒng)的功能需求和用戶與系統(tǒng)的交互;序列圖用于描述對象之間的交互順序;狀態(tài)圖用于描述對象的狀態(tài)變化。
7. 軟件項目管理中的“金三角”不包括( )
A. 時間
B. 成本
C. 質(zhì)量
D. 范圍
答案:D
解析:軟件項目管理的“金三角”是時間、成本和質(zhì)量,需要在這三者之間進行平衡和協(xié)調(diào)。范圍是項目管理中的一個重要概念,但不屬于“金三角”。
8. 以下哪種軟件開發(fā)方法強調(diào)團隊成員之間的緊密協(xié)作和快速反饋?( )
A. 敏捷開發(fā)
B. 瀑布模型
C. 面向?qū)ο箝_發(fā)
D. 結(jié)構(gòu)化開發(fā)
答案:A
解析:敏捷開發(fā)強調(diào)團隊成員之間的緊密協(xié)作、快速迭代和快速反饋,以適應(yīng)需求的變化。瀑布模型是線性的、順序的開發(fā)過程;面向?qū)ο箝_發(fā)是一種編程范式;結(jié)構(gòu)化開發(fā)強調(diào)自頂向下、逐步求精的設(shè)計方法。
9. 代碼評審的主要目的不包括( )
A. 發(fā)現(xiàn)代碼中的錯誤
B. 提高代碼的可讀性
C. 保證代碼的性能
D. 促進團隊成員之間的技術(shù)交流
答案:C
解析:代碼評審可以發(fā)現(xiàn)代碼中的錯誤、提高可讀性、促進技術(shù)交流,但不能直接保證代碼的性能。性能優(yōu)化通常需要通過性能測試和分析等手段來實現(xiàn)。
10. 軟件維護的類型不包括( )
A. 改正性維護
B. 適應(yīng)性維護
C. 完善性維護
D. 創(chuàng)新性維護
答案:D
解析:軟件維護包括改正性維護(修復(fù)錯誤)、適應(yīng)性維護(適應(yīng)環(huán)境變化)、完善性維護(增加功能和改進性能),沒有創(chuàng)新性維護這種說法。
11. 以下關(guān)于數(shù)據(jù)庫設(shè)計的說法,正確的是( )
A. 數(shù)據(jù)庫設(shè)計只需考慮當(dāng)前的業(yè)務(wù)需求
B. 范式越高,數(shù)據(jù)庫設(shè)計越好
C. 數(shù)據(jù)庫設(shè)計要遵循一定的規(guī)范和原則
D. 在數(shù)據(jù)庫設(shè)計中,數(shù)據(jù)冗余是不可避免的
答案:C
解析:數(shù)據(jù)庫設(shè)計要考慮當(dāng)前和未來的業(yè)務(wù)需求,范式是指導(dǎo)原則,但不是越高越好,要在實際應(yīng)用中權(quán)衡。數(shù)據(jù)庫設(shè)計應(yīng)遵循規(guī)范和原則,盡量減少數(shù)據(jù)冗余,但完全消除數(shù)據(jù)冗余在某些情況下可能不現(xiàn)實,但要合理控制。
12. 在軟件項目中,( )負責(zé)制定項目計劃、協(xié)調(diào)資源、監(jiān)控項目進度等工作。
A. 項目經(jīng)理
B. 軟件設(shè)計師
C. 程序員
D. 測試人員
答案:A
解析:項目經(jīng)理是項目的管理者,負責(zé)項目計劃、資源協(xié)調(diào)、進度監(jiān)控等全面管理工作。軟件設(shè)計師負責(zé)系統(tǒng)設(shè)計,程序員負責(zé)編碼實現(xiàn),測試人員負責(zé)軟件測試。
13. 以下哪種軟件架構(gòu)風(fēng)格適合大規(guī)模分布式系統(tǒng)?( )
A. 單體架構(gòu)
B. 微服務(wù)架構(gòu)
C. 分層架構(gòu)
D. 客戶端 - 服務(wù)器架構(gòu)
答案:B
解析:微服務(wù)架構(gòu)將系統(tǒng)拆分為多個小型服務(wù),每個服務(wù)可以獨立部署和擴展,適合大規(guī)模分布式系統(tǒng)。單體架構(gòu)適用于小型簡單系統(tǒng);分層架構(gòu)是一種常見的架構(gòu)模式,但在大規(guī)模分布式場景下不如微服務(wù)靈活;客戶端 - 服務(wù)器架構(gòu)主要用于客戶端和服務(wù)器之間的交互。
14. 軟件質(zhì)量保證的主要活動不包括( )
A. 制定質(zhì)量計劃
B. 技術(shù)評審
C. 軟件測試
D. 代碼編寫
答案:D
解析:軟件質(zhì)量保證包括制定質(zhì)量計劃、技術(shù)評審、軟件測試等活動,代碼編寫是實現(xiàn)軟件功能的過程,不屬于質(zhì)量保證的主要活動。
15. 以下關(guān)于軟件配置管理的說法,錯誤的是( )
A. 軟件配置管理可以幫助團隊管理軟件的變更
B. 版本控制是軟件配置管理的核心功能之一
C. 軟件配置管理只在軟件開發(fā)階段重要
D. 配置項包括軟件代碼、文檔、數(shù)據(jù)等
答案:C
解析:軟件配置管理在整個軟件生命周期都很重要,不僅在開發(fā)階段,在維護等階段也能幫助管理變更、控制版本等。它可以幫助團隊管理軟件的變更,版本控制是核心功能之一,配置項包括代碼、文檔、數(shù)據(jù)等。
二、填空題(每題2分,共20分)
1. 軟件危機主要表現(xiàn)在軟件開發(fā)成本高、進度難以控制、__________和軟件維護困難等方面。
答案:質(zhì)量難以保證
解析:軟件危機的主要表現(xiàn)包括成本高、進度失控、質(zhì)量難以保證和維護困難等。
2. 面向?qū)ο蟮娜筇匦允欠庋b、繼承和__________。
答案:多態(tài)
解析:面向?qū)ο蟮娜筇匦詾榉庋b、繼承和多態(tài)。
3. 軟件測試按照階段可以分為單元測試、集成測試、__________和系統(tǒng)測試。
答案:驗收測試
解析:軟件測試的階段通常包括單元測試、集成測試、驗收測試和系統(tǒng)測試。
4. UML中的關(guān)系包括關(guān)聯(lián)、聚合、組合、依賴和__________等。
答案:泛化(繼承)
解析:UML中的關(guān)系有關(guān)聯(lián)、聚合、組合、依賴和泛化(繼承)等。
5. 需求分析的方法主要有結(jié)構(gòu)化分析方法和__________分析方法。
答案:面向?qū)ο?/p>
解析:需求分析方法有結(jié)構(gòu)化分析方法和面向?qū)ο蠓治龇椒ā?/p>
6. 軟件項目管理的四大要素是時間、成本、質(zhì)量和__________。
答案:范圍
解析:軟件項目管理的四大要素是時間、成本、質(zhì)量和范圍。
7. 數(shù)據(jù)庫設(shè)計的步驟通常包括需求分析、概念設(shè)計、__________設(shè)計、物理設(shè)計和數(shù)據(jù)庫實施與維護。
答案:邏輯
解析:數(shù)據(jù)庫設(shè)計步驟為需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計和實施與維護。
8. 敏捷開發(fā)的核心價值觀包括個體和互動高于流程和工具、可工作的軟件高于詳盡的文檔、__________高于合同談判、客戶合作高于客戶談判。
答案:響應(yīng)變化
解析:敏捷開發(fā)核心價值觀是個體和互動高于流程和工具、可工作的軟件高于詳盡的文檔、響應(yīng)變化高于合同談判、客戶合作高于客戶談判。
9. 軟件架構(gòu)是指軟件系統(tǒng)的__________結(jié)構(gòu)和組織方式。
答案:高層
解析:軟件架構(gòu)是軟件系統(tǒng)的高層結(jié)構(gòu)和組織方式。
10. 代碼重構(gòu)是在不改變軟件外部行為的前提下,對__________進行改進的技術(shù)手段。
答案:代碼內(nèi)部結(jié)構(gòu)
解析:代碼重構(gòu)是對代碼內(nèi)部結(jié)構(gòu)進行改進,不改變軟件外部行為。
三、簡答題(每題10分,共30分)
1. 簡述瀑布模型的優(yōu)缺點。
答案:
優(yōu)點:
階段明確:每個階段都有明確的任務(wù)和目標(biāo),有利于項目的組織和管理。
文檔規(guī)范:每個階段都會產(chǎn)生相應(yīng)的文檔,便于后續(xù)的維護和升級,也有利于知識的傳承。
質(zhì)量保證:前一個階段完成后才進入下一個階段,有利于保證每個階段的質(zhì)量。
缺點:
缺乏靈活性:一旦項目開始,很難更改需求和設(shè)計,不適應(yīng)需求變化頻繁的項目。
風(fēng)險后置:如果在后期發(fā)現(xiàn)前期的錯誤,修改成本較高,可能會導(dǎo)致項目延期和成本增加。
反饋不及時:用戶只有在整個項目完成后才能看到最終結(jié)果,可能導(dǎo)致用戶對產(chǎn)品不滿意。
2. 請說明軟件測試中的白盒測試和黑盒測試的主要區(qū)別,并舉例說明各自的測試方法。
答案:
主要區(qū)別:
測試依據(jù):白盒測試依據(jù)程序的內(nèi)部邏輯結(jié)構(gòu)進行測試,黑盒測試主要依據(jù)軟件的需求規(guī)格說明書,不關(guān)注程序內(nèi)部結(jié)構(gòu)。
測試方法:白盒測試方法有語句覆蓋、判定覆蓋、條件覆蓋等;黑盒測試方法有等價類劃分法、邊界值分析法、因果圖法等。
測試目的:白盒測試主要用于檢查程序內(nèi)部的邏輯錯誤、代碼結(jié)構(gòu)等問題;黑盒測試主要用于測試軟件的功能是否符合需求。
舉例:
白盒測試方法舉例:語句覆蓋是要求設(shè)計測試用例,使得程序中的每條語句至少被執(zhí)行一次。例如,一個簡單的判斷語句`if(a > 10) {b = 20;} else {b = 30;}`,設(shè)計測試用例使`a = 11`和`a = 9`,分別執(zhí)行不同的分支,以覆蓋所有語句。
黑盒測試方法舉例:等價類劃分法是將輸入數(shù)據(jù)劃分為若干個等價類,從每個等價類中選取一個代表性的數(shù)據(jù)作為測試用例。比如,一個函數(shù)接收一個整數(shù)作為輸入,要求輸入在1到100之間,可劃分為有效等價類(1到100之間的整數(shù))和無效等價類(小于1的整數(shù)、大于100的整數(shù)、非整數(shù)等),然后從每個等價類中選一個值進行測試。
3. 簡述面向?qū)ο笤O(shè)計的基本原則。
答案:
單一職責(zé)原則:一個類應(yīng)該只有一個引起它變化的原因,即一個類只負責(zé)一項職責(zé)。例如,一個用戶管理類只負責(zé)用戶信息的管理,而不應(yīng)該涉及用戶權(quán)限的分配等其他職責(zé)。
開放封閉原則:軟件實體(類、模塊、函數(shù)等)應(yīng)該對擴展開放,對修改關(guān)閉。即當(dāng)需要增加新功能時,應(yīng)該通過擴展現(xiàn)有代碼來實現(xiàn),而不是修改現(xiàn)有代碼。比如,在一個圖形繪制系統(tǒng)中,要添加新的圖形類型,應(yīng)該通過創(chuàng)建新的圖形類來擴展,而不是修改已有的繪制代碼。
里氏替換原則:子類應(yīng)該能夠替換父類并且在程序中正常工作。例如,在一個動物類的繼承體系中,狗類是動物類的子類,那么在任何使用動物類的地方,都可以用狗類來替換,并且程序的行為不會發(fā)生錯誤。
依賴倒置原則:高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該依賴其抽象;抽象不應(yīng)該依賴細節(jié),細節(jié)應(yīng)該依賴抽象。例如,在一個電商系統(tǒng)中,訂單處理模塊不應(yīng)該直接依賴具體的支付方式類(如微信支付類、支付寶支付類),而應(yīng)該依賴支付接口的抽象類,這樣當(dāng)增加新的支付方式時,只需要實現(xiàn)支付接口的抽象類,而不需要修改訂單處理模塊的代碼。
接口隔離原則:客戶端不應(yīng)該依賴它不需要的接口。一個類對另一個類的依賴應(yīng)該建立在最小的接口上。例如,一個打印機類只需要實現(xiàn)打印相關(guān)的接口,而不需要實現(xiàn)與掃描等無關(guān)的接口,避免了不必要的依賴和復(fù)雜性。
360軟件工程筆試真題分享 3
一、選擇題(每題2分,共30分)
。ㄒ唬┸浖こ袒A(chǔ)知識
1. 軟件生命周期中,花費時間最多的階段是( )。
A. 需求分析
B. 設(shè)計
C. 編碼
D. 測試
答案:D
解析:在軟件生命周期中,測試階段需要對軟件進行全面的功能、性能、兼容性等各種測試,發(fā)現(xiàn)并修復(fù)問題,通常會花費大量的時間和精力。需求分析、設(shè)計和編碼階段雖然也很重要,但相對來說測試階段更為耗時。
2. 以下哪種軟件開發(fā)模型最適合需求不明確且項目風(fēng)險較大的情況?( )
A. 瀑布模型
B. 快速原型模型
C. 螺旋模型
D. 增量模型
答案:C
解析:螺旋模型將軟件開發(fā)過程視為一個螺旋式上升的過程,每一次迭代都會進行風(fēng)險評估,適合于需求不明確且項目風(fēng)險較大的項目。瀑布模型要求需求明確,按階段順序進行;快速原型模型主要用于快速構(gòu)建原型來明確需求;增量模型是將軟件逐步交付,但對于風(fēng)險較大且需求不明確的情況,螺旋模型更合適。
3. UML(統(tǒng)一建模語言)中,用于描述系統(tǒng)功能的視圖是( )。
A. 用例視圖
B. 邏輯視圖
C. 組件視圖
D. 部署視圖
答案:A
解析:用例視圖用于描述系統(tǒng)應(yīng)該具備的功能,它從用戶的角度出發(fā),展示了系統(tǒng)的參與者和用例,是描述系統(tǒng)功能的重要視圖。邏輯視圖關(guān)注系統(tǒng)的邏輯結(jié)構(gòu)和對象之間的關(guān)系;組件視圖描述系統(tǒng)的組件和它們之間的依賴關(guān)系;部署視圖關(guān)注系統(tǒng)的物理部署。
。ǘ⿺(shù)據(jù)結(jié)構(gòu)與算法
4. 一個棧的入棧序列是1,2,3,4,5,則棧的不可能的輸出序列是( )。
A. 5,4,3,2,1
B. 4,5,3,2,1
C. 4,3,5,1,2
D. 1,2,3,4,5
答案:C
解析:棧的操作原則是“先進后出”。A選項是正常的出棧順序;B選項先將1,2,3,4入棧,然后4出棧,5入棧,再依次出棧;D選項是依次入棧并出棧;而C選項中4,3出棧后,棧頂是2,要想1先出棧是不可能的,因為1在棧底,必須先將2出棧后才能出棧1。
5. 已知一棵二叉樹的前序遍歷序列為ABCDEF,中序遍歷序列為CBAEDF,則后序遍歷序列為( )。
A. CBEFDA
B. FEDCBA
C. CBEDFA
D. ABCDEF
答案:A
解析:根據(jù)前序遍歷序列和中序遍歷序列可以確定二叉樹的結(jié)構(gòu)。前序遍歷的第一個節(jié)點A是根節(jié)點,在中序遍歷中,A左邊的節(jié)點是左子樹,右邊的節(jié)點是右子樹。由此可逐步確定二叉樹的結(jié)構(gòu),然后得出后序遍歷序列為CBEFDA。
6. 在含有n個節(jié)點的二叉排序樹中查找一個關(guān)鍵字,最多需要比較( )次。
A. n
B. n/2
C. logn
D. nlogn
答案:A
解析:在最壞情況下,二叉排序樹會退化為一條鏈,此時查找一個關(guān)鍵字需要比較n次。最好情況下,比較次數(shù)為logn,但題目問的是最多需要比較的次數(shù),所以是n次。
。ㄈ┚幊陶Z言基礎(chǔ)(以C/C++為例)
7. 以下關(guān)于C++中函數(shù)重載的敘述中,正確的是( )。
A. 函數(shù)重載是指定義多個函數(shù)名相同但參數(shù)類型或個數(shù)不同的函數(shù)
B. 函數(shù)重載是指定義多個函數(shù)名不同但參數(shù)類型或個數(shù)相同的函數(shù)
C. 函數(shù)重載要求函數(shù)返回值類型不同
D. 函數(shù)重載要求函數(shù)體不同
答案:A
解析:函數(shù)重載是指在同一作用域內(nèi),可以定義多個函數(shù)名相同但參數(shù)類型或個數(shù)不同的函數(shù)。函數(shù)返回值類型不同不能作為函數(shù)重載的依據(jù),函數(shù)體可以相同也可以不同,但主要是通過參數(shù)來區(qū)分不同的重載函數(shù)。
8. 在C語言中,若有定義“int a[10];”,則以下對數(shù)組元素引用正確的是( )。
A. a(5)
B. a[10]
C. a[5]
D. a[10.0]
答案:C
解析:在C語言中,數(shù)組元素的引用是通過下標(biāo)來進行的,下標(biāo)從0開始,所以a[5]是正確的引用方式。a(5)是函數(shù)調(diào)用的形式,a[10]超出了數(shù)組的下標(biāo)范圍(數(shù)組最大下標(biāo)為9),a[10.0]下標(biāo)不能為浮點數(shù)。
9. 以下關(guān)于C++類的繼承的說法中,正確的是( )。
A. 子類只能繼承父類的公有成員和保護成員
B. 子類可以繼承父類的所有成員
C. 子類不能繼承父類的構(gòu)造函數(shù)和析構(gòu)函數(shù)
D. 子類可以重新定義父類的私有成員
答案:C
解析:子類可以繼承父類的公有成員和保護成員,但不能繼承私有成員(但可以通過公有和保護成員函數(shù)間接訪問)。子類不能繼承父類的.構(gòu)造函數(shù)和析構(gòu)函數(shù),它們會在子類對象創(chuàng)建和銷毀時自動調(diào)用相應(yīng)的子類構(gòu)造函數(shù)和析構(gòu)函數(shù)。子類不能重新定義父類的私有成員,只能在子類中重新定義公有和保護成員。
二、填空題(每題3分,共30分)
。ㄒ唬┸浖こ踢^程
1. 軟件需求規(guī)格說明書(SRS)的主要作用是作為__________的依據(jù)。
答案:軟件設(shè)計和驗收測試
解析:軟件需求規(guī)格說明書明確了軟件的功能、性能、接口等需求,是軟件設(shè)計人員進行設(shè)計的依據(jù),也是驗收測試時判斷軟件是否符合需求的標(biāo)準(zhǔn)。
2. 軟件測試的目的是__________。
答案:發(fā)現(xiàn)軟件中的錯誤和缺陷
解析:軟件測試的主要目的是通過各種測試方法和手段,盡可能地發(fā)現(xiàn)軟件中存在的錯誤和缺陷,以保證軟件的質(zhì)量和可靠性。
。ǘ⿺(shù)據(jù)結(jié)構(gòu)
1. 設(shè)單鏈表中指針p指向結(jié)點A,若要刪除A之后的結(jié)點(假設(shè)A不是最后一個結(jié)點),則需修改指針的操作為p->next = __________。
答案:p->next->next
解析:要刪除A之后的結(jié)點,需要將A結(jié)點的next指針指向A之后結(jié)點的下一個結(jié)點,即p->next->next。
2. 一棵完全二叉樹共有700個結(jié)點,則該二叉樹中有__________個葉子結(jié)點。
答案:350
解析:對于完全二叉樹,設(shè)葉子結(jié)點數(shù)為n,度為2的結(jié)點數(shù)為n,則n = n + 1。又因為n + n = 700,可得n = (700 + 1) / 2 = 350。
。ㄈ┧惴
1. 對n個元素進行冒泡排序,最多需要進行__________趟比較。
答案:n - 1
解析:冒泡排序每趟比較都會將一個較大(或較小,取決于排序順序)的元素“冒泡”到正確的位置,最多需要進行n - 1趟比較就可以將所有元素排序完成。
2. 已知一個順序存儲的線性表,設(shè)每個元素占m個存儲單元,第一個元素的地址為a,則第i個元素的地址為__________。
答案:a + (i - 1)×m
解析:順序存儲的線性表中,元素的地址是連續(xù)的,第i個元素相對于第一個元素的偏移量為(i - 1)個元素的大小,每個元素占m個存儲單元,所以第i個元素的地址為a + (i - 1)×m。
三、簡答題(每題10分,共20分)
。ㄒ唬┖喪鲕浖䴗y試的基本步驟。
答案:
1. 測試計劃和設(shè)計
確定測試目標(biāo)和范圍。
制定測試策略和計劃,包括測試方法、測試工具、測試資源等的選擇和安排。
設(shè)計測試用例,根據(jù)需求規(guī)格說明書和軟件設(shè)計文檔,設(shè)計出能夠覆蓋各種情況的測試用例。
2. 測試環(huán)境搭建
準(zhǔn)備測試所需的硬件、軟件和網(wǎng)絡(luò)環(huán)境,確保測試環(huán)境與實際生產(chǎn)環(huán)境盡可能相似。
安裝和配置被測試軟件及其相關(guān)依賴。
3. 執(zhí)行測試用例
按照測試計劃和設(shè)計,逐個執(zhí)行測試用例。
記錄測試過程中的發(fā)現(xiàn),包括測試結(jié)果、問題描述、截圖等。
4. 缺陷管理與跟蹤
對測試過程中發(fā)現(xiàn)的缺陷進行記錄和分類,提交缺陷報告。
跟蹤缺陷的修復(fù)情況,進行回歸測試,確保缺陷被正確修復(fù)且沒有引入新的問題。
5. 測試結(jié)果分析與評估
分析測試結(jié)果,統(tǒng)計測試用例的執(zhí)行情況,如通過數(shù)、失敗數(shù)、未執(zhí)行數(shù)等。
根據(jù)測試結(jié)果評估軟件的質(zhì)量,判斷軟件是否滿足發(fā)布標(biāo)準(zhǔn)。如果不滿足,需要進一步分析原因并提出改進建議。
6. 測試報告生成
匯總測試過程中的各項數(shù)據(jù)和信息,生成測試報告。
測試報告應(yīng)包括測試概述、測試結(jié)果、缺陷分析、風(fēng)險評估等內(nèi)容,為項目決策提供依據(jù)。
。ǘ┱堈f明面向?qū)ο缶幊痰娜筇匦约捌浜x。
答案:
1. 封裝
含義:將數(shù)據(jù)和操作數(shù)據(jù)的方法封裝在一起,形成一個類。通過封裝,類的內(nèi)部實現(xiàn)細節(jié)對外部是隱藏的,外部只能通過類提供的公共接口來訪問和操作類中的數(shù)據(jù)。這樣可以提高代碼的安全性和可維護性,避免外部直接隨意修改類內(nèi)部的數(shù)據(jù),同時也使得代碼的結(jié)構(gòu)更加清晰。
例如:在一個表示汽車的類中,可以將汽車的品牌、型號、速度等數(shù)據(jù)以及加速、剎車等操作方法封裝在一起。外部代碼不能直接訪問汽車的速度變量,但可以通過調(diào)用加速或剎車方法來間接改變速度。
2. 繼承
含義:允許一個類(子類)繼承另一個類(父類)的屬性和方法。子類可以擴展父類的功能,同時還可以重寫父類的方法以實現(xiàn)更具體或不同的行為。繼承體現(xiàn)了代碼的復(fù)用性和擴展性,減少了代碼的冗余,使得軟件系統(tǒng)的結(jié)構(gòu)更加清晰和易于維護。
例如:有一個動物類,它有吃、睡等基本方法。然后可以創(chuàng)建一個狗類作為動物類的子類,狗類繼承了動物類的吃、睡方法,同時還可以添加自己特有的方法如叫、搖尾巴等。
3. 多態(tài)
含義:同一操作作用于不同的對象,可以有不同的解釋和執(zhí)行結(jié)果。多態(tài)通常通過繼承和方法重寫來實現(xiàn)。在運行時,根據(jù)對象的實際類型來決定調(diào)用哪個類的方法。多態(tài)提高了程序的靈活性和可擴展性,使得代碼可以更加通用和易于維護。
例如:定義一個形狀類,有一個計算面積的方法。然后創(chuàng)建圓形類、矩形類等作為形狀類的子類,它們都重寫了計算面積的方法。在程序中,可以使用一個形狀類的引用指向不同的子類對象,當(dāng)調(diào)用計算面積方法時,會根據(jù)實際指向的對象類型執(zhí)行相應(yīng)子類的方法。
【360軟件工程筆試真題分享】相關(guān)文章:
格力筆試真題分享11-21
OPPO筆試真題分享,筆試題目分享11-21
咨詢顧問筆試真題分享11-21
國泰金融筆試真題分享11-21
數(shù)字推理類筆試真題分享11-21
申銀萬國筆試真題分享11-21
聯(lián)想筆試真題11-06
2010淘寶筆試真題11-06
金蝶公司筆試真題11-06