EMC笔试题目最完整整理都是精华.docx
《EMC笔试题目最完整整理都是精华.docx》由会员分享,可在线阅读,更多相关《EMC笔试题目最完整整理都是精华.docx(14页珍藏版)》请在冰豆网上搜索。
EMC笔试题目最完整整理都是精华
intp(inti,intN)
输出i到N,再从N到i的每个数,每个一行
例如p(1,3)
输出
1
2
3
2
1
要求
1只能有1个语句,即一个分号
2不能使用dowhileuntilgotoforif关键字,不能使用?
:
和逗号运算符
3唯一能使用的库函数为printf
答:
C:
1.intp(inti,intN){
2.return((i==N&&printf("%d\n",i))||(printf("%d\n",i)&&p(i+1,N)&&printf("%d\n",i)));
3.}
4.
5.intmain(intargc,char**argv){
6.p(i,N);
7.return0;
8.}
第一次听到这件公司的名字是上系里面一门叫做"数据存储"的限选课的时候,这是一门EMC和学院合办的课程,由EMC方面提供ppt,然后讲述一些关于数据存储方面的东西,像磁盘阵列,NAS,DAS,SAN等等,内容比较新而且很好玩。
也通过这门课对EMC有了一定了解,知道他是存储系统行业的领先者,主要是为银行,金融服务公司等提供数据存储方面的解决方案等等。
于是看到招聘信息的时候抱着试试看的心态投了他们的softwareengineer职位。
EMC的笔试是在华工的五山校区,去笔试的人似乎不太多,一共只有2间教室,里面混合了投软件工程师和硬件工程师的参加者。
笔试一共要3个小时,这也是我碰到的最长的一场笔试。
题目主要由选择题,编程题和写作题三部分组成。
选择题一共有30多道,答对得分,答错需要倒扣分数,估计为了防止有人乱蒙吧…虽然选择题数量不是特别多,但是每道都很有难度,是我碰到的所有笔试里面最难的一份,包含了对算法,C/C++基础,面向对象,逻辑等各方面的考察,我自己的速度大概4,5分钟才能做一道,而且有相当部分答案不是太确定。
然后是4选3的编程题,2易2难,不过和选择题部分比较起来这部分就简单很多了,和其他公司的难度差不多,像给出一个单向链表找出倒数第k个节点之类,没太多值得说的地方。
最后是要求写一篇英语文章,谈一下你对未来计算机发展的展望,同时考察了英文能力和对自己行业的看法,感觉还是比较有意思的…因为那段时间经常在用googledocument,就吹了下觉得在将来各种像office等客户端办公软件将被网络上的在线办公软件所取代,然后人们的各种资料将通过网络保存在一些由专门提供存储服务的存储供应商的存储系统中,用户的资料安全性将提高,也可以更方便的通过网络随时随地访问自己的资料进行移动办公。
不过我英文太菜,很多东西都说的辞不达意,也不知道阅卷官是否有看懂我在说啥。
。
。
然后是两个星期没有任何消息,还以为被bs掉了,不过当时已经拿到了北电的offer,也没太在意。
结果某天傍晚很意外的收到了让第二天去广州东站旁边的天伦万怡酒店参加面试。
于是赶紧跑去打印简历和照片,又上网查了下发现emc原来是英语面试的,赶紧准备了下英语的自我介绍,至于其他就只有听天由命了。
去到后首先是到1x楼(具体哪层忘了-_-)的商务中心去等候,去到的时候发现已经有两个和我一样是小本的SS校友在等候,然后hr姐姐说面试官刚面完,还要休息一下,让我们再等一等。
在内心感叹了下面试官的辛苦后,开始一边休息一边欣赏望外面的风景,从这么高的楼层望下去还是挺好玩的~
然后hr给我们介绍了下面试的流程,一共三面,连续进行。
这时一位面试官下来找hr,说可以开始了,hr看了一下就让我跟那位中年的面试官gg上去。
首先被要求用英文做自我介绍,于是按之前准备的说了下自己的基本情况,暑假在google实习过,觉得自己的长处是喜欢研究一些计算机方面的问题,对算法问题比较感兴趣,然后觉得自己的长处是学习能力强等等。
然后面试官似乎对我的实习比较感兴趣,问我对google的印象,实话实说的答了一下觉得google是一间很好的公司,自己从里面学到了很多。
接着开始面技术,第一个问题是给出2n+1个数,其中有n个数是成对出现的,让我找出里面只出现了一次的那个数。
当时一时间没有想到太好的方法,但是之前的面试经验告诉我,没有好想法的时候就先说一个可以解决这个问题的想法,然后再逐步优化。
于是就先说了个用nlog时间进行快排后,再用n的时间遍历一次的方法。
果然面试官对我的答案并不满意,问有没更优的方法,于是只好乖乖的继续优化。
还好当时因为已经有了其他的offer,心情并不紧张,状态也比较好,最后终于想出了个o(n)时间,o
(1)空间的方法,看出来面试官还比较满意。
又问了我另外一道题目,不过这道答得并不好,一开始还答错了,还好被提醒后还是给出了正确的答案。
于是一面over,回去商务中心继续等,全过程大概20分钟的样子,hr姐姐看到我的时候挺惊讶的样子,说你这么快就面完了。
。
。
其实我自己也觉得很奇怪啊。
。
orz。
看之前的对话面试官面的那么晚,还以为有40分钟一面的。
。
。
,于是一边等其他人面完一边和hr姐姐聊天。
了解了一下才知道我投这个职位原来一共就9个人进入面试,一天面完,一批3个。
果然最近勤于bg对提升rp起了不少作用….第二个面我的是emcr&d部门的managerStephen,给人很nice的感觉。
不过出乎意料的是这面几乎没怎么问我技术,Stephen给我介绍了下emc的情况,然后问了两个很简单的问题就结束了。
然后就迎来了第三面,坐下后面试官和我说这面用中文面,于是内心一阵窃喜,终于不用kE文了。
然则我不久就开心不起来了。
。
这面面的是c和C++的一些知识,但是问到的很多地方都是我平时很少使用或者没太关注的地方,结果被问的挺郁闷,不少地方都答得不好,所以大家以后还是要多准备下C/C++方面~最后还被问了道和Disney有关的问题,让设计一个游客管理方面的问题的解决方案,ms面试官对我的答案还比较满意,也就这样结束了最后一轮面试。
本来以为还要有一段时间才有通知,结果第二天傍晚就收到了hrLinda的电话,拿到了口头offer,于是决定签emc,也结束了我的找工生活~
、单选(选对1分,选错倒扣0.25,不选0分),一共26题,每题5个选项
1,问能用8位二进制数的最小的10进制数
2,10101010101写成10进制和16进制分别是多少
3,数列题,16进制,0x64,0x190,0x384,0x640,0x9C4
4,数列题,16进制,0x1,0x8,0x1B,0x40,0x7D
5,因式分解,9x^2-49
6,7概率题,说3个人,每人一个口袋,里面4个球,1red,3blue
然后就是拿球的概率,超简单,都是乘法定律。
8,问int**a[10];的意思
9,问int*(*a)[10];
10,int(*a[10])();
11-13问的是replace算法,给出了5个进程,和他们的loaded,lastaccessed的时间
问下列算法,会替换哪个进程
11,NRU
12,FIFO
13,LRU
14,6个driver,n个process,每个process需要2个driver,问whichn,deadlockfreeinthebestcase
选项记不清了,好像n=3,n<=3,n<6,n=6,noneofabove
1564^(2/3)
16问N个noodles,每次找两个ends,连起来,直到noends,问expactednumberofloops
17一段C程序,主要考察constchar*,const
18一大段话,选TrueorFalse,进程调度,有关priorityinversion
19commonsolutiontoavoidpriorityinversion
20很简单的C程序,问result
21还是C程序,主要问sizeof()
22C程序,问常量定义和函数调用中的print("%d",__LINE__);
23,24C程序,考察N1>>=1和N2+=(n1&1)
25,26也是很简单的C程序
二、informationquestion,两道选择,EMC的R&DcenteratBeijingandShanghai,
1,你首选工作地点:
(ft,-Shanghai)
2,secondchoice(ftagain,-Beijing)
三、Bonusquestion,下个C/C++的函数
从单链表中找到一个cycle
四、简答,inEnglish
starvtion和deadlock的异同
2007.04
第一部部分的选择题既有智力题也有计算机基础知识题还有编程语言题。
1.7×(1/7)=1是什么率?
2.What'sdatabaseview?
虚表
3.4*(3*2)=(4*3)*2是什么率?
4.ABCDEF六城市两两相连,问从A到B经过其他城市有且只有一次的路径有多少个?
9.对代码中syntax进行分析用到的什么文法?
10.问要进行stable的sorting,会避免使用哪种算法?
稳定:
冒泡、插入、归并、基数
不稳定:
选择、快速、堆排序、shell
17.0.15625写成二进制是什么0.000101
18.问1,2,3,5,8,13...这个数列,第58个除以第57个得多少?
1.618
19.问关于fopen(“w”)的问题(主要是覆盖而不是追加)
20.问一连串cat和sort命令后输出
22.问RAID0的作用?
把连续的数据分散到多个磁盘上存取,RAID0并不是真正的RAID结构,没有数据冗余
23.火星上到处是硬币,随便拿起一个,如果是头朝上的就翻成字朝上的,如果是字朝上的就抛出,落地后有各一半的机会头朝上或字朝上。
再随便拿起包括刚才那个在内的所有硬币中的一个,重复前述步骤。
问,很多很多次后字朝上和头朝上的硬币比例?
2:
1
24.问RAID5的作用?
RAID5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上
25.麦当劳有6块9块20块鸡的袋子,问大于等于N块的鸡都能正好用前述袋子装走的最小N是多少?
44
26.问又要考虑安全又要充分利用带宽的网络中,是先加密后压缩,还是先压缩后加密?
先压缩后加密
27.问要使一群人存在2人同月出生概率不低于50%的最小人数是多少?
5
28.c++中不可重载的运算符是?
不允许重载:
. :
:
.* .-> ?
:
29.TCP/IP不存在那个层?
(securelayer)
主要体会是,一些基础知识平时要注意积累,特别是面向对象、RAIN、网络,很多笔试都有考到,智力题的话注意积累经验。
第三部分是三道程序题。
要求至少答两道,有时间也可以答三道。
1.写一个画圆的函数
intdrawCircle(intx,inty,intradius);
要求:
要让圆看起来连续圆滑,要画多于4×radius个点。
画点使用intdrawPoint(intx,inty)函数
2.写出一段c++程序的输出。
主要考察重载、多态、继承
classA
{
public:
A(){cout<<"A:
A"<~A(){cout<<"A:
~A"<virtualvoidf1(){cout<<"A:
f1"<voidf2(){cout<<"A:
f2"<};
classB:
publicA
{
public:
B(){cout<<"B:
B"<~B(){cout<<"B:
~B"<voidf1(){cout<<"B:
f1"<voidf2(){cout<<"B:
f2"<};
classC:
publicB
{
public:
C(){cout<<"C:
C"<~C(){cout<<"C:
~C"<voidf1(){cout<<"C:
f1"<voidf2(){cout<<"C:
f2"<};
intmain()
{
{
Cc;//A:
:
A()B:
:
B()C:
:
C()
A*p=&c;
c.f1();//C:
:
f1()
c.f2();//C:
:
f2()
p->f1();//C:
:
f1()
p->f2();//A:
:
f2()
p=newC();//A:
:
A()B:
:
B()C:
:
C()
deletep;//A:
:
~A()
//注意:
析构函数不是virtual,因此析构的时候不会多态
//C:
:
~C()B:
:
~B()A:
:
~A()
}
system("PAUSE");
return0;
}
(主要是子类实例定义是父类生成函数的调用顺序、清理时撤销函数的调用顺序,重载和多态的区别,还有就是栈上变量在函数退出时的清理,比如c在main函数退出时自动清理,要调用撤销函数)
3.函数声明如下
intfunc(inti,intN);
其中i<=N,功能输出i递增到N再递减到i的整数,每行输出一个数。
比如func(1,5)就是
1
2
3
4
5
4
3
2
1
要求
1只能有1个语句,即一个分号
2不能使用dowhileuntilgotoforif关键字,不能使用?
:
和逗号运算符
3唯一能使用的库函数为printf
intp(inti,intN)
{
return((i==N&&printf("%d\n",i))||(printf("%d\n",i)&&p(i+1,N)&&printf("%d\n",i)));
}
intmain(intargc,char**argv)
{
p(i,N);
return0;
}
前两天EMC笔试中碰到的一道比较有意思的题目:
碗里有n根面条,现在一次在碗中取任意两头(未必是同一根面条的)连在一起,直到没有面条的“头”剩下为止,问平均可以在碗里形成多少个圈?
答案参考全文阅读
【全文】
设n根面条得到的结果是f(n),做一次“粘头”的操作其实可以分成两种情况:
1.被粘的两头是同一根面条上的
这种情况的发生的概率是1/(2n-1),此时平均圈数为1+f(n-1)
2.被粘的两头是不同两根面条上的
这种情况的发生的概率是(2n-2)/(2n-1),此时平均圈数为f(n-1)
于是有:
f(n)=1/(2n-1)*(1+f(n-1))+(2n-2)/(2n-1)*f(n-1)=1/(2n-1)+f(n-1)
而f
(1)=1
于是f(n)=sum(1/(2*i-1),i=1..n)
1.菲波那契数列1,1,2,3,5,8,13……的第40位除以第39位得多少?
即,N40/N39=?
2Aa/tv$J|1QA%z
a.1.666666
b.1.618xxx(后面几位记不清了)
c.1.600000B
d.以上都不对
记住Fibonacc数列的前后比值越来越趋近黄金分割比
根5+1除2等于1.6180339887498948482045868343656
推算选B
2.数列0,1,3,6,10,15,21……从a0加到a10000得多少?
a.50005000b.50000000c.49995000d.500000e.以上都不对
这个我没想到估算的方法,但是直接可以从求和式推出来
1.有一个村庄,村庄里各户人家直到生出女孩来就不再生小孩了,而生男孩女孩的概率1hk6n&qP5GV/Axdv
各是1/2。
请问这个村庄男孩女孩的比例是多少
a.2:
3 b.3:
2
c.1:
1(每次出生都由概率相等的事件发生?
据说是这个)
d.2:
1e.1:
2
男女比例3:
2
男:
A=(n-1)/2^n的数列求和,n>1且为自然数
女:
B=1/2^n的数列求和,n>0且为自然数
A:
B=3:
2
2.有一家人,老公、老婆、儿子还有老公的妈妈,其中有一个是律师,一个是医生-l0c\h~7X;`
如果医生比律师年轻,则医生与律师没有血缘关系
如果医生的女的,那么医生和律师有血缘关系
如果律师是男的,医生也是男的.
请问我们能确定这家人里的那一个人
a.老公是医生b.老婆是医生c.儿子是医生d.老公的妈妈是医生
e.以上都不对
这个题推算,构造一棵树,然后将不符合的剪枝
3.实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。
可以用实验室的小白鼠来
测试哪一瓶是毒药。
如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里
的药水没有任何副作用。
请问最少用多少只小白鼠可以在一个星期以内查出哪瓶是毒药
a.9 b.10c.32d.999
e.以上都不对
2分法推断,每次测试都要配药
4.有ABCDEF六个城市,每一个城市都和其他所有城市直接相连,问从A——B有多少种连
接方式。
路径不允许在两个城市之间往返。
(这题的选项可能有的数记错了)
a.78 b.84c.65d.43e.以上都不对
26道选择题,说是多选,可就没有发现一个多选。
基本上没有智力题,全是逻辑和c语言的题目。
1道编程题,判断一个单链表中是否存在环。
1个英文问答题,饥饿与死锁的异同,要求用英文回答
选择题有一个typedef的题目以前没有碰到过:
usingnamespacestd;
typedefchar*constchar;
voidmain(intargc,char*argv[])
{
chars[]="asdf";
constconstchara=s;
*a='b';
cout<
}
说明constconstchar与constcharconst是一样的,都是一个指向char的常指针
还有一个sizeof的
unionu{
inta[4];
charb;
doublec;
};
structs{
inta;
ub;
};
voidmain(intargc,char*argv[])
{
cout<}
在vc上结果是24,在gcc上是20
EMC的一些笔试题目
EMC的题目分三部分,第一部分是32道单项选择题,这一点就比CISCO厚道多了,主要是智力题和读程序判断输出的题目,以及一些计算机的基础知识,如二进制的换算什么的。
第二部分是5道Information题,问申请SoftwareEngineer还是TechnicalSolutionAssociate,将来希望在什么地方工作,等等。
第三部分是两道大答题,第一题是编程题,我没做,第二题问5年职业规划是什么。
下面详细讲。
先说智力题。
EMC的智力题不是特别难得那种,也不是特别简单,牛人也不可能一眼看出答案来,除非做过,一般人做10分钟,也肯定不会算不出来。
记得比较清楚的大概有这样几道(当然原题都是英文的,我就自己的理解在这里拿中文写出来,可能会跟原题有偏差,所以仅供参考,有谁知道的话帮忙补充):
1.有一个村庄,村庄里各户人家直到生出女孩来就不再生小孩了,而生男孩女孩的概率各是1/2。
请问这个村庄男孩女孩的比例是多少
a.2:
3
b.3:
2
c.1:
1
d.2:
1
e.1:
2
c这个题目迷惑性很大,可以从这个思路解答:
第一胎男女比例为1:
1,同理第2到n胎比例都为1:
1,所以总的比例是1:
1
2.有一家人,老公、老婆、儿子还有老公的妈妈,其中有一个是律师,一个是医生
如果医生比律师年轻,则医生与律师没有血缘关系
如果医生的女的,那么医生和律师有血缘关系
如果律师是男的,医生也是男的
请问我们能确定这家人里的那一个人
a.老公是医生
b.老婆是医生
c.儿子是医生
d.老公的妈妈是医生
e.以上都不对
3.实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。
可以用实验室的小白鼠来测试哪一瓶是毒药。
如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里的药水没有任何副作用。
请问最少用多少只小白鼠可以在一个星期以内查出哪瓶是毒药
a.9
b.10
c.32
d.999
e.以上都不对
b每个瓶子用10位的二进制表示,白鼠编号为0-9,瓶子的某位为1表示给这个编号的白鼠喝这个瓶子的药
4.有ABCDEF六个城市,每一个城市都和其他所有城市直接相连,问从A——B有多少种连接方式。
路径不允许在两个城市之间往返。
(这题的选项可能有的数记错了)
a.78
b.84
c.65
d.43
e.以上都不对
c1+P(1,4)+P(2,4)+P(3,4)+P(4,4)=65
P为组合
然后说一下读程序题。
就程序本身来说都是很简单的程序,基本学过C语言的话,读懂语句应该没有问题的。
有好几道都是算数列的,还有几道是char型数组,还有算循环次数的题目。
只有两道题记得比较清楚,题目都是以程序形式给出的,我就把程序的大概意思按照我的理解写出来,可能有错,所以仅供参考。
1.菲波那契数列1,1,2,3,5,8,13……的第40位除以第39位得多少?
即,N40/N39=?
a.1.666666
b.1.618xxx(后面几位记不清了)
c.1.600000
d.以上都不对
b.Fabonacci数列连续两项之余好像是黄金分割点
2.数列0,1,3,6,10,15,21……从a0加到a10000得多少?
a.50005000
b.50000000
c.49995000
d.50000
e.以上都不对
计算机基础知识的题目也不少,主要考点有B-tree,冒泡排序,堆栈,dual-link和单向link,小数点后的数十进制到二进制的转化,ox进制,按位异或,C和C++的struct有什么区别,什么样的排序算法效率高,什么样的排序算法节省空间,还有一些网络存储磁盘阵列的很基础的题目。
都不难,只可惜没学过什么,或者说学了都忘了,所以就凭感觉了,看那个选项顺眼就选那个。
第二部分的编程题是要把N5->N4->N3->N2->N1的序列用一种自己熟悉的编程语言转化成N1->N2->N3->N4->N5。
看起来是要用到指针的,由于我都忘干净了,所以啥也没写。
差不多客观题就这些了,不是特别难,也不简单。
希望对大家有帮助^_^
标题:
今天下午的EMC笔经,