快捷搜索:

阿里巴巴2019面试题集锦(含答案)

本文是阿里巴巴 2019 口试题集锦(含谜底),是阿里巴巴自身技巧专家们结合多年的事情、口试履历总结提炼而成的口试真题。经由过程这些口试题,还可以间接地懂得技巧大年夜牛们出题思路与考察要点。

想要入职大年夜厂可谓是千军万马过独木桥。要经由过程层层磨练,刷题肯定是必弗成少的。

为赞助开拓者们提升口试技能、有时机入职阿里,云栖社区分外制作了这个专辑——阿里巴巴资深技巧专家们结合多年的事情、口试履历总结提炼而成的口试真题这一次整体放出。

这一次,不仅是常识的劳绩,还将间接地与技巧大年夜牛们做了直不雅的沟通,懂得他们的出题思路与考察要点,并加以消化接受,这对自己技巧能力本身便是一种极大年夜的提升。走上编程之路,赓续富厚自己方能与世接轨,努力做最优秀的自己。

口试题001:若何实现一个高效的单向链表逆序输出?

——阿里巴巴出题专家:昀龙/阿里云弹性人工智能认真人

参考谜底

下面是此中一种写法,也可以有不合的写法,比如递归等。供参考。

typedefstructnode{intdata;structnode*next;node(intd):data(d),next(NULL){}}node;voidreverse(node*head){if(NULL==head||NULL==head->next){return;}node*prev=NULL;node*pcur=head->next;node*next;while(pcur!=NULL){if(pcur->next==NULL) { pcur->next=prev; break; } next=pcur->next; pcur->next=prev; prev=pcur; pcur=next; } head->next=pcur; node*tmp=head->next; while(tmp!=NULL) { coutdatanext; } }口试题002:已知sqrt (2)约即是1.414,要求不用数学库,求sqrt (2)正确到小数点后10位。

——阿里巴巴出题专家:文景/阿里云CDN资深技巧专家

考察点

根基算法的机动利用能力(二分法学过数据布局的同砚都知道,但不必然往这个偏向斟酌;假如学过数值谋略的同砚,应该还要能想到牛顿迭代法并解释清楚)。

退出前提设计。

参考谜底

1. 已知sqrt(2)约即是1.414,那么就可以在(1.4, 1.5)区间做二分查找,如:

high=>1.5

low=>1.4

mid => (high+low)/2=1.45

1.45*1.45>2 ? high=>1.45 : low => 1.45

轮回到c)

2. 退出前提

