阿里巴巴2016研发project师笔试题

时间:2021-04-16 20:41:42

阿里巴巴2016研发project师笔试题

问题1:

假设下列的公式成立:78+78=123,则採用的是_______进制表示的。

本题实则考察进制转换。能够设为x进制。可是x进制有一个问题。即我们无法对x进制直接进行加减乘除。故转化为我们常见的10进制。

78=7*x+8。123=1*x2+2*x+3;然后解方程就可以。答案为13进制。


阿里巴巴2016研发project师笔试题


问题2:

下列 java 程序输出结果为______。

int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));


本题考察的是装箱与拆箱,==比較的是值,相同equals也是比較值。故选择true,true。

equals源代码例如以下:

    public boolean equals(Object obj) {
	if (obj instanceof Integer) {
	    return value == ((Integer)obj).intValue();
	}
	return false;
    }

阿里巴巴2016研发project师笔试题

输出的是:hello and cb



问题3

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


public class TestClass {
   private static void testMethod(){
        System.out.println("testMethod");
   }
   public static void main(String[] args) {
        ((TestClass)null).testMethod();
   }
}

阿里巴巴2016研发project师笔试题

本题考察的是静态方法与 类&对象的关系,静态对象属于类,故无论对象是否为空,仍旧会正常执行,输出testMethod。

追问:若将方法static修饰符去掉。又是什么情况?

首先,不会是编译错误,由于符合Java对类型的检查。可是执行时会出现NullPointerException。




问题4

 袋子中分别一叠纸币,当中5元面值的纸币6张,10元面值的纸币5张。20元面值的纸币4张,从袋子中随意取4张纸币,则每种面值至少取到一张的概率为____。


阿里巴巴2016研发project师笔试题

一共的票数为:6+5+4=15张

总的情况数:15张选4 C(15,4)

每种面值至少取一张:可能有三种情况。5元、10元、20元是2+1+1、1+2+1、1+1+2这三种情况。

分析到这里,结果计算,得到结果为48/91



问题5

有一个扔骰子得返现的游戏:你扔一个骰子,扔到多少就能够得到和点数同样的返现。

比如你扔到3,能够得到3元返现;扔到1,能够得到1元返现。

当你扔完第一次骰子。看到点数后。你须要做出例如以下选择:


1、拿这个点数相应的返现。放弃扔第二次骰子;

2、再扔一次骰子,但此时你仅仅能拿第二次扔的点数相应的返现。


那么,玩一轮这个游戏的期望收益是____元。

阿里巴巴2016研发project师笔试题

这道题实际上非常简单,考察的是你扔筛子策略,点数集合为(1,2,3,4,5,6);那么当我扔到(1,2,3)的时候证明手气较平均情况差一些,会再扔一遍,扔到(4,5,6)时证明手气较平均情况好一些。就不再扔。依照这个原则非常easy求得是4.25。



问题6 

一个长度为100的循环链表,指针A和指针B都指向了链表中的同一个节点。A以步长为1向前移动。B以步长为3向前移动。一共须要同一时候移动多少步A和B才干再次指向同一个节点____。


阿里巴巴2016研发project师笔试题

本题实际上能够想象成在运动场跑道上,队员A速度是1。B为3,跑道一圈为100。则多长时间相遇一次,设为t。则:

下次相遇时,3t-t=100。t=50。


问题7

某操作系统採用分页存储管理方式,下图给出了进程A的页表结构。假设物理页的大小为512字节,那么进程A逻辑地址为0x0457(十六 进制)的变量存放在____号物理内存页中。


进程A页表:

逻辑页    物理页

0            9

1            2

2            4

3            6

4            5

5            8

阿里巴巴2016研发project师笔试题

0x0457写成2进制。为0000 0100 0101 0111,而512=2^9,则后9位存放页内地址。前7为为2。相应的物理页为4。


问题8

在一个100人的团队活动中,主持人小猿亮出了一幅裙子的照片,大喊:”看出蓝黑色的举手!“,团队中有45人举手。然后小猿又喊:”看出白金色的举手!“。团队中有40人举手。

