面试题总结

        简单介绍一下你的项目?你做了哪些功能? 

            有易学在线教育平台,做的有首页轮播图的优化,单点登录,微信支付,课程搜索

       

刚刚听到你提到了Tomcat服务器,介绍一下Tomcat服务器?你知道哪一些Tomcat服务器的配置?

Tomcat是一种开源的Java Servlet容器,可用于运行Java Web应用程序

  • 端口号配置
  • 虚拟主机配置
  • SSL证书配置
  • 连接池配置
  • 日志记录配置
  • 安全性配置(例如,访问控制列表和安全策略文件)
  • 负载均衡器配置
  • 数据库连接池配置

你们课程搜索功能是怎么实现的?Elasticsearch用到了那些分词器?如何进行分词的?

1、怎样把MySQL中的数据保存在Es中?

通过搜索服务和课程服务都放在注册中心上,通过网关,加入白名单,课程服务查询所有的课程,搜索服务通过OpenFeign调用课程微服务查询到的所有课程信息,搜索服务将课程信息批量添加到Es中。

2、Es使用的的是布尔查询,实现对课程数据的多条件查询,搜索到的还可以对字体进行高亮显示,分页等操作。

3、canal是数据同步工具,后台对课程进行增删改操作,课程微服务通过canal进行监听,监听到增删改操作,把最新的数据发送给RabbitMQ中,搜索微服务通过监听RabbitMQ获得最新的数据,搜索微服务将最新的数据保存在Es中。

ik分词器

你知道Elasticsearch的分片吗?

简单介绍一下订单服务的分库分表?你的分库分表是怎么实现的,具体实现做了哪些配置?

ShardingSphere为什么要用分库分表?你们的数据量有多大?

为什么要使用ShardingSphere的读写分离?使用ShardingSphere之后进行查询会有哪一些问题?

首先自我介绍

 首页优化流程?问项目里 nginx里面放的什么东西,nginx起到什么作用?(原话大概就是他说nginx不就是起到一个反向代理的作用吗?你是在nginx里存放数据了吗?大概就是问你在项目里是怎么用nginx的)

首页有很多广告烂尾,人多的话,服务响应的会慢很多,

第一轮优化是使用redis,把从数据库查到的数据保存redis中,这样每次查询都从redis中查找,这样降低了数据库的访问压力。

这样也有一些弊端,每次前端会访问都会访问后台接口,Tomcat没有Nginx性能高。

第二轮优化是用OpenResty服务器,使用lua脚本从redis中的数据保存到内部缓存中,这样每次查询都从内部缓存查找,进一步提升。

修改了轮播图怎么办?

使用Lua脚本查询数据库中新的轮播图数据,通过xxl-job任务调度平台通过定时任务对数据进行推送,这样就把新数据保存在redis中内部缓存中了。

 微服务体系里有哪些核心组件,起的作用是什么?

  1. 服务注册与发现:服务注册与发现组件可以让微服务之间能够相互发现和调用,从而使得微服务架构具备高可用、负载均衡和服务治理等特性。

  2. 配置中心:配置中心组件提供了一个集中式存储管理微服务运行时所需的各种配置信息的能力,允许在运行时修改配置并快速更新到应用程序中。

  3. 网关:微服务网关是所有请求的入口,它可以扮演路由、安全检查、负载均衡、流量控制等多个角色。

  4. 消息队列:消息队列充当微服务架构中不同服务之间异步通信的中介,实现服务解耦和异步通信。同时可以缓解不同服务的高峰流量和负载。

  5. 分布式跟踪:分布式追踪可以帮助我们监控和分析微服务架构中出现的问题,例如定位服务故障,性能问题等。

3. 微服务之间是怎么调用的 ?追问Feign的底层是通过什么实现的?提示我了比如实现了一个怎么样的通讯协议,报文之类?

4. Redis使用了哪些数据类型?应用到哪些应用场景?

5. Redis从哪些方面来提高它的效率,或者说怎么达到高性能?(redis为什么高效)

6. 数据库的调优经验?索引怎么去建,有什么原则? 怎么确定这条sql语句使用了索引?

  1.  你在使用过程中遇到过哪些数据库的问题?比如说一条sql语句很慢,你会怎么去排查它? 慢sql查询

8. 主键索引和非主键索引有什么区别?

9. 数据库varchar和char有什么区别?

10. SpingAOP怎么实现?

11. 对JAVA集合类型的了解?各自的特点,底层原理是什么,怎么实现的?

12. ConcurrentHashMap怎么(通过存放去)实现锁的?实现原理

