1. 程式人生 > >多線程筆試面試題匯總

多線程筆試面試題匯總

面試官 同步 線程同步 編程題 初始 線程與進程的區別 結束 選擇 殺毒

第一篇 多線程筆試面試題匯總

本文轉載於秒殺多線程系列,原博客地址:http://blog.csdn.net/morewindows/article/details/7392749

多線程在筆試面試中經常出現,下面列出一些公司的多線程筆試面試題。首先是一些概念性的問答題,這些是多線程的基礎知識,經常出現在面試中的第一輪面試(我參加2011年騰訊研究院實習生招聘時就被問到了幾個概念性題目)。然後是一些選擇題,這些一般在筆試時出現,雖然不是太難,但如果在選擇題上花費大多時間無疑會對後面的編程題造成影響,因此必須迅速的解決掉。最後是綜合題即難一些的問答題或是編程題。這種題目當然是最難解決了,要麽會引來面試官的追問,要麽就很容易考慮不周全,因此解決這類題目時一定要考慮全面和細致。

下面就來看看這三類題目吧。

一.概念性問答題

第一題:線程的基本概念、線程的基本狀態及狀態之間的關系?

第二題:線程與進程的區別?

這個題目問到的概率相當大,計算機專業考研中也常常考到。要想全部答出比較難。

第三題:多線程有幾種實現方法,都是什麽?

第四題:多線程同步和互斥有幾種實現方法,都是什麽?

我在參加2011年迅雷校園招聘時的一面和二面都被問到這個題目,回答的好將會給面試成績加不少分。

第五題:多線程同步和互斥有何異同,在什麽情況下分別使用他們?舉例說明。

二.選擇題

第一題(百度筆試題):

以下多線程對int型變量x的操作,哪幾個不需要進行同步:
A. x=y; B. x++; C. ++x; D. x=1;

第二題(阿裏巴巴筆試題)

多線程中棧與堆是公有的還是私有的

A:棧公有, 堆私有

B:棧公有,堆公有

C:棧私有, 堆公有

D:棧私有,堆私有

三.綜合題

第一題(臺灣某殺毒軟件公司面試題):

在Windows編程中互斥量與臨界區比較類似,請分析一下二者的主要區別。

第二題:

一個全局變量tally,兩個線程並發執行(代碼段都是ThreadProc),問兩個線程都結束後,tally取值範圍。

inttally = 0;//glable

voidThreadProc()

{

for(inti = 1; i <= 50; i++)

tally += 1;

}

第三題(某培訓機構的練習題):

子線程循環 10 次,接著主線程循環 100 次,接著又回到子線程循環 10 次,接著再回到主線程又循環 100 次,如此循環50次,試寫出代碼。

第四題(迅雷筆試題):

編寫一個程序,開啟3個線程,這3個線程的ID分別為A、B、C,每個線程將自己的ID在屏幕上打印10遍,要求輸出結果必須按ABC的順序顯示;如:ABCABC….依次遞推。

第五題(Google面試題)

有四個線程1、2、3、4。線程1的功能就是輸出1,線程2的功能就是輸出2,以此類推.........現在有四個文件ABCD。初始都為空。現要讓四個文件呈如下格式:

A:1 2 3 4 1 2....

B:2 3 4 1 2 3....

C:3 4 1 2 3 4....

D:4 1 2 3 4 1....

請設計程序。

下面的第六題與第七題也是在考研中或是程序員和軟件設計師認證考試中的熱門試題。

第六題

生產者消費者問題

這是一個非常經典的多線程題目,題目大意如下:有一個生產者在生產產品,這些產品將提供給若幹個消費者去消費,為了使生產者和消費者能並發執行,在兩者之間設置一個有多個緩沖區的緩沖池,生產者將它生產的產品放入一個緩沖區中,消費者可以從緩沖區中取走產品進行消費,所有生產者和消費者都是異步方式運行的,但它們必須保持同步,即不允許消費者到一個空的緩沖區中取產品,也不允許生產者向一個已經裝滿產品且尚未被取走的緩沖區中投放產品。

第七題

讀者寫者問題

這也是一個非常經典的多線程題目,題目大意如下:有一個寫者很多讀者,多個讀者可以同時讀文件,但寫者在寫文件時不允許有讀者在讀文件,同樣有讀者讀時寫者也不能寫。

多線程相關題目就列舉到此,如果各位有多線程方面的筆試面試題,歡迎提供給我,我將及時補上。謝謝大家。

多線程筆試面試題匯總