本文内容截取自《阿里云技术面试红宝书》web
(点击底部查看下载红宝书)面试
阿里云技术面试官面试真题和题解助你拿下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?
测试与部署:
如何压测整个系统?系统如何灰度?如何上线?
八、如何选择最优索引?
有以下表: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可在文末领取
有了此书,你无需漫无目的地花大把时间在题海战术准备上,而是在精准回顾知识点的同时,间接地与技术大牛们作了直观的沟通,了解他们的出题思路与考察要点,用上触类旁通的技能便可。此外,消化吸取知识点,这对本身技术能力自己就是一种极大的提高。
有段时间没跟你们分享资源福利了,看了下本身的资料夹,整理了一些我认为比较好的Python学习资料了。相信这套资料能够对你进阶高级工程师有帮助
学习工具
大厂实战手册
自学视频(部分)
【资料免费领取方式】:点这里:2020Python高薪实战学习大合集