2014年騰訊實習生招聘考試安徽片區在科大舉行,剛開始拿到試卷覺得試卷好長,題目好多。然後就開始做題,這次考試給我的感覺是騰訊的筆試題考察的范圍很廣,不僅有語言方面的考察,還有操作系統、計算機網絡、數據結構、概率以及Mapreduce都考察了。給我的感覺還是操作系統考察的是最多的。都有:進程通信、內存管理等
推薦閱讀:
百度2013校園招聘筆試題 http://www.linuxidc.com/Linux/2013-01/78272.htm
百度2013校園招聘研發面經 http://www.linuxidc.com/Linux/2012-11/74057.htm
2012百度實習生招聘面試題 http://www.linuxidc.com/Linux/2012-10/73240.htm
百度2011.10.16校園招聘會筆試題 http://www.linuxidc.com/Linux/2012-10/72976.htm
百度2012實習生校園招聘筆試題 http://www.linuxidc.com/Linux/2012-10/72413.htm
百度垂直搜索部門實習面經 http://www.linuxidc.com/Linux/2012-10/72412.htm
百度2014校園招聘筆試題(長沙站) http://www.linuxidc.com/Linux/2013-10/90817.htm
1、進程間通信
Linux進程間通信
linux下進程間通信的幾種主要手段簡介:
a) 管道(Pipe):及有名管道(named pipe):管道可用於具有親緣關系進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關系進程間的通信;
b) 信號(Signal):信號是比較復雜的通信方式,用於通知接受進程有某種事件發生,除了用於進程間通信外,進程還可以發送信號給進程本身;linux除了支持Unix早期信號語義函數sigal外,還支持語義符合Posix.1標准的信號函數sigaction(實際上,該函數是基於BSD的,BSD為了實現可靠信號機制,又能夠統一對外接口,用sigaction函數重新實現了signal函數);
c) Message(消息隊列):消息隊列是消息的鏈接表,包括Posix消息隊列system V消息隊列。有足夠權限的進程可以向隊列中添加消息,被賦予讀權限的進程則可以讀走隊列中的消息。消息隊列克服了信號承載信息量少,管道只能承載無格式字節流以及緩沖區大小受限等缺點。
d) 共享內存:使得多個進程可以訪問同一塊內存空間,是最快的可用IPC形式。是針對其他通信機制運行效率較低而設計的。往往與其它通信機制,如信號量結合使用,來達到進程間的同步及互斥。
e) 信號量(semaphore):主要作為進程間以及同一進程不同線程之間的同步手段。
f) 套接口(Socket):更為一般的進程間通信機制,可用於不同機器之間的進程間通信。起初是由Unix系統的BSD分支開發出來的,但現在一般可以移植到其它類Unix系統上:Linux和System V的變種都支持套接字。
Linux線程間通信:互斥體,信號量,條件變量
Windows線程間通信:臨界區(Critical Section)、互斥量(Mutex)、信號量(Semaphore)、事件(Event)
Windows 進程間通信:管道、內存共享、消息隊列、信號量、socket
Windows 進程和線程共同之處:信號量和消息(事件)
臨界區(Critical section)與互斥體(Mutex)的區別
1、臨界區只能用於對象在同一進程裡線程間的互斥訪問;互斥體可以用於對象進程間或線程間的互斥訪問。
2、臨界區是非內核對象,只在用戶態進行鎖操作,速度快;互斥體是內核對象,在核心態進行鎖操作,速度慢。
3、臨界區和互斥體在Windows平台都下可用;Linux下只有互斥體可用
Windows線程間通信的區別:
1.互斥量與臨界區的作用非常相似,但互斥量是可以命名的,也就是說它可以跨越進程使用。所以創建互斥量需要的資源更多,所以如果只為了在進程內部是用的話使用臨界區會帶來速度上的優勢並能夠減少資源占用量。因為互斥量是跨進程的互斥量一旦被創建,就可以通過名字打開它。互斥體不僅能實現同一應用程序的公共資源安全共享,還能實現不同應用程序的公共資源安全共享.互斥量比臨界區復雜
2. 互斥量(Mutex),信號燈(Semaphore),事件(Event)都可以被跨越進程使用來進行同步數據操作,而其他的對象與數據同步操作無關,但對於進程和線程來講,如果進程和線程在運行狀態則為無信號狀態,在退出後為有信號狀態。所以可以使用WaitForSingleObject來等待進程和線程退出。
2、計算機網絡方面
計算機網絡方面考察了建立時候的握手情況,以及結束時幾次握手以及大量發送數據包對系統的影響。
3、數據結構
數據結構方面考察了桟、堆、圖等一些基本結構。
4、內存管理
LRU算法、段頁式存儲、內部碎片和外部碎片的產生。
補充一下:
5、MapReduce的原理
這個東西之前在blog看過一下,裡面的解釋是這樣的,MapReduce是通過Map和Reduce來操作的。我將其分為3個步驟。
1、將問題劃分成獨立的小問題。
2、Map進行映射,將問題分配到能夠獨立解決問題的計算機上面。
3、Reduce將結果收集整理。
希望大家補充或我錯了的希望大家修改。