本文内容截取自《阿里云技术面试红宝书》
(点击底部查看下载红宝书)
阿里云技术面试官面试真题和题解助你拿下Offer!
1. 常见的 DNS 记录类型有哪些, 常见的 DNS 攻击方式有哪些以及怎么防护?
参考答案:
常见的 DNS 记录类型包括但不限于 A,AAAA,CNAME,NS,TXT,MX,SOA 等。
常见的 DNS 攻击包括但不限于:泛域名攻击,放大攻击,反射攻击等,常见的防护方式包括但不限于:提升程序性能 ( 比如 dpdk 的 DNS),zone 限速,来源 IP 限速,来源 IP 白名单,响应限速等。
2. 在进行 CDN 流量调度时,要考虑哪些因素?
参考答案:
需要考虑的因素包括但不限于:业务特性、质量要求、命中率、资源冗余度、APP 端适配条件、客户端网络环境等方面。
3.请举例说明,你是如何把 DDD 应用到实际项目中来的
例子中需要包含具体的领域模型设计,这么做的理由,以及因为这个设计而引进的坑。答案:本题为开放性问题,没有标准答案。
4. 如何设计一个百万级TPS分布式系统架构?
并举例说明这类分布式系统会引入哪些问题,以及对应的解决方案。
考察点:能够熟练应用缓存,消息中间件,数据库分库分表,读写分离等技术。
参考架构:
5. 异步、多线程并发控制如何操作?
题目案例:
已知一个业务查询操作涉及 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 等线程协调控制方法,如果考生使用线程池则更佳。
6. 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 行 ) 进行合并排序。
7. 如何设计一个红包系统来满足春节期间千亿级红包的收发问题?
本题为开放性问题,无标准答案,主要可以从以下几个不同的点对不同背景的面试人员进行考察:
业务:
面试人员是否对抢红包的业务场景的需求有足够的了解,如果没有的话,是否有足够的沟通能力从面试官那里获取需要满足的业务场景的信息(比如金额方面不能有任何差错;比如对于并发量的要求等等)
底层存储:
需要存哪些数据?用什么样的存储系统 / 数据库来落盘数据?数据存储的格式是怎么样的?数据库的 schema 怎么设计?底层存储如何拆分、如何架构导致其可以处理高并发请求?
缓存:
缓存应该如何设计来提高系统的性能?如果使用分布式缓存?
同步 v.s. 异步:
所有的操作都需要同步执行吗?有没有操作可以异步执行来减少对于用户的响应延迟?如果有的话怎么实现异步操作(比如消息队列)。
高可用:
上述列出的组件之一如果宕机了怎么办?缓存被击穿了怎么办?怎么保证系统的高可用?系统怎么 failover?
测试与部署:
如何压测整个系统?系统如何灰度?如何上线?
8、如何选择最优索引?
有如下表: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
以上仅为部分内容,原版pdf可在文末领取
有了此书,你无需漫无目的地花大把时间在题海战术准备上,而是在精准回顾知识点的同时,间接地与技术大牛们做了直观的沟通,了解他们的出题思路与考察要点,用上举一反三的技能即可。此外,消化吸收知识点,这对自己技术能力本身就是一种极大的提升。
点击这里☛下载《阿里云面试红宝书》原版pdf
●下载|阿里云技术总汇大合集
有段时间没跟大家分享资源福利了,看了下自己的资料夹,整理了一些我认为比较好的Python学习资料了。相信这套资料可以对你进阶高级工程师有帮助
学习工具
大厂实战手册
自学视频(部分)
【资料免费领取方式】:点这里:2020Python高薪实战学习大合集