灵巧的小猿发现,有人从未举过手,有人举手了两次,两轮举手分出的四类人的数目恰好构成一个等差数列。请问有____人既能看出蓝黑色又能看出白金色。


阿里巴巴2016研发project师笔试题

这题不用在纸上列公式,由于40与45都处于整数的等差数列中,相差为5(不可再分)。故公差就为5;举手两次的是考出白金色的子集。故小于40,仅仅可能是30或者35;若为30,则均未举手的是35,单独蓝黑举手的是45-30=15。单独白金举手的是40-30=10,而30+35+15+10=90≠100;故两次都举手仅仅可能35。



问题9

将1,2,3,......,99,100随意排列成一个圈,相邻两数的差的绝对值求和最多为____。


阿里巴巴2016研发project师笔试题

本题能够拿1,2,3,4做实验,发现最大的4必须和1,2相邻。最小的1必须和最大的3、4相邻。进而推广:

100必须和1,2相邻;1必须和99、100相邻。......

最后排布顺序是:1,100,2,99,3,98.......50,51。故结果为99+98+.......+1+(51-1)=5000



问题10

 已知二叉树中有45个叶节点,有25个度为1的节点。则二叉树的总结点数为____。

阿里巴巴2016研发project师笔试题

叶子节点45个,度为2的节点则为44个。结果等于45+25+44=114


问题11

某单链表有5个元素,设单链表的节点结构为(data,next),5个元素的data依次为(1、2、3、4、5),已知指针q指向节点3,指针p指向节点4。那么以下操作能将链表变为data依次为(1、2、3、5)的是____。

(当中temp为节点类型指针,默认指向NULL)

阿里巴巴2016研发project师笔试题

狸猫换太子。这题非常easy。选择最后一个;将5节点的值传给须要4节点,然后在释放5节点即可;详情可參考编程之美。


问题12

 在1,2,3,.....1000中,有____个数各位乘积为0。

阿里巴巴2016研发project师笔试题

分为两段:

1-100,仅仅有是10、20、.......100这10个数满足要求。

101-1000,能够分为9段,101-200、201-300........901-1000。每一段情况一样,故拿出101-200这一段。101、102、.......109这9个数满足,110、120、......200这10个数也满足。

故总数为10+9*(9+10)=181。



阿里巴巴2016研发project师笔试题问题13

 A、B、C、D四人应聘一个程序猿职位,此职务的要求条件是:Java熟练;懂数据库开发;会Web开发;有C++经验。

谁满足的条件最多,谁就被雇用。(1)把上面四个要求条件两两组合,每一个组合都恰有一人满足。同一时候已知(2)A和Bjava熟练(3)B和C会Web(4)C和D懂数据库(5)D有C++经验那么,被雇用的是____。

阿里常常会出这种问题,仅仅能大胆如果、小心求证了。

猜測得:JAVA(A、B) 数据库(A、C、D) web(B、C) C++(B、D)

故选择B


问题14

 有一个单向链表队列中有一个A、B两个相邻元素,有一个指针p指向元素A,现将一个指针r指向的S元素要插入到A和B之间,该进行操作____。

r->next=p->next;p->next=r

阿里巴巴2016研发project师笔试题

插入节点很easy。仅仅须要注意先后顺序就可以。



阿里巴巴2016研发project师笔试题问题15

A为整数数组, N为A的数组长度,请问运行下面代码。最坏情况下的时间复杂度为____

void fun(int A[], int n) {                                                                       
    for (int i = n - 1; i >= 1; i--) {                                                          
        for (int j = 0; j < i; j++) {                                                            
            if (A[j] > A[j+1]) {                                                                
                int tmp = A[j + 1];                                                              
                A[j + 1] = A[j];
                A[j] = tmp;
         }
      }
   }
}


类似于冒泡,复杂度O(n2)



问题16

 将整数数组(7-6-3-5-4-1-2)依照堆排序的方式原地进行升序排列。请问在整个排序过程中,元素3的数组下标发生过____次改变。

阿里巴巴2016研发project师笔试题

考察堆排序的先后顺序,改变2次。绘图分析就可以。