寫在前面
本人參加20考研,由于復試沒有具體要求會問哪幾門課,所以我就找了網上一些常見的計算機專業的面試題,整理如下
主要結構:
數據庫 1、數據:數據庫中存儲的基本對象。
數據庫:長期存儲在計算機內的、有組織的、可共享的數據集合。
數據庫管理系統:專門用于建立和管理數據庫的一套軟件。對外部程序提供訪問數據庫的方法,對內進行數據管理。
數據庫系統:與和數據庫相關的整個系統,一般由數據庫、數據庫管理系統、應用程序、數據庫管理員和用戶組成。
2、觸發器的作用?
答:主要是通過事件來觸發而被執行的。可以強化約束,來維護數據的完整性和一致性,可以跟蹤數據庫內的操作從而不允許未經許可的更新和變化。
3、什么是存儲過程?用什么來調用?
答:存儲過程是一組SQL語句,優點是允許模塊化的設計,可以程序中就可以調用多次。而且存儲過程只編譯一次,如果某次操作需要執行多次SQL,使用存儲過程比單純SQL語句執行要快。
可以用一個命令對象來調用存儲過程。
4、索引的作用?和它的優點缺點是什么?
答:索引就一種特殊的查詢表,索引指定列的數據用某種數據結構進行排序。例如B+樹
優點:加快數據庫的檢索速度。
缺點:需要額外的空間,且插入刪除需要額外的時間
MySQL數據庫幾個基本的索引類型:
1、普通索引:沒有任何限制
2、唯一索引:索引列的值必須唯一數據字典的主要內容包括,但允許有空值。如果是組合索引,則列值的組合必須唯一。
3、主鍵索引:不允許有空值
4、全文索引:進行模糊查詢
5、什么是事務?什么是鎖?
答:事務一組sql語句,邏輯上構成一個整體。如果任何一個語句操作失敗那么整個操作就被失敗,以后操作就會回滾到操作前狀態,也就是說要么全部執行,要么全部不執行。
鎖:鎖可以保證事務的完整性和并發性。在某段時間內不能使用某些數據或數據結構。
共享(S)鎖:多個事務可封鎖一個共享頁;任何事務都不能修改該頁;通常是該頁被讀取完畢,S鎖立即被釋放。
排它(X)鎖:僅允許一個事務封鎖此頁;其他任何事務必須等到X鎖被釋放才能對該頁進行訪問;X鎖一直到事務結束才能被釋放。
更新(U)鎖:用來預定要對此頁施加X鎖,它允許其他事務讀,但不允許再施加U鎖或X鎖;當被讀取的頁將要被更新時,則升級為X鎖;U鎖一直到事務結束時才能被釋放。
6、數據庫的樂觀鎖和悲觀鎖是什么?
樂觀鎖:假設不會發生并發沖突數據字典的主要內容包括,只在提交操作時檢查是否違反數據完整性。
悲觀鎖:假定會發生并發沖突,屏蔽一切可能違反數據完整性的操作
7、什么叫視圖?游標是什么?
答:視圖是一種虛擬的表,只能進行查詢和修改操作。只存儲了原表的結構而不存儲數據。對視圖的修改不影響基本表。
優點:簡化操作,安全性,可將重要的信息不加入視圖
缺點:對視圖的操作還是建立在原表上的,性能較差
8、DBMS是什么
數據庫管理系統是管理數據庫的軟件(Mysql,)。用戶就可以在抽象意義下處理數據,而不必顧及這些數據在計算機中的布局和物理位置。
9、數據庫的三級模式
外模式 概念模式 內模式
1)外模式:以視圖的形式展現給用戶的。
2)概念模式:整個數據庫中的邏輯結構,用來描述實體,以及它們之間的關系。
3)內模式:數據庫的物理結構
10、范式是什么,內容有那些
在設計數據庫時,為了使其冗余較小、結構合理,設計數據庫時必須遵循一定的規則。在關系型數據庫中,這種規則被稱為范數。范數是符合某一設計規則的總結。
第一范式(1NF)數據庫表中的所有字段值都是不可分割的原子值
第二范式(2NF)數據庫表中的每一列都與主鍵完全相關,而不能只與主鍵的部分相關。
第三范式(3NF)數據庫表中的每一列和主鍵直接相關,而不是間接相關。
11、超鍵、候選鍵分別是什么?
超鍵:在關系中能唯一標識元組的屬性集稱為關系模式的超鍵。
候選鍵:是最小超鍵,即沒有冗余元素的超鍵。
12、數據庫四大特性?
原子性:事務被視為不可分割的最小單元,事務的所有操作要么全部提交成功,要么全部失敗回滾。
一致性:數據庫在事務執行前后都保持一致性狀態。
隔離性:一個事務所做的修改在最終提交以前,對其它事務是不可見的。
持久性:一旦事務提交,則其所做的修改將會永遠保存到數據庫中。
13、數據庫與文件系統的比較?
相同:都是用來存儲和訪問數據的
不同點:1.管理對象不同:數據庫管理的是數據,而文件系統管理的是文件;2.存儲數據方式不同:數據庫有統一的存儲方式,而文件系統有多種方式
文件系統存儲方式以及格式更加自由,數據庫更加規范,共享性較好
14、數據模型?
層次數據模型:利用樹來組織數據
網狀數據模型:利用圖來組織數據
關系數據模型:使用二維表格來存儲數據
15、完整性約束
實體完整性約束:主鍵字段不能為空且不能重復;
參照完整性:相關聯的表的數據一致性;
用戶定義的完整性約束
16、主鍵和外鍵的區別?
主鍵在本表中是唯一的、不可為空的,外鍵可以重復可以為空
17、幾種表連接方式,有什么區別?
內連接是保證兩個表中所有的行都要滿足連接條件(類似與交集)
在外連接中,只限制其中一個表的行,而不限制另一個表的行。分左連接、右連接、全連接三種
18、mysql和的區別?
1、對事務的提交:MySQL默認是自動提交,而默認不自動提交,需要用戶手動提交, 2、MySQL是輕量型數據庫,并且免費;是重量型數據庫,收費
19、觸發器的觸發類型?
行級觸發器:相應的語句有影響到幾行記錄,就執行幾次觸發器
語句級觸發器:只會在相應的語句執行前或者是執行之后執行一次
20、如何優化MySQL?
MySQL的優化主要涉及SQL語句及索引的優化、數據表結構的優化、系統配置的優化和硬件的優化四個方面
21、Mysql存儲引擎?
、、、
只有支持事務,其他都不支持;只有支持外鍵,其他都不支持
1、如果要提供提交、回滾和恢復的事務安全(ACID 兼容)能力,并要求實現并發控制,是一個很好的選擇。
2、如果數據表主要用來插入和查詢記錄,則 引擎提供較高的處理效率。
3、如果只是臨時存放數據,數據量不大,并且不需要較高的數據安全性,可以選擇將數據保存在內存的 引擎中,MySQL 中使用該引擎作為臨時表,存放查詢的中間結果。
4、如果只有 和 操作,可以選擇 引擎, 存儲引擎支持高并發的插入操作,但是本身并不是事務安全的。 存儲引擎非常適合存儲歸檔數據,如記錄日志信息可以使用 引擎。
22、nosql數據庫的特點
特點:
1、數據之間無關系,這樣就非常容易擴展
2、大數據量,高性能
3、NoSQL無須事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式
23、nosql和sql的比較?
1、存儲方式:sql的存儲方式是表格型的,nosql比較多
2、存儲結構:sql是結構化數據,nosql是非結構化數據
3、存儲規范
4、查詢方式:sql的查詢方式使用sql語言,nosql查詢是以每個數據塊為單位的
5、nosql對事務的處理不是很好
6、nosql支持的數據量比較大
7、nosql的性能比較強
軟件工程 1、軟件重用
指的是利用已經存在的軟件元素建立新的軟件系統,這其中的軟件元素既可以是軟件產品、源程序,也可以是文檔、設計思想甚至是領域知識
2、什么是軟件工程?
軟件工程是指導軟件開發和維護的工程學科。是采用工程的概念、原理、技術和方法來開發與維護軟件。
3、數據流圖的作用是什么?它有哪些基本成分?
數據流圖是用于描繪信息流和數據從輸入移動到輸出的過程中所經受的變換
4、可行性研究主要研究什么問題?
技術可行性、經濟可行性、操作可行性。
5、數據流圖和數據字典
數據流圖:描繪數據在軟件中流動和被處理的邏輯過程。
數據字典:關于數據的信息的集合,也就是對數據流圖中所包含的所有元素的定義的集合,其目的是對數據流圖中的各個元素做出詳細的說明。
6、軟件工程的三要素
方法(開發方法)、工具(支持方法的工具)、過程(管理過程)。
7、軟件工程開發模型
1、瀑布模型:明確規定每個階段的任務
2、快速原型模型:不帶反饋環的,使得采用這種模型的軟件產品的開發基本上是線性順序的
3、漸增模型:從部分需求出發,先建立一個不全面的系統,通過測試這個系統,進一步是系統擴充和完善
4、螺旋模型:
5、噴泉模型:從軟件需求的形式規格說明出發,經過一系列的程序變化,得到最終結果
8、MVC模式:
Model(模型)是應用程序中用于處理應用程序數據邏輯的部分。
View(視圖)是應用程序中處理數據顯示的部分。
(控制器)是應用程序中處理用戶交互的部分。
9、常見的設計模式:
單例模式、工廠模式、適配器模式、觀察者模式
10、軟件工程步驟:問題的定義及規劃、需求分析、概要設計、詳細設計、編碼、測試、驗收、維護 11、軟件測試類型:
白盒測試:了解程序內部的設計結構及具體的代碼實現過程
黑盒測試:黑盒測試時是不考慮程序內部的結構和處理過程,只根據軟件說明書來檢查是否符合預期的功能要求
α測試:模擬各類用戶對即將面市軟件產品(稱為α版本)進行測試(軟件還未面世)
β測試:用戶在不同場所進行測試(軟件已經面試,用戶已在使用,當有錯誤時自定提交錯誤報告)
12、瀑布模型:將軟件生存周期的各項活動按順序進行連接。是將上一項活動的輸出作為該項活動的輸入。
優點:
1、有按階段劃分的檢查點
2、只需關注后續的階段
3、可在迭代模型中應用瀑布模型。
缺點:
1、各個階段的劃分完全固定,階段之間產生大量的文檔,極大地增加了工作量。
2、因為開發模型是線性的,用戶只有在最后才能見到成果,開發風險比較大
3、很難適應用戶需求的變化。
4、早期的錯誤可能要等到開發后期的測試階段才能發現,進而帶來嚴重的后果。
13、單例模式介紹?
1、單例類只能有一個實例。
2、單例類必須自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。
優點:
1、提供了對唯一實例的受控訪問。
2、由于在系統內存中只存在一個對象,因此可以節約系統資源。
3、允許可變數目的實例。
缺點:
1、單例類的擴展有很大的困難。
操作系統: 1、進程與線程的概念以及區別?進程的組成?
線程:可以理解為輕量級進程,是進程的一個實體
2、進程和程序的區別? 3、中斷和輪詢的特點 4、什么是臨界區?如何解決沖突?(也就是臨界區的調度原則)
臨界區:進程中訪問資源的那段代碼
臨界資源:允許多個進程訪問,但是一次只能允許一個進程訪問
5、分段和分頁?
地址空間維度:
用戶:
大小:
功能:
6、保持進程同步的方法?
信號量機制、管程、原子操作
7、什么是中斷?中斷時CPU在做什么? 8、操作系統主要功能? 9、什么是虛擬內存?
將程序的一部分裝入內存,其余部分留在外存,當程序所需要的信息不在內存時,系統將外存的信息調入內存繼續執行,好像為用戶提供了一個比實際大得多的內存。
10、線程是否具有相同的堆棧? 11、什么是緩沖區溢出?有什么危害? 12、什么是死鎖?死鎖的條件?怎么避免死鎖? 13、死鎖和饑餓的區別? 14、進程同步遵循的機制? 15、進程間的通信方法? 16、進程同步與互斥的區別?
同步:直接制約關系,是由于協調進程之間的工作次序而產生的制約關系
互斥:間接制約關系,協調對互斥資源的訪問產生的制約關系
17、進程調度算法
先來先調度算法、短作業優先、優先級調度、高響應比優先、時間片輪轉、多級反饋隊列
18、操作系統的四個特征 19、根據操作系統內核是否對線程感知,分為用戶級線程和內核級線程 20、進程的狀態以及之間的轉換? 21、用戶態和核心態的區別?
處于用戶態執行時,進程所能訪問的內存空間和對象受到限制,其所處于占有的處理機是可被搶占的 ;
而處于核心態執行中的進程,則能訪問所有的內存空間和對象,且所占有的處理機是不允許被搶占的。
22、用戶態進管方式?
系統調用、中斷、異常
23、頁面置換算法?
OPT(最佳置換算法)、FIFO、LRU、CLOCK
24、局部性原理 25、解決死鎖的基本方法如下:
預防死鎖、避免死鎖、檢測死鎖、解除死鎖
26、產生死鎖的原因?
系統資源競爭、進程推進順序非法
27、解決死鎖的基本辦法?
1、預防死鎖:
資源一次性分配(破壞請求和保持條件)
可剝奪資源,即新的資源未滿足時,釋放已有的資源(破壞不可剝奪條件)
資源有序分配法(破壞循環等待條件)
2、避免死鎖:
安全性檢查
3、解除死鎖
資源剝奪法
撤銷進程法
進程回退法
28、抖動 29、文件的邏輯結構有哪些?
1、無結構文件
2、有結構文件
順序文件
索引文件
索引順序文件
散列文件
30、文件共享方式?他們的區別?
硬軟件:新增一個指針指向源文件,會產生空指針的可能,但是速度較快
軟連接:創建一個文件用來存儲到源文件的路徑,沒有空指針,但是速度較慢,而且還要浪費一定的空間
31、文件系統層次結構?
用戶調用接口
文件目錄系統
存取控制驗證
邏輯文件系統
物理文件系統
進行輔存和設備的管理
32、文件物理分配方式
連續分配、隱示鏈接分配、顯示鏈接分配、索引分配
33、空閑塊分配?
空閑表法、空閑鏈表法、位示圖法、成組鏈接法
34、磁盤調度算法?
先來先服務、最短尋道時間、掃描算法、循環掃描算法
35、I/O控制方式?
程序直接控制、中斷驅動、DMA、通道
36、I/O子系統的層次結構
用戶層I/O軟件、設備獨立性軟件、設備驅動程序、中斷處理程序、硬件設備
37、緩存與緩沖的區別 38、管程?
組成:
1、局部與管程的共享結構數據說明
2、對該數據結構進行操作的一組過程
3、對局部與管程的共享數據設置初始值的語句
特性:
1、管程內的數據只能被管程內的過程訪問
2、一個進程只能通過調用管程內的過程才能訪問數據
3、每次僅允許一個進程進入管程
計算機組成原理 1、馮諾依曼體系及特點? 2、計算機層次結構? 3、計算機系統有哪兩部分組成?
硬件、軟件
4、編譯和解釋的區別
編譯是現對源文件進行處理,生成一個目標文件,然后執行目標文件
解釋是一遍邊處理源文件,邊執行
5、存儲器的最大容量由什么決定?
MAR的位數(尋址范圍)
6、機器字長、存儲字長、指令字長 7、系統總線按照傳輸信息的不同分為哪幾類?
地址總線:單向
數據總線:雙向
控制總線:雙向
8、按存取方式,存儲器的分類
隨機存取:隨機存儲區、只讀存儲器
串行訪問:順序存儲器、直接存儲器
9、存儲系統的層次結構:
主存-輔存、主存-cache
10、什么是DMA、與中斷方式的主要區別?
1、占用CPU
2、響應時間
3、傳送過程的CPU
4、優先級
5、異常
11、總線的基本特征?
分時:同一時刻,總線上只能傳輸一個部件發送的信息;
共享:多個部件連接在同一組總線上,各個部件之間都通過該總線進行數據交換。
12、集中式總線判優控制?
鏈式查詢、計時器定時查詢、獨立請求
13、同步通信和異步通信的區別 14、流水線基本原理?
將一個重復的過程分解成若干子過程,每個子過程與其他子過程并行處理
16、控制單元的設計方式? 17、浮點數的加減運算步驟?
對階、尾數相加、規格化、舍入、溢出判斷
18、主存容量的擴展?
位擴展、字擴展、字位同時擴展
19、Cache工作的基本原理? 20、邏輯地址與物理地址?
應用程序角度可以看到的地址,用戶編程允許涉及的地址
實際的主存單元地址稱為物理地址
21、虛擬存儲器與Cache比較
相同:都將數據進行劃分、都應用到了局部性原理、都存在地址的映射和替換算法
不同:Cache解決系統速度;而虛存解決主存容量
Cache全由硬件實現,對全部程序員透明;而虛存由OS和硬件共同實現,只對系統程序員不透明,對應用程序員透明
虛存不命中時對系統影響更大
22、指令系統的類別,以及各自的特點?
CISC:
RISC:
23、指令周期? 24、硬布線控制器和微程序控制器的基本概念?及其特點
硬布線控制器由組合邏輯電路根據當前的指令碼、狀態和時序,即時產生。優點在于速度取決于電路延遲,因此速度快,缺點是很難進行修改。
微程序控制器采用存儲邏輯,將每條機器指令轉換成一段微程序并存入控制存儲器。具有規整性、靈活性、可維護性,缺點是每條指令都要從控制存儲器中取,速度較慢。
25、影響流水線的因素?
結構相關、數據相關、控制相關
26、流水線的性能指標
吞吐率、加速比、效率
27、程序中斷的作用?
1、實現CPU和I/O的并行工作
2、處理異常
3、實現人機交互
28、中斷處理過程 29、程序中斷和子程序調用的區別 ?
1、子程序調用的時間是已知的;中斷的時間是隨機的
2、子程序完全為主程序服務,屬于主從關系;而中斷服務程序一般與主程序無關,二者為平行關系
3、主程序調用子程序完全屬于軟件處理過程;而中斷需要硬件配合
30、什么是存取時間?什么是存取周期?哪個大?
存取時間是一次內存寫入(讀出)數據所需要的所有時間
存取周期是存儲器進行連續兩次獨專立的讀(寫)操作所需要的最小時間間隔
通常存取屬周期大于存取時間
31、當使用寄存器代替指令字中的地址碼字段后,有哪些優點?
(1)減少訪存次數
(2)提高尋址范圍
32、數據在存儲器中存儲時,為什么要按照邊界對齊?
為了減少訪存次數
33、隨機存儲器包含哪兩大類?
1、靜態SRAM:采用鎖存器原理實現;
2、動態DRAM:采用電容原理實現,需要刷新。
34、x86采用的是哪種存儲方式?
采用的是小端方式。
35、原碼、反碼、補碼
原碼:用最高位表示符號位,其他位存放該數的二進制的絕對值。
反碼:為了解決原碼做減法的問題,反碼的思想是想把兩數相減變為一個數加上另一個數的相反數,所以負數的反碼就是他的原碼除符號位外,按位取反。但是這樣子兩個負數相加就有問題
補碼:為了解決原碼做減法的問題,補碼的思想是將兩數相減變為一個數加上另一個數的同余數
計算機網絡 1、為何有MAC地址還要IP地址?
在一個網絡中只要MAC地址就行,但是在不同網絡中,必須要IP地址
IP地址本質上是終點地址,它在跳過路由器(hop)的時候不會改變,而MAC地址則是下一跳的地址,每跳過一次路由器都會改變。這就是為什么還要用MAC地址的原因之一,它起到了記錄下一跳的信息的作用。
2、播放視頻用TCP還是UDP?
視頻網站:TCP
實時視頻:UDP