1.8 开始 结构类似HashMap CAS乐观锁 + synchronized

1.8 前 使用分段锁 Segment

13. JRE和JDK有什么区别?

14. JAVA的内存模型?

15. Jsp和servlet的区别?

16. JAVA设计模式了解吗?追问单例模式是线程安全的吗?

17. 对threadlocal有了解吗?

18. JVM的垃圾回收机制有了解吗?Java里面对象啊,内存啊是怎么回收的?

19. 知道线程池或者连接池是怎么配的?有哪些关键参数?

rsa算法,如何生成密钥?

社区项目,物业缴费支付流程

你数据库用到了sharding-jdbc,依据什么分库分表,(分片)?

看你项目写了gateway鉴权,这个鉴权是什么作用?

技术二轮

介绍一下项目

  1. 播放这一块用的什么服务器
  2. 小程序使用的什么方式嵌入?H5?
  3. 说一下你们这个权限模型
  4. 数据级权限怎么做
  5. 数据库建模有没有参与,谁来建库建表
  6. AB表关联,对A表修改(要求B表中有数据才修改)关联修改语句
  7. java开发这一块用的什么框架
  8. 开发中使用到一个第三方的软件包,怎么加入到自己的项目中
  9. idea中输出日志,怎么修改默认的日志输出级别
  10. Excel导入导出怎么做的
  11. 导出多个sheet页怎么做
  12. 不规则表格导出怎么做
  13. redis的使用场景
  14. 怎么启动定时任务
  15. 开机启动加载
  16. 测试接口的工具用的什么
  17. lambda表达式使用场景
  18. 数组转集合,集合转数组
  19. 使用过的设计模式
  20. 工作流workflow
  21. 报表工具

三轮:

  1. 出差
  2. 抗压
  3. 其他要求。。
  1. 自我介绍
  2. 工作中有没有遇到有挑战性的问题,怎么解决的
  3. 讲一下项目
  4. ArrayList初始容量和扩容机制,HashMap的呢?
  5. 线程和进程的区别1
  6. java中的线程状态,以及怎么转换的
  7. sleep和wait方法的区别
  8. 线程池的参数
  9. 为什么不推荐使用线程池工具类创建线程池
  10. 内存溢出和内存泄漏有什么区别
  11. 怎么避免内存泄漏
  12. JVM的内存模型
  13. 什么情况下会触发FullGC
  14. 加入生产环境中报了一个内存溢出情况怎么排查
  15. synchronizd 和 reentrentLock的区别
  16. spring Bean的生命周期
  17. spring声明式事务在那些情况下会失效
  18. spring的拦截器和过滤器
  19. spingBoot配置文件加载顺序
  20. 乐观锁悲观锁怎么实现
  21. mysql聚簇索引和非聚簇索引
  22. sql优化
  23. MySQL中的binlog,undolog,redolog有什么作用
  24. redis持久化的方式
  25. 缓存穿透、雪崩、击穿
  26. 分布式锁
  27. 数据库中间件
  28. 消息中间件的使用场景
  29. canal怎么监听数据库的改动
  30. rabbitMQ的工作模式
  31. osi网络七层模型
  32. TCP和UDP的区别
  33. 三次握手和四次挥手,为什么挥手需要四次
  34. Linux中删除一个文件有哪些方式
  35. 怎么通过端口号找到应用
  36. vim使用过吗
  37. 觉得你自己最擅长那一块。

