• 阿里巴巴2011届实习生招聘笔试题及分析


    完整试题:

    http://wenku.baidu.com/link?url=nDQF-fN7J9lMHN3V6PWDXYVNfW53LcAXlL4wXV2Ads1oNeMJuSkX3s-9wzxRpt42Y3BDdfG0ICkyl4FQgi88qz_IVnL0AOkKzbnnJzwMMhy

    參考:http://blog.csdn.net/wangran51/article/details/8876234

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

    阿里巴巴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++部分(略)

  • 相关阅读:
    Zookeeper 选举机制
    Hadoop Yarn任务调度器
    Hadoop Yarn工作机制 Job提交流程
    Hadoop 切片机制
    Hadoop MapReduce工作流程
    Hadoop HDFS读写数据流程
    数据仓库 拉链表
    高动态范围照片*5
    Java实现的窗口计算器
    拍摄制作星轨拖尾视频 之 前期拍摄
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4006868.html
Copyright © 2020-2023  润新知