2018浙江大華多媒體開發筆試題
1、Linux作業系統中的程序有7種狀態
1)R執行狀態:並不意味著程序一定在執行中,也可以在執行佇列裡。
2)S睡眠狀態:程序在等待事件完成。淺度睡眠,可以被喚醒
3)D磁碟睡眠狀態:不可中斷睡眠。深度睡眠,通常在磁碟寫入時發生
4)T停止狀態:可通過傳送SIGSTOP訊號給程序來停止程序,可以傳送SIGNOT訊號讓程序繼續執行
5)X死亡狀態:該狀態是返回狀態,在任務列表裡面看不到
6)Z殭屍狀態:子程序退出,父程序還在執行,但是父程序沒有讀到子程序的退出狀態,子程序進入殭屍狀態
7)T追蹤停止狀態
2、Linux程序地址空間
32位機器上Linux程序地址空間大小是4G,其中0-3G是使用者空間,3G-4G是核心空間。其實,這個4G地址空間是不存在的,也就是我們所說的虛擬記憶體空間。
程序使用虛擬記憶體中的地址,由作業系統協助相關硬體,把它轉換成真正的實體地址。虛擬地址通過頁表(page table)對映到實體記憶體。
3、USB2.0的最高傳輸速率
USB2.0除了擁有USB1.1中規定的1.5Mbps
和12Mbps兩個傳輸模式外,還增加了480Mbps高速資料傳輸模式(注:第二版USB2.0的傳輸速率將達800Mbps,最高理想值1600Mbps)。雖然USB2.0的傳輸速度大大提升了,但其工作原理和模式完全和USB1.1一模一樣,而提高到480Mbps的傳輸速度的最關鍵技術就是提高單位傳輸速率:USB1.1的單位資料傳輸時間是1ms,而USB2.0的單位資料傳輸時間達到了125微秒。
USB2.0 High Speed:理論速度是480Mbps,對應之前的USB2.0
USB2.0 Full Speed:理論速度是12Mbps,也就是過去的USB1.1
4、系統感知程序的唯一實體是:
A.JCB
B.FCB
C.PCB
D.SJT
C.程序控制塊PCB是作業系統用來記錄程序詳細狀態相關資訊的基本資料結構,它和程序一一對應,是程序的唯一標識。
程序控制塊記錄了程序的標識資訊/狀態資訊/控制資訊。
1)標識資訊:唯一標識一個程序
2)狀態資訊:記錄程序使用處理器時的各種現場資訊,主要有CPU通用暫存器的內容,CPU狀態暫存器的內容及棧指標
3)控制資訊:作業系統對程序進行排程管理時用到的資訊。
5、為了確保每個開發過程的質量,防止把軟體差錯傳遞到下一個過程,必須進行()
A.質量檢驗
B.軟體容錯
C.軟體維護
D.系統容錯
A
6、實現二分查詢(折半查詢)時,要求查詢表()
A.順序儲存,關鍵碼無序排列
B.順序儲存,關鍵碼有序排列
C.雙向連結串列儲存,關鍵碼無序排列
D.雙向連結串列儲存,關鍵碼有序排列
B.
7、volatile變數宣告的用處
對於volatile型別的變數,系統每次用到他的時候都是直接從對應的記憶體中提取,而不會利用cache當中的原有數值,以適應它的未知何時會發生的變化,系統對這種變數的處理不會做優化——顯然也是因為它的數值隨時都可能變化的情況。
如果將變數加上volatile修飾,則編譯器保證對此變數的讀寫操作都不會被優化(肯定執行)。
8、關於類的靜態資料成員
A.類的靜態方法只能訪問該類的靜態資料成員
B.靜態資料成員可被該類的所有方法訪問
C.該類的物件共享其靜態資料成員的值
D.該類的靜態資料成員的值不可被修改
D.不正確。其餘選項都正確。在面向物件開發方法中,靜態成員的含義是所修飾的成員是屬於類的,而不是屬於某物件。靜態資料成員對該類只有一份,該類的所有物件共享靜態資料成員,可被該類的所有方法訪問,其值可以改變,但是不論是通過物件還是類對靜態資料成員值的修改,都會反應到整個類。類的靜態方法只能訪問該類的靜態資料成員。
9、在e-r模型中,包含以下基本成分:
A.資料、物件、實體
B.控制、聯絡、物件
C.實體、聯絡、屬性
D.實體、資料、聯絡
C.實體-聯絡(E-R模型)模型是由R.P.Chen於1976年首先提出的。它提供下受任何DBMS約束的面向使用者的表達方法,在資料庫設計中被廣泛應用於資料建模的工具。E-R模型的構成成分是實體集(物件)、屬性和聯絡集。
10、在作業系統中,P、V操作是一種()
A.機器指令
B.系統呼叫命令
C.作業控制命令
D.低階程序通訊原語
D.P、V操作一定是原語,並且程序間的互斥與同步,由於其所交換的資訊量少而歸結為低階通訊。
11、IP資料報頭採用()位元組序,在此位元組序下從地地址到高地址0x1234的表示形式為()
A.big_endian,0x12 0x34 0 0
B.little_endian,0x34 0x12 0 0
C.big_endian,0 0 0x12 0x34
D.little_endian,0 0 0x34 0x12
big_endian,是指低地址存放最高有效位元組(MSB),little_endian,是指低地址存放最低有效位元組(LSB)。
數字0x12345678在兩種不同的位元組序CPU中的儲存順序如下所示:
big_endian
低地址 高地址
12 34 56 78
little_endian
低地址 高地址
78 56 34 12
12、CPU採用哈佛結構時,cache採用形式是()
獨立的指令cache和資料cache。
目的是減少指令流水線資源衝突,就是指令流水線不會斷流,預取過來的都是指令。
哈佛結構和馮諾伊曼結構都是一種儲存器結構。哈佛結構是指將指令儲存器和資料儲存器分開的一種儲存器結構;而馮諾伊曼結構是指將指令儲存器和資料儲存器合在一起的儲存器結構。
最大區別是馮諾伊曼結構的計算機採用程式碼與資料的統一編址,而哈佛結構是獨立編址的,程式碼空間和資料空間完全分開。
與馮諾伊曼結構處理器比較,哈佛結構處理器有兩個明顯的特點:
1)使用兩個獨立的儲存器模組,分別儲存指令和資料,每個儲存模組都不允許指令和資料並存;
2)使用獨立的兩條匯流排,分別作為CPU與每個儲存器之間的專用通訊路徑,而這兩條匯流排之間毫無關聯。
13、malloc/free 與new/delete異同點
相同點:
malloc/free 與 new/delete都可以用於申請動態記憶體和釋放記憶體,他們申請的空間都分配在堆上。
不同點:
1)操作物件不同。malloc/free是C/C++語言的標準庫檔案,new/delete是C++的運算子
對非內部資料物件,malloc/free無法滿足動態物件要求。物件在建立時要自動執行建構函式,物件消亡之前要自動執行解構函式,而malloc/free是庫函式不是運算子,不在編譯器控制權限之內,不能將執行建構函式、解構函式強加於malloc/free身上。而由於new/delete是運算子,能夠完成動態記憶體分配和初始化工作,即能夠自動執行建構函式和解構函式。
2)用法不同。malloc分配記憶體空間前需要計算分配的記憶體大小;而new能夠自動分配記憶體空間。
malloc是底層函式,其函式返回值型別為void*;而new運算子呼叫無參建構函式,故返回值為對應物件的指標。
malloc函式型別不是安全的,編譯器不對其進行型別轉換、型別安全的相關檢查。malloc申請空間後,不會對其進行初始化,要單獨初始化;而new型別是安全的,因為它內建了sizeof、型別轉換和型別安全檢查功能,且在建立物件時,就能完成初始化工作,一般初始化呼叫無參建構函式。
free只進行釋放空間;而delete則釋放空間的同時呼叫解構函式。此外,delete使用時注意釋放陣列的方法為delete []陣列名。
14、記憶體碎片產生的原因及處理方法
malloc/free大量使用後會造成記憶體碎片。記憶體碎片一般是由於空閒的連續空間比要申請的空間小,導致這些小記憶體塊不能被利用.產生記憶體碎片的方法很簡單,舉個例:
假設有一塊一共有100個單位的連續空閒記憶體空間,範圍是099.如果你從中申請一塊記憶體,如10個單位,那麼申請出來的記憶體塊就為09區間.這時繼續申請一塊記憶體,比如說5個單位大,第二塊得到的記憶體塊就應該為1014區間.如果把第一塊記憶體塊釋放,然後再申請一塊大於10個單位的記憶體塊,比如說20個單位.因為剛被釋放的記憶體塊不能滿足新的請求,所以只能從15開始分配出20個單位的記憶體塊.現在整個記憶體空間的狀態是09空閒,1014被佔用,1524被佔用,2599空閒。其中09就是一個記憶體碎片了.如果1014一直被佔用,而以後申請的空間都大於10個單位,那麼09就永遠用不上了,造成記憶體浪費.
new/delete也會產生記憶體碎片。參考:http://blog.51cto.com/12158490/2057439
15、fork()函式返回次數
fork是實現程序的關鍵函式之一,很多書上這樣描述:fork函式呼叫一次,返回兩次:父程序呼叫一次fork,子程序和父程序各返回一次,其中子程序返回0,父程序返回子程序pid(非0)。可以以此來判斷fork返回後當前是在子程序裡還是在父程序裡。
準確的說法,應該是“父程序呼叫一次->父程序返回一次,子程序返回一次”,在各自的程序中,其實都是像普通函式那樣返回而已。
16、隨機數轉換器
https://www.cnblogs.com/youxin/p/3351213.html
17、關於sizeof
https://blog.csdn.net/oktears/article/details/19352577
18、判斷兩個IP是否屬於同一子網
子網掩碼是用來判斷任意兩臺計算機的IP地址是否屬於同一子網路的根據。
子網掩碼與IP地址結構相同,是32位二進位制數,其中網路號部分全為“1”和主機號部分全為“0”。利用子網掩碼可以判斷兩臺主機是否中同一子網中。若兩臺主機的IP地址分別與它們的子網掩碼相“與”後的結果相同,則說明這兩臺主機在同一子網中。
1)
I P 地址 192.168.0.1
子網掩碼 255.255.255.0
或者可以這樣表示 192.168.0.1/24
/24表示前3段屬於網路號部分
轉化為二進位制進行運算:
I P 地址 11010000.10101000.00000000.00000001
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進位制後為:
192.168.0.0
2)
I P 地址 192.168.0.254
子網掩碼 255.255.255.0
或者可以這樣表示 192.168.0.254/24
轉化為二進位制進行運算:
I P 地址 11010000.10101000.00000000.11111110
子網掩碼 11111111.11111111.11111111.00000000
AND運算
11000000.10101000.00000000.00000000
轉化為十進位制後為:
192.168.0.0
通過以上對兩臺計算機IP地址與子網掩碼的AND運算後,我們可以看到它運算結果是一樣的。均為192.168.0.0,所以這二臺計算機可視為是同一子網路。
19、x=x&(x-1)實現的功能是統計x中二進位制中bit 1的個數
20、虛擬記憶體的好處及多級分頁機制的原因
21、#ifndef #define #endif作用
22、圖的DFS與BFS的複雜度分析
23、os的特徵:併發性、共享性、虛擬性、非同步性。最基本的特徵是併發性和共享性。
24、TCP 與 UDP的特點
25、假定有4個整數用8位補碼分別表示r1=FEH r2=F2H r3=90H r4=F8H,若將運算結果存放在一個8位暫存器中,則下列運算會發生溢位的是()
A.r1xr2
B.r2xr3
C.r1xr4
D.r2xr4
B.定點數運算。用補碼錶示時8位暫存器所能表示的整數範圍為-128~+127
r1=(15x16+14)-256=-2
r2=(15x16+2)-256=-14
r1=(9x16+0)-256=-112
r1=(15x16+8)-256=-8
則r1xr2=28 r2xr3=1568 r1xr4=16 r2xr4=112只有r2xr3結果溢位
26、一個8位二進位制整數,若採用補碼錶示,且由4個1和4個0組成,則最小值為()
A.-120
B.-7
C.-112
D.-121
D.補碼負數的特點是數值位對應的真值越小,其絕對值越大,即負的越多。所以由4個1和4個0組成的補碼數中,最小的補碼錶示為10000111,即真值為-121