面试遇到的问题
2022-05-21 02:22:56 0 举报
AI智能生成
面试遇到的问题
作者其他创作
大纲/内容
基础
说一下反射
HashMap是并发安全的吗
ArrayList和LinkedList的区别
LinkedList如果长度是10,我需要查询的元素在第9个,那我是不是要遍历9次才能找到我这个元素呢
List有两个获取元素的接口,一个是get(下标),一个是get(Object),那么对于get(Object),ArrayList和LinkedList时间复杂度是多少,那个会更快一些
假如我们设定相同长度为5的数组,那么ArrayList和LinkedList那个消耗的内存会更高一些,为什么
LinkedList
你知道为什么HashMap它数组的长度一定是2的N次方吗
List你知道怎么求合集、差集和并集
你了解过类的加载机制吗
加载
将需要加载的类装换成二进制流文件,将这个流的静态数据结构转换成方法区的数据结构,然后生成一个class对象,作为这个方法区的入口
链接
验证
确保这个类没有问题
准备
给静态属性分配内存空间,并设置默认值
解析
将符号引用变为直接引用
初始化
将真正的值赋值给静态属性
Class.forName()它底层做了那些事情
如果需要你实现SpringIoC的伪代码,你会怎么做,将步骤一步步说出来就行,讲详细一点,需要讲出具体方法
我想问下Class对象是单例还是非单例
我们可以直接写一个String类吗 并且是在java.lang下 可以这样吗 为什么
我们可以写一个类去继承String类 并且重写它的方法吗
项目中有用到集合吗,能说下HashMap吗
HashMap的扩容因子默认是0.75,有没有考虑过它的扩容因子为什么不是1或者0.5呢
HashMap是线程安全的吗
HashMap和HashTable有什么区别吗
SimpleDateFormat我们都知道它是线程不安全的,如果我们想要他线程安全,我们可以怎么用 提示:static关键字
像Java的8大基本类型的数值是存放在哪里的,我们基本类型包装类的对象是存放在哪里的,静态变量又是存放到哪里的
一个类里面有,静态代码块,构造方法,main函数 这三个的执行顺序是怎么样的
自定义注解用到的注解有哪些
在Java中ArrayList的扩容机制讲一下
设计模式
说一下你用过的单例模式和使用场景
模板方法主要解决什么问题
说一说模板方法模式和策略模式
大概的简单归纳一下设计模式,分为哪几类,哪一类又有什么设计模式
简单说一下简单工厂和策略模式之前的区别
再说一下责任链模式呗,责任链模式你在项目中是怎么使用的,一般什么场景会用到责任链模式
Spring
了解过Spring的内存模型吗(不是一二三级缓存那些)
说下SpringMVC的运行原理
Spring配置Bean的话有那两种方式
SpringMVC传参的几个注解
MyBatis
讲一下JPA和MyBatis之间各自的优劣势
在MyBatis中 有一级缓存和二级缓存 分别说下他们的作用域
MyBatis它是怎么通过声明接口的的形式和写一个xml文件 来实现我们从找到SQL语言到执行再到返回数据的
namespace下的ID可以重复吗 什么时候可以重复 什么时候不能重复
SpringBoot
讲讲SpringBoot autoconfiguration(自动装配) 的原理
SpringBoot如何开启事务,这个事务什么情况下会失效。如果A方法有事务,B方法也有事务,那么A方法调B方法会发生什么情况吗
SpringBoot他有一个启动注解,他由哪几个注解组成的 这些注解分别的作用是什么 能简述一下吗
在SpringBoot项目中 我们有一个@Component注解和一个@Bean注解 他们有什么区别吗
SpringBoot都是通过配置化进行操作 那他支持多少种配置文件的格式 他们的加载顺序是怎么样的
并发
说一下项目中用到的并发
创建线程的有几种方式
有哪几种创建线程池的方式
线程池的核心线程数是越多越好吗
不是,要看是CPU密集还是IO密集。CPU密集则跟CPU核数相等或+1,IO密集则是核数的两倍
你们项目中创建线程是怎么创建的
为什么要用线程池,不 NEW 一个线程来用
讲讲线程池的核心参数
讲讲线程池在不断工作中,他的核心线程数啊,最大线程数啊,还有等待队列的这么一个变化
我们通过使用线程池都会用到execute()、submit()。可以讲讲他们的区别吗,他们异常处方式有什么不同吗
什么是多路复用模型
线程池原理说一下
Synchronized和ReentrantLock他们有什么区别
Java锁的话有两种方式,说一说Java的这两种锁
Lock锁放在try{}外面好还是放在里面好一点 有什么不同
你了解的并发编程用到了什么技术呢
JVM
有对JVM有相关的了解吗,讲讲它的垃圾回收算法和垃圾回收器
有了解过CMS、G1吗
你了解那些JVM参数
JVM有性能调优吗,说一说JVM性能调优的思路
说一下JVM的内存模型
简述一下分代收集算法从新生代到老年代它整的一个过程 堆内存的默认比例是怎么样的
MySQL
说一下MySQL的性能优化
你能说一下MySQL索引的原理吗
首先我们的索引可以分为聚集索引和非聚集索引,那么他们的存储结构都是用b+tree来做数据结构存储的,b+tree呢它的每个节点存储都是索引的值,只有叶子节点存的是数据,所以它三次IO查询就可以支撑两千万级别的数据量。相对其他数据结构来说,b+tree矮而胖,可以用更少的IO来查询出更多的数据量
为什么InnoDB存储引擎不用B树而是用B+树
B树的话,他是索引和数据都存放在同一个节点上面,那么我们使用页来进行存储的,一页可以存16K的数据,也就是16384个字节,那么一页存B树的数据就相对来说比较有限。而B+树,它节点存的是索引值,只有叶子节点存的才是数据,这种结构使得它三层就可以覆盖两千万级别的数据。所以用的是B+树
你知道为什么相对来说B+树是矮胖的,而B树相对来说高度会更高呢
MySQL存数据是用页来存数据的,那么一页可以存16K的数据,B树它的索引和数据是存放在同一个节点的,所以它第二层的分叉先对来说比较少,就导致它比较高。而B+树它只有叶子节点存的是数据,所以一二层可以存更多的索引数据,这样三层结构就可以覆盖两千万级别的数据了。
我们MySQL ID是主键,有三种类型可以选择,一种是自增,一种是雪花算法,一种是UUID。你认为这三种那种最高,为什么
雪花算法,如果用UUID的话,它不是按顺序插入的,那么就会造成一种裂页的现象,这就无形中增加了插入数据的开销。
如果用自增的话,在并发的情况下,竞争会比雪花算法还大。所以雪花算法的效率更高一点
如果用自增的话,在并发的情况下,竞争会比雪花算法还大。所以雪花算法的效率更高一点
现在有一个字段,用数字类型和varchar类型,那种效率匹配会更高一点,为什么
MySQL有Float和Double两个类型,这两种类型都有精度丢失的问题,一般来说都会用Decimal类型可以解决这个问题,那么为什么Decimal可以解决这个问题
因为decimal内部以字符形式存储小数,属于准确存储。而float和double属于浮点数字存储,所以没有办法做到准确
我们业务生成一个订单号,我们客服通常都会通过订单号的后几位来查询对应的订单,我们知道Like查询%需要放在后面才能走索引,放在前面会索引失效,我想问问这种情况你会怎么去设计它
放到ES中
我们的商品都是有库存的,下单了会去锁库存。那我们这边有一个需求,下订单如果10分钟以后没有支付,就需要将订单置为失效订单并将库存释放掉,你会怎么去设计这个功能
通过MQ延迟队列实现
MyISAM和InnoDB有什么区别吗
MyISAM和InnoDB最大的区别就是MyISAM不支持事务,InnoDB支持事务
你知道什么是MVCC,什么是间隙锁吗
MVCC是一个快照,它可以保证事务间隔离,互不影响。每个事务都会生成一个快照,纪录当前事务ID,高水位、低水位等,通过高水位、低水位来确保它的可重复读和解决幻读的问题。
间隙锁,当我们开启一个事务,对索引间空白的区域增删改时,又没有提交事务,那么就会锁住这段索引间空包的区域
你是怎么做的MySQL优化,对MySQL的优化有什么思路
表结构层面
选用合适的存储引擎,像我们需要事务就用InnoDB、不用事务可以用MyISAM提高插入数据、还有一个基于内存的存储引擎
如果表字段太多,可以对表进行分表,常用的为一张表、不常用的为另一张表、大字段存另一张表。它们的主键则相同
选用合适的数据类型和数据长度
建立合适的索引
选递增的字段做主键
索引列选离散度高的
能用复合索引替代普通索引就用复合索引
不是说表的索引建越多越好
再说说索引失效的场景
架构层面
如果单张表的数据超过了500W,就可以考虑对表进行分库分表
MySQL配置层面
长连接时间
最大连接数
服务器层面
选用合适的操作系统和更好的硬件
你有没有测试过MySQL在什么样的系统,多少的并发他可以支持多少承受量,这块你有测试过吗
服务器8核16G 大体每秒可以承载几千这个数量级,往往这时CPU已达70~80%了
MySQL索引优化这块,网上很多人说 IS NOT IN、IS NOT EXISTS 会索引失效,是这样的吗,为什么
不一定会索引失效,可以通过explain查看执行计划来调优
可以说说某个sql的调优经验吗
explain执行计划你主要关注的列有哪些
什么是索引下推
你们的业务有分表吗,分表的策略是什么,有考虑过以后的扩容方案吗
MySQL聚集索引和非聚集索引有什么区别,分别讲讲他们是什么
MySQL有哪些锁,能不能举个例子说一下具体锁的各种情况
说说Oracle的递归查询 有没有写过存储引擎
如果我们MySQL做表设计的时候没有设计主键的话,会不会有什么影响
Redis
了解Redis的那一块
能大致说下Redis分布式锁是怎么实现的吗
现在有一个新闻,数据库里大概有一百万,Redis由于内存问题,只能放5W,怎么样才能保证5W条数据都是我们需要热点数据呢
可以给Redis数据设置过期时间,并将淘汰策略设置成lfu+ttl
将我们的共享资源放到redis里和放到MySQL中有什么区别吗
为什么Redis比较快
项目中Redis主要用来做什么 缓存你们是怎么用的 是基于注解还是怎么用的 一般Redis的话你是用在什么场景
Redis分布式集群有哪几种模式
Redis能不能用做海量数据存储 为什么
Redis的数据结构能简述一下吗 为什么他会比我们的MySQL或者关系型数据库更有优势
MySQL索引的数据结构有哪几种
MQ
讲一下Kafka从生产者到消费者整一个过程
能不能结合业务讲一下使用MQ会出现的问题 和解决思路
用过那些消息中间件,能讲讲RocketMQ吗
你了解Kafka的事务吗
Kafka是怎么保证消息有序性
分布式、微服务
项目中有用过权限框架吗,比如OAuth2
你们有用过熔断器这块吗,有具体了解过hystrix的什么吗
讲讲单体架构和分布式架构有什么优缺点
讲一下强一致性的解决方案
Seata有了解过吗 说一下Seata的分布式事务解决方案
你用注册中心用的是什么 eurake它是cp还是ap的
远程通信你们用的是什么 openfeign的鉴权是怎么做的
Ribbon是属于客户端的负载均衡还是服务端做的负载均衡
什么是熔断,什么是降级 熔断复杂一些还是降级复杂一些
网关你们用的是什么 说一下你理解的网关
我们微服务架构,如果服务与服务之间调用出了问题,我们怎么排查是那个服务出了问题
在项目中,你SpringCloud一般用到了哪些组件呢
OpenFeign它的服务调用机制是怎么样的呢 能简述一下吗 你了解它的隔离机制吗
发散类问题
讲讲你比较熟系的项目,你担任什么角色,项目有没有什么亮点之类的
说一下你项目中你挑一个有亮点的说一下呗,主要负责什么职责,亮点是怎样的,说一下
你说一下你项目中为什么要用到分布式锁,像这种场景有没有更好的解决方案
项目的XX业务,具体是怎么实现的
我看你有写过很多SQL调优经验 举个案例呗
对于计算机相关技术的话你是怎么去学习的
项目团队是怎么样的
团队给你的角色是怎么样的
讲一下你做的项目中比较有亮点的一块 讲讲你的实现思路
针对项目中业务继续细问 讲讲对应的解决方案
有项目重构的经验吗 或者项目有什么设计的亮点
离职的原因是什么
你觉得你自己在技术上有哪些优势和不足
多久可以到岗 目前薪资多少 期望薪资多少
你认为你自己有什么优势可以提这么一个薪资
你选择公司的话 会看公司的那几个方面
项目中有没有遇到让你不好处理的东西,你是怎么解决的
我们知道,使用Redis分布式锁是能数据的保证强一致性,但它是很消耗资源的,有其他的解决方案吗
假如我们A服务向B服务发送MQ消息,现在我们的B服务突然挂了,挂了半天才恢复服务,这时MQ已经堆积了很多消息了,如果我想优先消费最近产生的消息,也就是服务启动后产生的消息,之前堆积的消息我也不想丢弃。这种情况你要怎么处理
讲讲你项目中最熟悉的模块,或者最有亮点的一块,说一下实现它的难点和实现思路
数据库优化你们做了哪些方面
你们微服务项目中怎么是怎么拿到用户这一端请求IP的
用Nginx反向代理的时候,你们是怎么做的呢
们项目中有用到分库分表吗 用的是什么来分库分表 是物理分表还是逻辑分表
你了解鉴权技术吗,你们项目中统一认证中心鉴权是怎么做的
平时有空的时候,你是怎么做的技能提升的
在简历中看到你写的抽奖活动可以达到600/s的TPS,这TPS也是比较高的,你当时是怎么做到的呢
简历上写到你在项目中用到了设计模式,你的代码是怎么考虑的,怎么去设计的
收藏
收藏
0 条评论
下一页