热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南

2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。

一、选择题
1、已知中国人的血型分布约为A型:30%,B型:20%,O型:40%,AB型:10%,则任选一批中国人作为用户调研对象,希望他们中至少有一个是B型血的可能性不低于90%,那么最少需要选多少人?
A、7     B、9      C、11     D、13

分析:题目要求,至少有一个是B型血,那么我们可以求:一个B型血也没有,假设选择x个人,则有1-0.8^x >=0.9 即求0.8^x <= 0.1 。解之,得x至少为11。。

2、广告系统为了做地理位置定向,将IPV4分割为627672个区间,并标识了地理位置信息,区间之间无重叠,用二分查找将IP地址映射到地理位置信息,请问在最坏的情况下,需要查找多少次?
A、17     B、18      C、19     D、20
 

分析: 解析:二分查找,最坏情况下,是在最后一个区间才能查找到记录数(或失败),需要的查找次数最多为ceil(logn),即取上限。由于2^19=1024*512<627627<2^20=1024*1024,去上限为20,故最坏为20次。。

3、有四只老鼠一块出去偷食物(每个都偷了),回来时,族长问它们都偷了什么,老鼠A说:我们每个都偷了奶酪。老鼠B说:我只偷了一颗樱桃。老鼠C说:我没偷奶酪。老鼠D说:有些人没偷奶酪。族长观察了一下,发现它们当中只有一只老鼠说了实话,那么是哪只老鼠说了实话?
A、老鼠A        B、老鼠B        C、老鼠C       D、老鼠
D

分析:一个一个进行假设,推出悖论即可。例如,假设只有B是对的,那么B只偷了樱桃,那么推出D也是对的,与只有一个是对的矛盾,故不对。A是对的。

4、到商店里买200的商品返还100的优惠券(可以在本商店代替现金)。如果使用优惠券买东西不能获得新的优惠券,那么买200返100优惠券,实际上省多少?
A、50%
B、66.7%
C、75%
D、33.3%

分析:1-200/300=33.3

5、在数据库逻辑设计中,当将E-R图转换为关系模式时,下面的做法哪一个不正确?
A、一个实体类型转换为一个关系模式
B、一个联系类型转换为一个关系模式
C、由实体类型转换成的关系模式的主键是该实体类型的主键
D、由联系类型转换成的关系模式的属性是与该联系类型相关的诸实体类型的属性的全体

分析:

E-R图转换为关系模型的原则有:
(1)一个实体型转换为一个关系模式。  
关系的属性:实体型的属性。
关系的码:实体型的码。
(2)一个m:n联系转换为一个关系模式。  
关系的属性:与该联系相连的各实体的码以及联系本身的属性。  
关系的码:各实体码的组合。
(3) 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并
(4) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并

扩展:腾讯笔试题:每个步的转换对应于什么什么阶段。。

6、一家人有两个孩子,性别未知,现在打电话给其中一个孩子得知是女孩,问另一个孩子也是女孩的概率是多少?
A、1/4        B、1/2        C、1/3       D、1/5

分析:其中一个是女孩的有3种可能,其中一个是女孩另一个也是女孩的只有1种可能,所求概率为1/3

7、关于非空二叉树的性质,下面哪个结论不正确(D)
A、有两个节点的节点一定比没有子节点的节点少一个      n0 = n2 + 1
B、根节点所在的层数为第0层,则第i层最多有2^i个节点
C、若知道二叉树的前序遍历序列和中序遍历序列,则一定可以退出后序遍历序列。
D、堆一定是一个完全二叉树

分析:完全二叉堆才是完全二叉树。。堆不一定按照完全二叉树组织。完全二叉树是堆的一种实现形式。

8、快速排序的平均时间复杂度和最坏时间复杂度是()
A、O(n^2), O(n^2)
B、O(n^2), O(nlgn)
C、O(nlgn) , O(nlgn)
D、O(nlgn) , O(n^2)

分析:选D

9、有一串数字 6 7 4 2 8 1 6 (),请问括号中的数字最可能是()
A、6       B、7       C、8       D、9

分析:

思路是:6*7 = 42,
4*2 = 8;
2*8 = 16;
1*6 = 16;
也就是A*B 如果产生的结果是2位数,则下一个值可以那结果的两个位数字相乘,如果A*B产生结果是一位C,则下一步操作是B*C~~

10、下面哪项不是链表优于数组的特点?
A、方便删除     B、方便插入    C、长度可变    D、存储空间小

分析:由于链表需要额外的空间记录指针等,因而实际上比数组更加浪费空间(不够紧凑)。。

11、给定声明 const char * const * pp; 下属操作或说明正确的是()
A、pp++
B、(*pp)++
C、(**pp) = 'c';
D、以上都不对

分析:可以理解为:const char * (const * pp); pp位于*前边故,pp指针可以改变。。

12、有下列代码正确的是()

std::string name1 = "youku";
const char* name2 = "youku";
char name3[] = {'y','o','u','k','u'};
size_t l1
= name1.size();
size_t l2
= strlen(name2);
size_t l3
= sizeof(name2);
size_t l4
= sizeof(name3);
size_t l5
= strlen(name3);

A、l1 = 5     l2 = 5     l3 = 4      l4 = 5     l5 = 不确定
B、l1 = 5     l2 = 5     l3 = 5      l4 = 5     l5 = 不确定
C、l1 = 5     l2 = 6     l3 = 5      l4 = 5     l5 = 5
D、l1 = 5     l2 = 6     l3 = 5      l4 = 5     l5 = 6

分析:name3退化为指针

13、Test执行后的输出是:

void Test()
{
class B
{
public:
B(
void)
{
cout
<<"B\t";
}
~B(void)
{
cout
<<"~B\t";
}
};
struct C
{
C(
void)
{
cout
<<"C\t";
}
~C(void)
{
cout
<<"~C\t";
}
};
struct D : B
{
D()
{
cout
<<"D\t";
}
~D()
{
cout
<<"~D\t";
}
private:
C c;
};
D d;
}

A、B   C   D   ~D  ~ C   ~B
B、D   C   B   ~B   ~C   ~D
C、C   D   B   ~B   ~D   ~C
D、C   ~C   D   ~D   B   ~B

分析:实例化时,父类比子类先实例化。析构时,顺序相反。。

14、下列四种排序中(A)的空间复杂度最大
A、快速排序        B、冒泡排序       C、希尔排序         D、堆

分析:A会用到栈空间的,其余都是就地排序。。

15、设一棵二叉树的深度为k,则该二叉树最多有(D)个节点。
A、2k-1      B、2^k    C、2^(k-1)      D、2^k-1

分析:根节点深度为1。。那么深度为k最多有2^k-1个节点。。

16、下面函数的功能是()

int fun(char *x)
{
char *y = x;
while(*y++);
return (y-x-1);
}

A、求字符串的长度
B、比较两个字符串的大小
C、将字符串x复制到字符串y
D、将字符串x连接到字符串y后面

分析:使指向下一个地址,减1是减去'\0'这个字符所占长度1,最后是计算指针x所指字符串的长度。。

17、k为int类型,以下while循环执行()次。

unsigned int  k = 20;
while(k >= 0)
--k;

A、20次    B、一次也不执行   C、死循环   D、21次

分析:由于k是unsigned int类型,故,执行无数次。。死循环。。

18、关于COOKIE 和 Session的概念哪一个是对的()
A、COOKIE 存储在客户端,但过期时间设置在服务器上
B、Session 存储在客户端,但过期时间设置在服务器上
C、COOKIE 中可以存储ASCII空格‘  ’,而Session中不行
D、COOKIE可以设置生效的路径,而 Session则不能

