華爲面試題目解答

1. 什麼是UML?分哪兩類?
統一建模語言(UML是 Unified Modeling Language的縮寫)是用來對軟件密集系統

進行可視化建模的一種語言。UML爲面向對象開發系統的產品進行說明、可視化、和

編制文檔的一種標準語言。
UML圖分爲兩類:

靜態圖:是描述對象之間可能存在的關係的種類,以及作爲結果的對象網絡可以具

有的可能的拓樸結構。

動態圖:是描述可以在對象之間傳遞的消息以及該消息對接收消息的對象的影響
2. OS一般的兩種進程調度策略
搶佔式和非搶佔式
3 進程間的四種通訊方式:
1>管道,FIFO
    管道(Pipe)是一種具有兩個端點的通信通道:有一端句柄的進程可以和有另一

端句柄的進程通信。管道可以是單向-一端是隻讀的,另一端點是隻寫的;也可以

是雙向的一管道的兩端點既可讀也可寫。
  匿名管道(Anonymous Pipe)是 在父進程和子進程之間,或同一父進程的兩個子

進程之間傳輸數據的無名字的單向管道。通常由父進程創建管道,然後由要通信的

子進程繼承通道的讀端點句柄或寫 端點句柄,然後實現通信。父進程還可以建立兩

個或更多個繼承匿名管道讀和寫句柄的子進程。這些子進程可以使用管道直接通信

,不需要通過父進程。
  匿名管道是單機上實現子進程標準I/O重定向的有效方法,它不能在網上使用,

也不能用於兩個不相關的進程之間
     命名管道(Named Pipe)是服務器進程和一個或多個客戶進程之間通信的單向或

雙向管道。不同於匿名管道的是命名管道可以在不相關的進程之間和不同計算機之

間使用,服務器建立命名管道時給它指定一個名字,任何進程都可以通過該名字打

開管道的另一端,根據給定的權限和服務器進程通信。
  命名管道提供了相對簡單的編程接口,使通過網絡傳輸數據並不比同一計算機

上兩進程之間通信更困難,不過如果要同時和多個進程通信它就力不從心了。
    管道 和 FIFO 是一樣的,只是匿名管道需要在 父子進程間使用,FIFO是增強

型的管道,適合傳遞較小的消息,FIFO實際相當於內核內部實現的一個共享文件。
2>信號
    信號是比較複雜的通信方式,用於通知接受進程有某種事件發生,除了用於進

程間通信外,進程還可以發送信號給進程本身。除了系統內核和root之外,只有具

備相同uid、gid的進程纔可以使用信號進行通信。
    /etc/passwd:uid與賬號對應
    /etc/group:gid與羣組對應
3> 消息隊列
   消息隊列是消息的鏈接表,包括Posix消息隊列system V消息隊列。有足夠權限

的進程可以向隊列中添加消息,被賦予讀權限的進程則可以讀走隊列中的消息。消

息隊列克服了信號承載信息量少,管道只能承載無格式字節流以及緩衝區大小受限

等缺。

4> 共享內存
    使得多個進程可以訪問同一塊內存空間,是最快的可用IPC形式。是針對其他通

信機制運行效率較低而設計的。往往與其它通信機制,如信號量結合使用,來達到

進程間的同步及互斥。

傳遞文件最好是用共享內存的方式,MAP_SHARED可以提供多進程共享一個文件的能

力。
管道 和 FIFO 是一樣的,只是匿名管道需要在 父子進程間使用,FIFO是增強型的

管道,適合傳遞較小的消息,FIFO實際相當於內核內部實現的一個共享文件。
信號,嚴重的不建議使用,尤其是你的線程庫不能做到異步安全的時候,使用信號

作爲通信方式很容易導致系統死鎖。
消息隊列 與 FIFO 相似,是在FIFO的基礎上封裝的一個消息結構隊列。

建議使用 FIFO 或消息隊列傳遞控制類型的消息(數據量小,有明確的數據結構)
使用共享內存傳遞數據類型的消息(數據量大,數據結構多變)

 4 通常遞歸所採用的數據結構?遞歸和循環的區別?
  棧。
  1 遞歸算法與循環算法的設計思路區別在於:函數或算法是否具備收斂性,當且

僅當一個算法存在預期的收斂效果時,採用遞歸算法纔是可行的,否則,就不能使

用遞歸算法。
  2 遞歸其實是方便了程序員難爲了機器。優點就是易理解,容易編程。但遞歸是

用棧機制實現的,每深入一層,都要佔去一塊棧數據區域,對嵌套層數深的一些算

法,遞歸會力不從心,空間上會以內存崩潰而告終,而且遞歸也帶來了大量的函數

