2024年Java最新2105-微服务课上历史问题总结(1),java面试题大全带答案pdf版

最后

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。

《Java高级面试》

《Java高级架构知识》

《算法知识》

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 线程拒绝执行异常

  • Day05

    • JDK 版本问题
  • Sentinel 控制台显示

  • 微服务中的Sentinel日志

  • 回顾Spring MVC 请求处理

  • Sentinel 请求拦截分析

  • Day06

    • Idea中启动Nacos
  • 跨域访问问题

  • Nacos 服务注册问题

  • 文件上传404问题

  • 请求资源405异常

  • 请求资源500异常

  • BeanCreationException 异常

  • 服务名无效或没有定义

  • Day07

    • 网关配置文件问题
  • 服务访问被拒绝(Connection refused)

  • 网关负载均衡调用流程分析

  • 503访问异常

  • Postman请求携带请求头

  • 作业(homework)

  • Day08

    • Debug调试
  • http Client 应用

  • 503 异常分析

  • 修改文件上传工程结构

  • Day09

    • 网关执行流程分析
  • 存在多个跨域设计

  • 自定义执行链设计

  • Spring MVC 拦截器

  • Spring框架生态设计

  • Day10

    • JVM 参数说明
  • AOP 执行流程分析

  • Day11

    • 文件上传架构升级
  • SpringSecurity 执行流程

  • JS中的断点调试

  • Day12

    • 单点登陆方案
  • 401 认证异常

  • 检查令牌

  • 权限校验过程分析

  • postman 上传文件

  • 403 访问被拒绝

  • 资源请求图标问题

  • Day13

    • Postman测试刷新令牌
  • 生成序列化ID

  • Idea&@Autowired

Day01

===============================================================

服务分析


在这里插入图片描述

项目结构分析


在这里插入图片描述

pom.xml 文件删除线


在这里插入图片描述

MySQL的版本问题


当我们在执行一些SQL脚本时(例如 nacos-mysql.sql文件),假如出现如下错误,请升级你的mysql(建议mysql5.7以上或MariaDB 10.5.11)

在这里插入图片描述

Nacos服务启动问题


问题1:没有配置JAVA_HOME环境变量,或者JDK有问题

在这里插入图片描述

问题2:nacos链接mysql时,链接配置问题

在这里插入图片描述

问题3:启动命令用错位置

在这里插入图片描述

idea 中启动nacos


第一步:添加或编辑配置,例如:

在这里插入图片描述

第二步:新建 shell Script脚本,例如:

在这里插入图片描述

第三步:输入nacos信息,例如

在这里插入图片描述

第四步:启动nacos,例如:

在这里插入图片描述

Maven 依赖问题


假如出现依赖下载不下来,或者pom.xml文件出错,一定要检查:

第一:依赖添加的是否正确(groupId,artifactId,version)

第二:检查元素嵌套关系(dependencies,dependency)

第三:检查父工程依赖是否有问题,单词是否正确

第四:检查maven环境配置(最好一个项目一个本地库,假如多个项目共用一个,要确保多各项目使用的依赖版本是一致的。)

Day02

===============================================================

项目克隆问题


克隆下的项目导入以后是如下问题:

在这里插入图片描述

这个问题,可以右键项目的pom.xml文件,然后执行如下操作,将项目添加到maven区,例如:

在这里插入图片描述

JDK 配置问题


打开项目代码,是如下问题,例如

在这里插入图片描述

如上问题,可以打开项目结构,然后配置JDK,例如

在这里插入图片描述

Maven配置编译问题


我们使用的maven一般默认编译版本会采用JDK1.5,假如你希望为JDK8,可以在当前工程或父工程中添加如下,代码:

org.apache.maven.plugins

maven-compiler-plugin

3.8.1

8

8

我们也可以在每个工程的properties元素中设置指定当前工程的编译版本,例如:

<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

服务注册异常(NacosException)


启动服务时,出现如下问题,例如:

在这里插入图片描述

在这里插入图片描述

服务配置读取问题


在这里插入图片描述

配置文件格式问题


在这里插入图片描述

无法访问此网站


在这里插入图片描述

pom.xml有删除横线


在这里插入图片描述

访问404异常


在这里插入图片描述

访问500异常


在这里插入图片描述

例如,打开后台,假如出现了如下问题,就是你远程调用的服务url应该是写错了

在这里插入图片描述

例如:假如你的Consumer服务调用Provider服务,但是Provider服务没有启动就会出现如下问题:

在这里插入图片描述

端口占用问题


在这里插入图片描述

服务调用案例分析


在这里插入图片描述

服务ID问题分析


项目配置文件中的spring.application.name属性值为服务id,服务注册到nacos以后的服务名就是这个id,后续可以基于这个服务id找到具体的服务实例,然后进行调用.

