【Java项目】经典面试题总结-史上最全面试题思维导图总结(2022最新版)

写在前面

🍁个人主页:HNUJSY
✨本期专栏:《史上最全经典面试题总结》欢迎订阅学习~
📌Xmind文件获取:GitHub 持续更新中,别忘了 star 喔~


「Java学习+面试指南」思维导图,计算机自学指南,包括Java基础、JVM、数据库、mysql、redis、计算机网络、算法、数据结构、操作系统等,后台技术栈/架构师之路/全栈开发社区,阿里,腾讯,百度,美团,头条等春招/秋招/校招/面试

序号内容链接
1Java集合经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127456294
2JVM经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127456365
3MySQL经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127453408
4Redis经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127456253
5并发编程经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127457663
6分布式系统经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127457871
7高可用架构经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127458014
8Java项目经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127458047
9安全经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127457801
10数仓经典面试题总结https://blog.csdn.net/HNUPCJ/article/details/127458107

思维导图(png格式可下载放大)

在这里插入图片描述

谷粒商城项目

分布式

远程调用

  • HTTP+JSON
    • feign

服务注册/发现&注册中心

  • nacos

配置中心

  • nacos

服务熔断&服务降级

  • 当其中一个服务不可用时,有可能会造成雪崩效应
  • 服务熔断
    • 设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据
  • 服务降级
    • 在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者处理简单【抛异常、返回NULL、调用Mock数据、调用Fallback处理逻辑】

API网关

  • Nginx把请求转交给API网关
    • 动态路由到指定服务
      • 负载均衡到某个服务器
  • 对服务进行熔断或降级
  • 认证授权
  • 限流(只放行部分到服务器)
  • gateway

redis集群

  • (分片+哨兵集群+主从架构)

持久化使用mysql

  • 读写分离和分库分表

消息队列(RabbitMQ)

  • 异步解耦,分布式事务的一致性

ElaticSearch

  • 全文检索,检索商品信息

阿里云的对象存储服务OSS

日志

  • 使用ELK对日志进行处理,使用LogStash收集业务里的各种日志,把日志存储到ES中,用Kibana可视化页面从ES中检索出相关信息

服务追踪

  • 使用springcloud提供的Sleuth、Zipkin、Metrics,把每个服务的信息交给开源的Prometheus进行聚合分析,再由Grafana进行可视化展示,提供Prometheus提供的AlterManager实时得到服务的告警信息,以短信/邮件的方式告知服务开发人员

持续集成和持续部署

  • 有了持续集成后开发人员可以将修改后的代码提交到github,运维人员可以通过自动化工具Jenkins Pipeline将github中获取的代码打包成docker镜像,最终是由k8s集成docker服务,将服务以docker容器的方式运行

问题

docker

docker pull nginx:1.10

随便启动一个nginx实例,只是为了复制出配置,放到docker里作为镜像的统一配置

docker run -p 80:80 --name nginx -d nginx:1.10

cd /mydata/nginx
docker container cp nginx:/etc/nginx .
然后在外部 /mydata/nginx/nginx 有了一堆文件
mv /mydata/nginx/nginx /mydata/nginx/conf

停掉nginx

docker stop nginx
docker rm nginx

创建新的nginx

docker run -p 80:80 --name nginx
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-v /mydata/nginx/conf:/etc/nginx
-d nginx:1.10

注意一下这个路径映射到了/usr/share/nginx/html,我们在nginx配置文件中是写/usr/share/nginx/html,不是写/mydata/nginx/html

docker update nginx --restart=always
原文链接:https://blog.csdn.net/hancoder/article/details/106922139

逻辑删除

  • mybatis-plus 的内容,会在项目中配置一些内容,告诉此项目执行delete语句时并不删除,只是标志位

跨域问题

  • 指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对js施加的安全限制。
    • 协议,域名,端囗都要相同,其中有一个不同都会产生跨域
  • 跨域请求的实现是通过预检请求实现的,先发送一个OPSTIONS探路,收到响应允许跨域后再发送真实请求
    • 跨域是要请求的、新的端口那个服务器限制的,不是浏览器限制的。
  • 解决方案
    • 设置nginx包含admin和gateway。都先请求nginx,这样端口就统一了
    • 让服务器告诉预检请求能跨域
      • 在服务端配置允许跨域
        • https://blog.csdn.net/hancoder/article/details/106922139

JSR303校验

  • javax.validation.constraints

  • 注解

    • @NotNull
      • 注解禁止元素为null,能够接收任何类型
    • @NotEmpty
      • 该注解修饰的字段不能为null或""
    • @NotBlank
      • 该注解不能为null,并且至少包含一个非空格字符。接收字符序列
  • controller中加校验注解@Valid,开启校验

    • 添加注解的时候,修改message
      @NotBlank(message = “品牌名必须非空”)
  • 给校验的Bean后,紧跟一个BindResult,就可以获取到校验的结果。

    public R save(@Valid @RequestBody BrandEntity brand,
    BindingResult result){ // 手动处理异常

  • 统一异常处理 @ExceptionHandler

session

  • 多系统单点登录
    • xxl-sso
      • token

消息队列

模式

  • 点对点式
    • 一个发布,一个接收
  • 发布订阅式
    • 一个发布,多个接收

实现

  • jms
    • java消息服务
      jdbc
      • java
        • activemq
  • amqp
    • 高级消息队列协议
      • 跨语言
        • rabbitmq

rabbitmq

  • publisher生产者

  • message头+体
    route-key 路由键

  • broker消息代理

    • exchange交换机
      负责接收消息

      • direct

        • 点对点
          • 路由键和队列名完全匹配
      • fanout

        • 广播
          • 全部广播
      • topic

        • 发布订阅

          • 部分广播

            • 0个或者多个单词

              • 一个单词
    • Queue队列
      存储消息

  • Consumer消费者

    • connection连接
      • 一个连接多个信道channel

消息确认机制

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值