欢迎关注头条:蛇足石杉建筑札记
周一到周五早上8: 30!精品技术文章准时送达!
获取优秀的学习资料,见文末。
00-1010 (1)尴尬的采访场景:第一幕
(2)尴尬的采访场景:第二幕
(3)不要让你学的技术成为空中楼阁。
(4)想尽一切办法“虐待”自己。
“这篇文章告诉你一个对很多人来说也很困惑的问题,因为有那么多同学问过我类似的问题,所以写一篇文章给你讲讲。
原因是这样的:很多好学的学生通常会自己学习很多技术,比如买书看书,参加网上培训班,买一些知识付费栏目或者买一些视频课程。
然而,在学习了很多之后,这些好学的学生在外出面试时遇到了这样一个痛点:
这些学生在简历上写了很多高科技技能,但实际上他们可能没有机会,或者没有时间在自己负责的项目中使用,负责的项目似乎没有太多的用户和并发性。
目录
所以面试官和求职者可能会开始一系列问题,如下所示:
采访者
你说你的系统使用Redis,那么你的项目有多少用户?
候选人
这个。几百还是几千?(或者有些人是小互联网公司的,可以说有一百万左右的用户)
采访者
好吧,那告诉我你的系统每天的日常工作是什么。
(解释日常生活:如果一个公司的产品有100万注册用户,肯定不是每个人都会每天来用你的系统!就像注册一个APP,可能半年才用一次!这一天的工作是每天有多少人使用它)
候选人
啊?每天有多少人用?我真的没数过这个。可能有几千或几万人。
采访者
好吧,那你每天都要被成千上万的人使用。每天的要求是多少?
候选人
这个真的没数过,不好意思!
采访者
纳尼?你知道在你系统的巅峰时期QPS密码是什么吗?(QPS,每秒查询数,即每秒请求数)
候选人
(我心里觉得想哭,因为我觉得这个采访是黄色的,为什么任何技术都没有问题,直接来这里?)我真的不知道。
采访者
那你什么都不知道。告诉我为什么你的系统使用Redis缓存。我们还需要构建一个由三台机器组成的Redis集群。为什么呢?
如果不需要Redis,就用MySQL来抵抗。你能抗拒吗?
候选人
我们用的是Redis。你好。你到底为什么需要它?我好像已经忘记了,但是我就是觉得我可以用这个技术。毕竟,我们花时间研究,所以如果我们认为它可以使用,我们就可以使用它。
采访者
这是典型的用武之地!你的简历说你熟悉高并发相关技术,包括Redis、RocketMQ等。那么你做过高并发系统吗?
候选人
好吧,我错了。我真的不知道什么是高并发。我刚刚学会了这些技巧,并把它们写在了我的简历上。
采访者
(精神活动)怎么了?半天没有相关经验。我自己学的。好吧,那么,我不能把它当成一个高级代码农民。就当是普通的吧。
于是两人输入了一系列技术问答,但面试官很清楚。最多给候选人一个普通工程师的职位,因为实际上他对技术如何落地到项目中没有经验。
(1)尴尬的面试现场1
这位候选人从痛苦的经历中吸取了教训,回来更改了简历,称他对系统负责,每天有数十万用户,峰值QPS为5000/s。
然后,我想,这一次,我不会像上次那样谈了。当我到达面试现场时,我坐下来,开始与面试官进行以下对话:
采访者
你有多少用户?你能活几天?每天的要求是多少?QPS的最高峰有多高?
候选人
(胸有成竹,嘴角挂着嫣然一笑。)注册用户100万,每天有几十万用户直播。每天有数千万次请求,峰值QPS为5000次/秒。
采访者
哦,你怎么做你的在线部署架构?给我看一张照片。
那么你有哪些服务,每个服务中部署了多少台机器?每台机器的配置是什么?CPU和内存有多大?你的机器
部署是怎么抗住每秒5000请求的?候选人
(心理活动)公司实际没啥请求量,每个服务就部署一台机器,连配置自己都没关注过,天知道每秒5000请求需要多少机器可以抗住啊。。。
面试官
咦?你怎么支支吾吾的,自己项目线上部署情况都不清楚?
那如果你们从网关入口层进来的请求是5000/s的话,那你能画图说一下你负责的每个服务的接口的QPS是多少?
然后你们的各个中间件,MySQL、Redis、ES、RocketMQ,他们各自的QPS都是多少?以及他们各自都部署了多少机器,每个机器什么配置?
候选人
这个。。。。我从来没考虑过,我还真的不知道啊!
面试官
那你简历说你系统可以抗5000/s的并发请求,你根本不知道系统架构是怎么抗住的啊!
候选人
…………
(3)别让你学的技术成为空中楼阁
上面说的两个面试场景,其实真的是非常真实的两个场景,是很多很多同学频繁给我反馈的尴尬面试现场。
因为这些同学学了很多东西,但是自己没准备好技术在项目里怎么落地的,结果就惨了,出去面试就各种尴尬。
因为学了的技术没落地过,那不相当于空中楼阁,你面试心里能不慌吗?
所以这里要给大家说的一点,就是自己平时会学很多的技术,但是一定要注意把这些技术尽量尝试落地用到自己手头负责的项目里去。
(4)想方设法的“虐虐”自己
另外,光用是不行的,你平时得考虑好,假设你的项目的用户量有百万级,然后每天有几千万请求,高峰期每秒有好几千请求。
那么这个时候,你的每个服务会有多高的QPS?每个服务需要部署多少台机器才可以抗住?机器的配置是多高?
然后系统会对背后的MySQL、Redis、ES、RabbitMQ等数据库以及中间件,产生多高的QPS?这些中间件需要部署多少台机器,用多高配置的机器?
这些东西其实是非常非常重要的,也是你在学习了N多技术之后,把技术真正转化为自己的东西需要做的很多消化性的事情。
所以,希望大家平时好好准备,多实践,多动手。实际工作中多思考,多给自己设计各种场景,push自己去解决这些场景的技术难题。
你在平时工作中多 “虐虐” 自己,面试才能表现的更加胸有成竹、云淡风轻。
私信头条号,发送:“资料”,获取更多“秘制” 精品学习资料
一大波微服务、分布式、高并发、高可用的原创系列文章正在路上,
欢迎关注头条号:石杉的架构笔记
周一至周五早八点半!精品技术文章准时送上!!!
十余年BAT架构经验倾囊相授
推荐阅读
1、拜托!面试请不要再问我Spring Cloud底层原理!
2、微服务注册中心如何承载大型系统的千万级访问?
3、「性能优化之道」每秒上万并发下的Spring Cloud参数优化实战
4、「“剁手党”狂欢的背后」微服务架构如何保障99.99%的高可用?
5、兄弟,用大白话告诉你清爽的香菇都能看懂的Hadoop架构原理
6、大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问
7、「性能优化的秘密」Hadoop如何将TB级大文件的上传性能优化上百倍
8、拜托,面试请不要再问我TCC分布式事务的实现原理!
9、最终一致性分布式事务如何保障实际生产中99.99%高可用?
10、拜托,面试请不要再问我Redis分布式锁的实现原理
11、Hadoop底层算法如何优雅的将大规模集群性能提升10倍以上?
12、亿级流量系统架构之如何支撑百亿级数据的存储与计算
13、亿级流量系统架构之如何设计高容错分布式计算系统
14、亿级流量系统架构之如何设计承载百亿流量的高性能架构
15、亿级流量系统架构之如何设计每秒十万查询的高并发架构
16、亿级流量系统架构之如何设计全链路99.99%高可用架构
17、七张图彻底讲清楚ZooKeeper分布式锁的实现原理
18、大白话聊聊Java并发面试问题之volatile到底是什么?
19、大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?
20、大白话聊聊Java并发面试问题之谈谈你对AQS的理解?
21、大白话聊聊Java并发面试问题之微服务注册中心的读写锁优化
22、互联网公司的面试官是如何360°无死角考察候选人的?(上篇)
23、互联网公司面试官是如何360°无死角考察候选人的?(下篇)
24、「Java进阶面试系列之一」你们系统架构中为何要引入消息中间件?
25、「Java进阶面试系列之二」系统架构引入消息中间件有什么缺点
26、「行走的Offer收割机」一位朋友斩获BAT技术专家Offer的面试经历
27、「Java进阶面试系列之三」消息中间件在你们项目里是如何落地的?
28、扎心!线上服务宕机时,如何保证数据100%不丢失?
29、 一次JVM FullGC的背后,竟隐藏着惊心动魄的线上生产事故!
30、「高并发优化实践」10倍请求压力来袭,你的系统会被击垮吗?
31、消息中间件集群崩溃,如何保证百万生产数据不丢失?
32、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(上)?
33、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(中)?
34、亿级流量系统架构之如何在上万并发场景下设计可扩展架构(下)?
35、亿级流量架构第二弹:你的系统真的无懈可击吗?
36、亿级流量系统架构之如何保证百亿流量下的数据一致性(上)
37、亿级流量系统架构之如何保证百亿流量下的数据一致性(中)?
38、亿级流量系统架构之如何保证百亿流量下的数据一致性(下)?
39、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(1)
40、互联网面试必杀:如何保证消息中间件全链路数据100%不丢失(2)
41、面试大杀器:消息中间件如何实现消费吞吐量的百倍优化?
42、兄弟,用大白话给你讲清爽的香菇都能看懂的分布式系统容错架构
43、从团队自研的百万并发中间件系统的内核设计看Java并发性能优化
44、如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?
45、「非广告,纯干货」英语差的程序员如何才能无障碍阅读官方文档?
46、面试最让你手足无措的一个问题:你的系统如何支撑高并发?
47、Java进阶必备:优雅的告诉面试官消息中间件该如何实现高可用架构
48、「非广告,纯干货」中小公司的Java工程师应该如何逆袭冲进BAT?
49、拜托,面试请不要再问我分布式搜索引擎的架构原理!
50、互联网大厂Java面试题:使用无界队列的线程池会导致内存飙升吗?
51、「码农打怪升级之路」行走江湖,你需要解锁哪些技能包?
52、「来自一线的血泪总结」你的系统上线时是否踩过这些坑?
53、【offer收割机必备】我简历上的Java项目都好low,怎么办?
54、【offer去哪了】我一连面试了十个Java岗,统统石沉大海!
55、支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
56、高阶Java开发必备:分布式系统的唯一id生成算法你了解吗?
57、尴尬了!Spring Cloud微服务注册中心Eureka 2.x停止维护了咋办?
58、【Java高阶必备】如何优化Spring Cloud微服务注册中心架构?
59、面试官:消息中间件如何实现每秒几十万的高并发写入?
60、【非广告,纯干货】三四十岁大龄程序员,该如何保持职场竞争力?
61、面试官:请谈谈写入消息中间件的数据,如何保证不丢失?
62、【生产实践总结】支撑百万连接的系统应该如何设计其高并发架构?
63、面对BAT大厂的竞争对手时,小公司Java工程师是如何败北的?
64、【纯干货分享】小公司出身的我,是如何拿下知名独角兽公司offer
65、用清爽的香菇都能看懂的大白话告诉你:什么是分布式计算系统?
66、老司机生产实践经验:线上系统的JVM内存是越大越好吗?
67、Java同学找工作最懵圈的问题:到底啥是分布式系统开发经验?