没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
101页
我们大部分去准备面试的时候,可能会去看很多的八股文,觉得只要熟练掌握了这些答案,就可以面到很好的薪资,找到理想的工作 但是其实不是这样的,八股文只是你的 基础能力,稍微有一点水平的面试官都不会去像一个提问机器一样,一道一道题去问你,而是希望通过对话去了解你对项目、对技术的看法,以及你解决问题的能力,因此需要从面试底层的思维去了解面试,再针对性的学习,才可以有一个比较好的效果! 你可以这样想一下,假如你是面试官,你会怎样去考察面试者的一个综合能力呢?作为面试官,你肯定知道面试者背了许多的八股文,所以八股文只是你去找工作要过的第一关,接下来,面试官会通过某一个具体问题,一点一点追问细节,以及生产中所需要的一些问题,通过这些才可以真正看出来你是否真的掌握了这些积能,以及你在做项目中,是否有自己的思考! 这篇pdf文档从以上几个方面出发,解决不会面试的卡点!
资源推荐
资源详情
资源评论
作者
【11来了】:目前在读研究生,现处于研二,现在计划更新常用中间件系统性学习内容,2024年初会进行暑
期实习面试,到时候会在公众号分享面试分析!
关注微信公众号及时收到通知, 资料领取点击
CSDN: https://blog.csdn.net/qq_45260619?spm=1011.2415.3001.5343
春招来了!该在哪些方面提升面试能力?
该在哪些方面准备面试?
我们大部分去准备面试的时候,可能会去看很多的八股文,觉得只要熟练掌握了这些答案,就可以面到很好的薪
资,找到理想的工作
但是其实不是这样的,八股文只是你的 基础能力 ,稍微有一点水平的面试官都不会去像一个提问机器一样,一道
一道题去问你,而是希望通过对话去了解你对项目、对技术的看法,以及你解决问题的能力, 因此需要从面试底层
的思维去了解面试,再针对性的学习,才可以有一个比较好的效果!
你可以这样想一下,假如你是面试官,你会怎样去考察面试者的一个综合能力呢?作为面试官,你肯定知道面试者
背了许多的八股文,所以八股文只是你去找工作要过的第一关,接下来,面试官会通过某一个具体问题,一点一点
追问细节,以及生产中所需要的一些问题,通过这些才可以真正看出来你是否真的掌握了这些积能,以及你在做项
目中,是否有自己的思考!
接下来,从 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 的薪资,面试官也根本不会去考察你系统设计的能力,如果是更高级的岗位,这
一块的内容就必须掌握,而且是从细节掌握
分布式技术面试实战
如果跟面试官聊到了 分布式 这方面的内容,该怎么去聊呢,或者说是面试官会去问哪些内容呢,下面对分布式面
试内容进行分析
目前主流的微服务框架主要就是两个 Dubbo 、 Spring Cloud ,可能有些项目使用 Dubbo,有些使用 Spring
Cloud
其实两者最主要的区别就在于 生态 ,Spring Cloud 的生态很丰富,提供了注册中心、网关、服务熔断、服务限流
等等很完善的一系列组件,功能比 Dubbo 丰富很多,而 Dubbo 设计的目的主要是作为一个 RPC 服务框架 使用,
专注于服务注册、服务发现、负载均衡等服务治理的功能
简单来说,就是 Dubbo 主要是为了高性能的服务调用,而 Spring Cloud 是为了提供一套完整的微服务解决方案,而
Spring Cloud Alibaba 则整合了 Spring Cloud 和阿里巴巴的一些开源组件,如 Nacos、Dubbo、Sentinel 等等,通过
Spring Cloud Alibaba 可以迅速的将 Spring Cloud 接入阿里中间件,搭建分布式系统
技术选型
那么先来思考第一个问题:你们公司微服务框架选用了哪一种,为什么这样选择呢?
简单来说,可以从 公司的需求 和 对哪一种微服务框架更加熟悉 这两方面来说,就比如说,我对 Dubbo 更加熟悉,
那么肯定使用 Dubbo,这样对于前期生产成本以及后期维护成本都是大大降低了,其实选用哪一种技术,也不用说
的很天花乱坠,只要说明需求即可
其次,可以去 Dubbo 官网,Dubbo 在官网也有与 Spring Cloud 的比较
如 Spring Cloud 存在了一些问题如下,而这些问题也就是 Dubbo 的优势:
落地成本以及后期维护成本大
欠缺服务治理功能,尤其负载均衡、流量路由方面较弱
基于 HTTP 进行通信,性能不如 RPC 框架
技术原理
那么假如说,微服务框架选择了 Dubbo,那面试官肯定是要问问你有没有看过 Dubbo 的源码呢?原理了解吗?
这里我就以 Dubbo 来举例,如果你使用 Spring Cloud 或 Spring Cloud Alibaba,问题都是类似的,你一定要对这个
问题,画一个原理的流程图,可以和面试官清晰的讲解出来,Dubbo 整理的流程图我也画出来了,如下图,流程我
也写成文字:
1. 每个服务提供者都会去注册中心注册自己,包括自己的地址(ip+port)
2. 服务消费者去消费时,从注册中心(Dubbo 使用 ZooKeeper 作为注册中心)中拉取服务列表
3. 消费者会去为远程代理对象创建一个动态代理对象,通过动态代理来拦截方法的执行
4. 在代理对象的拦截中,会去执行一系列的操作
1. 负载均衡,选择一台机器进行通信
2. 选择一种通信协议:Dubbo 提供了自定义的高性能 rpc 通信协议
3. 将请求进行封装,并且序列化
4. 通过网络通信框架,将远程调用请求传给 Dubbo 服务提供者
5. Dubbo 服务提供者收到后,也会进行一系列操作解析请求,最后调用本地服务,将执行结果返回给服务消费
者
由面到点
整体的一个 Dubbo 原理说完之后,肯定会从 Dubbo 某一个具体的功能切入,比如说一下 Dubbo 底层的网络通信机
制原理,这其实考察的就是 Dubbo 底层网络通信框架 Netty 的原理,只要讲一下 Netty 如何进行网络通信,以及
Netty 的线程模型是怎样的就可以了
具体的技术细节就不说了,这里主要说一下面试的逻辑,只有熟悉面试官的逻辑之后,才可以更好的去准备面试
系统设计层面
并且对于一个技术,可以多去看一下它的官网,看一下官网怎么说这个技术的优点,以及它的架构设计!
Dubbo 在系统设计层面,如何实现了它的高度可扩展能力呢?使用了 SPI 来实现
Dubbo 中将核心的组件全部接口化,组件和组件之间的调用全部依托于接口,之后再动态去寻找配置的实现类,如
果没有配置,就去使用默认的实现类
并且 Dubbo 提供了配置自己实现的组件的功能,如果你自己实现了一个组件,通过配置,可以在 Dubbo 运行的时
候,直接使用你的组件而不是默认的组件
Dubbo 提供了很多的 SPI 扩展实现,如:
剩余100页未读,继续阅读
资源评论
11来了
- 粉丝: 3617
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功