前后两次的差值的绝对值 EPSINON){if (mid*mid second);return it->second->second;}void set(int key, int value) {auto it = m.find(key);if (it != m.end()) l.erase(it->second);l.push_front(make_pair(key, value));m[key] = l.begin();if (m.size() > cap) {int k = l.rbegin()->first;l.pop_back();m.erase(k);}口试题005:关于epoll和select的差别,哪些说法是精确的?(多选)

——阿里巴巴出题专家:寈峰/阿里技巧专家

B. epoll比拟select效率更高,主如果基于其操作系统支持的I/O事故看护机制,而select是基于轮询机制。

C. epoll支持水平触发和边沿触发两种模式。

D. select能并行支持I/O对照小,且无法改动。

参考谜底 A . B . C

口试题006:从innodb的索引布局阐发,为什么索引的key长度不能太长?

——阿里巴巴出题专家:近秋/阿里云数据库产品技巧部技巧专家

参考谜底

key太长会导致一个页傍边能够寄放的key的数目变少,间接导致索引树的页数目变多,索引层次增添,从而影响整体查询变化的效率。

口试题007:MySQL的数据若何规复到随意率性光阴点?

——阿里巴巴出题专家:近秋/阿里云数据库产品技巧部技巧专家

参考谜底

规复到随意率性光阴点以准时的做全量备份,以及备份增量的binlog日志为条件。规复到随意率性光阴点首先将全量备份规复之后,再此根基上回放增添的binlog直至指定的光阴点。

口试题008:NFS和SMB是最常见的两种NAS(Network Attached Storage)协议,当把一个文件系统同时经由过程NFS和SMB协议共享给多个主机造访时,以下哪些说法是差错的:(多选)

——阿里巴巴出题专家:起影/阿里云文件存储高档技巧专家

A. 弗成能有这样的操作,即把一个文件系统同时经由过程NFS和SMB协议共享给多个主机造访。

B. 主机a的用户经由过程NFS协议创建的文件或者目录,另一个主机b的用户不能经由过程SMB协议将其删除。

C. 在同一个目录下,主机a经由过程NFS协议看到文件file.txt,主机b经由过程SMB协议也看到文件file.txt,那么它们是同一个文件。

D. 主机a经由过程NFS协议,以及主机b经由过程SMB协议,都可以经由过程主机真个数据缓存,提升文件造访机能。

参考谜底 A . B . C

口试题009:输入ping IP后敲回车,发包前会发生什么?

——阿里巴巴出题专家:怀虎/阿里如此效平台认真人

参考谜底

首先根据目的IP和路由表抉择走哪个网卡,再根据网卡的子网掩码地址判断目的IP是否在子网内。假如不在则会经由过程arp缓存查询IP的网卡地址,不存在的话会经由过程广播扣问目的IP的mac地址,获得后就开始发包了,同时mac地址也会被arp缓存起来。

口试题010:请解释下为什么鹿晗宣布恋情的时刻,微博系统会崩溃,若何办理?

——阿里巴巴出题专家:江岚/阿里巴巴数据技巧高档技巧专家

参考谜底 《 参考思路 》

A. 获取微博经由过程pull要领照样push要领

B. 宣布微博的频率要远小于涉猎微博

C. 流量明星的发微博,和通俗博主要区分对待,比如在sharding的时刻,也要斟酌这个身分

口试题011:现有一批邮件必要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来认真详细的邮件发送义务,若何让系统尽快地完成发送?请胪陈技巧规划!

——阿里巴巴出题专家:江岚/阿里巴巴数据技巧高档技巧专家

参考谜底

A. 借助消息中心件,经由过程宣布者订阅者模式来进行义务分配

B. master-slave支配,由master来分配义务

C. 不借助任何中心件,且所有节点均等。经由过程数据库的update returning,从而实现节点之间义务的互斥

口试题012:有一批景象不雅测站,现必要获取这些站点的不雅测数据,并存储到Hive中。然则景象局只供给了api查询,每次只能查询单个不雅测点。那么假如能够方便快速地获取到所有的不雅测点的数据?

——阿里巴巴出题专家:江岚/阿里巴巴数据技巧高档技巧专家

参考谜底

A. 经由过程shell或python等调用api,结果先暂存本地,着末将本地文件上传到Hive中。

B. 经由过程datax的httpReader和hdfsWriter插件,从而获取所需的数据。

C. 对照抱负的回答,是在谋略引擎的UDF中调用查询api,履行UDF的查询结果存储到对应的表中。一方面,不必要同步义务的导出导入;另一方面,谋略引擎的散播式框架生成供给了散播式、容错、并发等特点。

口试题013 若何实现两金额数据相加(最多小数点两位)?

——阿里巴巴出题专家:御术/蚂蚁金服数据可视化高档技巧专家

参考谜底

着实问题并不难,便是考察候选人对 JavaScript 数据运算上的认知以及斟酌问题的周到程度,有很多坑,可以用在笔试题,假如用在口试,回答历程中还可以随机加入有很多谋略机根基的延伸。

回到这个问题,因为直接浮点相 yu 加会掉精,以是要转整数;(可以插入问碰到过吗?是否可以举个例子?)。

转整数是第一个坑,虽然只有两位可以经由过程乘以100转整数,但因为乘以一百和除以一百都邑呈现浮点数的运算,以是也会掉精,照样要经由过程字符串来转;(可以插入问字符串转整数有几种要领?)

字符串转整是第二个坑,由于着末要对齐谋略,假如没斟酌全面先 toFixed(2),对付只有一位小数点数据进入谋略就会差错;转整数后的谋略是个加分点,很多同砚每每便是直接算了,假如可以斟酌大年夜数谋略的场景,恭喜同砚进入暗藏关卡,这就会涉及若何有效轮回、遍历、算法繁杂度的问题。

口试题014:关于并行谋略的一些根基开放问题。

——阿里巴巴出题专家:何万青/阿里云高机能谋略资深技巧专家

◼ 若何定义并谋略,请分手阐述散播式内存到共享内存模式行编程的差别和实现(例子代码)?

◼ 请应用MPI和OpenMP分手实现N个处置惩罚器对M个变量的乞降?

◼ 请阐明SIMD指令在轮回中应用的权限?向量化优化有哪些手段?

◼ 请用Amdahl定律阐明什么是并行效率以及并行算法的扩展性?并阐明扩展性的机能指标和限定身分,着末请阐明在共享内存谋略机中,共享内存的限定?OpenMP是如何实现共享内存编程情况的?MPI壅闭和非壅闭读写的差别?

参考谜底

(简要谜底,但必须触及,可以展开)

◼ 同时履行多个/算法/逻辑操作/内存造访/IO,互相自力同时运行,分三个层次:进程级,多个节点散播式内存经由过程MPI通信并行;线程级,共享内存的多路机械,经由过程OpenMP实现多线程并行;指令集:经由过程SIMD指令实现单指令多半据。。。。举例吧啦吧啦。

◼ MPI代码,,,OpenMP代码,分手写出来 M个元素,N个处置惩罚器的累加,后者留意private 参数。

SIMD在轮回中的利用,限定在于 SIMD指令处置惩罚的每一个数组的长度,cache line使用,内部轮回间的依附和前提调用等。

◼ 向量化,主要看SSE和AVX指令占比率,经由过程编译器优化。。。。在loop代码中应用,

◼ 机能和谋略规模随处置惩罚器增添的变更曲线,实测HPL和峰值HPL比率,能用用Amdahl定律表达 Tpar(N) = (an + (1-a)n/N )t + C (n,N), 能够疏解白串行部分对全部并行的天花板效应,扩展机能够解释清楚算法的扩展性=并行效率随处置惩罚器数目的变更关系,画出来。

◼ 共享内存谋略机OpenMP对变量的限定描述,EREW,CREW,ERCW,CRCW等差别,NUMA观点,若何维持coherent等。

◼ 写出OpenMP和MPI的核心函数,回答问题即可。

口试题015:请谋略XILINX公司VU9P芯片的算力相称于若干TOPS,给出谋略历程与公式。

——阿里巴巴出题专家:隐达/阿里云异构谋略资深专家

参考谜底

基于不合的算法,这个值在十几到几百之间。然则,假如只是纯真比算力,FPGAASICGPU比拟并无太大年夜上风,以致大年夜多时刻有较大年夜劣势。FPGA的上风在于高度的机动性和算法的针对性。

口试题016:一颗今世处置惩罚器,每秒大年夜概可以履行若干条简单的MOV指令,有哪些主要的影响身分?

——阿里巴巴出题专家:子团/立异产品虚拟化&稳定性资深技巧专家

参考谜底

及格:

每履行一条mov指令必要耗损1个时钟周期,以是每秒履行的mov指令和CPU主频相关。

加分:

在CPU微架构上,要斟酌数据预取,乱序履行,多发射,内存stall (前端stall和后端stall)等诸多身分,是以除了cpu主频外,还和流水线上的效率(IPC)强相关,对照繁杂的一个问题。

口试题017:请阐发MaxCompute产品与散播式技巧的关系、当前大年夜数据谋略平台类产品的市场现状和成长趋势。

——阿里巴巴出题专家:云郎/阿里MaxCompute高档产品专家

参考谜底

开放性问题,无标准谜底。

口试题018:对大年夜数据平台中的元数据治理是怎么理解的,元数据网络治理体系是怎么样的,会对大年夜数据利用有什么样的影响。

——阿里巴巴出题专家:映泉/阿里巴巴高档技巧专家

参考谜底

开放性问题,无标准谜底。

口试题019:你理解常见如阿里,和友商大年夜数据平台的技巧体系差异以及成长趋势和技巧瓶颈,在存储和谋略两个方面进行概述。

——阿里巴巴出题专家:映泉/阿里巴巴高档技巧专家

参考谜底

开放性问题,无标准谜底。

口试题020:在云谋略大年夜数据处置惩罚场景中,天天运行着成千上万的义务,每个义务都要进行IO读写。存储系统为了更好的办事,常常会包管高优先级的义务优先履行。当多个功课或用户造访存储系统时,若何包管优先级和公道性。

——阿里巴巴出题专家:田磊磊/阿里云文件存储高档技巧专家

参考谜底

开放性问题,无标准谜底。

口试题 021:最大年夜频率栈。

——阿里巴巴出题专家:屹平/阿里云视频云边缘谋略高档技巧专家

实现 FreqStack,模拟类似栈的数据布局的操作的一个类。FreqStack 有两个函数: push(int x),将整数 x 推入栈中。pop(),它移除并返回栈中呈现最频繁的元素。假如最频繁的元素不光一个,则移除并返回最靠近栈顶的元素。

示例:

push [5,7,5,7,4,5]

pop() -> 返回 5,由于 5 是呈现频率最高的。 栈变成 [5,7,5,7,4]。

pop() -> 返回 7,由于 5 和 7 都是频率最高的,但 7 最靠近栈顶。 栈变成 [5,7,5,4]。

pop() -> 返回 5 。 栈变成 [5,7,4]。

pop() -> 返回 4 。 栈变成 [5,7]。

参考谜底

令 freq 作为x的呈现次数的映射 Map。

此外maxfreq,即栈中随意率性元素确当前最大年夜频率,由于我们必须弹出频率最高的元素。

当前主要的问题就变成了:在具有相同的(最大年夜)频率的元素中,怎么判断那个元素是最新的?我们可以应用栈来查询这一信息:接近栈顶的元素老是相对更新一些。

为此,我们令 group 作为从频率到具有该频率的元素的映射。到今朝,我们已经实现了 FreqStack 的所有需要的组件。

算法:

实际上,作为实现层面上的一点细节,假如 x 的频率为 f,那么我们将获取在所有 group[i] (ifreq;Map> group;int maxfreq;public FreqStack() {freq = new HashMap();group = new HashMap();maxfreq = 0;}public void push(int x) {int f = freq.getOrDefault(x, 0) + 1;freq.put(x, f);if (f > maxfreq)maxfreq = f;group.computeIfAbsent(f, z-> new Stack()).push(x);}public int pop() {int x = group.get(maxfreq).pop();freq.put(x, freq.get(x) - 1);if (group.get(maxfreq).size() == 0)maxfreq--;return x;}}

繁杂度阐发:

光阴繁杂度:对付 push 和 pop 操作, O(1)。

空间繁杂度: O(N),此中 N 为 FreqStack 中元素的数目。

口试题022:给定一个链表,删除链表的倒数第N个节点,并且返回链表的头结点。

——阿里巴巴出题专家:屹平/阿里云视频云边缘谋略高档技巧专家

◼ 示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

阐明:

给定的 n 包管是有效的。

要求:

只容许对链表进行一次遍历。

参考谜底

我们可以应用两个指针而不是一个指针。第一个指针从列表的开首向前移动 n+1n+1 步,而第二个指针将从列表的开首启程。现在,这两个指针被 nn 个结点分开。我们经由过程同时移动两个指针向前来维持这个恒定的距离,直到第一个指针到达着末一个结点。此时第二个指针将指向从着末一个结点数起的第 nn 个结点。我们从新链接第二个指针所引用的结点的 next 指针指向该结点的下下个结点。

代码示例:

public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode(0);dummy.next = head;ListNode first = dummy;ListNode second = dummy;// Advances first pointer so that the gap between first and second is n nodes apartfor (int i = 1; iqueue = new SynchronousQueue<>(); System.out.print(queue.offer(1) + " "); System.out.print(queue.offer(2) + " "); System.out.print(queue.offer(3) + " "); System.out.print(queue.take() + " "); System.out.println(queue.size()); } }

A. true true true 1 3

B. true true true (壅闭)

C. false false false null 0

D. false false false (壅闭)

参考谜底 D

您可能还会对下面的文章感兴趣: