阿里巴巴笔试题目

  • 格式:docx
  • 大小:83.39 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.现有1G数据需要排序,计算资源只有1G内存可用,下列排序方法中最可能出现性能问题的是____。

A.堆排序

B.插入排序

C.归并排序

D.快速排序

E.选择排序

F.冒泡排序

正确答案:C

2.Linux下两个进程可以同时打开同一个文件,这时如下描述错误的是:

A.两个进程中分别产生生成两个独立的fd

B.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性

C.进程可以通过系统调用对文件加锁,从而实现对文件内容的保护

D.任何一个进程删除该文件时,另外一个进程会立即出现读写失败

E.两个进程可以分别读取文件的不同部分而不会相互影响

F.一个进程对文件长度和内容的修改另外一个进程可以立即感知

正确答案:D

一个进程删除该文件后,另一个进程可以继续操作,直到退出以后,才找不到该文件

3.现在有一个程序由A,B两个同学结对编程完成,在整个程序中的代码比例是3:5,据往常的统计A同学的千行代码缺陷率为10‰,B同学的千行代码缺陷率为15‰,现在在改程序中发现了一个缺陷,那么是由A同学的代码引起的缺陷的概率为____。

A.28.6%

B.37.5%

C.40.0%

D.47.4%

E.52.6%

F.71.4%

正确答案:A

记发现BUG为事件BUG,A编写代码为事件A,B编写代码为事件B,则

A编写的代码中发现BUG的概率为P(BUG|A)=0.01%

B编写的代码中发现BUG的概率为P(BUG|B)=0.015%

对于已经编好的一个程序,P(A)=3/8,P(B)=5/8

根据贝叶斯公式得:

P(A|BUG)=P(A)P(BUG|A)/{P(A)P(BUG|A)+P(B)P(BUG|B)}=3/8*0.01%/(3/8*0.01%+5/8*0.015%)

4.猜数字游戏的过程是你输入一个4位数(数字选取0~9,不会重复),电脑会告诉你两个信息:A个数字和位置均正确,B个数字正确但位置错误。例如正确答案是7890你输入0789,电脑会告诉你0A4B,表示有0个数字和位置完全正确,但有4个数字正确但位置错误。现在牛妹猜了三次的结果分别是:1234=>0A4B,2341=>1A3B,3412=>2A2B,那么牛妹最少还要猜____次才能保证一定得到4A0B的结果。

A.0

B.1

C.2

D.3

E.4

F.5

正确答案:D

经过分析,只有可能是以下四种情况

2 4 1 3

3 1

4 2

3 4 2 1

4 3 1 2

现在考虑是否可以知询问一次就得到答案。

A+B的总数量肯定无法提供额外的信息。

所以我们只能通过0A,1A,2A,3A,4A来获取信息。

如果要达到3A ,则只能至少猜一个1,2,3,4以外的数字。

这样的话,这个位置就废掉了,没啥意义。

所以我们只能通过0A ,1A ,2A ,4A 分别区分四种情况

如果用到4A, 如猜2 4 1 3

2 4 1

3 => 2A

3 1

4 2 => 0A

3 4 2 1 => 1A

4 3 1 2 => 1A

无法区分两个1A 的情况,由对称性,猜其他三个类似。

所以我们至少再猜两次才能知道答案。

所以我们至少再猜三次才能保证得到4A

5. 有关下述Java 代码描述正确的选项是____。

1 2 3 4 5 6 7 8 public class TestClass {

private static void testMethod(){

System.out.println("testMethod");

}

public static void main(String[] args) {

((TestClass)null).testMethod();

}

}

A.编译不通过

B.编译通过,运行异常,报NullPointerException

C.编译通过,运行异常,报IllegalArgumentException

D.编译通过,运行异常,报NoSuchMethodException

E.编译通过,运行异常,报Exception

F.运行正常,输出testMethod

正确答案:F

1)此处是类对方法的调用,不是对象对方法的调用。

2)方法是static 静态方法,直接使用"类.方法"即可,因为静态方法使用不依赖对象是否被创建。

null 可以被强制类型转换成任意类型(不是任意类型对象),于是可以通过它来执行静态方法。

3)非静态的方法用"对象.方法"的方式,必须依赖对象被创建后才能使用,若将testMethod()方法前的static 去掉,则会报 空指针异常 。此处也验证了

2)的观点

当然,不管是否静态方法,都是已经存在的,只是访问方式不同。

6.以下函数中,和其他函数不属于一类的是_____。

A.

fread B.

gets C.

getchar D.

pread E. getline F. scanf

正确答案:D

Pread 是系统调用,其他为IO 函数

常见文件系统 系统函数

fcntl 文件控制

open 打开文件

creat 创建新文件

close 关闭文件描述字

read 读文件

write 写文件

readv 从文件读入数据到缓冲数组中

writev 将缓冲数组里的数据写入文件

pread 对文件随机读

pwrite 对文件随机写

7.有一个类A ,其数据成员如下:

1 2 3 4 5 6 7 8 9 10 class A {

...

private:

int a;

public:

const int b;

float* &c;

static const char* d;

static double* e;

};

则构造函数中,成员变量一定要通过初始化列表来初始化的是:______。

A.a b c

B.b c

C.b c d e

D.b c d

E.b

F.c

正确答案:B

构造函数中成员变量一定要通过初始化列表来初始化的有一下几种情况