欢迎关注公众号(通过文章导读关注:【11来了】),及时收到
AI 前沿项目工具及新技术
的推送发送
资料
可领取深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景
、中间件系列笔记
和编程高频电子书
!文章导读地址:点击查看文章导读!
感谢你的关注!
春招来了!该在哪些方面提升面试能力?
接下来,所有面试内容都会更新到面试突击专栏中,记得关注订阅,查看最新通知,:面试突击专栏
该在哪些方面准备面试?
我们大部分去准备面试的时候,可能会去看很多的八股文,觉得只要熟练掌握了这些答案,就可以面到很好的薪资,找到理想的工作
但是其实不是这样的,八股文只是你的 基础能力
,稍微有一点水平的面试官都不会去像一个提问机器一样,一道一道题去问你,而是希望通过对话去了解你对项目、对技术的看法,以及你解决问题的能力,因此需要从面试底层的思维去了解面试,再针对性的学习,才可以有一个比较好的效果!
你可以这样想一下,假如你是面试官,你会怎样去考察面试者的一个综合能力呢?作为面试官,你肯定知道面试者背了许多的八股文,所以八股文只是你去找工作要过的第一关,接下来,面试官会通过某一个具体问题,一点一点追问细节,以及生产中所需要的一些问题,通过这些才可以真正看出来你是否真的掌握了这些积能,以及你在做项目中,是否有自己的思考!
接下来,从 5 个方面来说一下去面试的话,需要从哪几个方面准备
- 首先是
技术广度
因为面试官招聘你,是需要去做项目干活的,那么首先你的技术栈必须要匹配到公司的技术栈,并且到公司可以直接上手做项目,而不是再从零去培养,因此会先考察技术的广度,判断你都了解学习过哪些技术
就比如 Redis 用过吗?项目中哪里用到了 Redis 呢?原理了解吗?集群部署?高可用原理?单线程高并发的原理?
Dubbo 用过吗?底层原理?用在项目中是做什么?
RocketMQ 用过吗?为什么用呢?那里引入了?底层原理?遇到过消息丢失的问题吗?集群部署?高可用如何保证?
还有就是基础的 JVM、数据库(事务、索引、sql 优化、锁)、并发方面的内容
如果这些都答得比较好的话,证明这些技术是掌握了的,那么招你来工作基本可以直接上手,一般薪资在 10-20k 之间
- 第二点是
项目经验
通过项目经验一般就能看出来你做项目中有没有自己的一些想法以及思考,项目经验方面通常会问你学到的各种技术是如何结合项目进行落地的,以及落地之后碰到的一些实践中的问题,如何解决,有没有对项目做过一些优化之类的?
比如说你学了 RocketMQ,那么你在项目中怎么去使用 RocketMQ 了呢?具体在那些场景下引入了 RocketMQ,不引入的话会有什么问题呢?
如果使用 RocketMQ,碰到消息丢失了怎么处理呢?消息如果大量积压怎么处理呢?
如果使用分库分表,那么核心的表每天新增了多少 GB 的数据呢?目前表中已经有多少的数据了?什么时候分的表?什么时候分的库?
在分表之前,SQL 性能是怎样的呢?分表之后 SQL 性能提升了多少?
分库之前每个数据库上放多少 GB 的数据?分库之后拆分到了几台数据库服务器上去?每台服务器存放多少的数据呢?
像这些问题,在自己学习的时候可能就忽略了,并且缺乏一些自己的思考,以及由于是自己学习的项目,确实没有碰到过这些场景,因此对于这些 细节性
问题,一定要去多查一些资料,提前准备,多思考!
- 第三点是
生产经验
这块主要是去问真正将项目部署在生产环境中,会遇到的一些情况以及在技术调研时,你是如何进行技术选型的?
就比如在分布式这块,如果项目中使用了
网关
,那么在使用网关之前,你都调研了哪几种网关,为什么选用了某一个网关?
这一块内容的话,其实也就是考察你使用网关的时候,有没有去了解其他同样类型的产品,其实选用网关主要就是看这个网关的功能、使用的开发语言、以及扩展性方面是否符合自己公司的需要
那么项目在上线之后,你们公司的系统每天的访问量是多少呢?高峰期的访问量呢?
对于访问量,可能大多数人心里不太有底,因为可能平时做的项目访问量并不算太高并且项目也可能是自己学习做的,根本就没有访问量,那么怎么去知道系统的访问量呢?可以对不同配置的机器进行 压测
分析,压的多了,心里就有数了
网关一般都怎么部署了?部署了几台机器?每台机器的配置是怎样的呢?如果服务上下线,网关如何实现的动态路由呢?
其实网关一般部署 2-3 台就可以,每台的配置的话,看自己系统的访问量,4C8G 的服务器,每秒钟扛个几百的请求肯定是没有问题的,8C16G 的机器可以进一步抗上千的请求,16C32G 和 32C64G 的机器当然抗的请求量就更多了
有没有网关的扩容方案呢?如果压力过大,网关如何扩容?有没有计算过网关请求路由的性能如何?一个请求经过网关路由的平均时长是多少呢?
这其实就是考察对网关的一些监控指标有没有做过,以及并发量上来之后,有没有什么具体的应对方案
生产经验这一块的内容,可能对于很多应届生来说不会考,这属于是工作 5 年左右的工程师所需要掌握的内容,但是了解一下,以后在工作中会更加注意这方面的细节,如果生产经验的内容掌握的没有问题的话,30k 左右还是可以的
- 第四点是
技术深度
这一点就是考察某一个技术的底层原理了,比如 RocketMQ 的源码、Dubbo 的源码等等
那么你可能会有疑问,有必要学习源码吗?学习那么多有什么用呢?
你对源码的掌握程度其实就决定了你的技术深度,在生产环境中,如果碰到了一些异常或者报错,导致系统挂掉,了解源码,你可以很快的就去定位到问题出现在了哪里,可以直接根据异常去分析技术的源码,从源码级别定位到问题的所在
,再去解决问题,这就是学习源码带来的 竞争力
比如,Dubbo 报错,RocketMQ 出现异常无法写入下消息,ES 查询很慢等等,如果不了解源码,可能对于这些问题,根本就无从下手
- 最后一点是
系统设计
比如设计一个秒杀系统、12306 购票系统,支撑上亿用户去购买火车票,设计一个红包系统,你会如何从哪些方面考虑?
这考察的就是 综合能力
了,公司招你进来,肯定是希望你可以独当一面的,独立负责一块东西,通过考察你对系统设计的了解,可以很清晰的知道你在这方面的能力
不过如果仅仅是应届生面试,20k 的薪资,面试官也根本不会去考察你系统设计的能力,如果是更高级的岗位,这一块的内容就必须掌握,而且是从细节掌握