調用,這也有許多額外的時間開銷。所以在深度大時,它的時空性就不好了。
    循環其缺點就是不容易理解,編寫複雜問題時困難。優點是效率高。運行時間

只因循環次數增加而增加,沒什麼額外開銷。空間上沒有什麼增加。
    局部變量佔用的內存是一次性的,也就是O(1)的空間複雜度,而對於遞歸(不

考慮尾遞歸優化的情況),每次函數調用都要壓棧,那麼空間複雜度是O(n),和遞

歸次數呈線性關係。
  3 遞歸程序改用循環實現的話,一般都是要自己維護一個棧的,以便狀態的回溯


    原理上講,所有遞歸都是可以消除的,代價就是可能自己要維護一個棧。而且

我個人認爲,很多情況下用遞歸還是必要的,它往往能把複雜問題分解成更爲簡單

的步驟,而且很能反映問題的本質。
 5 將一個單鏈表逆序。

 6. A,B,C,D四個進程,A向一個緩衝區寫數據,B,C,D從該緩衝區讀數據,A要等到

B,C,D都已經讀好才能寫下一個。用p,v操作實現通訊。
 
7 中斷優先級排序
8 補碼:寫出0,-1,-5的二進制補碼
  在計算機系統中,數值一律用補碼來表示(存儲)。
  主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法

來處理。另外,兩個用補碼錶示的數相加時,如果最高位(符號位)有進位,則進

位被捨棄。
  2、補碼與原碼的轉換過程幾乎是相同的。
  求給定數值的補碼錶示分以下兩種情況:
  (1)正數的補碼:與原碼相同。
  【例1】+9的補碼是00001001。
  (2)負數的補碼:符號位爲1,其餘位爲該數絕對值的原碼按位取反;然後整個

數加1
答題:0的補碼是00000000
-1的補碼是11111111
-5的補碼是10000110
9 求出一個學生成績數組的max,min和average的值
10 路由器,交換機,調制解調器等作用,作用於哪一層
五種中繼系統:
  1.物理層(即常說的第一層、層L1)中繼系統,即轉發器(repeater)。
  2.數據鏈路層(即第二層,層L2),即網橋或橋接器(bridge)。
  3.網絡層(第三層,層L3)中繼系統,即路由器(router)。
  4.網橋和路由器的混合物橋路器(brouter)兼有網橋和路由器的功能。
  5.在網絡層以上的中繼系統,即網關(gateway).
hub也就是轉發器,是把電腦連到一個局域網中,並且電腦之間是共享帶寬,而交換

機也是機器連接起來組成一個局域網,並且電腦間是獨享帶寬的。尋址都是mac地址

,但尋址方式不太相同,
路由器作用,連接不同的網段,並且在網絡傳輸中找到合適的路徑。

對於不同地規模的網絡,路由器的作用的側重點有所不同。
1 在主幹網上,路由器的主要作用是路由選擇。主幹網上的路由器,必須知道到達

所有下層網絡的路徑。
2 在地區網中,路由器的主要作用是網絡連接和路由選擇,即連接下層各個基層網

絡單位--園區網,同時負責下層網絡之間的數據轉發。

3 在園區網內部,路由器的主要作用是分隔子網。早期的互連網基層單位是局域網

(LAN),其中所有主機處於同一邏輯網絡中。隨着網絡規模的不斷擴大,局域網演

變成以高速主幹和路由器連接的多個子網所組成的園區網。在其中,處個子網在邏

輯上獨立,而路由器就是唯一能夠分隔它們的設備,它負責子網間的報文轉發和廣

播隔離,在邊界上的路由器則負責與上層網絡的連接。

    綜上所述,交換機一般用於LAN-WAN的連接,交換機歸於網橋,是數據鏈路層

的設備,有些交換機也可實現第三層的交換。路由器用於WAN-WAN之間的連接,可

以解決異性網絡之間轉發分組,作用於網絡層。他們只是從一條線路上接受輸入分

組,然後向另一條線路轉發。這兩條線路可能分屬於不同的網絡,並採用不同協議

。相比較而言,路由器的功能較交換機要強大,但速度相對也慢,價格昂貴,第三

層交換機既有交換機線速轉發報文能力,又有路由器良好的控制功能,因此得以廣

播應用。

11 DNS的原理
DNS分爲Client和Server,Client扮演發問的角色,也就是問Server一個Domain

Name,而Server必須要回答此Domain Name的真正IP地址。而當地的DNS先會查自己

的資料庫。如果自己的資料庫沒有,則會往該DNS上所設的的DNS詢問,依此得到答

案之後,將收到的答案存起來,並回答客戶。爲了加快速度,通常將常用的域名地

址存在就近的dns服務器的高速緩存區。這樣可以提高速度。