在这里插入图片描述

Day03

===============================================================

Application Failed to Start


在这里插入图片描述

Maven Helper插件应用


在这里插入图片描述

在这里插入图片描述

客户端调用异常(ClientException)


在这里插入图片描述

@PathVariable 注解在@FeignClient中应用


在这里插入图片描述

依赖注入失败(Bean Not Found)


在这里插入图片描述

请求映射路径重复定义


在这里插入图片描述

@FeignClient注解名字问题


在这里插入图片描述

Feign远程调用超时


在这里插入图片描述

图解服务调用方案


在这里插入图片描述

这张图描述了远程服务调用的几中方式:

第一种:服务比较少,例如就两个服务,一个服务消费,一个服务提供,就不需要注册中心,不需要负载均衡.

第二种:并发比较大,服务服务比较多,我们需要管理服务,就需要注册中心,我们还需要服务间的负载均衡.但代码编写的复杂多相对高一些,我们需要自己获取ip,获取端口,拼接字符串等.

第三种:我们要基于第二种进行代码简化,底层提供了一种拦截器,把基于服务名获取服务实例的过程在拦截器中做了封装,简化了代码的开发.但是加了拦截器多少会在性能少有一点损耗.

第四种方式主要是从代码结构上做一个挑战,我们前面三种基于RestTemplate进行服务调用,本身属于一种远程服务调用业务,能够将这种业务写到一个业务对象中,Feign方式就诞生了,它主要对代码结构的一种优化.

Day04

===============================================================

配置文件加载顺序


在这里插入图片描述

拉取(Pull)配置信息


在这里插入图片描述

Nacos配置中心模型


在这里插入图片描述

在这里插入图片描述

Tomcat 请求处理分析


在这里插入图片描述

Java线程池构成分析


在这里插入图片描述

线程池任务执行过程


在这里插入图片描述

线程拒绝执行异常


在这里插入图片描述

Day05

===============================================================

JDK 版本问题


在这里插入图片描述

Sentinel 控制台显示


在这里插入图片描述

微服务中的Sentinel日志


在这里插入图片描述

回顾Spring MVC 请求处理


Spring MVC 是spring框架中基于MVC设计思想实现的一个WEB模块,这个模块下的请求响应处理流程如下:

在这里插入图片描述

其中:

第一:客户端向web服务(例如tomcat)发起请求。

第二:tomcat会调用Filter对请求进行预处理(例如请求编码处理,请求认证分析等)。

第三:请求经过滤器Filter处理过后会交给DispatcherServlet对象(负责资源调度,前端控制器),此对象基于url找到对应的请求处理链对象(HandlerExecutionChain)。

第四:DispatcherServlet获取了请求执行链之后,会首先调用请求执行链中拦截器(HandlerInterceptor)对象(这个对象会在@RestController之前执行).

第五:拦截器对象获取请求以后可以对请求先进行分析,例如记录请求次数,请求时间,然后控制对后端Controller的调用。

第六:拦截器允许请求去传递到Controller时,Controller对象会对请求进行处理,然后将处理结果还会交给MVC 拦截器。

第七:拦截器拿到响应结果以后对其进行分析处理(例如记录Controller方法执行结束的时间)

第八:拦截器将响应结果传递到DispatcherServlet对象。

第九:DispatcherServlet拿到响应结果以后,会基于响应数据的类型,调用相关处理器(Processer)进行处理。

第十:响应结果处理器对象对响应数据处理以后,会将其结果交给DispatcherServlet对象。

第十一:DispatcherServlet对象拿到响应数据的处理结果时,会将结果基于ServletResponse对象响应到客户端。

Sentinel 请求拦截分析


Sentinel对请求进行限流的原理分析,如图所示:

在这里插入图片描述

当我们在服务中添加了Sentinel依赖以后,Sentinel会为我们的服务提供一个SpringMVC拦截器,这个拦截器会对请求进行拦截,然后基于请求url获取sentinel控制台中设置好的流控规则,然后采用一定的算法对请求url要访问的资源进行流量限制。

Day06

===============================================================

Idea中启动Nacos


第一步:打开服务编辑配置,例如:

在这里插入图片描述

第二步:添加Shell Script,例如:

在这里插入图片描述

第三步:添加nacos相关信息,例如:

在这里插入图片描述

跨域访问问题


在这里插入图片描述

在这里插入图片描述

Nacos 服务注册问题


总结

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。

此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!

给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

image

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取


总结

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。

此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!

给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

[外链图片转存中…(img-B1aO0MyI-1714904443388)]

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

[外链图片转存中…(img-J78NjG0T-1714904443389)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值