第二轮

  1. 自我介绍
  2. mysql优化
  3. mysql事务隔离级别
  4. 怎么处理脏读现象
  5. 数据库的表锁
  6. innodb的底层原理
  7. innodb和myisam在存储这块有什么区别
  8. redis使用场景
  9. 缓存穿透
  10. redis的持久化策略
  11. redis的过期策略
  12. ES用了几个节点
  13. 登录认证这一块怎么实现的
  14. 怎么保证rabbitMQ的数据不丢失
  15. 怎么使用线程池
  16. 拒绝策略有哪几种
  17. 线程队列有多少种
  18. 讲一下CAs
  1. SpingIOC和AOP
  2. 创建对象的方式
  3. 一个方法不希望被重写使用什么关键字
  4. static private 修饰的方法可以被重写吗
  5. 讲一下服务的雪崩
  6. Hystrix的原理
  7. redis支持的数据类型
  8. 集合转数组
  9. map是集合吗
  10. hashMap和HashTable的区别
  11. 垃圾回收的算法
  12. 数据库的分库分表
  13. 分表的索引怎么查找数据

  1. 你是入职后一直在这家公司吗,做的项目都是在这家公司做的吗,公司是自己找的吗,看你项目周期都不是很长
  2. 介绍一下你觉得难度最大的项目
  3. 首页为什么加载慢
  4. 视频存在哪里
  5. mybatis的工作原理,xml怎么绑定mapper层接口
  6. $和#有什么区别,你有用过$吗,具体场景是什么
  7. mysql索引类型有哪几种
  8. 组合索引中的最左前缀原则知道吗,能不能举个例子
  9. 三大范式
  10. mysql优化
  11. 线程安全的集合
  12. HashTable和ConcurrentHashMap的区别
  1. 介绍项目技术
  2. 说一下你常用的框架
  3. springboot的自动装配流程
  4. 说一下你学习了哪些Java基础
  5. 线程的返回值(没听明白问题,没答上来)
  6. Java8新特性有哪些,介绍一下stream流
  7. 介绍集合
  8. 知道Java8有哪些新的集合类型吗
  9. 离职原因
  10. 对加班的看法
  1. 离开上家公司的原因?
  2. 你认为你的优势是什么?
  3. 你的工作态度是怎么样的?
  4. 介绍一下最近的项目,重点说一下你觉得做的最好的
  5. ==和equals的区别?
  6. 介绍一下Spring框架?
  7. 说说你对AOP的理解,如何去项目中添加日志功能?
  8. 讲一下SpringSecurity的原理?
  9. 搜索功能中用的什么分词器?
  10. RabbitMQ怎么防止消息丢失的,项目中怎么做的?
  11. 前台课程放的有哪些数据?
  12. 课程描述是不是用的text纯文本?
  13. Redis的持久化策略?
  14. Redis的几种数据类型?项目中具体用的哪一种?
  15. 谈谈你对索引的了解?
  16. 哪些不适合?具体的怎么去建一个索引?
  17. 你如何对数据库进行分库分表的?
  18. 对多线程有了解吗?
  19. 讲一讲对线程池的了解?
  20. 项目中怎么解决高并发下的线程安全问题的?

  1. 自我介绍
  2. 离职原因?
  3. 并行和并发的区别?
  4. 你平时怎么创建线程的?有哪些关键字?
  5. 线程的生命周期?
  6. RabbitMQ怎么防止消息丢失的?怎么消息持久化?(他好像补充了一个集群的方法。。)
  7. 什么是Broker?
  8. 介绍一下RabbitMQ的广播模式?
  9. JVM的调优参数,它们的作用是什么,比如PrintGC的作用是什么?
  10. -Xms2g是什么意思?
  11. 介绍一下双亲委派机制?
  12. 讲一讲Nacos服务注册与发现的流程?
  13. ==和equals的区别?
  14. 讲讲IOC和AOP?
  15. ES怎么分的词?ik
  16. 怎么去优化SQL?怎么查看索引的优先命中?(没答上来,有type,ref什么的)
  17. 聚集索引和非聚集索引的区别?

  1. 离职原因
  2. 说说你对数据结构的理解
  3. 你知道哪些排序算法,时间复杂度又是多少
  4. 了解索引吗,索引是怎样实现的?
  5. b+树的结构
  6. 说说你的线程安全的理解
  7. 如何保证线程安全
  8. 不加锁如何保证线程安全

1. 从之前公司离职原因

2. 接不接受加班

3. 介绍做的最好的功能模块

4. 会不会GIS

5. 给一个包含很多1的数组,怎么删除数组中所有的1

6. 怎么解决前端跨域问题,怎么配置到全局

1. String str="i" 与 String str = new String("i")一样吗,为什么?

2. Math.round(-1.5) 等于多少?为什么?

3. try catch fanilly那个能省略

4. springboot配置文件有哪几种,区别是什么

5. 几种常见mybatis分页实现

6. mybatis的一级缓存,二级缓存

7. 主键自增的情况下,数据库有7条数据删除两条,重启数据库后,加一条数据,id是多少,为什么,根据表类型来说

8. mysql的优化

9. limit 1000000 加载很慢的话,你是怎么解决的呢?

10. mysql中exists和in的区别

11. redis怎么和数据库怎么进行数据同步

12. redis的持久化策略

13. ridis的数据类型

14. 常用的jvm调优的参数

15. rabbitmq的延迟队列

面试

1.介绍在线教育项目流程

2.Gateway网关做什么的

3.分布式怎么部署的

4.用的什么分词器

5.nginx怎么调用redis的,优势在哪里

6.lua脚本干啥的

7.课程购买怎么实现的

8.seata是怎么处理分布式事务的

9.事务是在哪一层

