暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

阿里云技术面试真题公开!云原生、大数据、IOT、数据库等领域的30道面试真题!(上篇)

原创 小小亮 2020-07-16
4529

本文内容截取自《阿里云技术面试红宝书》
阿里云技术面试官面试真题和题解,助你拿下Offer!
image.png

1. 常见的 DNS 记录类型有哪些, 常见的 DNS 攻击方式有哪些以及怎么防护?

参考答案:常见的 DNS 记录类型包括但不限于 A,AAAA,CNAME,NS,TXT,MX,SOA 等。常见的 DNS 攻击包括但不限于:泛域名攻击,放大攻击,反射攻击等,常见的防护方式包括但不限于:提升程序性能 ( 比如 dpdk 的 DNS),zone 限速,来源 IP 限速,来源 IP 白名单,响应限速等。

2. 在进行 CDN 流量调度时,要考虑哪些因素?

参考答案:需要考虑的因素包括但不限于:业务特性、质量要求、命中率、资源冗余度、APP 端适配条件、客户端网络环境等方面。

3. 请举例说明,你是如何把 DDD 应用到实际项目中来的。

例子中需要包含具体的领域模型设计,这么做的理由,以及因为这个设计而引进的坑

答案:本题为开放性问题,没有标准答案。

4. 如何设计一个百万级TPS 分 布 式 系 统 架构?

并举例说明这类分布式系统会引入哪些问题,以及对应的解决方案

考察点:能够熟练应用缓存,消息中间件,数据库分库分表,读写分离等技术。
参考架构:
image.png
本图出自:https://github.com/donnemartin/system-design-primer

5. Java 多线程的协同

(JAVA)有 3 个独立的线程,一个只会输出 A,一个只会输出 L,一个只会输出 I。在三个线程同时启动的情况下,请用合理的方式让他们按顺序打印 ALIALI。三个线程开始正常输出后,主线程若检测到用户任意的输入则停止三个打印线程的工作,整体退出。

考察点:多线程的协同。

6. 数据结构的组合使用

一个网站有很多页面 ( url ), 做一个 url 排行榜功能。排行根据 url 的访问次数 (pv)排行。排行榜需要实时准确即:某个页面每一次访问都会实时地影响到排行数据。

提示:排行榜本身也会有很高的实时访问需求,注意读和写的时间复杂度。

考察点:数据结构的组合使用。

7. 异步、多线程并发控制如何操作?

题目案例:已知一个业务查询操作涉及 3 个 RPC 服务调用 : query1, query2, query3, 其中query1 耗时约 1 秒, query2 耗时约 0.5 秒,query3 耗时约 0.6 秒,且 query3 查询条件依赖 query2 的查询结果,请编写代码,使该业务查询总体耗时最小。

考察点 1:异步
考察点 2:多线程并发控制

解题思路:
本题比较简单,主要考察知识点异步和多线程控制。如果采用串行执行,query1+query2+query3 总耗时为 2.1 秒。采用多线程异步并行执行,使用线程 A 请求 query1,同时使用线程 B 请求 query2后再请求 query3(query3 依赖 query2 结果只能串行执行),这样总耗时是 min(1, 0.5+0.6) = 1.1 秒。 需要熟悉 join, CountDownLatch 等线程协调控制方法,如果考生使用线程池则更佳。

8. MapReduce 思想、排序算法结合实例如何运用?

淘宝 web 服务器上有 1 个 access 日志文件,记录着用户访问的 url,url 总数100 亿以上,每个 url 约占 64 字节,这些 url 可能存在重复,在一个内存只有 2G 的机器上,统计出访问频率最高的前100 个 URL。

考察点 1:MapReduce 思想,利用中间文件存储,分而治之。
考察点 2:排序算法

解题思路:100 亿 *64/1024/1024/1024 = 596G, 可考虑分成 1000 个文件处理,每个文件大约 600M。顺序读取文件,每行按照 hash(url)%1000 的结果将 url 写入到 1000 个文件中,这个过程是 mapreduce 中的 map。针对每个小文件,使用 hashmap 统计每个 url 出现的次数,并使用堆排序得到访问次数最高的前 100 个 url,将每个文件排序好的 100 个 url 及对应的 count 输出到 1000 个文件,最后将这个1000 个文件(此时每个文件只有 100 行 ) 进行合并排序。

9. 如何设计一个红包系统来满足春节期间千亿级红包的收发问题?

本题为开放性问题,无标准答案,主要可以从以下几个不同的点对不同背景的面试人员进行考察:

业务:面试人员是否对抢红包的业务场景的需求有足够的了解,如果没有的话,是否有足够的沟通能力从面试官那里获取需要满足的业务场景的信息(比如金额方面不能有任何差错;比如对于并发量的要求等等)

底层存储:需要存哪些数据?用什么样的存储系统 / 数据库来落盘数据?数据存储的格式是怎么样的?数据库的 schema 怎么设计?底层存储如何拆分、如何架构导致其可以处理高并发请求?

缓存:缓存应该如何设计来提高系统的性能?如果使用分布式缓存?

同步 v.s. 异步:所有的操作都需要同步执行吗?有没有操作可以异步执行来减少对于用户的响应延迟?如果有的话怎么实现异步操作(比如消息队列)。

高可用:上述列出的组件之一如果宕机了怎么办?缓存被击穿了怎么办?怎么保证系统的高可用?系统怎么 failover?

测试与部署:如何压测整个系统?系统如何灰度?如何上线?

10. 如何选择最优索引?

有如下表: create table t(a int, b int, c int);
已知如下三条是这个表最常用的三条 query:
select * from t where a = 1 and b = 1;
select * from t where b = 1;
select * from t where b = 1 order by c desc;

以下索引哪个是最优的:
A. idx(a, b)
B. idx(b, a)
C. idx(b, c)
D. idx(a, b, c)

答案是 B

更多相关文章

阿里云技术面试真题公开!(中篇)
阿里云技术面试真题公开!(下篇)

最后修改时间:2020-07-16 17:27:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论