面的技術研發崗,我遇到的這個面試官人比較和藹,沒有問語言類的問題,開始做完自我介紹後,面試官讓我從簡歷中列的專案經歷中介紹乙個。這個由於自己來講,所以談笑風生中過去了。然後面試官問的我都是一些作業系統、組成原理的東西。記錄如下:
1、程序通訊的方式
這個其實可以分為三個大類:管道、系統ipc(包括訊息佇列,訊號量,共享儲存)、socket。
(1) 管道
1)無名管道( pipe ):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。
2)高階管道(popen):將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方式。
3)有名管道 (named pipe) : 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。
(2)系統ipc
1)訊號量( semophore ) : 訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他程序也訪問該資源。因此,主要作為程序間以及同一程序內不同執行緒之間的同步手段。
2)訊息佇列( message queue ) : 訊息佇列是由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。
3)訊號 ( sinal ) : 訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。
4)共享記憶體( shared memory ) :共享記憶體就是對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問。共享記憶體是最快的 ipc 方式,它是針對其他程序間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號兩,配合使用,來實現程序間的同步和通訊。
(3)套接字
套解口也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同機器間的程序通訊。
2、記憶體頁面置換演算法有哪些?
自己只記得有fifo、lru了,還有opt跟scr。
演算法原理稍微一回憶就想起來了,畢竟當年咱也是考408的人。貼個鏈結大家可以看看,就不再碼字了啊。
參考:
3、大端模式跟小端模式的區別?
大端模式
所謂的大端模式(big-endian),是指資料的高位元組,儲存在記憶體的低位址中,而資料的低位元組,儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:位址由小向大增加,而資料從高位往低位放;
例子:0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在大端模式下,前32位應該這樣讀: e6 84 6c 4e ( 假設int佔4個位元組)
記憶方法: 位址的增長順序與值的增長順序相同
小端模式
所謂的小端模式(little-endian),是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低,和我們的邏輯方法一致。
例子:0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在小端模式下,前32位應該這樣讀: 4e 6c 84 e6( 假設int佔4個位元組)
記憶方法: 位址的增長順序與值的增長順序相反
4、cache命中率
這個我答錯了,答成了記憶體缺頁率。唉
其實這個命中率,就是當執行運算過程中,我需要資料先去cache中取,cache容量有限,可能我這次想要的資料並不在cache中,那麼我需要再去主存中再取,cache命中率=(命中cache的次數)/(命中cache的次數+訪問主存的次數)。
5、快速排序演算法
這個讓在紙上寫出偽**,本人會寫。
問完這些問題後,面試官問我有沒有什麼問題想問他的,我是這麼說的「貴公司的技術研發崗並不像其他公司一樣分有什麼語言,前後臺之類的。請問這個是怎麼想的?」。面試官說華為招的實習生主要是看基礎,要了你後會有個雙向選擇來定實習的方向。我想這個可能是華為這種公司跟網際網路公司不一樣的乙個地方吧。
華為校招上機題
1.兔子爬洞問題 兔子白天爬出5公尺,晚上又掉下去2公尺。問給定洞的深度,兔子要爬多少天 include includeusing namespace std int str2int const char str int main int argc,char argv temp temp 10 st...
華為2019校招筆試
示例2 示例 常用的邏輯運算有and 表示為 or 表示為 not 表示為 他們的邏輯是 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0其中,他們的優先關係為 not and or 例如 a b c 實際是 a b c a b c d ...
華為 2016 3套 校招
程式設計題 撲克牌大小 輸入兩手牌,兩手牌之間用 連線,每手牌的每張牌以空格分隔,兩邊沒有空格,如4 4 4 4 joker joker。輸出描述 輸出兩手牌中較大的那手,不含連線符,撲克牌順序不變,仍以空格隔開 如果不存在比較關係則輸出error。示例1 4 輸入每手牌可能是個子,對子,順子 連續...