12 項目開發:軟件流程,瀑布模型;黑盒測試
軟件開發流程
需求說明,
結構化分析,結果需要得到系統的數據流圖,數據字典和加工處理說明
總體設計,
詳細設計
軟件生存週期包括:
可行性分析與項目開發計劃,需求分析,概要設計,詳細設計,編碼,測試,維護

等活動
軟件生存週期的模型:
瀑布模型:各活動依線性順序連接,適合於軟件需求很明確的軟件項目
演化模型:先夠造一個初始運行版本(原型),然後根據用戶使用中的建議不斷的

改進,獲得最終軟件產品的過程。適用於對軟件需求缺乏準確認識的情況
螺旋模型:將瀑布模型和演化模型結合起來,加入了兩種模型均忽略的風險分析,

將開發過程分爲幾個螺旋週期,每個螺旋週期大致和瀑布模型符合,每個週期用戶

評估結束後在進入下一個週期的開發計劃。
噴泉模型:克服了瀑布模型不支持軟件重用和多項開發活動集成的侷限性,它開發

過程中具有迭代性和無間隙性,迭代意味着模型中的開發活動常常需要重複多次,

迭代過程中不斷的完善,開發活動間沒有明顯的界限,交叉迭代進行,以用戶需求

爲動力,以對象作爲驅動的模型。適合於面向對象的開發方法。
測試:
軟件測試的策略:
有效的軟件測試實際上分成4步進行:
1)單元測試
2)集成測試
3) 確認測試
4) 系統測試
測試方法
靜態測試,動態測試
測試用例的設計
1用黑盒法設計測試用例
等價類劃分,邊值分析,錯誤猜測和因果圖等
2 白盒測試
邏輯覆蓋
循環覆蓋
基本路徑測試
13  數據庫:創建一個數據庫,創建一個表,包含主鍵,索引。


14 操作系統:進程調用,死鎖,頁面置換
進程調度:
三級調度:
高級調度:決定輸入池中的哪個後備作業可以調入主系統做好運行準備
中級調度:決定交換區中的就緒進程哪個可以調入內存
低級調度:內存中的就緒進程哪個可以佔用cpu
調度算法
1 先來先服務 2 時間片輪換 3 優先級調度 4 多級反饋調度(不同的隊列,進程可

以再隊列之間調整)
死鎖::產生死鎖的原因
競爭資源及進程推進順序非法。當系統中有多個進程所共享的資源,不足以同時滿

足他們的需求時,引起他們對資源的競爭,導致死鎖
進程推進順序非法,進程在運行的過程中,請求和釋放資源的順序不當,會導致進

程死鎖
4個必要的條件:
互斥條件、請求保持條件(佔用後不釋放),不可剝奪條件(系統不能強制收回)

和環路條件(每個都佔用下一個進程資源)

存儲管理方案
分區管理方案是解決多道程序共享主存的可行方案,但是該方案的主要問題是用戶

程序必須裝入連續的地址空間中,若無滿足用戶要求的連續空間時,需要進行分區

靠攏操作,這是以耗費系統時間爲代價的,爲此引入了分頁管理
分頁式存儲管理
系統爲每個進程建立了一張頁面映射表,簡稱頁表,頁表的作用是實現從頁號到物

理塊號的地址映射,由於頁表本身需要的連續主存空間大,4mb,所以可以將頁表本

身也進行分頁管理,可以建立一張頁表,外層頁表,其中每個表目存放某個頁表的

物理地址,第二級是頁表,其中的每個表目所存放的是頁的物理塊號。
分段式存儲管理
作業的地址空間被劃分爲若干個段,每個段是一組完整的邏輯信息,如主程序段,

子程序段,數據段及堆棧段等,每個段有自己的名字。從0開始編址的一段連續地址

空間,各段長度是不等的。一個作業最多有64kb個段,建立一個段表
段頁式
每個段分幾頁管理。有效提高主存利用率,並且可以實現段的共享
虛擬存儲管理
請求調入和置換功能
分頁管理的實現
1 缺頁中斷在指令執行期間產生和處理,而一般中斷在一條指令執行完另一條指令

執行前
2 發生中斷時,返回到被中斷指令的開始重新執行該指令,而一般中斷返回到下一

條指令執行
3 一條指令在執行期間,可能會產生多次缺頁中斷
頁面置換算法
1 最佳置換算法
選擇哪些是永不使用的,或者是在最長的時間內不再被訪問的頁面置換出去(性能

最好,難以實現)

2 先進先出置換算法
選擇在主存中駐留時間最久的頁面予以淘汰(性能最差的算法)
3 最近最少未使用(LRU)
每個頁面設置一個字段,用已記錄這個頁面自上次被訪問以來所經歷的時間T,當要

