2016年阿里校招笔试题(JAVA研发岗)

一、单项选择题

1. ABC三个同学头上分别有三个数字abc,他们看不到自己头上的数字,但可以看到其他两人的。比如B同学能看到ac,但看不到b。已知1<=a,b,c<=9,并且各不相等。ABC三个人以此进行了如下发言:

A说:要么a不是b+c的约数,要么a=b+c

B说:我知道我头上数字了,ca的倍数

C说:我也知道我头上数字了

那么a+b+c_____

A. 8

B. 9

C. 10

D. 11

E. 12

F. 7

 

3. 众所周知我们所处的宇宙的质能公式是E=mc2,其中c是真空中的光速,和我们的宇宙平行的另一个宇宙meta,研究显示他们使用的质能公式是E=(2+√3)m,当一个物体质量m很大的时候,对应的能量E非常大,数据也非常的长,但meta宇宙里面的智慧生物只愿意把E取整,然后记录对应的能量E的最后一位整数,比如m=0时,他们会记录1m=1时,他们会记录3m=2的时候,他们会记录3。现在请问当m=100时,他们会记录多少?

A. 1

B. 2

C. 3

D. 4

E. 5

F. 6

 

4. 下列关于进程间通信的说法中错误的是:

A. 可以通过网络进行进程间通信

B. 信号量也可以用作进程间通信

C. Linux中则只能用管道做进程通信

D. 通过return返回值也可以在进程间通信

E. 在进程间共享一块内存可以做通信

F. 进程间通信效率通常比网络通信效率高

 

6. 多项式P(x)=a+bx+cx^2+dx^3

对于任意x,计算p(x)中最少需要用到乘法操作的次数是多少?

A. 3

B. 4

C. 5

D. 6

E. 1

F. 2

 

 

7. 甲乙两个人对赌,甲估计自己赢的概率为1/3,乙估计自己赢的概率为2/5,实际上双方赢的概率各为1/2。甲乙二人都知道双方各自估计的赢的概率,但并不清楚实际上赢的概率。甲乙两人同时亮出筹码,如果某一方觉得对方筹码太少可以退出游戏,获胜的人会赢取双方所处的筹码。以下命题中正确的是:

A. 甲赢钱的期望大于0

B. 乙赢钱的期望大于0

C. 不管双方各自估计自己赢的概率是多少,甲乙二人赢钱的期望都等于0

D. 甲乙两人赢钱的期望都小于0

E. 甲乙两人赢钱的期望都大于0

F. 甲乙二人必然会至少有一人退出比赛

 

16. 同时掷4个骰子,数字加起来和为22的概率为x/1296x的值为?

A. 7

B. 8

C. 9

D. 10

E. 11

F. 12

 

17. 一个机器人玩抛硬币游戏,一直不停的抛一枚不均匀的硬币,硬币有AB两面,A面概率为2/3B面概率为1/3,问第一次出现连续的两个A面的时候,机器人抛硬币的次数的期望是多少?

A. 9/4

B. 11/4

C. 15/4

D. 4

E. 5

F. 9/5

 

18. 在一个二分类学习案例中,正负样本分别为10万和100万,这些样本中有5000个特征完全相同的正样本和负样本对,小张同学将这些样本对从样本集中删除。以下说法正确的是:

A. 由于删除的样本对特征相同,分类相反,因此可以完全抵消,训练出的模型不变。

B. 由于负样本较多,因此删除后负样本被错分到正样本的比例升高。

C. 这个做法可以显著降低运算量,因此可取

D. 这样只去除样本对中的负样本,效果可能更好

E. 样本的变更对于分类结果的比例影响可以忽略不计。

F. 以上答案都不对。

 

19. Android客户端中编码中,以下哪个行为是必要的:

A. bitmap使用后立即调用recycle方法

B. 在页面activity类的finalize方法中注销广播的监听

C. activityonDestory方法中将成员变量值置为null

D. 在使用aidl接口时自己控制多线程安全

E. 在内部类增加public修饰符

F. 页面布局xml文件名和对应的Activity类名需相同

 

