2018阿里巴巴秋招试题目录2018阿里巴巴秋招试题 (1)2018阿里巴巴秋招正式试题 (2)一、选择题 (2)二、简答题 (7)2018阿里巴巴java秋招试题 (13)一、单项选择题 (13)二、编程题 (27)2018阿里巴巴秋招正式试题一、选择题1.下面代码中,当点击点我时,输出的正确结果是:B<div id="div2"><div id="div1">点我</div></div>var div2=document.getElementById('div2');var div1=document.getElementById('div1');div1.addEventListener('click', function(event){console.log("A");}, true); div2.addEventListener('click', function(event){console.log("B");});div1.addEventListener('click', function(event){console.log("C");}, false); div2.addEventListener('click', function(event){console.log("D");}, true);A、A B C DB、D A C BC、A D B CD、D C A BE、B D A C2.关于Fetch API,以下描述错误的是:FA、fetch() 返回的是一个Promise 实例B、Fetch API 可以结合async / await 使用C、Fetch API 提供的API 囊括但不限于XHR 的所有功能D、Fetch API 可以跨域E、Fetch 提供了对Request 和Response 对象的通用定义F、fetch() 必须接受一个参数:资源的路径3.以下代码片段在Node.js 环境下执行的结果顺序是:C setTimeout(function () {console.log('1');}, 0);process.nextTick(function(){console.log("3");});console.log('2');setImmediate(function(){console.log("4");A、2、1、4、3B、2、1、3、4C、2、3、1、4D、4、1、2、3E、4、2、1、3F、1、4、2、34.以下哪个标签不属于svg 元素:CA、<circle>B、<ellipse>C、<rectangle>D、<marker>E、<polyline>F、<animate>5.关于ES6 当中箭头函数说法错误的是:AA、箭头函数可以使用yieldB、箭头函数不可以用作构造函数C、不会改变this 的指向D、箭头函数是Function 的实例E、箭头函数函数体没有花括号可以做为返回值F、内部不能访问到arguments 对象6.关于JavaScript 中的函数,以下说法正确的有:BF在已知名称的函数的函数体声明语句之外,不能获知该函数的形参个数A、在函数内部,可以通过arguments 获取函数的实参个数B、因为arguments 是Array 的实例,因此可以使用数组的方法去操作它C、对同一个函数foo,使用new foo() 和foo() 调用的结果是一样的D、如果一个函数中没有使用return 语句,则它默认返回nullE、如果函数的实参是一个引用对象,则对应形参会和该实参指向同一个对象F、如果函数的实参是一个引用对象,则对应形参会和该实参指向同一个对象7.关于CSS 的position 属性,下列说法中正确的是:AD默认值是relativeA、值为static 时,left、right、top、bottom 的值无效。
B、fixed 相对于页面视口定位C、absolute 是相对于body 标签定位D、absolute 的元素可以设置外边距(margins),且不会与其他边距合并E、fix 和absolute 相对的定位对象是一样的8.关于ES6类(Class)的实现,以下表述正确的是:ABDEA、ES6 的class 只是一个语法糖,实际上还是基于原型来实现的B、如果没在class 里面定义constructor 方法,编译器会自动帮你添加C、ES6 的class 中支持定义私有属性D、和ES5 一样,同一个类的所有实例共享一个原型对象E、如果没有显式指定构造方法,则会添加默认的constructor 方法修改基类的原型,派生类实例的原型不会被修改二、简答题1.变量data 为树状结构,数据大小层次不固定,格式如下:const data = [{"id": '1',"children": [{"id": '1-1',"children": [],"value": "a-1",},{"id": '1-2',"children": [],"value": "a-2",},],"value": "a",},{"id": '2',"children": [{"id": '2-1',"children": [{"id": '2-1-1',"children": [],"value": "c-1",},],"value": "b-1",},],"value": "b",},{"id": '3',"children": [],"value": "c",},];请实现个方法transformData, 递归处理数据,给所有的父节点(children 不为空的)添加一个字段relateId, 值为当前第一个子节点(children 为空的)id 的值。
如上面的数据经过处理后的结果为:[{"id": "1","children": [{"id": "1-1","children": [],"value": "a-1"},{"id": "1-2","children": [],"value": "a-2"}],"value": "a","relateId": "1-1" },{"id": "2","children": [{"id": "2-1", "children": [{"id": "2-1-1","children": [],"value": "c-1"}],"value": "b-1","relateId": "2-1-1"}],"value": "b","relateId": "2-1-1"},{"id": "3","children": [],"value": "c"}]2.下面HTML 中的内嵌JS 代码会生成一个列表,格式为"{index}. {点击目标的全名}"。
于此同时当点击列表中的某个名字会在控制台中输出"click on no.{点击目标的index} {firstName},{lastName}"。
请尝试指出代码中存在的BUG以及可能会发生的性能问题,并从优雅、高效、可读性以及性能方面进行优化,在指出问题的同时请尽量给出修正代码。
<meta charset="UTF-8"><title>Title</title><ul id="list"></ul><script>maxLength = 4;list = document.querySelector('#list');function processName(name) {return {firstName: name[0],lastName: name[1],getFullName() {return this.firstName + ' ' + stName;},};}var names = [['Gregor', 'Bachmann'],['Anita', 'Bruns'],['Anke', 'Dorn'],['Ulrich', 'Koch'],['Dietrich', 'Riedl'],['Wolfgang', 'Jahn'],['Gesine', 'Sturm'],['Theodor', 'Petersen'],];var validCount = 0;for (var i = 0; i < names.length; i += 1) {var flag1 = names[i][0].indexOf('A') !== 0;var getFullName;if (flag1 && names[i][0].length >= 4) {getFullName = processName(names[i]).getFullName;var lastName = processName(names[i]).lastName;var firstName = processName(names[i]).firstName;var span = document.createElement('li');var textNode = document.createTextNode(i + 1 + '. ' + getFullName());span.appendChild(textNode);span.addEventListener('click', function () {console.log('click on no.' + i + ' ' + firstName + ',' + lastName);});if (validCount + 1 > maxLength) {continue;}validCount += 1;list.appendChild(span);}}</script>2018阿里巴巴java 秋招试题一、单项选择题1、以下函数的时间复杂度是 ( )1 2 3 4 5 6 7 8 9 void func(int x,int y,int z){if(x<=0)printf("%d, %d\n", y,z);else{func(x -1,y+1,z);func(x -1,y,z+1);}}A.O(x*y*z)B.O(x^2*y^2)C.O(2^x)D.O(2^x*2^y*2^z)E.O(x!)F.O((x*y*z)!)参考答案:C2、在一台64位的计算机上,以下哪段C 语言代码与代码(x[2]+4)[3]等价(x 的类型是int **)()A.*((*(x+16))+28)B.*((*(x+2))+7)C.**(x+28)D.*(((*x)+2)+7)E.*(((*x)+16)+28)F.**(x+9)参考答案:B3、关于ios和Android应用以下描述错误的是()A.ios和Android应用界面都可以通过IDE可视化界面拖拽完成布局,也可以在运行时通过代码布局B.Objective C的ARC和Java的GC,都是一种运行时内存管理机制C.ios和Android应用都可以发布或接收通知来进行跨进程通信D.Ios和Android应用都在调用某些系统功能如相机时,需预先拥有相应权限E.ios和Andriod应用都拥有各自独立、安全隔离的文件空间F.ios和Andriod应用都可以注册自定义URL Scheme参考答案:C4、堆栈中有元素abcdef,每次出栈可以选择一个或者两个元素栈,当有两个元素出栈时可以选择其中一个重新入栈,则所有元素为空,那么可能的出栈方式有()种?A.23B.22C.21D.20E.19F.18参考答案:C5、下列关于linux中kernel space和user space描述错误的是()er space不能直接对文件进行写操作B.程序代码能手动指定在哪个space中运行er space不能直接创建进程er space和kernel space的运行空间是相互隔离的E.Kernel space可以执行任意系统命令er space中运行出错不会影响kernel space参考答案:B6、请阅读下面代码,计算运行结果:public class C{ static class A{} static class B extends A{} public static void main(String[]args){ArrayList<A> list= new ArrayList<A>();list.add(new B()); method1(list);} private static void method1(List<?[侯萍1] supper A> list) { for(int i=0;i<list.size();i++){A a = list.get(0);}} }以上程序的运行结果可能出现的是:()A.list.add(new B())编译报错B.method1编译报错C.A a=list.get(0)编译报错D.程序正常运行E.list.add(new B())与method1(list)都编译报错F.list.add(new B())与A a=list.get(0);编译报错参考答案:C7、请阅读下面代码,计算运行结果;1 2 3 4 5 6 7 8 9 1 0 1 1 1 2public class ThreadTest{private static AtomicInteger atomicInteger=new AtomicInteger();public static void main(String[]args){A a=new A();try{atomicInteger.wait();} catch (InterruptedException e){e.printStackTrace();}a.start();}static class A extends Thread{ <a class="js-nc-card" data-card-uid="992988" href="/profile/992988" target="_blank">@Override public void run(){ atomicInteger.notify();zySet(1);1 3 1 4 1 5 1 6 1 7 1 8System.out.println(atomicInteger.get()); }}}</a>以上程序的运行结果是:()A.编译报错,有未捕捉的异常B.程序正常运行后,一直holdC.程序正常运行,控制台打印出1D.程序正常运行,控制台打印出0E.程序编译通过,但运行时报错F.以上都不对参考答案:A8、在一台6G内存Linux操作系统的机器上,coredump打开且大小不做限制,执行下面的程序分别会发生什么?(1)1#include<stdio.h>2 3 45 6 7 8 #include<stdlib.h>int32_t main(){unit64_t size=8*1024*1024*1024L; char* a=new char(size);*(a+1)='a';return 0;}(2)1 2 3 4 5 6 7 8 #include<stdio.h> #include<stdlib.h> int32_t main(){ unit64_t size=10*1024*1024*1024L; char* a=new char(size); *(a+1)='a'; return 0; }(3)1 2 3 45 6 7 8 #include<stdio.h>#include<stdlib.h>int32_t main(){unit64_t size=7*1024*1024*1024L; char* a=new char(size);*(a+size -1)='a';return 0;}A.coredump,coredump,coredumpB.正常,coredump,正常C.正常,正常,coredumpD.coredump,正常,coredumpE.coredump,正常,正常F.正常,coredump,coredump参考答案:A9、下列程序的输出是()1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1#include<iostream>using namespace std;class A{public:A(int n):m_n(n){}int cal(){int result= 0,i= 0,j= 0;for(int k= m_n;k>0;k--){if(j>0)j= k*10+j;elsej= k;while (j>=10) {int t= j% 100;j= j/ 100;result= ((i++ % 2==0) ?3 14 15 16 17 18 19 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7result+t:result-t);}}if(j>0)result= ((i++ % 2==0) ? result+j:result-j);return result;}private:int m_n;};int main(){A a= A(101);cout<<a.cal()<<endl;return 0;}28293A.-80B.-79C.0D.90E.79F.80参考答案:A10、用0,1,2,3,4,5组成一个4位数,要求每一位都不一样,请问能组成多少个四位数()A.240B.280C.300D.360E.400F.450参考答案:C11、小明有200个淘公仔,小梅有20个电脑包,每次小明给小梅6个淘公仔,小梅就给小明1个电脑包,经过多少次交互后,小明手中的淘公仔的个数是小梅手中电脑包数量的11倍?()A.4B.5C.6D.7E.8F.9参考答案:A200-6n=11(20-n)解析:n=412、以下描述正确的是()A.线性规划问题是一个NP-Hard问题B.因为单纯形法可以保证在限步数内收敛,所以是复杂度为多项式级别的算法,用于解决线性规划问题C.内点法只用于解决线性规划问题D.线性规划区别于非线性规划的地方在于,其达到最优点的时候不需要满足K-K-T 优化条件E.一个可解的线性规划问题的主问题和对偶问题分别达到最优化的时候,最优值一定相等F.以上都不对参考答案:B13、设有一个二维数组A[m][n],假设A[0][1]存放位置在1601(10),A[3][3]存放位置在1648(10),每个元素占一个空间,问A[2][2](10)存放在什么位置?脚注(10)表示用10进制表示。