英偉達2013年筆試題

才智咖 人氣:2.99W

1.給出下面常用的C變數的定義方式:

英偉達2013年筆試題

An array of 10 pointers to integers:int* p[10]

A pointer to an array of 10 integers int (*p)[10]

An array of ten pointers to functions that take an integer argument and return an integer: int (*p[10])(int)

erence between semaphore and mutex;

互斥體:互斥體用於執行緒間的互斥,一次只允許一個執行緒進入臨界區,它不能保證訪問的順序,因此其是無序訪問。互斥體只能有同一執行緒釋放,互斥體是睡眠鎖,一旦資源被佔用,資源的申請者只能進入睡眠狀態,所以互斥體只能用於程序上下文,而不能用於中斷上下文。

訊號量:也稱訊號燈,程序/執行緒間同步用,保證對資源的順序訪問,一個程序(執行緒)完成了某一個動作就通過訊號量告訴別的程序(執行緒),別的程序(執行緒)再進行某些動作,例如讀者寫者問題。訊號量的釋放可以由其他程序/執行緒釋放.訊號量為控制一個具有有限數量使用者資源而設計,例如允許多個讀者同時訪問資源。同樣訊號量是睡眠鎖不能用於中斷上下文

自旋鎖:類似於互斥體,但其可以用在中斷上下文,因為對於沒有獲得鎖的執行緒會迴圈檢測,不會睡眠,但其佔用cpu資源大。

訊號量與互斥體的.區別可以歸結如下

1. 互斥體用於執行緒的互斥,訊號量用於程序/執行緒的同步。

2. 互斥體必須由同一執行緒獲得和釋放對應使用,而訊號量可以由一個執行緒釋放,另一個執行緒得到

3. 互斥體的數值為0或1,訊號量可以是任何非負整數

3. 100樓,2個eggs。

egg在第k樓及以上掉下會摔碎,k樓以下掉下不會碎。問如何確定k(K在1-100之間)

1個egg時肯定是從第1樓開始一層一層試;

那麼2個eggs如何確定k?

3個eggs呢?

一般化:m個eggs,n個樓層,如何確定k?

Answer:因為必須要保留最後一個蛋來確定哪一層樓

所以其餘m-1個蛋用於折半查詢範圍

不知道是不是這樣,忘各位留言指教

4.100個門排成一排,開始時全部為closed。

第1次, 操作門1,2,3,4……100

第2次, 操作門2,4,6,8……100

第3次, 操作門3,6,9,12……99

第4次, 操作門4,8,12,16……100

……

第100次,操作門100

上面“操作”的意思時:如果原來門是open的,就關掉它;如果原來是closed的,就開啟它。

第100次之後,哪些門是open的,哪些門是closed的。

Answer: 看一個數有幾個因子,因子數為奇數則為開,因子數為偶數極為關,每個數都可以表示為2個數的乘積,因此只要不是某個數的平方,即兩兩配對,為偶數個因子,若為某個數的平方必定為奇數個因子,所以1,4,9,16,25,36,49,64,81,100為open,其餘為closed

5. 華為機試題:找出100以內的非素數

100=10*10;非素數必有一個因子小於10

因此只要能整除2,3,5,7即為非素數

TAGS:筆試 英偉