笔试题--阿里巴巴往年秋招

一、写在前面

  在牛客上作答了阿里的一些秋招题,现来分享一部分简单的题目。若有不足欢迎指正。

二、秋招试题

1.有个特殊的餐厅,对客人的要求是如果要离开餐厅一定要看下餐厅内有没有比你迟进来的人,一定要所有比你迟进来的人离开后你才能离开,有一天甲,乙,丙,丁四个客人先后进入了这家餐厅,那么他们离开的顺序不可能是:

A:丙,乙,甲,丁

B:甲,乙,丙,丁

C:乙,甲,丙,丁

D:丁,丙,甲,乙

E:丁,丙,乙,甲

2.以下程序的运行结果是:

A:foobar

B:barfoo

C:foobar或者barfoo都有可能

D:Bar

E:Foo

F:程序无法正常运行

3.一个二叉树有100个子节点数为2的节点,100个子节点数为1的节点,那么个子节点数为0的节点(叶节点)的个数为:

A:101

B:100

C:200

D:300

E:99

F:1

4.由权值分别为1、12、13、4、8的叶子节点生成一颗哈夫曼树,它的带权路径长度为()

A:12

B:68

C:43

D:6

E:25

F:81

5.已知一棵二叉树的先序和中序遍历序列如下:先序:A、B、C、D、E、F、G、H、I,J中序:C、B、A、E、F、D、I、H、J、G其后序遍历序列为:

A:C、B、D、E、A、G、I、H、J、F

B:C、B、D、A、E、G、I、H、J、F

C:C、E、D、B、I、J、H、G、F、A

D:C、E、D、B、I、H、J、G、F、A

E:C、B、F、E、I、J、H、G、D、A

F:C、B、F、E、I、H、J、G、D、A

6.甲乙丙三人是阿里巴巴开发人员,ABC三人是阿里巴巴测试人员,每个开发都有对应的测试人员。主管介绍说:“A对应的开发是乙的好友,并在三个开发中最年轻;丙的年龄比C对应的开发大。”则开发和测试的对应关系为()。

A:甲-A,乙-B,丙-C

B:甲-A,乙-C,丙-B

C:甲-B,乙-A,丙-C

D:甲-B,乙-C,丙-A

E:甲-C,乙-A,丙-B

F:甲-C,乙-B,丙-A

7.某机器人可以说真话或者假话。某程序设定其周末(周六周日)说真话,周四说谎话,其他日期随机。某测试打算验证该功能。他连续七天,每天问机器人“你在哪里出生的?”,在前六天得到了这样的答案:阿里,淘宝,阿里,淘宝,天猫,淘宝。那么第七天,机器人的回答应该是()

A:阿里

B:淘宝

C:天猫

D:阿里或淘宝

E:阿里或天猫

F:天猫或淘宝

三、分析思路

1.第一题考察的是数据结构中的栈,栈的入栈顺序是先入栈的后出栈。

根据以上规则逐一分析后只有 

丁,丙,甲,乙

这组答案是错误的。当乙未出栈时甲不能出栈(除非他刚入栈就出栈 选项B的情况)。

2.该题目考察的是对线程start()和run()的理解,只有start方法会调起线程,而run方法不会。

故此题目中的程序只能自上而下运行,尽管他是一个线程的run方法内部可并没有启动一个单独的线程去跑这个方法。

所以答案是 foobar

3.n0 = n2+1,则可得答案是101,

至于公式的推导嘛

首先,假设该二叉树有n个节点,则有n - 1条边,这是因为除了根节点,其余的每个节点都有且只有一个父节点,那么这n个节点恰好为树贡献了n-1 条边。这是从下往上的思考,而从上往下(从树根到叶节点)的思考,容易得到每个节点的度数和 0*n0 + 1*n1 + 2*n2 即为边的个数。

因此,我们有等式 n-1 = n1 + 2*n2,把n用n0+n1+n2替换,

得到n0 + n1 + n2 - 1 = n1 + 2*n2,于是有

n0 = n2 + 1。

4.赫夫曼树构建

/**
 * 
 *              38
 *          25      13
 *      13     12 
 *    5    8
 * 1   4
 * @author liyichen
 *
 */

相加到根节点的路径,则有13*1 + 12*2 + 8*3 + (1+4)*4 = 81

5.给出先序为:根左右;中序为:左根右,求后序的遍历顺序为:左右根。

根据先序定根,中序定左右就很好构建出树,如下:

/**
 *                       A
 *                B           D   
 *           C           E         G
 *                    F         H
 *                          I      J
 * @author liyichen
 *
 */

6. A对应的开发是乙的好友,并在三个开发中最年轻;丙的年龄比C对应的开发大

前半句中说明A的开发不是乙,而且最年轻,可能是甲丙;

后半句中说明丙不是最年轻的而且自己的测试不是C

则可得

A-->甲

C-->乙

B-->丙

7.周六日说真话,给出的答案有六个,那一定有两个一样的回答。可是并没有,可以说明有两种情况

 ①:给的答案是从周天-->周五这六天的。

   那么第一个就是周天的真话,真话是阿里,假话就是天猫

 ②:给的答案是从周一-->周六这六天的。

   那么最后一个就是周六的真话淘宝,往前推周四的淘宝就是假话,与题意违背。

所以阿里就是真话了。

四、总结

做了试题发现自己很多数据结构都忘记了,当然了这不是阿里笔试题的水准我只是挑了其中最简单的几道题来做分析。

经常复习知识是很有必要的,以上,有不足或者分析有误的地方欢迎指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值