想要入职大厂可谓是千军万马过独木桥。要通过层层考验,刷题肯定是必不可少的。
为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次整体放出。并通过这些笔试真题开放阿里巴巴工作机会,让更多的开发者加入到阿里这个大平台。
篇幅有限,贴出答案内容太长了,答案有整理了pdf,可进Q群:956011797免费获取
这一次,不仅是知识的收获,还将间接地与技术大牛们做了直观的沟通,了解他们的出题思路与考察要点,并加以消化吸收,这对自己技术能力本身就是一种极大的提升。走上编程之路,不断丰富自己方能与世接轨,努力做最优秀的自己。
1.请评估一下程序的执行结果?
public class SynchronousQueueQuiz {
public static void main(String[] args) throws Exception {
BlockingQueue queue = 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 (阻塞)
阿里巴巴出题专家:桃谷
阿里云中间件技术专家, Apache Dubbo PMC ,Spring Cloud Alibaba Architect,具有多年分布式以及中间件架构设计及研发经验,目前负责Apache Dubbo的研发及社区生态。
招聘职位:阿里中间件技术人才
2.如何用socket编程实现ftp协议?
阿里巴巴出题专家:吴明
阿里云弹性计算创新产品Z工作室资深技术专家,2010年加入阿里云,曾负责过阿里云供应链和公有云IAAS运维团队,14年开始从0到1建立了专有云技术服务团队。目前是阿里云国产化研发负责人和弹性计算产品团队负责人。
招聘职位:阿里云-GPU虚拟化研发高级专家
3.假如给你一个新产品,你将从哪些方面来保障它的质量?
阿里巴巴出题专家:晨晖
阿里云中间件技术部测试开发专家,从事软件开发和测试工作多年,在软件产品质量保障方面有较丰富的经验。擅长于自动化测试、数据库技术、自动化工具研发,并在相关领域拥有多项发明专利。
招聘职位:中间件招聘技术人才啦
4.给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度。
阿里巴巴出题专家:龙欣
阿里云异构计算资深专家,在系统和异构加速器虚拟化,性能优化,硬件芯片验证设计,异构加速器云化系统架构设计以及服务方面有超过15年的工作经验,曾在美国硅谷就职超过8年的时间,参与开发了屡获殊荣的业界第一个商用全虚拟化的GPU产品,是GPU虚拟化前端和加速协议接口设计的负责人;当下,构建了亚洲区规模最大的公共云GPU服务和FPGA云服务,目前是阿里云异构计算产品线的研发负责人。
招聘职位:阿里云-GPU虚拟化研发高级专家
5.如果让你来设计一个支持数据库、NOSQL和大数据之间数据实时流动的数据流及处理的系统,你会考虑哪些问题?如何设计?
6.如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计?
阿里巴巴出题专家:千震
阿里云数据库产品事业部高级技术专家,2012年加入阿里巴巴,目前负责DTS&DBS团队和研发,在阿里云提供迁移、同步和容灾的服务,支持阿里巴巴、蚂蚁、阿里云等异地多活单元化架构,曾负责阿里全球最大的HBase集群的开发和维护工作,曾先后工作于IBM、Cisco。
招聘职位:数据库团队诚招技术人才
7.删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。
要求:只允许对链表进行一次遍历。
8..最大频率栈
实现 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]。
阿里巴巴出题专家:屹平
阿里云视频云边缘计算高级技术专家,长期从事分布式应用网络(P2P)、音视频传输、音视频类应用等方向的设计和研发,目前聚焦在边缘网络的整体架构设计、基于边缘网络的各种业务应用的设计和研发。
招聘职位:边缘计算团队诚招技术人才
9.在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行IO读写。存储系统为了更好的服务,经常会保证高优先级的任务优先执行。当多个作业或用户访问存储系统时,如何保证优先级和公平性。
阿里巴巴出题专家:田磊磊
2010年加入阿里云存储团队,专注于分布式存储领域,NFS协议,数据一致性,高性能等;先后参与过分布式存储,kv系统,NFS协议相关的开发;目前为广大公共云用户提供稳定,高可靠,高可用,高性能的文件存储服务(NAS)。
招聘职位: 存储类技术岗位
10.你理解常见如阿里,和友商大数据平台的技术体系差异以及发展趋势和技术瓶颈,在存储和计算两个方面进行概述。
11.对大数据平台中的元数据管理是怎么理解的,元数据收集管理体系是怎么样的,会对大数据应用有什么样的影响。
阿里巴巴出题专家:映泉
阿里巴巴高级技术专家,在阿里云智能事业群-计算平台事业部-通用计算平台-生产力与对外输出负责人,负责阿里EB级大规模分布式数据处理平台-MaxCompute整个研发团队的生产力建设,产品发布,产品质量, 产品技术的对外输出等工作。将阿里大数据平台旗舰产品MaxCompute以产品和技术方案输出的方式应用于数据分析、挖掘、商业智能等领域,已经形成对所有主要行业的输出覆盖并以重点产品支撑一些关键国计民生项目。所负责的领域包括产品技术输出,数据上云,计算开发者支持,部署架构演进,和更多开源系统进行融合,行业解决方案与大数据计算平台的整合,推动MaxCompute向普惠大数据发展,从而使得所有人用的起,用的上大数据计算并让数据发挥出其最大价值,为智能性社会建设做出贡献。诚招技术功底较好,对大数据技术和产品建设有热情,有推动力的优秀人才加盟。
招聘职位: MaxCompute技术岗位
12.请分析MaxCompute产品与分布式技术的关系、当前大数据计算平台类产品的市场现状和发展趋势。
阿里巴巴出题专家:云郎
阿里巴巴大数据计算服务MaxCompute高级产品专家,做为MaxCompute产品和运营团队带头人,和团队共同致力于提供基于阿里云的大数据计算平台,帮助企业构建云数据仓库和数据湖, 满足企业在大数据分析方面日益增长的数据量、计算量成为常态的情况下,对低成本、高性能、稳定、安全可靠和易用方面的要求,促进大数据普惠社会的实现。
招聘职位: MaxCompute高级产品专家
13.一颗现代处理器,每秒大概可以执行多少条简单的MOV指令,有哪些主要的影响因素?
阿里巴巴出题专家:子团
阿里云创新产品虚拟化&稳定性资深技术专家。2013年加入阿里云, 目前在负责创新平台的系统虚拟化业务, 阿里云历次虚拟化架构升级的核心贡献者之一。带领团队构建了一套性能、成本、稳定性都处于业界领先的虚拟化系统,从而完成了阿里云百万规模客户的支撑。同时也是阿里巴巴电商、金融业务上云、SAP HANA认证等多个重大项目的虚拟化部分负责人。
招聘职位:阿里云-GPU虚拟化研发高级专家
14.请计算XILINX公司VU9P芯片的算力相当于多少TOPS,给出计算过程与公式。
阿里巴巴出题专家:隐达
FPGA异构计算资深专家,2007年即作为芯片架构师,成功开发两款规模分别超过3500万门的ASIC芯片,达到了当时最先进的45nm工艺的极限。在FPGA/ASIC以及硬件设计领域有超过20年的工作经验,对于超大规模FPGA设计开发、ASIC开发与原型验证以及FPGA在数据中心中的加速价值有着深刻的理解和丰富的经验。
招聘职位:阿里云-GPU虚拟化研发高级专家
15.关于并行计算的一些基本开放问题
1、如何定义并行计算,请分别阐述分布式内存到共享内存模式并行编程的区别和实现(例子代码)?
2、请使用MPI和OpenMP分别实现N个处理器对M个变量的求和?
3、请说明SIMD指令在循环中使用的限制?向量化优化有哪些手段?
4、请用Amdahl定律说明什么是并行效率以及并行算法的扩展性?并说明扩展性的性能指标和限制因素,最后请说明在共享内存计算机中,共享内存的限制?OpenMP 是怎样实现共享内存编程环境的?MPI阻塞和非阻塞读写的区别?
阿里巴巴出题专家:何万青
16.如何实现两金额数据相加(最多小数点两位)
阿里巴巴出题专家:御术
数据可视化高级技术专家,从 ECharts 创始人到 AntV 产品架构师、蚂蚁金服数据可视化方向负责人,多年来一直积极推进国内数据可视化技术建设,现任蚂蚁金服-平台数据技术事业群-体验技术部-平台前端技术部 Leader,带领团队维护着 Ant Design、AntV、UmiJS、Dva 等多个领域知名的开源项目,负责着蚂蚁金服核心中台应用以及蚂蚁金融科技产品的前端研发工作。
招聘职位:资深前端研发工程师
17.有一批气象观测站,现需要获取这些站点的观测数据,并存储到Hive中。但是气象局只提供了api查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?
18.现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来负责具体的邮件发送任务,如何让系统尽快地完成发送?请详述技术方案!
19.解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?
阿里巴巴出题专家:江岚
阿里云数据技术高级技术专家,2010年毕业后加入阿里,一直在数据部门从事数据研发的工作。目前就职于数据技术产品部的数据建设平台,负责Dataphin智能建模的后台研发。
招聘职位:阿里数据研发工程师
20.输入ping IP后敲回车,发包前会发生什么?
阿里巴巴出题专家:怀虎
阿里云云效平台负责人,DevOps资深专家,译有《微服务设计》。曾在ThoughtWorks任职软件交付和敏捷顾问;对持续集成、自动化测试有丰富经验;目前专注于持续交付SaaS产品的开发,提供精益需求管理、软件设计、敏捷转型相关咨询服务。
招聘职位:阿里云研发效能研发工程师
21.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协议,都可以通过主机端的数据缓存,提升文件访问性能。
阿里巴巴出题专家:起影
阿里云文件存储-高级技术专家,清华大学本科和研究生,电子工程系光电子和光通信专业。毕业后在两家光通信公司(Lucent和Sycamore)进行光网络产品的开发。从2011年开始进入存储行业,加入EMC2公司,主要参与文件系统的开发,六年中,参与了企业级中端产品VNX/Unity多项Block和File的特性开发。2017年2月加入阿里云文件存储团队,参与基于KV系统的文件系统开发,以及NFS/SMB相关协议开发。
招聘职位:阿里云存储技术专家
22.从innodb的索引结构分析,为什么索引的key长度不能太长
23.MySQL的数据如何恢复到任意时间点
阿里巴巴出题专家:近秋
阿里云数据库产品技术部技术专家,有6年的行业从业经验。2016年加入阿里云,目前负责最流行的开源数据库MySQL在阿里云的商业化的工作。
招聘职位:阿里云数据库技术专家
24.关于epoll和select的区别,哪些说法是正确的?(多选)
A.epoll和select都是I/O多路复用的技术,都可以实现同时监听多个I/O事件的状态
B.epoll相比select效率更高,主要是基于其操作系统支持的I/O事件通知机制,而select是基于轮询机制 C.epoll支持水平触发和边沿触发两种模式
D.select能并行支持I/O比较小,且无法修改
阿里巴巴出题专家:寈峰
阿里技术专家,阿里巴巴百年技术大学讲师,Apache RocketMQ Committer,Linux OpenMessaging Advisory Board Member,具有多年分布式消息系统等中间件架构设计及研发经验,对云计算及分布式系统架构有深刻理解。目前负责Apache RocketMQ的研发及社区生态。
招聘职位:阿里云中间件技术专家
25.已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位
考察点:
1、基础算法的灵活应用能力(二分法学过数据结构的同学都知道,但不一定往这个方向考虑;如果学过数值计算的同学,应该还要能想到牛顿迭代法并解释清楚)
2、退出条件设计
26. 给定一个二叉搜索树(BST),找到树中第K小的节点
考察点:
1、基础数据结构的理解和编码能力
2、递归使用
示例
如下图,输入K=3, 输出节点值3
说明
保证输入的K满足1<=K<=(节点数目)
27.LRU缓存机制
设计和实现一个 LRU(最近最少使用)缓存 数据结构,使它应该支持以下操作:get 和 put 。get(key) ‑ 如果key存在于缓存中,则获取key的value(总是正数),否则返回 ‑1。put(key, value) ‑
如果key不存在,请设置或插入value。当缓存达到其容量时,它应该在插入新项目之前使
最近最少使用的项目作废。
案例:
LRUCache cache = new LRUCache( 2 /_ 容量 _/ );
cache.put(1, 1);
cache.put(2, 2);
cache.get(1); // 返回 1
cache.put(3, 3); // 该操作,会将 key 2 作废
cache.get(2); // 返回 ‑1 (结果不存在)
cache.put(4, 4); // 该操作,会将 key 1 作废
cache.get(1); // 返回 ‑1 (结果不存在)
cache.get(3); // 返回 3
cache.get(4); // 返回 4
测试用例:s = [["put","put","get","put","get","put","get","get","get"],[[1,1],[2,2],[1],[3,3],[2],
[4,4],[1],[3],[4]]]
考察点:对LRU实现的基本原理和数据结构的理解。
阿里巴巴出题专家:文景
阿里云CDN资深技术专家,浙大硕士,在高性能服务端产品开发、稳定性、服务质量优化及成本优化等各项功能都有10年以上的经验。在网易杭州研究院负责底层开源软件研发,国内最早核心Nginx研发人员之一,曾任tengine研发负责人,热衷于参与开源项目。现在是CDN技术负责人,连续7年服务双11,保障整个阿里集团95%以上的流量分发稳定性。从2014年开始,从0到1构建阿里云CDN的商业化基础设施,包括点播、直播、动态、安全加速等各项产品线,阿里云CDN现在是中国用户数最多的CDN、也是国内规模最大的CDN。正在将CDN打造成互联网的基础设施,为全球用户提供接入、加速、安全的稳定服务。
招聘职位: 点此进入查看CDN大量职位并投递简历
28. 如何实现一个高效的单向链表逆序输出?
阿里巴巴出题专家:昀龙
阿里云弹性人工智能负责人,带领团队研发了同时支持Tensorflow、MXNET、PyTorch、Caffe的Perseus加速框架,曾获得Dawnbench推理世界竞赛的性能第一和成本最低双料冠军。曾任阿里云弹性高性能计算、超级计算集群技术架构师,获得过多项专利,拥有10年以上AI技术研发和高性能优化经验。精通针对CPU、GPU、MIC等微架构的计算性能优化以及网络、存储等系统性能优化。曾在英特尔SSG部门工作,并获得过英特尔中国最高成就奖(ICA)。当人工智能遇上云计算,未来不可限量,欢迎加入阿里云弹性人工智能团队。
招聘职位:阿里云-GPU虚拟化研发高级专家
END
彩蛋福利
免费获取Java学习笔记,面试,文档以及视频