分析:参见,  COOKIE与Session的区别: http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html。。

9、以下关于链式存储结构的叙述中哪一条是不正确的?
A、结点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B、逻辑上相邻的结点物理上不必邻接
C、可以通过计算直接确定第i个结点的存储地址
D、插入、删除运算操作方便,不必移动结点

分析:存储具有随机性。。必须顺序遍历。。

20、32位机器上,定义 int **a[3][4],这个数组占多大的空间()
A、64          B、12        C、48        D、128

分析:3*4*4=48。。

二、填空题

1、设数组定义为a[60][70],每个元素占2个存储单元,数组按照列优先存储,元素a[0][0]的地址为1024,那么元素a[32][58]的地址为(8048

分析:注意起始地址为a[0][0],那么计算:(58*60+32)*2+1024=8048。。

2、在一个娱乐节目上,主持人提供有三扇门(假设为A、B、C),只有1扇门后面有奖品,另两扇门后面是空的,而主持人知道具体哪扇门后有奖品。首先,当你选择了一扇门之后(假设A),主持人会把剩下两扇门中的一扇没有奖品的门打开(假设打开的空门为B),现在你有一次机会决定是否要交换重新选择,如果你坚持选择A,你中奖的概率是(1/3),如果你交换选择C,你中奖的概率是(2/3)   http://en.wikipedia.org/wiki/Monty_Hall_problem  分析:

                                           

假设你选择的1门,而主持人打开的是3门,则奖品在2门后面的概率是:

3、一棵深度为h的满二叉树,其最末一层共有(2^h)个节点(根节点深度为0)

4、下面程序的运行结果为(1   3   2

void foo(int *a , int *b)
{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}

void main()
{
int a = 1 , b = 2 , c = 3;
foo(
&a , &b);
foo(
&b , &c);
foo(
&c , &a);
printf(
"%d %d %d\n",a,b,c);
}

分析:foo()函数实现两个数的交换。。

5、4个结点可以构造出(14)个不同的二叉树

分析: Catalan数C(2n,n)/(n+1)。。

6、设有n个无序的记录关键字,则直接插入排序的时间复杂度为(O(n^2)),快速排序的平均时间复杂度为(O(nlgn)

7、设一组初始记录关键字序列为(20,18,22,16,30,19),则以20为中轴的一趟快速排序结果为(19,18,16,20,30,22

分析:快排步骤

1)设置两个变量I、J,排序开始的时候I:=1,J:=N;
2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];
3)从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换;
4)从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换;
5)重复第3、4步,直到I=J;

代码:

int QKPass(RecordType r[], int left, int right)
{
RecordType x
= r[left]; //基准记录选为第一个元素
int low = left;
int high = right;

while(low < high)
{
while(low = x.key) high--;
if(low ;}

while(low ;
if(low ;}
}
return low;
}

8、C语言的函数参数传递方式有传递    和  传递 地址

分析:值传递,引用传递

9、分配在堆上和栈上的内存,哪一个需要手动进行内存释放?   堆上的内存

10、冒泡排序的时间复杂度是 O(n^2)

三、问答题

1、有一个单向循环链表队列,从头开始报数,当报到m或者m的倍数的元素出列,根据出列的先后顺序重新组成单向循环链表。
函数原型: void reorder(Node **head , int m)

分析:约瑟夫环的形式。head为二级指针,是重新组织后的循环单链表的表头。

解法二:找规律:递推公式

f[1]=0;
f[i]
=(f[i-1]+m)%i; (i>1)
#include 
int main()
{
int n, m, i, s = 0;
printf (
"N M = ");
scanf(
"%d%d", &n, &m);
for (i = 2; i <= n; i++)
{
s
= (s + m) % i;
}
printf (
"\nThe winner is %d\n", s+1);
}

2、优酷是中国第一的视频网站,每天有上亿的视频被观看,现在公司请研发人员找出最热门的视频。
该问题的输入可以简化为一个字符串文件,每一行都表示一个视频id,然后要找出出现次数最多的前100个视频id,将其输出,同时输出该视频的出现次数。
1、假设每天的视频播放次数为3亿次,被观看的视频数量为一百万个,每个视频ID的长度为20个字节,限定使用的内存为1G。请先描述做法,再写代码。
2、假设每个月的视频播放次数为100亿次,被观看的视频数量为1亿个,每个视频ID的长度为20个字节,一台机器被限定使用的内存为1G。
那么想找这个月被播放次数最多的前100个视频,应该怎么做?请描述清楚可能的办法。

分析:海量数据的处理。无法一次性装入内存,可先hash之分为多个文件处理,堆或者Trie树统计次数,求出每个文件中的Top 100。归并之求出总的top 100。
对于第二问:还可以hadoop mapReduce处理之。
首先统计每个视频被观看次数,得到键值对,其中id为视频id,cnt为视频被观看次数。
以cnt作为关键字建立最小堆。遍历所有键值对,若堆的size小于100,则将键值对直接插入堆,否则比较键值对和堆顶元素大小,若cnt大于堆顶元素的cnt,则弹 出堆顶元素并将键值对插入堆。
对于第一问,由于id个数较少,统计部分可直接使用stl的map容器。
对于第二问,由于id个数太大,直接hash内存不够,需要hadoop或mapReduce处理。

3、给你一个由n-1个整数组成的未排序的序列,其元素都是1到n中的不同的整数。请写出一个寻找序列中缺失整数的线性时间算法。

异或运算就可以解决了

#include 
int getTheNum(int *a,int n)
{
int result = a[0];
for(int i = 1;i<=n-2;i++)
{ result
^= a[i]^i;
}
result
^= (n-1)^n;
return result;
}
int main()
{
int a[] = {1,3,4,6,5,7};
printf(
"%d",getTheNum(a,7));
}

分析:简单表示:

int a,b ;
a = 这个 n -1 个数的异或运算 (1 ^ 2 ^3 ^.....) ;
b = n个数的异或运算 ;
然后那个缺失的数就等于 a ^ b ;


推荐阅读
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 在拉斯维加斯举行的Interop 2011大会上,Bitcurrent的Alistair Croll发表了一场主题为“如何以云计算的视角进行思考”的演讲。该演讲深入探讨了传统IT思维与云计算思维之间的差异,并提出了在云计算环境下应具备的新思维方式。Croll强调了灵活性、可扩展性和成本效益等关键要素,以及如何通过这些要素来优化企业IT架构和运营。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • SRM 553:深入解析供应链管理系统的最新进展与应用本文详细探讨了供应链管理系统(SCM)的最新发展及其在实际应用中的影响。通过对当前技术趋势的分析,文章揭示了 SCM 在提高效率、降低成本和增强透明度方面的关键作用。此外,还介绍了几种创新的 SCM 解决方案,如区块链技术和人工智能的应用,以及这些技术如何帮助企业更好地应对市场变化和挑战。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在Python多进程编程中,`multiprocessing`模块是不可或缺的工具。本文详细探讨了该模块在多进程管理中的核心原理,并通过实际代码示例进行了深入分析。文章不仅总结了常见的多进程编程技巧,还提供了解决常见问题的实用方法,帮助读者更好地理解和应用多进程编程技术。 ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • 针对NOJ1102黑白图像问题,本文采用深度优先搜索算法进行详细分析与实现。该问题要求在给定的时间限制(普通Java为1000-3000毫秒)和内存限制(65536KByte)内,处理一个n×n的黑白图像。通过对图像的逐像素遍历,利用深度优先搜索算法有效地识别并标记相连的黑色区域,从而实现图像的高效处理。实验结果显示,该方法在多种测试用例中均能稳定达到预期效果,具有较高的准确性和效率。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
author-avatar
值兰修女_662
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有