10.怎么监听数据库的

11.InnoDB和MyIASM的特点区别

12.项目上线了吗

13.linux熟悉吗

14.springcloud的负载均衡和dubbo的负载均衡的区别和优势

1.说一下在公司做的项目

2.介绍一下单点登录

3.单点登录校验的是什么

4.Gateway网关做什么的

5.白名单里面放的是什么内容

6.介绍一下JWT

7.rsa是什么

8.介绍一下首页优化

9.Openresty用来做什么

11.lua脚本放了什么东西,lua脚本怎么知道查mysql(怎么连接的mysql)

12.es查询是怎么实现的

13.ArrayList和LinkedList区别

14.ArrayList和LinkedList怎么去重,怎么排序

15.说一下HashMap的put方法,可以存重复的key吗,空值可以存吗

16.HashMap怎么遍历

17.介绍Spring的IOC和AOP

18.IOC实现看过吗

19.Autowire和resource有什么区别

20.Spring中bean的生命周期

21.介绍一下索引

22.如果有一个表,怎么去创建索引

23.在A,B,C字段上建了组合索引,但是查询时只用到了B和C,请问能构成索引嘛?

  1. token的有限期是怎么控制的?
  2. redis的缓存雪崩
  3. elasticSearch的数据是如何同步更新的?
  4. 购买课程出现并发怎么解决的,分布式锁,说说Redis分布式锁
  5. MySql和Oracle的区别
  6. 复杂Sql语句如何提升查询效率
  7. 项目中常用的设计模式

1.脏数据如何处理

2.增删查改的事务是怎么实现的

3.线程池的创建

4.数据库中订单表带地址是怎么创建的,地址是用冗余好还是用多表连查好,为什么

5.synchronized是什么,用在什么地方

6.订单表跟商品表是两表连查的,下单了商品A后,将商品表中商品A改成了商品B,订单表中的原本买的商品A变成了商品B如何解决。

7.双检索单例模式

8.synchronized的使用跟区别

  1. 静态方法块,方法快,main中system.out,先后顺序。
  2. 镜像中查询近500条日志
  3. 谈谈你对ThreadLocal的理解
  4. 跨域的解决方式
  1. 自我介绍,介绍自己开发的一些内容。
  2. 介绍一下单点登录的一个流程,这个业务是你自己全程独立完成的吗?项目上线没
  3. 介绍一下项目运用到的一些微服务的一些组件
  4. 单独介绍一下项目的架构,就是怎么从前端的一个请求到后台的一个接口?没有做负载均衡吗?
  5. 说一下redis缓存优化首页的流程 ?
  6. 介绍一下rabbitmq运用到的场景,(我说的是es数据同步功能),追问rabbitmq里面保存的是什么?
  7. 介绍一下rabbitmq的一个结构?
  8. 有没有遇到过重复消费?消息丢失的情况?
  9. 解决重复消费问题时哪个唯一的值是怎么生成的?是取消息的时候给它生成的唯一的值吗?
  10. 消息队列不是有几种模式吗?比如点对点、广播,你们用的哪种模式?
  11. 开发过程中经常涉及到的一些集合都有哪些?
  12. 比如说现在要对list去重怎么做?
  13. stream流的操作开发中用的比较多吗?
  14. list.foreach和list.stream.foreach的区别?(我犹豫了,他追问)你常用的是哪一个?我说list.stream.foreach,又追问为什么用这个?追问比如你stream.foreach遍历了一个集合,你想去修改里面的值,你会怎么做?我反问他是要修改集合里单一一个数据的值还是每个数据相应的某个属性都要修改?他就问我.stream.foreach,想对list集合里面的值做修改能不能修改。
  15. 想遍历一个集合可以怎么做?
  16. 迭代器和foreach有什么区别?
  17. 介绍下hashmap?
  18. 怎么遍历hashmap?或者比如说你怎么去获取map对应的(key,value)?
  19. 你这边有没有处理过那些数据量比较大的表?大概多少量级?
  20. 分表之后查数据的话你是要查不同的表吗?
  21. springboot的作用?
  22. springboot常用的一些注解?
  23. 有了解这些注解的底层的实现逻辑吗?
  24. 你们服务于服务之间的调用用的什么?

  1. sql优化
  2. 比如现在有一个六七张表的联查,你会怎么去让它查询速度快?怎么用代码实现
  3. 一个长sql可以拆分成几个短的sql语句吗?
  4. es你用的什么分词?你的词库是用的网上的现成的还是自定义的词库?
  5. ERP做的是整套还是部分?(我说整套)又问有没有财务管理这些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值