實習生 筆試 Adobe China 2012 R&D Intern Paper Test

正好是在本校,今天在學校又參加了一下adobe2012的實習生筆試,雖然知道這公司很難進,但是抱着去試一試的態度,看看牛逼公司都出什麼樣兒的題目吧。

一個半小時,時間不多不少。


剛剛拿到試卷的時候,略有不習慣,一疊試題,一疊答題紙,還全都是英文⋯⋯⋯⋯上一次做英語題目那個貌似是在大三筆試IBM的時候了吧,都兩年過去了。

瀏覽試卷,10個選擇題(6必做  +   4個JAVA // 4 C++),3個大題目,可以選擇用Java或者C++來答題。


選擇題

1.堆棧

2.鏈表,環形,雙向單向

3.數學題:給你多少鞋,有多少顏色,多少隻襪子,多少顏色,至少拿幾個能湊夠一雙

4.數學題:從1到1000000的每個數的數字之和(123和456的數字之和不是579,而是21), 排除法,很容易

5.邏輯題:條件推理,例如:A推出B和非C,非D推出E和B,等等⋯⋯將題目轉換成那樣的條件邏輯,很容易推出答案來

6.給了一張圖,問概率什麼的,差不多自己也能慢慢算出來吧

JAVA選擇題

7.synchronized關鍵字的作用範圍,我覺得這個是考點吧,給出多線程同步有關係的一段代碼。

8.tell the different of Hashmap and HashTable:這個我平常還真沒怎麼了解,就靠猜了,有一個允許null value而另外一個不讓

9.Integer比較和 char的比較,直接用== 比較和  用 equals的比較

10.這個題目也是大家平常容易犯的錯誤之一吧,它給的代碼裏,switch的case中 沒有break啊!


大題


一、多線程的同步,模型可以歸結爲比較經典的生產者消費者問題吧。讓你寫,如何生產,如何消費,如何開始線程三個代碼塊。


二、讓你優化寫一下石頭、剪刀、布的這三個class,和他們的abstract class, 石頭剪刀布三個類只用寫一個就行,關鍵是寫好他們的父類吧。 

        這個是一個開放性的題目,我個人想法,將這三者用一個環形鏈表放在一起,就很容易判斷是石頭>剪刀,剪刀 >布,布>石頭了吧。


三、讓我徹底栽跟頭的一個題目,爲此,我將題目 完全弄下來了:

 

Tommy and other 8 classmates were in a math class. Teacher prepared 9 hats with a 2-digit number printed on each hat and the 9 numbers differ from each other. Then the teacher gave each student a hat. Each student could only see the numbers on others' hats but could not see the number for his/her own. The teacher then wrote a number A on the blackboard and asked the 9 students:"Do you know if the number on your own hat can be divided by number A with no remainder(整除)? Please raise your hand if you do." Tommy and 3 other students raised their hands. The teacher then asked:"Thendo you know if the number on your own hat can be divided by 24 with no remainder? Please raise your hand if you do". Tommy and 5 other students raised their hands.


Presume the 9 students are smart enough and didn't lie, then what's the summary of the 8 numbers that Tommy could see from others' hats? Write down the number and the reason why you think so.

哎,其實關鍵點就是在於對題目的理解,理解OK,那就容易做,沒理解的話(我考試時是徹底暈了),那就無可奈何啊!

重點是這句話的理解,段落中用紅色字體標記出來了。


參考答案我上網搜索了一下:

1、那個老師問的是“知道不知道能否被整除”,可理解成“知道能被整除”和“知道不能被整除”兩種情況,所以可以猜到:能被A整除的兩位數只有5個,開頭舉手那4個人肯定是看到那5個人帽子上的數就是那5個,所以就知道了自己頭上那個數肯定是不能被A整除的,所以就舉手了。
則A有可能是:19、18、17。
相對應的,沒有舉手那五個小朋友帽子上的數字爲:
19、38、57、76、95
或18、36、54、72、90
或17、34、51、68、85
2、兩位數裏能被24整除的有:24、48、72、96
因爲只有3個小朋友沒有舉手,所以用第一步推理出的三種情況分別進行推理。
這時,通過分情況推理,只有在第一步時取A=18的情況能夠符合情況:那5個沒有舉手的小孩知道了自己是能被A整除的,其中4個小孩能看到帽子上爲“72”那個小孩的,所以就知道了自己是“18、36、54、90”的其中一個,所以他們知道自己不能被整除。
還有第二次沒有舉手的3個小朋友,他們帽子上的數字應該就是“24、48、96”了,剩下舉了手的那2個,當然就是看到別的小朋友帽子上4個數字(24、48、72、96)都齊了,知道了自己帽子上的數不可能被24整除,所以舉手。
3、綜上所述,9頂帽子上的數字爲:18、36、54、72、90、24、48、96和能舉兩次手的小明的,因爲小明能從別的小朋友帽子上看到所有能被A和24整除的數,所以他知道自己不可能被A和24整除。
8個數加起來答案是438.

這道題的關鍵在於:那個老師問的是“知道不知道能否被整除”,可理解成“知道能被整除”和“知道不能被整除”兩種情況。

原文地址:http://blog.csdn.net/davidbeckham2901/article/details/7464201


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