正好是在本校,今天在学校又参加了一下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