西北大学软工专硕专业课面试可能会问到的问题
20屆西北大學軟工專碩剛剛上岸,本著上岸分享資料的想法, 把自己復試期間整理的一點東西(包括但不僅限于這些問題)分享出來,供大家參考,內容只代表我的觀點,假如與標準答案有所不同,敬請諒解!
Ps:今年因為疫情的原因,面試改為線上,和之前的套路稍微有點不同,大方向還是一樣的,我還是按之前的形式準備的。
首先是專業面試可能會問到的問題:
抽題范圍包括計算機網絡,數據結構,操作系統,計算機組成,數據庫,軟件工程
計算機網絡
1.無線局域網為什么不沖突檢測,而選擇沖突避免?
答:因為無線環境不像有線廣播媒體那樣容易控制,來自其他局域網中的用戶傳輸會干擾沖突檢測的操作,且在無線環境中檢測沖突是困難的,因此不可能終止相互沖突的傳輸,只能使用CSMA/CA盡量避免沖突。
2.郵件發送需要那些協議
發送郵件采用STMP協議,接收郵件一般采用POP3協議和IMAP協議 。
3.網絡7層體系結構
物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。
4.網絡服務問題與質量
指一個網絡能夠利用各種基礎技術,為指定的網絡通信提供更好的服務能力,?是網絡的一種安全機制,?是用來解決網絡延遲和阻塞等問題的一種技術。當網絡過載或擁塞時,QoS?能確保重要業務量不受延遲或丟棄,同時保證網絡的高效運行。
補充:
5.下一代網絡發展方向
下一代網絡(Next Generation Network),又稱為次世代網絡。主要思想是在一個統一的網絡平臺上以統一管理的方式提供多媒體業務,整合現有的市內固定電話、移動電話的基礎上(統稱FMC),增加多媒體數據服務及其他增值型服務。簡稱IP-NGN。
6.什么是 BS/CS
BS結構(Browser/Server,瀏覽器/服務器模式),只安裝維護一個服務器(Server),而客戶端采用瀏覽器(Browse)運行軟件。
CS結構(Client/Server,客戶/服務器模式),服務器通常采用高性能的計算機、工作站或小型機,并采用大型數據庫系統,如Oracle、 SQL Server等。客戶端需要安裝專用的客戶端軟件。
C/S:
優點:交互性好,對服務器壓力小,安全;
缺點:服務器更新時需要同步更新客戶端;
B/S:
優點:不需要更新客戶端;
缺點:交互性差,安全性低;
7.什么是 Thin Client
Thin Client(瘦客戶機),采用高效的嵌入式高效能CPU,利用嵌入式開發工具開發的獨立嵌入式操作系統,具有穩定可靠、完全兼容PC應用、使用方便、體積小巧、安靜節能的眾多優點。
數據結構
1.如何解決哈希沖突
(1)開放定址法(再散列法):Hi=(H(key)+di)%m
又可以分為:①線性探測再散列(di=1,2,3……)
②二次探測再散列(di=12,22,32……)
③偽隨機探測再散列(di=偽隨機數序列)
(2)再哈希法:Hi=RHi(key) i=1,2,…… 構造不同的哈希函數
(3)鏈地址法:將所有哈希地址為i的元素構成一個稱為同義詞鏈的單鏈表,并將單鏈表的頭指針存在哈希表的第i個單元中,因而查找、插入和刪除主要在同義詞鏈中進行。
(4)建立公共溢出區:將哈希表分為基本表和溢出表,凡是和基本表發生沖突的元素一律填入溢出表。
2.哈希函數構造方法
數字分析法、平方取中法、分段疊加法、除留余數法、偽隨機數法。
3.各排序算法復雜度
略
4.什么是面向對象程序設計,面向對象開發,以及他們區別
面向對象程序設計就是對象+消息。
第一,程序一般由類的定義和使用兩部分組成,而類的實例即對象;
第二,程序中的一切操作都是通過對象發送消息來實現的,對象接收消息后,啟動有關方法完成相應的操作。在面向對象的程序設計中,對象是組成程序的基本模塊。
面向過程程序設計:就是函數的定義和調用。簡單地說,過程就是程序執行某項操作的一段代碼,函數是最常用的過程。
5.面向對象的三大特性:
封裝
是把對象的屬性和服務結合成一個獨立的系統單位,并盡可能隱藏對象的內部細節。
繼承
子類可以自動擁有父類的全部屬性和服務。
多態性
在父類中定義的屬性或服務被子類繼承后,可以具有不同的數據類型或表現出不同的行為。
6.面向過程與面向對象
面向過程
優點:性能比面向對象高。
缺點:沒有面向對象易維護、易復用、易擴展
面向對象
優點:易維護、易復用、易擴展,
缺點:性能比面向過程低
操作系統
1.什么是操作系統
控制和管理整個計算機系統的硬件和軟件資源,并合理地組織調度計算機的工作和資源的分配,以提供給用戶和其他軟件方便的接口和環境的程序集合。
2.操作系統的功能(OS)
處理機管理(進程管理):處理中斷事件和處理器調度。
存儲器管理:是指針對內存儲器的管理(分配內存空間)。
設備管理:是指負責管理各類外圍設備。
文件管理:是指操作系統對信息資源的管理。
作業管理:每個用戶請求計算機系統完成的一個獨立的操作稱為作業。包括作業的輸入和輸出,作業的調度與控制。
3.這本書講了什么? 整本書的框架?
本書主要介紹了操作系統的概念和發展,系統地講述了操作系統的基本概念、原理和方法。
框架:操作系統的概念和發展,然后介紹了進程管理、內存管理、文件管理和IO管理等內容,最后進行了總結。
4.死鎖、饑餓等
計算機組成
1.馮諾依曼計算機的特點
(1)計算機硬件系統有運算器、存儲器、控制器、輸入設備和輸出設備5大部件組成;
(2)指令和數據以同等地位存于存儲器內,并可按地址尋訪;
(3)指令和數據均用二進制代碼表示;
(4)指令由操作碼和地址碼組成;
(5)指令在存儲器內按順序存放;
(6)早期的馮諾依曼機以運算器為中心,輸入輸出設備通過運算器與存儲器傳送數據。
2.浮點數是如何存儲的
采用單精度類型(float)和雙精度類型(double)來存儲,float數據占用32bit,double數據占用64bit。
無論是單精度還是雙精度在存儲中都分為三個部分:
1、符號位(Sign) : 0代表正,1代表為負。
2、指數位(Exponent):用于存儲科學計數法中的指數數據,并且采用移位存儲。
3、尾數部分(Mantissa):尾數部分。
公式如下:
X = a * 2e
a為浮點數的二進制表示,范圍為[1,2) ;
e為小數點移動的位數;
對于float型數據,其長度是4個字節,右邊23位用來表示小數點后面的數字,中間8位用來表示e,左邊一位用來表示正負。
對于double型數據,其長度是8個字節,右邊52位用來表示小數點后面的數字.中間11位表示e,左邊一位用來表示正負。
3.高速緩存
高速緩沖存儲器是存在于主存與CPU之間的一級存儲器, 由靜態存儲芯片(SRAM)組成,容量比較小但速度比主存高得多, 接近于CPU的速度。在計算機存儲系統的層次結構中,是介于中央處理器和主存儲器之間的高速小容量存儲器。它和主存儲器一起構成一級的存儲器。高速緩沖存儲器和主存儲器之間信息的調度和傳送是由硬件自動進行的。
數據庫
1.什么是事務?事務的特征是什么?
所謂事務是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位。(例如,在關系數據庫中,一個事物可以是一條SQL語句、一組SQL語句或整個程序)
事務具有4個特征,原子性、一致性、隔離性和持續性,簡稱為ACID特征。
游標 存儲過程
2.文件
電腦上儲存數據的文件,是數據庫的物理體現。每個數據庫有一個主數據文件和若干個從文件。
3.數據挖掘的定義
數據挖掘是從大量數據中發現并提取隱藏在內的、人們事先不知道的但又可能有用的信息和知識的一種新技術。
目的是幫助決策者尋找數據間潛在的關聯,發現經營者忽略的要素。
4.查詢優化
查詢優化在關系數據庫系統中有著非常重要的地位,其優點不僅在于用戶不必考慮如何更好地表達查詢以獲得較高的效率,而且在于系統可以比用戶程序的“優化”做得更好。總目標是選擇有效的策略,求得給定關系表達式的值,使得查詢代價較小。
5.語義樹
利用語句中文字的特征碼,結合該文字前面的特征碼組建。主要技術為特征碼和鏈式存儲。
6.觸發器
觸發器是用戶定義在關系表上的一類由事件驅動的特殊過程。一旦定義,觸發器將被保存在數據庫服務器中。任何用戶對表的增、刪、改操作均由服務器自動激活相應的觸發器,在關系數據庫管理系統核心層進行集中的完整性控制。
7.范式
范式是符合某一種級別的關系模式的集合。關系數據庫中的關系必須滿足一定的要求,滿足不同程度要求的為不同范式。
8.什么是 5NF? 先答3NF,4NF,BCNF…
1NF:每個關系r的屬性值為不可分的原子值。
若關系模式R(U)中每個關系r的屬性值為不可分的原子值,則稱R(U)屬于第一范式。
2NF:滿足1NF,非主屬性完全函數依賴于候選鍵。
若關系模式R(U)滿足1NF,且U中的每一非主屬性完全函數依賴于候選鍵,則稱R(U)屬于第二范式。(候選鍵:能夠完全決定所有屬性的屬性或者屬性組。非主屬性:不包含在任何候選鍵中的屬性。完全函數依賴:如果x決定y,那么x的任何一個真子集x’都不能決定y)
3NF: 滿足2NF,消除非主屬性對候選鍵的傳遞依賴。
設關系模式R<U,F> ∈ 1NF,若R中不存在這樣的碼X,屬性組Y及非主屬性Z(Y?Z)使得X→Y,Y→Z成立,Y不能決定X,則稱R<U,F>∈3NF。(F是函數依賴的集合)
BCNF:滿足3NF,消除每一屬性對候選鍵的傳遞依賴。
關系模式R<U,F> ∈ 1NF,若X→Y且Y?X時X必含有候選鍵,則R<U,F> ∈ BCNF。(函數依賴一定依賴于候選鍵,X要包含候選鍵)
4NF:滿足BCNF,限制關系模式的屬性之間不允許有非平凡且非函數依賴的多值依賴(MVD)。
5NF: 如果關系模式R中的每一個連接依賴均由R的候選鍵所隱含,則稱此關系模式符合第五范式。(在4NF的基礎上,消除不是由候選碼所蘊含的連接依賴。)
9.sql語言
結構化查詢語言(Structured Query Language)是關系數據庫的標準語言,也是一個通用的、功能極強的關系數據庫語言。(其功能不僅僅是查詢, 而是包括數據庫模式創建、數據庫數據的插入與修改、數據庫安全性完整性定義與控制等一些列功能)
SQL功能:數據查詢、數據操縱、數據定義、數據控制。
SQL主要特點:綜合統一、高度費過程化、面向集合的操作方式、以同一種語法結構提供多種使用方式、語言簡潔,易學易用。
10.關系代數
關系代數是一種抽象的查詢語言,用對關系的運算來表達查詢。
關系代數的運算對象是關系,運算結果也是關系。用到的運算符包括兩類:集合運算符和專門的關系運算符,所以按照運算符的不同,主要將關系代數分為傳統的集合運算和專門的關系運算兩類。
11.數據模型三要素
數據結構、數據操作、數據約束。
最常用的數據模型是概念數據模型和結構數據模型。
軟件工程
1、軟件工程定義?目前有哪幾種主要的軟件工程方法?
(1)應用系統的,規范的,可量化的方法來開發、運行和維護軟件,即將工程應用到軟件。
(2)對上述各種方法的研究。
目前主要有:傳統方法(也稱為經典軟件工程方法或生命周期方法)和面向對象方法。
面向對象方法是一種把面向對象的思想應用于軟件開發過程中,指導開發活動的系統方法,簡稱OO,是建立在“對象”概念基礎上的方法學。
面向對象:對象+類+繼承+通信。如果一個軟件系統是使用這樣4個概念設計和實現的,那這個軟件系統是面向對象的。
2.簡述對象、類、消息、方法的基本概念。
對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位,由一組屬性和它可以執行的一組操作組成。
類是具有相同屬性和服務的一組對象的集合。對象的抽象是類,類的具體化就是對象。
消息是對象發出的服務請求。
3. 軟件
軟件是計算機系統中與硬件相互依存的部分,它是包括程序、數據及相關文檔的完整集合。
4.軟件工程中的需求
需求就是用戶的一種期望,軟件系統通過滿足用戶的期望來解決用戶的問題。
5.UML 里面有哪些圖?
用例圖、分析類圖、序列圖、狀態圖等
6.軟件設計的核心思想
抽象和分解
7.軟件設計
是關于軟件對象的設計,是一種設計活動,自然具有設計的普遍特性。
8.耦合與內聚
耦合描述的兩個模塊之間關系的復雜程度。
內聚表達的是一個模塊內部的聯系的緊密性。
9.三個特性
封裝
是把對象的屬性和服務結合成一個獨立的系統單位,并盡可能隱藏對象的內部細節。
繼承
繼承(Inheritance)是指子類可以自動擁有父類的全部屬性和服務。
多態性
多態性(Polymorphism)是指在父類中定義的屬性或服務被子類繼承后,可以具有不同的數據類型或表現出不同的行為。
10.需求分析的方法
結構化分析方法:適合于數據處理類型軟件的需求分析。 其要點是"自頂向下"地開發系統,由整體 到各組成部分,由抽象到具體。
包括:數據流圖、實體關系圖
面向對象分析方法:就是運用面向對象的方法進行需求分析的方法。
包括:用例圖 類圖 順序圖 狀態圖
11.MVC 模型-視圖-控制
以程序調用為連接件,將系統功能組織為模型、視圖和控制三個部件。
12.面向對象設計
根據已建立的分析模型,運用面向對象技術進行系統軟件設計。
13.面向對象編程
用一種面向對象的編程語言將面向對象設計模型中的各個成分編寫成程序。
14.統一建模語言UML
是一種通用可視化建模語言。
15.面向對象的五大基本原則:SPR, OCP, LSP, DIP, ISP
單一職責原則SRP(Single Responsibility Principle)是指一個類的功能要單一,不能包羅萬象。
開閉原則OCP(Open-Close Principle)一個模塊對擴展開放,對修改關閉。
里氏替換原則LSP(the Liskov Substitution Principle LSP)子類型必須能夠替換掉他們的父類型而起同樣的作用。
依賴倒置原則DIP(the Dependency Inversion Principle DIP)高層模塊不應該依賴于低層模塊,而是雙方都依賴于抽象。抽象不應該依賴于細節,細節應該依賴于抽象。
接口分離原則ISP(the Interface Segregation Principle ISP)將一個統一的接口匹配為多個更獨立的接口。
16.軟件測試的目標是什么,有哪幾種主要有測試方法?
以最少的時間和人力 系統地找出軟件中潛在的各種錯誤和缺陷。
黑盒測試VS白盒測試
黑:把測試對象看作一個黑盒子,完全基于輸入和輸出數據來判定測試對象的正確性。
白:將測試對象看做透明的,不關心測試對象的規格,而是按照測試對象內部的程序結構來設計測試用例進行測試工作。
17.什么是軟件維護?目標是什么,有哪幾種維護類型?
軟件維護是指在軟件交付之后修改軟件系統或其部件的活動過程,以修正缺陷,提高性能或其他屬性。
軟件維護的分類: 糾錯性維護、適應性維護、預防性維護和完善性維護。
軟件的生命周期
是軟件的產生直到報廢或停止使用的生命周期。
18.軟件工程模型
瀑布模型:將軟件生命周期中的各個活動規定為線性連接的模型,包括需求分析、設計、編碼、測試、運行與維護,由前至后、相互銜接的固定順序,如同瀑布流水逐級下落(以文檔作為驅動)。
優點:1)容易理解,管理成本低;
缺點:1)客戶必須能夠完整、正確和清晰地表達他們的需要;
增量模型:融合了瀑布模型的基本成分和原型實現的迭代特征,它假設可以將需求分段為一系列增量產品,每一增量可以分別開發。
演化模型:將軟件開發活動組織為多個迭代、并行的瀑布式開發活動。(典型的演化模型有原型模型和螺旋模型)
19.面向對象和面向過程軟件工程有哪些區別?
面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;
面向對象是把構成問題事物分解成各個對象,用對象的概念去描述事物在解決問題的步驟中的行為。
20.簡述面向對象分析設計的三個模型。
對象模型、動態模型、功能模型
21.軟件復用
軟件復用就是利用某些已開發的、對建立新系統有用的軟件元素來生成新的軟件系統。
22.用戶需求
用戶需求(user requirement)描述了用戶使用產品必須要完成的任務。
23.一些圖的概念
類圖
類圖描述系統的靜態結構,表示系統中的類以及類與類之間的關系。
對象圖
對象圖描述了一組對象以及它們之間的關系,表示類的對象實例。
狀態圖
狀態圖表示一個狀態機,強調對象行為的事件順序。
時序圖
時序圖表示一組對象之間的動態協作關系,反映對象之間發送消息的時間順序。
協作圖
協作圖表示一組對象之間的動態協作關系,反映收發消息的對象的結構組織。
活動圖
活動圖反映系統中從一個活動到另一個活動的流程,強調對象間的控制流程。
組件圖
組件圖描述組件以及它們之間的關系,表示系統的靜態實現視圖。
分布圖
分布圖反映了系統中軟件和硬件的物理架構,表示系統運行時的處理節點以及節點中組件的配置。
再次強調,這是根據歷年經常問到的問題并添加了一下我自己認為可能會問到的問題整理出來的,僅個人觀點,單單這些還不算夠,還需要更加充足的準備。
總結
以上是生活随笔為你收集整理的西北大学软工专硕专业课面试可能会问到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙OS真的是PPT吗?
- 下一篇: C语言第十三课,动态内存分配