1. <tbody id="y0n05"><nobr id="y0n05"><input id="y0n05"></input></nobr></tbody><strong id="y0n05"><acronym id="y0n05"></acronym></strong>

          1. 軟件開發工程師筆試主觀題

            啊南 1302閱讀 2020.03.17

            【導語】: 大部分的職位在招聘時都會設置多道關卡:筆試、初試、復試,并不是所有人都能夠進入面談環節的,大部分的求職者都倒在了筆試這一關。那么究竟要怎么做才能跨過筆試這一道關卡呢?除了提前準備別無他法,筆試當中最難的最容易丟分的就是主觀題的回答,畢竟一道主觀題涵蓋的信息量還是很大的。以下準備了一些往年軟件開發工程師崗位筆試主觀題,有興趣的可以提前做一個了解。

            軟件開發筆試主觀題5例

            1、軟件生存周期是什么? 
            軟件生存周期是軟件的生產直到報廢的生命周期,由軟件定義、軟件開發、軟件維護三個時期組成。
            (1) 軟件定義時期的任務是確定軟件開發的總目標即問題定義;確定可行性;需求
            分析。
            (2) 軟件開發時期具體設計和實現在前一個時期定義的軟件。包括總體設計,詳細
            設計,編碼和測試。
            (3) 軟件維護時期主要任務是使軟件持久地滿足用戶的需要,延續軟件使用的壽命。
            2、數據字典是什么? 
            數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合,數據字典是一種用戶可以訪問的記錄數據庫和應用程序源數據目錄。數據流圖和數據字典共同構成系統的邏輯模型。
            數據字典有4類元素定義組成:數據流,數據流分量(數據元素(數據結構,數據項)),數據存儲,處理。
            在數據字典中記錄數據元素的信息,如一般信息,定義,使用特點,控制信息,分組信息。
            數據字典最重要的用途是作為分析階段的工具。在數據字典中建立的一組嚴密一致的定義很有助于改進分析員和用戶之間的通信,消除誤解。數據字典是開發數據庫的第一步,也是很有價值的一步。
            3、軟件文檔的作用 
            軟件文檔在產品的開發過程中起著重要的作用。
            (1) 提高軟件開發過程的能見度,將開發過程發生的事件以某種可閱讀的形式記錄在文檔中 (2) 管理人員可以把記載下來的材料作為檢查軟件開發進度和開發質量的依據,實現對軟件開發的工程管理. 
            (3) 提高開發效率  作為開發人員在一定階段的工作成果和結束標志。便于潛在用戶了解軟件的功能、性能等各項指標,為他們選購符合自己需要的軟件提供依據。
            (4) 記錄開發過程中有關的信息,便于協調以后的軟件開發、使用和維護 
            (5) 提供對軟件的運行,維護和培訓等有關信息,便于管理人員,開發人員,操作人員,用戶等之間的協 作、交流和了解。
            (6) 文檔是軟件開發規范的體現和指南 
            4、黑盒測試是什么? 
            黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。在測試中把程序看做一個不能打開的黑盒子,在完全不考慮內部結構和內部特性的情況下,在程序接口進行測試。它只檢查程序功能是否按照要求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。黑盒測試著眼于程序外部結構,不考慮內部邏輯結構,主要針對軟件界面和軟件功能進行測試。
            黑盒測試注重于軟件的功能需求,能發現以下幾類錯誤:功能不正確或遺漏;界面錯誤;輸入和輸出錯誤;性能錯誤;初始化和終止錯誤等。
            優點:適用于各個階段,容易入手生成測試數據 缺點:某些代碼得不到測試,不易進行充分性測試 
            5、軟件危機是什么? 
            軟件危機是指在計算機軟件的開發和維護過程中所遇到一系列嚴重問題。
            軟件危機包含兩方面問題:如何開發軟件,滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有文件。
            表現:(1)對軟件開發成本和進度的估計常常不準確      
                     (2)用戶對“已完成的”軟件系統不滿意
                     (3)軟件產品的質量靠不住
                     (4)軟件常常不可維護 
                     (5)軟件通常沒有合適的文檔資料 
                     (6)軟件成本在計算機系統總成本中所占比例逐年增加 
                     (7)軟件開發生產率提高的速度,跟不上計算機應用迅速普及深入的趨勢 原因:
            (1)與軟件本身有關: 軟件不會被“用壞”,若運行發現錯誤,很可能是在開發時期引入的;軟件規模龐大,程序復雜性隨著程序規模的增加而增加 
            (2)與軟件開發與維護的方法有關:忽視軟件需求分析的重要性,對用戶的要求沒有正確認識就著手編寫程序;輕視軟件維護 
            消除危機途徑: 
            (1) 正確認識計算機軟件 
            (2) 認識軟件開發是需要組織良好,管理嚴格,各類人員協同配合、共同完成的工程項目 
            (3) 推廣使用在實踐中總結出來開發軟件成功的技術和方法,并繼續探索研究
            (4) 開發和使用更好的軟件工具 
            (5) 有技術措施,又要有必要的組織管理

            軟件開發筆試主觀題10例

            1. 舉例說明類和對象的關系。
            答:學生可作為一個類---學生類,每個學生就是這個學生類的一個實例,例如,學生張三就是學生類的一個實例。
            2. 面向對象分析的關鍵步驟有哪些?應建立哪幾個模型? 
            答:關鍵步驟有識別問題域的對象并分析它們相互之間的關系,建立簡潔、精確、可理解的正確模型;應建立的模型有功能模型,對象模型,動態模型。
            3. 什么是實體類、邊界類和控制類?為什么將分析類劃分成這三種類型?  
            答:(1)實體類保存要存入永久存儲體的信息。實體類通常在事件流或交互圖中,是對用戶最有意義的類。

            邊界類位于系統與外界的交界處,包括所有的窗體、報表、系統硬件接口、與其他系統的接口??刂祁愗撠焻f調其他類的工作。每個用例中至少應該有一個控制類,它控制用況中的事件順序。
                   (2)分為三種類型是因為它們各自的功能不同。界面類——描述系統與角色之間的接口??刂祁悺诜治瞿P蛢缺硎緟f調、順序、事務處理以及控制其他對象的類。

            實體類——為需要長久保存的信息進行建模的類。
            4. UML中有哪幾類個視圖,它們的作用分別是什么? 
            答:
            (1)用例視圖(Use-Case view),用例視圖用于描述系統的功能集。它是從系統外部以用戶角度,對系統做的抽象表示。用例視圖所描述的系統功能依靠于外部用戶或另一個系統觸發激活,為用戶或另一個系統提供服務,實現與用戶或另一個系統之間的交互。用例視圖中可以包含若干個用例,用例表示系統能夠提供的功能,用例視圖是其他視圖的核心和基礎。其他視圖的構造依賴于用例視圖中所描述的內容,因為系統的最終目標是實現用例視圖中描述的功能,同時附帶一些非功能性的特性,因此用例視圖影響著所有其他的視圖。
            (2)邏輯視圖(Logical view),如果說用例視圖描述系統“做什么”,那么邏輯視圖就是描述“怎么做”。系統的靜態結構描述類、對象和它們之間的關系,反映的是系統靜態特征或結構組成。
            (3)組件視圖(Component view),組件視圖用來描述系統實現的結構和行為特征,反映系統各組成元素之間的關系。組件視圖由組件圖實現,主要供開發者和管理者使用。
            (4)并發視圖(Concurrency View),并發視圖用來描述系統的動態和行為特征。并發視圖將任務劃分為進程或線程形式,通過任務劃分引入并發機制,可以高效地使用資源、并行執行和處理異步事件。除了劃分系統為并發執行的進程或線程外,并發視圖還必須處理通信和同步問題。
            (5)配置視圖(Deployment View)配置視圖體現了系統的實現環境,反映系統的物理架構。配置視圖還包括一個映射,該映射顯示在物理架構中組件是怎樣分配的。
            5. 順序圖在分析階段的作用? 
            答:順序圖描述了一組交互對象間的交互方式,它表示完成某項行為的對象和這些對象之間傳遞消息的時間順序 
            6. 活動圖在分析階段的作用? 
            答:活動圖反映系統中從一個活動到另一個活動的流程,強調對象間的控制流程?;顒訄D特別適合描述工作流和并行處理過程。具體地說活動圖可以描述一個操作過程中需要完成的活動;描述一個對象內部的工作;描述如何執行一組相關的動作,以及這些動作如何影響它們周圍的對象;說明一個業務活動中角色、工作流、組織和對象是如何工作的。
            7.比較結構化設計和面向對象設計區別? 
            答:結構化設計:系統被劃分成多個模塊,這些模塊被組織成一個樹型結構。根就是主模塊,葉子是最低級的功能模塊。這棵樹也表示調用結構:每個模塊都調用自己的直接下級模塊,并被自己的直接上級模塊調用。頂層模塊負責收集應用程序最重要的那些執行策略,底層模塊實現處理細節。在這個體系結構中越靠上層位置,概念的抽象層次就越高。但是,由于上層模塊需要調用下層模塊,所以這些上層模塊就依賴于下層模塊的處理細節。也就是說,當實現細節發生變化時,抽象也會受到影響;如果想復用某一個抽象的話,就必須把它依賴的細節都一起拖過去。
            面向對象設計:上層創建的抽象不依賴于任何細節,而細節則高度依賴于上層的抽象。這種依賴關系的變化正是結構化設計與面向對象設計的根本區別。
            8.什么是框架,它與“設計”有什么關系? 
            答:框架是一組可用于不同應用的類的集合??蚣苤械念愅ǔJ且恍┏橄箢惒⑶蚁嗷ビ新撓?,可以通過繼承的方式使用這些類,當面向對象設計進行底層設計時,對每個類進行詳細設計,設計類的屬性和操作,優化類之間的關系,就可以設計成框架來對類的設計進行構架和優化。
            9.系統的物理構架中應該包括哪些信息? 
            答:用UML的配置圖描述系統的物理構架,然后將需求分析階段捕獲的系統功能分配到這些物理節點上。包括的信息為節點的拓撲結構、硬件設備配置、通信路徑、各個節點上運行的系統軟件配置、應用軟件配置。
            10. 為建立良好的編程風格應遵循什么原則? 
            答: 1)節簡化①不使用不必要的變量和函數 ②避免變量重名,變量重名可導致很難被發現的錯誤。③盡量減小代碼量。④盡量減少代碼的執行時間,提高執行效率。⑤避免功能冗余的模塊。⑥盡量不使用全局變量。
                   2)模塊化①確保物理和邏輯功能密切相關。 ②限定一個模塊完成一個獨立的功能,提高模塊的內聚度。 ③檢查代碼的重復率,重復多的代碼,要抽出來作為一個單獨的模塊。
                   3)簡單化①采用直接了當的算法,避免使用技巧性高和難懂的代碼。②使用簡單的數據結構,避免使用多維數組、指針和復雜的表。③注意對象命名的一致性。④以手工的方式簡化算術和邏輯表達式。
                   4)結構化①按標準化的次序說明數據;②按字母順序說明對象名③使用讀者明了的結構化程序部件;④采用直截了當的算法;⑤根據應用背景排列程序各個部分;⑥不隨意為效率而犧牲程序的清晰度和可讀性;⑦讓機器多做煩瑣的工作,如重復、庫函數;⑧用公共函數調用代替重復出現的表達式;⑨避免循環、分支的嵌套層數過高;⑩單入口單出口。
                   5)文檔化(documentation)①有效、適當地使用注釋。②協調使用程序塊注釋和程序行注釋。③保持文檔和程序的同步。6)格式化(layout)①始終采用統一縮進規則;②適當插入括號表明運算次序、排除二義性;③有效地使用空格符以區別程序的不同意群。

            軟件開發工程師筆試主觀題15例

            1. 什么是軟件工程?軟件工程的目標是什么? 
            答:軟件工程是①將系統化的、規范的、可度量的方法應用于軟件的開發、運行和維護過程,即將工程化應用于軟件開發和管理之中,②對①中所選方法的研究。
            目標:1合理預算開發成本,付出較低的開發費用。2實現預期的軟件功能,達到較好的軟件性能,滿足用戶的需求。3 提高軟件的可維護性,降低維護費用。4 提高軟件開發生產率,及時交付使用 
            2. 指出瀑布模型中下列任務的順序:驗收測試,項目計劃,單元測試,需求評審,成本估計,概要設計,詳細設計,系統測試,設計評審,編碼,需求規格說明書。
            答:項目計劃,成本估計,需求規格說明書,需求評審,概要設計,詳細設計,設計評審,編碼,單元測試,系統測試,驗收測試 
            3. 可行性研究報告的主要內容是什么? 
            答:可行性研究主要包括以下幾個部分: 
               (1)概述(2)技術可行性(3)項目成熟程度(4)市場需求情況和風險分析(5)投資估算及資金籌措(6)經濟與社會效益(7)綜合實力和產業基礎(8)項目實施進度計劃(9)其它尚需要說明的必要的方面(10)結論 
            4. 什么是需求分析?需求分析階段的基本任務是什么? 
            答:所謂"需求分析",是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什么數據,要得到什么結果,最后應輸出什么??梢哉f,“需求分析”就是確定要計算機“做什么”。
            任務:確定軟件項目的目標和范圍。調查使用者的要求,分析軟件必須做什么,編寫需求規格說明書等它相關文檔,并進行必要的需求審查。除此之外,還包括需求變更控制,需求風險控制,需求版本控制等對需求的管理工作 
            5. 什么是結構化分析方法?該方法使用什么描述工具? 
            答:結構化的分析方法是面向數據流的方法,因此,此方法研究的核心是數據的組成和數據流向和對數據的加工處理。
            結構化分析方法用抽象模型的概念,按照軟件內部數據傳遞、變換的關系,自頂向下逐層分解,直至找到滿足功能要求的所有可實現的軟件元素為止 
            描述工具:1系統流程圖 2 數據流程圖3數據字典4 IPO圖 5層次方框圖6實體—關系圖 7狀態—變遷圖 
            6. 結構化分析方法通過哪些步驟來實現? 
            答:1)確定系統的功能要求 2)確定系統的數據要求  3)確定系統的操作要求和界面要求  4) 確定系統的性能要求  
            5)確定系統的運行要求   6)獲得當前系統的物理模型  7)抽象出當前系統的邏輯模型   8)建立目標系統的邏輯模型。9)修正開發計劃  10)如果需要則開發系統原型  
            7. 什么是數據流圖?其作用是什么?其中的基本符號各表示什么含義? 
            答:數據流圖:簡稱DFD,就是采用圖形方式來表達系統的邏輯功能、數據在系統內部的邏輯流向和邏輯變換過程,
            是結構化系統分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。
            數據流圖的基本符號的意思: 1.矩形表示數據的外部實體;2.圓角的矩形表示變換數據的處理邏輯; 3.少右面的邊
            矩形表示數據的存儲; 4.箭頭表示數據流。
            8. 什么是數據字典?其作用是什么?它有哪些條目? 
            答:數據字典,主要用來描述數據流程圖中的數據流、數據存儲、處理過程和和數據源點/終點。
            作用:數據流程圖描述了系統的邏輯結構,其中的四個基本圖形元素的含義無法在數據流程圖中詳細說明,因此數據流程圖需要與其他工具配合使用,數據字典就是這樣的工具之一。
            包括的條目:數據流詞條  數據元素詞條   數據存儲詞條  數據加工處理詞條 數據源點及終點詞條 
            9. 什么是概要設計?有哪些基本任務? 
            答:概要設計:根據用戶的需求先確定軟件系統的總體結構和總的設計原則 
            基本的任務:設想供選擇的方案。推薦最佳方案。功能分解,確定軟件結構。設計軟件結構。制定測試計劃。數據設計。書寫文檔。包括總體設計規格說明書。用戶手冊。測試計劃。設計審查和復審。
            10. 詳細設計的基本任務是什么?有那幾種描述方法? 
            答:詳細設計階段的任務是要為編寫程序代碼設計“圖紙”,由程序員按“圖紙”用某種高級程序設計語言編寫程序代碼。主要方法有設計程序流程圖,表格設計符號以及過程設計語言。
            11. 什么是變換流?什么是事物流? 
            答:變換型數據流可以劃分為明顯的三部分:邏輯輸入,中心變換,邏輯輸出。事務流的特點是數據沿某個輸入路徑
            流動,該路徑將外部信息轉換成事務,其中發射出多條事務處理路徑的中心處理被稱為中心事務 
            12. 模塊的內聚有哪幾種?模塊間的耦合有哪幾種? 
            答:內聚分為七種類型:巧合內聚:一個模塊執行多個完全互不相關的動作,那么這個模塊就有巧合內聚     
            邏輯內聚:當一個模塊執行一系列相關的動作時,稱其有邏輯內聚。
            時間性內聚:當一個模塊內的多個任務是與時間有關時,這個模塊具有時間性內聚。
            過程內聚:模塊執行的若干動作之間有順序關系。
            通信內聚:模塊執行的若干動作之間有順序關系,并且所有動作是在相同的數據上執行。
            信息內聚:一個模塊中執行一系列動作,每個動作都有自己的入口點和處理代碼,所有的動作都作用在相同的數據結構上,這樣的模塊叫做信息內聚。
            功能性內聚:一個模塊中各個部分都是完成某一具體功能必不可少的組成部分 
            耦合分為七類:內容耦合:如果一個模塊直接參考另一個模塊的內容,則這兩個模塊是內容耦合。公共耦合:如果多個模塊都訪問同一個公共數據環境,則稱它們是公共耦合。外部耦合:如果兩個模塊都訪問同一個全局簡單變量而不是同一全局數據結構,而且,不是通過參數表傳遞該全局變量的信息,則這兩個模塊屬于外部耦合??刂岂詈希喝绻KA向模塊B傳遞一個控制信息,則稱這兩個模塊是控制耦合的。
              數據結構耦合:當一個模塊調用另一個模塊時傳遞了整個數據結構,這兩個模塊之間具有數據結構耦合。數據耦合:如果兩個模塊傳遞的是數據項,則這兩個模塊是數據耦合。非直接耦合:如果兩個模塊之間沒有直接關系,它們之間的聯系完全通過主模塊的控制和調用來實現的,這就是非直接耦合。
            13. 什么是軟件測試? 
            答:軟件測試從廣義上講,是指軟件產品生存周期內所有的檢查、評審和確認活動。從狹義上講,軟件測試是為了發現錯誤而執行程序的過程?;蛘哒f,軟件測試是根據軟件開發各個階段的規格說明和程序內部結構而精心設計一批測試用例,用這些測試用例運行程序,以發現程序錯誤的過程。
            14. 軟件測試的原則是什么? 
            答:軟件測試的原則有: 
            1) 應該把測試貫穿在整個開發過程之中。事實上,從需求分析階段開始,每個階段結束之前都要進 行階段審查,目的是盡早發現和糾正錯誤。
            2) 每個測試用例都應該包括測試輸入數據和這組數據輸入作用下的預期輸出結果。在實際操作中可以列出一張表格,包括每個測試用例的編號、類型、輸入數據、預期輸出結果、實際輸出結果、出錯原因分析。
            3) 要對每個測試結果進行全面檢查,不要漏掉已經出現的錯誤跡象。
            4) 程序員應該盡量避免檢查自己編寫的代碼。測試工作需要嚴格的工作作風,程序員在測試自己編寫的代碼時往往會帶有一些傾向性,使得他們工作中常常出現一些疏漏。而且,程序員對設計規格說明書的理解錯誤而引入的錯誤更是難于發現。
            5) 在設計測試用例時,應該包括有效的、期望的輸入情況,也要包括無效的和不期望的輸入情況。既能夠驗證程序正常運行的合理輸入,也能夠驗證對異常情況處理的不合理輸入數據以及臨界數據。在測試程序時,人們常常過多地考慮合法的和期望的輸入條件,以檢查程序是否做了它應該做的事情,而忽視了不合法的和預想不到的輸入條件。事實上,用戶在使用系統時,輸入一些錯誤指令和參數是經常發生的,如果軟件遇到這種情況不能做出適當的反應,給出相應的提示信息,就可能會誤導用戶,甚至造成嚴重損失。
            6) 軟件中遺留的錯誤數量與已經發現的錯誤數量成正比。根據這個規律,對測試中發現錯誤成堆的模塊更要仔細測試。例如,在某個著名的操作系統中,44%的錯誤僅與4%的模塊有關。
            7) 回歸測試的關聯性要特別引起注意,修改一個錯誤而引起更多錯誤的現象并不少見。
            8) 測試程序時不僅要檢查程序是否做了它應該做的事情,還要檢查它是否做了不該做的事情。例如,工資軟件中,軟件只完成在編職工的工資計算和輸出,不在編人員的工資是不進行計算和輸出的。如果軟件將不在編人員的工資信息也輸出顯然是不合適的。
            9) 嚴格執行測試計劃。在測試之前應該有明確的測試計劃,內容包括:要測試的軟件功能和內容、測試用例和預期結果、測試的進度安排、需要的工具和資源、測試控制方式和過程等。
            10)做好測試記錄,為統計和維護提供基礎數據。
            15. 請說明集成測試、系統測試和驗收測試有什么不同? 
            答:集成測試界于單元測試和系統測試之間,起到“橋梁作用”,一般由開發小組采用白盒加黑盒的方式來測試,既驗證“設計”,又驗證“需求”。
            系統測試的粒度最大,一般由獨立測試小組采用黑盒方式來測試,主要測試系統是否符合“需求規格說明書”。
            驗收測試與系統測試相似,主要區別是測試人員不同,驗收測試由用戶執行。

            国产欧美日韩激情视频一区,久久无码中文字幕无码网站,99久久久成人毛片无码,国产国语脏话对白免费视频,丰满熟女大屁股水多多