博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里巴巴2011届实习生招聘笔试题及分析
阅读量:6580 次
发布时间:2019-06-24

本文共 2358 字,大约阅读时间需要 7 分钟。

完整试题:

參考:。

以下的【分析】是我给出的。

 

阿里巴巴2011届实习生招聘笔试题

公共题

选择题(每题5分)

1. 若一棵二叉树具有10个度为2的结点,则该二叉树的度为0的结点个数是(     

A9    B11    C12    D:不确定 

2.下列排序算法中,其时间复杂度和记录的初始排列无关的是(     

A:插入排序    B:堆排序    C:高速排序  D:冒泡排序 

3.已知中序遍历的序列为abcdef,高度最小的可能的二叉树的叶子是(    

Aace      Bacf        Cadf       Dcdf 

4.參加百年阿里培训的n位同学结伴去西湖旁边为游人指路,两人一组,他们打算先让体重之和恰好为102公斤的同学一组,请给出一个算法找到这种组合,或者确定他们中不存在这种组合,当中最优的算法时间复杂度为?(如果体重均为整数)    

AO(log(n))    BO(n)     CO(n log(n))   DO(n^2)

【分析】经典问题,数组中随意两个数的和等于给定数。

5.众所周知数据结构中很主要的树结构包含二叉查找树(BST)。当我们把例如以下序列:105194137631按顺序建立一棵BST时,树的最大深度是?(令根节点深度为0,运行不进行平衡的基本插入)    

A5    B   C3    D

6.阿里巴巴启用了新的办公大厦,这里的一切都充满了现代感;project师们打算在娱乐区用大小相等的圆形材料切割出一些空间,使用A,B,C三个圆形材料,最多能够将空间分为八个区域(包含圆形以外的区域),假设给你五个圆形材料,你最多能够帮助project师们分出多少个空间?    

A20    B22      C26    D32 

【分析】:3个圆:把空间分为8各区域,图例如以下,圆中有7个区域,加上圆外的区域,共8个。

4个圆:随意两圆都相交且随意三圆不交于同一点时分平面的部分数最多,第四个圆被前三个圆分成六段圆弧,每一段圆弧将原来所在平面区域又分成两部分,所以添加了6个部分,三个圆最多能将平面分成8+6个=14个部分;

5个圆:随意两圆都相交且随意三圆不交于同一点时分平面的部分数最多,第五个圆被前四个圆分成八段圆弧,每一段圆弧将原来所在平面区域又分成两部分,所以添加了8个部分,三个圆最多能将平面分成14+8=22个部分.

通项公式:F(n)=F(n-1)+2*(n-1),n2F(1)=2

JAVA部分

选择题(每题5分)

1、 有例如以下一段代码,请选择其执行结果:(       ) 

public classTest {

    private static final String MESSAGE ="taobao";

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Stringa = "tao" + "bao";

        Stringb = "tao";

        Stringc = "bao";

        System.out.println(a ==MESSAGE);

        System.out.println((b +c) == MESSAGE);

    }

}

A true true     B false false     C true false   D false true 

【分析】:a和MESSAGE引用同一个对象,而(b + c)不是一个对象。

2、 下面哪几种方式可用来实现线程间通知和唤醒:(       ) 

A Object.wait/notify/notifyAll         B ReentrantLock.wait/notify/notifyAll 

C Condition.await/signal/signalAll       D Thread.wait/notify/notifyAll 

3、 下面集合对象中哪几个是线程安全的?(       )

A  ArrayList      B  Vector     C  Hashtable     D  Stack 

【分析】:ArrayList是线程不安全的,轻量级的,Vector是线程安全的,重量级的,stack继承自Vector。   

4、 有下面一段代码,请选择其执行结果。(       ) 

public classSpike {

    public static void main(String[] args) {

        Countera = new Counter();

        System.out.println(a.increment());

        System.out.println(a.anotherIncrement());

        Counterb = new Counter();

        System.out.println(b.increment());

    }

}

 

class Counter {

    private static int count = 0;

 

    public int increment() {

        returncount++;

    }

 

    public int anotherIncrement() {

        return ++count;

    }

}

 A: 1 1 1          B: 1 2 3         C: 0 2 2            D 0 2 0

综合题(每题15分)

1 分析MergeSort的原理以及算法复杂度,并用最擅长的编程语言实现MergeSort

2)给定一个数t,以及n个整数,在这n个数中找到加和为t的全部组合,比如t = 4, n = 6,这6个数为 [4, 3, 2, 2, 1, 1],这样输出就有4个不同的组合它们的加和为4:4, 3+1, 2+2, and 2+1+1.  请设计一个高效算法实现这个需求。

【分析】:经典的“子集和问题”,用回溯法求解,我还在学习中。

C&C++部分(略)

转载地址:http://uinno.baihongyu.com/

你可能感兴趣的文章
怎么检查网站的死链接呢?
查看>>
scrapy爬虫框架实例一,爬取自己博客
查看>>
React是UI的未来吗?
查看>>
中国人社部:2018年15个省(区、市)调整最低工资标准
查看>>
手把手教你通过Thrift 访问ApsaraDB for HBase
查看>>
MacOS安装MySQL 报错
查看>>
Java知识点总结(反射-反射操作泛型)
查看>>
Vue+webpack+Element 兼容问题总结
查看>>
《软技能》读书笔记(下)
查看>>
textarea文域高度自适应
查看>>
go语言renderer包代码分析
查看>>
【Scala谜题】成员声明的位置
查看>>
git最最最最...常用命令
查看>>
复杂recyclerView封装库
查看>>
使用Redis构建文章投票网站(Java)
查看>>
见微知著 —— Redis 字符串内部结构源码分析
查看>>
Command './js-ant' failed to execute
查看>>
阿里云NFS NAS数据保护实战
查看>>
Spring cloud配置客户端
查看>>
产品研发项目管理软件哪个好?
查看>>