2019秋招面试题 + 答案 -- 阿里巴巴

  1. 如何实现一个高效的单向链表逆序输出?

    答案:递归输出小链表头插法

  2. 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位;注释:sqrt是根号的意思!

    答案:二分查找法

  3. 给定一个二叉搜索树(BST),找到树中第 K 小的节点

    答案:递归查询法

  4. LRU缓存机制

    答案:map存值

  5. 关于epoll和select的区别,以下哪些说法是正确的

    答案:关于epoll和select的区别,哪些说法是正确的?

  6. 从innodb的索引结构分析,为什么索引的 key 长度不能太长

    答案:分析myisam与innodb

  7. MySQL的数据如何恢复到任意时间点?

    答案:恢复到任意时间点以定时的做全量备份,以及备份增量的 binlog 日志为前提。恢复到任意时间点首先将全量备份恢复之后,再此基础上回放增加的 binlog 直至指定的时间点。

    mysqlbinlog--stop-datetime="2018-02-19 23:57:02" mysql-bin.000088;另外也可以自己选定起点恢复--start-datetime="2005-04-2010:01:00"

  8. NFS 和 SMB 是最常见的两种 NAS(Network Attached Storage)协议,当把一个文件系统同时通过 NFS 和 SMB 协议共享给多个主机访问时,以下哪些说法是错误的

    答案:NFS与SMB的区别

  9. 输入 ping IP 后敲回车,发包前会发生什么?

    答案:请求路径

  10. 请解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?

    答案:从三个角度分析

  11. 现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来负责具体的邮件发送任务,如何让系统尽快地完成发送?

    答案:

    A. 借助消息中间件,通过发布者订阅者模式来进行任务分配

    B. master-slave 部署,由 master 来分配任务

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

  12. 有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 api 查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?

    答案:

    A. 通过 shell 或 python 等调用 api,结果先暂存本地,最后将本地文件上传到 Hive 中。

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

    C. 比较理想的回答,是在计算引擎的 UDF 中调用查询 api,执行UDF 的查询结果存储到对应的表中。一方面,不需要同步任务的导出导入;另一方面,计算引擎的分布式框架天生提供了分布式、容错、并发等特性。

  13. 如何实现两金额数据相加(最多小数点两位)

    答案:

    其实问题并不难,就是考察候选人对 JavaScript 数据运算上的认知以及考虑问题的缜密程度,有很多坑,可以用在笔试题,如果用在面试,回答过程中还可以随机加入有很多计算机基础的延伸。

    回到这个问题,由于直接浮点相与加会失精,所以要转整数;(可以插入问遇到过吗?是否可以举个例子?)。

    转整数是第一个坑,虽然只有两位可以通过乘以100转整数,但由于乘以一百和除以一百都会出现浮点数的运算,所以也会失精,还是要通过字符串来转;(可以插入问字符串转整数有几种方式?)字符串转整是第二个坑,因为最后要对齐计算,如果没考虑周全先toFixed(2),对于只有一位小数点数据进入计算就会错误;转整数后的计算是个加分点,很多同学往往就是直接算了,如果可以考虑大数计算的场景,恭喜同学进入隐藏关卡,这就会涉及如何有效循环、遍历、算法复杂度的问题。

  14. 关于并行计算的一些基础开放问题

    答案:各种指令

  15. 请计算XILINX公司VU9P芯片的算力相当于多少TOPS,给出计算过程与公式

    答案:基于不同的算法,这个值在十几到几百之间。但是,如果只是单纯比算力,FPGA和ASIC、GPU相比并无太大优势,甚至大多时候有较大劣势。FPGA的优势在于高度的灵活性和算法的针对性。

  16. 一颗现代处理器,每秒大概可以执行多少条简单的MOV指令,有哪些主要的影响因素

    答案: 及格: 每执行一条mov指令需要消耗1个时钟周期,所以每秒执行的mov指令和CPU主频相关。

    加分: 在CPU微架构上,要考虑数据预取,乱序执行,多发射,内存stall(前端stall和后端stall)等诸多因素,因此除了cpu主频外,还和流水线上的效率(IPC)强相关,比较复杂的一个问题。

  17. 请分析 MaxCompute 产品与分布式技术的关系、当前大数据计算平台类产品的市场现状和发展趋势

​ 答案:开放性问题,无标准答案。

  1. 对大数据平台中的元数据管理是怎么理解的,元数据收集管理体系是怎么样的,会对大数据应用有什么样的影响

    答案:开放性问题,无标准答案。

  2. 你理解常见如阿里,和友商大数据平台的技术体系差异以及发展趋势和技术瓶颈,在存储和计算两个方面进行概述

    答案:开放性问题,无标准答案。

  3. 在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行 IO 读写。存储系统为了更好的服务,经常会保证高优先级的任务优先执行。当多个作业或用户访问存储系统时,如何保证优先级和公平性

    答案:开放性问题,无标准答案。

  4. 最大频率栈

    答案:答案附代码

  5. 给定一个链表,删除链表的倒数第N个节点,并且返回链表的头结点

    答案:时间复杂度O(1)

  6. 如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计

    答案:开放性问题,无标准答案。

  7. 如果让你来设计一个支持数据库、NOSQL 和大数据之间数据实时流动的数据流及处理的系统,你会考虑哪些问题?如何设计?

    答案:开放性问题,无标准答案。

  8. 给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度

    答案:空间时间复杂度都是O(n)

  9. 假如给你一个新产品,你将从哪些方面来保障它的质量?

    答案: 可以从代码开发、测试保障、线上质量三个方面来保障。

    在代码开发阶段,有单元测试、代码Review、静态代码扫描等;

    测试保障阶段,有功能测试、性能测试、高可用测试、稳定性测试、兼容性测试等;

    在线上质量方面,有灰度发布、紧急回滚、故障演练、线上监控和巡检等。

  10. 请评估一下程序的执行结果?
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 (阻塞)

​ 答案:D

  1. 如何测试一辆自行车?

    答案:开放性问题,如果联系到测试角度上看的话,可以这么作答:

    1. 骑车试一试,看有没有问题,对应测试能不能跑通
    2. 看看车的核心部件,例如车闸,车把等,对应软件的核心功能
    3. 看看车是否安全,配锁质量如何,对应软件是否有安全问题
  2. 如何判断两个链表是否相交?

    答案: $O(n^2)$: 两层遍历,总能发现是否相交

    $O(n)$: 一层遍历,遍历完两个链表,如果两个链表的最后一个结点指针相同,则相交,否则不相交

你可能感兴趣的:(2019秋招面试题 + 答案 -- 阿里巴巴)