腾讯2014暑期实习笔试总结
4月12号在清华大学參加的笔试,状态不是非常好,答题答的懵懵懂懂的。晚上參加微软的在线笔试又被虐得慘不忍睹,4道题答对了一道。。。周一去阿里面试就是被虐的节奏,回来之后就跟大老板开会,一直到今天晚上十点左右才把大老板布置的任务完成的几乎相同,明天预计要開始赶paper了,今晚是近期最后有空的时间了预计。。。
腾讯的笔试题型主要就两类,一类是不定项选择题,一类就是填空题。到当今我就仅仅记得印象比較深的四点了。。。
1. c++的sizeof题目:详细数值记不清楚了,结构比較有印象
int A(char a[10]) { return sizeof(a); }
int main(){ char a[10]; int result = sizeof(a) * 10 + A(a) * 2; }
这题主要考察 数组名以及指针的差别,我在前面的文章《c++中数组名与函数的差别》中已经有所提及了。
主要原因是数组名a在传入到函数A中时已经失去了他的数据结构内涵而且退化成为了一个指针。所以结果应该为(设为32位机器)10 * 10 + 4 * 2 = 108。
2. 二叉树的定义:
维基百科中二叉树的定义是:二叉树是每一个节点最多有两个子树的树结构,所以一个单独的节点也能够被称作一棵二叉树。.
3. 概率题:随机取三个球放到四个瓶子中,瓶子的最大球数是2的概率是多少。。。
应该挺简单的。。。可是我不会。。。回头要补习下概率论。。。
此题是个选择题,依据终于的答案,三个球和三个盒子应该都是不同的,应该是这样分析的:
每一个球有4中分配方案,也就是总共同拥有4 * 4 * 4 = 64种分配方案;
最大球数是2有两种分配情况:4 * 1 * 3 + 4 * 3 * 2 = 36
第一个球有4中分配方案,第二个球假设跟第一个球分到同一个瓶子里,则第三个球有3种分配方案;
第一个球有4中分配方案,第二个球假设跟第一个球分到不同瓶子里,则第三个球应该有2种分配方案;
所以,终于结果是 9 / 16。
4. 梅氏砝码问题:
用四个砝码称出1 - 40的重量,这四个砝码的值为多少?
有个同学的思路还行,可是细致推敲还是会有点问题:
解决思路 :
1克的法码是不管怎样要用的;
其次须要准备的法码设为x克,就能够称x+1克和x-1克。因为x-1克是在1克的基础上继续加1克的重量所以 x-1=1+1 ,即 x=3 。依据上式能够称出 1、2=3-1、3、4=3+1克。
把要准备的第三个法码社为y克,因为第二个法码能够称到4克,所以又能够称y-4、y-3、y-2、y-1、y、y+1、y+2、y+3、y+4克的重量。因为y-4是在4克的基础上继续加1克的重量,所以 y-4=4+1。即 y=9。因此能够称出1、2=3-1、3、4=3+1、5=9-(1+3)、6=9-3、7=9+1-3、8=9-1、9、10=1+9、11=3+9-
1、12=3+9、13=1+3+9 。
再把要准备的第四个法码设为z克,能够称从z-13到z+13。和前面一样、z-13=13+1 ,所以 z=27。因此能够称出到40克的重量了。
也就是说、仅仅要分别准备1、3、9(=3的平方)、27(=3的立方)克4种法码,就能够称出从1克到40克、每一次加1克的重量。
梅氏砝码:若有n个砝码,重量分别为M1,M2,……,Mn,且能称出从1到(M1+M2+……+Mn)的全部重量,则再加一个砝码,重量为Mn+1=(M1+M2+……+Mn)*2+1,则这n+1个砝码能称出从1到(M1+M2+……+Mn+Mn+1)的全部重量。