淘汰一個頁面時,選擇T最大的頁面
4 最近未用
LRU的近似算法,每個頁設置一位訪問位。當某頁被訪問時,訪問位爲1,在選擇一

頁淘汰時,檢測訪問位,如果是0.則換出該頁,若爲1 ,則將其重新設置爲0,暫不

換出

CDMA的軟容量
FNMA、TDMA系統中,當小區服務的用戶數達到最大信道數,已滿載的系統再無法增

添一個信號,而cnma系統中,1 用戶數目和服務質量之間可以相互折中,可以將目

標誤診率稍微調高,從而增加可用信道數。2 相鄰小區負荷輕時,本小區受到的幹

擾較小,容量可以適當增加。3 小區的呼吸功能(各個小區的負蓋大小是動態的)

,當相鄰兩個小區負荷一輕一重時,負荷重的小區通過減小導頻發射功率,使本小

區的邊緣用戶由於導頻強度不夠,切換到相鄰的小區,使負荷分擔,相當於增加了

容量。
CDMA的反向閉環功率控制原理
先介紹開環和閉環定義:
開環:不將控制的結果反饋回來影響當前控制的系統。
閉環(也叫反饋控制系統),將系統輸出量的測量值和所期望的給定值相比較,由此

產生一個偏差信號,利用此偏差信號進行調節控制,使輸出值儘量接近於期望值
閉環控制有反饋環節,通過反饋系統使系統的精確度提高,響應時間縮短,適合於對

系統的響應時間,穩定性要求高的系統。
開環和閉環
開環功率控制中,移動臺的發射功率的調節是基於前向信道的信號強度,但是當前

向和反向信道的衰落特性不一致時,前向信道的信號測量不能反映反向信道傳輸特

性的。
閉環功率控制
移動臺和基站共同參與,基站不斷的測量反向鏈路的Eb/N0.給它設置一個門限值,

如果值太大,基站就命令移動臺減小發射功率,如果太小,命令它增加發射功率,

移動臺根據基站發送的控制指令,調節發射功率,達到最適的最小功率。
反向閉環功率控制包括內環和外環
外環:調整基站的接收信號的目標Eb/N0設置值,滿足FER的要求
內環:是移動臺發送信號的Eb/N0與目標值接近。
CDMA的關鍵技術:
1 功率控制技術
反向開環功率控制,反向閉環功率控制,前向功率控制
2 PN碼技術
PN碼的選擇直接影響到CDMA系統的容量、抗干擾能力、接入和切換速度等性能。

CDMA信道的區分是靠PN碼來進行的,因而要求PN碼自相關性要好,互相關性要弱,

實現和編碼方案簡單等。目前的CDMA系統就是採用一種基本的PN序列--m序列作爲地

址碼,利用它的不同相位來區分不同用戶。
3.RAKE接收技術

移動通信信道是一種多徑衰落信道,RAKE接收技術就是分別接收每一路的信號進行

解調,然後疊加輸出達到增強接收效果的目的,這裏多徑信號不僅不是一個不利因

素,而且在CDMA系統變成一個可供利用的有利因素。
4.軟切換技術

先連接,再斷開稱之爲軟切換。CDMA系統工作在相同的頻率和帶寬上,因而軟切換

技術實現起來比TDMA系統要方便容易得多
15 請你分別劃劃OSI的七層網絡結構圖,和TCP/IP的五層結構圖?
OSI的七層網絡結構圖:
物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層
TCP/IP的四層結構圖
網絡接口,網際層,傳輸層,應用層
結合他兩提出五層體系
物理層 數據鏈路層,網絡層,傳輸層,應用層

16 請你詳細的解釋一下IP協議的定義,在哪個層上面,主要有什麼作用? TCP與

UDP呢?
IP協議又稱爲互聯網協議,支持網間互聯的數據報協議
網絡層,尋址,提供網間連接的完善功能
IP地址包括A、B、C、D、E五類,常用的是A、B、C三類
傳輸層兩個協議,
TCP--傳輸控制協議,面向連接的,可靠的,增添了許多開銷
UDP--用戶數據報協議,無連接的,接收到數據報,無需給出任何確認信息
17 請問交換機和路由器分別的實現原理是什麼?分別在哪個層次上面實現的?
同上面一個題
18 請問C 的類和C裏面的struct有什麼區別?
class的默認訪問控制是private
struct的默認訪問控制是public
19 請講一講析構函數和虛函數的用法和作用?
20 全局變量和局部變量有什麼區別?實怎麼實現的?操作系統和編譯器是怎麼知道

的?
21 一些寄存器的題目,主要是尋址和內存管理等一些知識。
22 8086是多少位的系統?在數據總線上是怎麼實現的?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章