20. 以下是求一个数组最大值的代码,它的运算最差时间复杂度和最差空间复杂度是____

 

int Max(int arr[], int length)

{

if(length == 1){

return arr[0];

}

int mid=length/2;

int left=Max(arr,mid);

int right=Max(arr+mid,length-mid);

return (left>right?left:right);

}

 

A. 时间复杂度:O(n),空间复杂度:O(1)

B. 时间复杂度:O(n),空间复杂度:O(log(n))

C. 时间复杂度:O(n*log(n)),空间复杂度:O(1)

 

二、问答题

1www.abc.com是一个视频点播网站,Arbergo是一个基础存储系统,它为该视频网站提供了基础服务描述如下:

该系统存储了全部需要下载的文件,并提供JAVA接口用于视频文件下载

接口允许指定1n个文件名下载多个文件

接口返回的文件内容支持分片,例如file.part1,file.part2

接口定义时需考虑到异常情况

接口支持按照指定文件区间下载,例如,下载file1的第101个字节到文件末尾,下载file2的第1个字节到第100个字节。

该系统实现了基于SATA硬盘和SSD硬盘的混合存储。混合存储的特点是SATA硬盘的存储空间更大,但访问速度更慢,SSD硬盘存储空间较小,但访问速度更快。文件在两种磁盘类型中可以迁移。

 

问题1:请用java语言完成该系统中描述的对外提供的接口定义,并用注释说明该接口各个参数的含义以及取值范围。

问题2:针对Arbergo系统在#6中描述的混合存储特点,请用文字描述该系统的设计思路。设计思路可以包括但不限于文件在磁盘中的分布,文件在不同磁盘类型中的迁移规则,访问规则。

 

 

2Maven的一个核心特征是依赖管理。他通过读取依赖项目文件(pom.xml中)来发现所有需要依赖的库。pom.xmlmaven依赖定义类似:

<dependency>

<groupid>org.springframework</groupid>

<artifactid>spring-core</artifactid>

<version>3.1.2.RELEASE</version>

</dependency>

<dependency>

<groupid>commons-collections</groupid>

<artifactid>commons-collections</artifactid>

<version>3.2.1</version>

</dependency>

其中每个artifactid又有自己的pom.xml,里面也有类似的依赖定义。

 

比如有一个javaA,依赖于其他库B,我们的项目引用A的时候,很可能也需要把B引入进来,maven就提供了这样的功能,可以管理各种间接的依赖。举个例子:一个项目依赖了AB两个库,A又依赖了C,D,其中D又依赖了FB依赖了E,他们的依赖树大概是这样的:

项目___|____A

       |   |_____C

       |   |_____D

       |    |_____F

       |_____B

           |_____E

maven在打包过程中会把依赖A,B,C,D,E,F都引入进来

 

但这个依赖很可能会有一些冲突的情况:

 

case1:我们在项目中分别引入了2个依赖ABA又依赖的CC又依赖了DB也依赖了D,但是这个时候C依赖的DB依赖的D的版本是不同的:

项目----A---C----D

项目----B---D

也就是说,当前项目引入了2D依赖,那么这时,Maven将采用第一原则:路径最近原则

 

case2:我们在项目中分别引入了2个依赖AB,而AB又都引入了C。但是,此时A依赖的CB依赖的C版本是不一致的,那么这个时候Maven如何处理呢?

这时,第一原则已经不起作用了,在Maven2.0.9之后的版本中,制定了第二原则:第一声明者优先

 

请尝试用java代码描述maven的依赖关系建立过程,注意只能使用基本类型和数值(如用到map,list,set等需要自行实现)。

 

 

 


3hotspotsun.jdk默认虚拟机,堆内存结构主要分为新生代、老年代,新生代包含Eden空间、From Survivor空间、To Survivor空间、用JAVA程序模拟实现hotspot虚拟机的堆内存结构并且实现两个方法:

方法1:模拟实现创建一个新对象后堆内存分配过程

方法2:模拟实现垃圾回收过程(垃圾回收按分代回收算法,实现新生代和老年代的垃圾回收过程)

最后写一个主函数,通过调用方法1,从而出发方法2.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值