1、线程相关
1.线程池原理,讲讲线程池里面的核心参数,你平时是怎么用线程池的
2、线程池的应用与配置;
3.谈谈你理解的IO和多线程
4、网络io什么的
5.实现多线程有哪些方式
6.线程的创建方法
核心线程池的核心参数
阻塞队列
阻塞策略
7.线程的五种状态,有哪些方法控制他们状态,wait和sleep的区别,
7、threadlocal线程复用问题
8.线程池
2、必问相关
1、特别是jvm,hashmap,redis,mq这几个
2、hashmap,秒杀,jvm内存、jc,spring 生命周期bean、ioc、aop,sql优化,springboot自动装配原理,分布式锁,es,mq,分布式事物,这些都是高频面试问题,前面几个是必问
3、spring-cloud相关
1.Dobbu是怎么配置的?超时时间多少,重试次数多少?
2.Dobbu的实现原理是什么?
3.nginx的负载均衡怎么配的?
4.es中怎么使用索引?
5.跨域问题怎么解决?
6.redis和zk分布式锁的区别
7.布隆过滤器怎么配的?
8.熔断器怎么做限流?
9.es版本之间的区别?每个版本之间区别很大
10.springCloud里有那些组件?
11.redis里放了那些数据?
12、数据库用户模块使用了redis来解决重复注册的问题,如何用关系型数据库解决?
13.Redis除了RedisTemplate,还有什么可以操作?
14.Redis解缓存雪崩、缓存击穿、缓存穿透的产生原理以及解决
方案
15、redis内存利用率多少
16、他还问服务器的配置多少核多少内存多少cpu,压测的时候系统水位多少、cpu利用率多少,内存利用率多少
17、redis分布式锁的那个方法怎么实现的?vue简单唠一唠
18.dubbo的流程
19.eureka怎么注册,怎么维护和调用
20.springcloud组件,Hystrix怎么用
21.zuul网关什么情况下进行回调
22、Eureka 有什么作用
23、Eureka 和 Zookeeper 的区别
24、Redis 和 Zookeeper 创建分布式锁的过程 有什么区别
25、我写了参与部分技术方案的编写 他问了 一下 我描述了 后端的微服务架构 他有问到RPC 和 HTTP 的区别 为什么这么用
26.缓存雪崩 缓存击穿 缓存穿透 解决方案
27、项目中zk的应用
28.redis平时在哪里用到
29.redis怎么设置过期时间
30.redis数据类型
- 缓存雪崩和缓存击穿的解决方案;
- 假如在处理redis里的消息时出问题,redis的内存被打满是什么怎么处理的
4、秒杀库相关
1、秒杀业务要理顺,最好结合下单业务一起整理思路。这个过程面试官会穿插问一些用到的技术栈,redis,MQ,zk等相关问题都可能问到。分布式锁、幂等性等与秒杀直接相关的技术一定要了解。
2、一般会有编码题,这个大部分是操作字符串得到指定的结果。比如:在一个字符串中,得到第一个不重复的字符。可以到网上找一些有关问题做一下。
3、ThreadLocal在项目中用在那个地方,有什么作用
4、CurrentHashMap原理
5、==和equals
6、为什么服务内用rpc,服务外用http
别的我忘记了,都是基础的面试题。还要说一下,对于我面试的情况,问项目、面试题和编码题的时间是4:3:1,所以一定把秒杀讲清楚了,甚至redis\MQ中储存了什么具体数据,越细越好。
7、秒杀的购物车是放redis里的?不是秒杀的购物车,正常情况下的购物车放在哪里操作执行?项目里面有多少个微服务?
数据库里怎么保证超卖,少卖?
8、面试被问到秒杀怎么开启,秒杀订单创建成功但没有付款的情况怎么办
9、面试被问到秒杀怎么开启,秒杀订单创建成功但没有付款的情况怎么办
10.下订单到结款的具体流程
11.问到秒杀项目,会根据项目 问你一些设计 思想 有没有扩展的空间 中间开发过程中有没有什么问题 问的非常灵活 我回答的很勉强 感觉项目这块 还是比较麻烦
例子:汉克 二面(50分钟 基础知识基本没有偏离课上内容 项目只问了秒杀 回答的较差 )
12.秒杀业务中怎么保证数据库的安全 超卖 少卖的解决方案
13.统计订阅人数:
同时有N个商品(用long类型的商品id表示),每个商品都可以被任何一个用户(long类型的用户id)订阅,每被订阅一次,该商品的订阅数加1,同一个用户对同一个商品只能订阅一次 编辑写一个类,用3个方法提供以下功能(这3个方法都是在单机多线程环境下调用):
- 为指定的用户id订阅指定的商品id
2.返回所有商品的订阅总数
3.根据商品ID返回这个商品的订阅数
14.解决超卖少卖问题为什么不用分布式锁
15.限流怎么实现的,
16、重复下单问题,
5、集合相关
1.hashmap的核心源码,为什么是超过8变成红黑树,小于6变成链表。为什么是8和6
2.红黑树
3.hashmap的底层原理,hash如何实现;
4.(上一个问题引申)linked list如何(在不破坏链表结构下)删除某个节点上的数据。
5.ConcurrentHashMap和hashtable线程安全有什么区别
6.说说你对Hashmap的认识(有多少说多少,尽量把磊哥的那份资料吃透)
7.ConcurrenHashMap 的底层
进而介绍sychronized 和 CAS
8,hashMap底层数据结构及实现原理
9,hashMap和hashTable的区别,又引入了ConCurrentHashMap和hashTble的区别
10.hashmap为什么使用红黑树不使用别的树,消息队列的机制,在开发规范中你觉得对你而言比较重要的是什么,对单一抽象层次怎么理解的,arraylist,描述下最近做的项目,秒杀业务
11.集合有哪些,hashset如何保证存放的对象不重复
12、concurrentHashMap的机制,锁的问题,hashmap数据结构,线程安全问题
13.hashmap处了链表变红黑树有什么其他的设计是为了减少hash碰撞
6、spring相关
1.IOC创建对象的流程>>ioc aop 核心原理
2.循环依赖怎么解决
3.ioc,aop以及使用场景
(别模仿)我昨天面了中软的业务回答的还可以,但是他问spring的时候说我回答的太表面,源码那些我也没答出来,然后聊了40多分钟,结果没过
4、springboot如何使用yml加载指定配置文件,自动装配那个注解具体使用的哪个类,怎么加载的springfactories文件,为什么用mybatis配置文件不用全注解开发
5、对动态代理的理解,动态代理的两种方式,哪些场景用到了动态代理
6.springmvc的注解
7.springBoot核心注解,@SpringBootApplication的组成,自动化配置原理;
8.aop,ioc原理;
9.你在开发中ioc和aop的应用场景。
10.Autowired Resource 区别
7、mysql进阶(高级)相关
1.mysql索引结构
2.为什么使用B+做索引,B树和B+树的区别
3.es和mysql的MyISAM有什么区别
4.主要的SQL优化有哪些,值为null的字段建立索引可以命中吗
5.sql优化
- sql优化,索引的数据结构;
- sql查找select *与具体字段哪个快
- 100w个数中间少一个 快速找出来是哪个
- 索引键能不能为空 为什么
- mysql和redis的双写一致性
- 在你的项目里会不会有缓存穿透的问题
- 声明式事务
8、javaSE相关
1.stringbuffer和stringbuild的区别?
2.arraylist和linkedlist的区别?
3.redis在项目中作用,缓存雪崩
4.继承和实现的区别?
5.==和equal的区别?
6、集合{
1、数据结构不同
ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构。
2、效率不同
当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。
3、自由性不同
ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。
4、主要控件开销不同
ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。
}
7.堆和栈有什么区别,内部结构
8.垃圾回收发生在哪里
9.1.7与1.8的区别,(头插法和尾插法,为什么1.8要这样设计)
10.有哪些集合是有序的,hashmap的实现,是否安全
9、锁相关
1、NIO和BIO的区别,高并发下用NIO,然后接着问了一个如果一个用户一个线程岂不是更慢?我没回答出来,
2、synchronized和lock的区别。
3、redis怎么做分布式锁的。
4、介绍一下dubbo。剩下都是秒杀相关的了,还有mq怎么保证消息投递的
5.乐观锁的使用场景
6.cas锁
7.zookeeper 分布式锁 冗余部署数据一致性问题 和 redis的区别
10、jvm相关
1.超类object有哪些方法;
2.介绍下JVM,各个区域,程序计数器用途,哪一个区域是线程独享的哪一块区域是线程共有的;
3.分布式事务,描述下TCC模式(AT,SAGA,XA);
4、jvm原理两个gc区别
5.jvm本地方法栈
6.怎么预防死锁
7.JVM堆中存什么,栈中存什么
8.JVM栈帧
9.类加载器有哪些,双亲委派的好处
10.垃圾回收算法
11.说说你对JVM 的了解有哪些
我回答了 JVM内存结构之后说了上课的哪些
又问了GC什么哪几种
12.jvm调优 用了哪些jdk工具 类加载器 gc 什么会被垃圾回收
11、docker-Linux相关
1.docker配置有了解嘛
2.Linux的命令,比如查看内存是否占用,删除文件,修改文件
12、并发相关
面试官问我压测的时候多少,我说一万多,又问我限流多少,我说10万,那他说你这限流没啥用啊,然后问我qps多少,我说峰值八千多,均值2.3左右,他又问,你这才八千对于redis来说高了还是低了,我说低了,redis能撑10万,他说那你还把结束标记存jvm缓冲,还要配zookeeper,不麻烦吗,我说并发不高的时候可以放redis,这样设计为了大流量进来更能提升性能,他又怼说我你压测一万多还大流量。我是不是压测说低了
13、笔试题目相关
1、//评测题目: 有两个字符串A和B,请输出这两个字符串倒序后的和。例如
// A: 652
// B: 123
// A倒序后为256,B倒序后为321,所以输出数值为256+321=577。
// 请注意输入为字符串,输出为数值。请注意处理所有输入情况。
2、我那两道是:1.输出数组中占比超过一半的单个数字,如果没有就输出-1;2.合并两个有序数组让合并后数组依旧有序(不让合并之后用sort方法)
3、蓝川科技笔试题:工厂模式,单例模式,快速排序,复杂sql,jquery,的伪代码手写。面试题:对哪个框架理解最深,介绍一下原理,项目介绍了一下然后讲了下消息积压的解决,
14.图片资料
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AMs5HOSb-1647064887292)(C:\Users\圆圆\AppData\Roaming\Typora\typora-user-images\1629436112802.png)]
15、面试实时资料
1.武汉佰钧成,一面基础jvm,内存结构,垃圾回收机制,二面项目介绍秒杀,库存为什么放到redis,redis的数据结构,库存用的哪种,为什么用hash不用string,redis并发为什么好,分布式事务怎么保证库存扣减一定成功,幂等性怎么保证的,线程池的执行原理,答了课上说的又问了更底层的原理知不知道,我说不知道,项目中拿到数据怎么进行数据库的建表和数据写入,sql效率怎么查看,慢sql怎么查看,dubbo和zk这一套的原理,底层netty和nio的原理,为什么nio相比io效率更快,三面场景spring的理解,aop怎么用的,动态代理问的很细,方法a里面调用方法b两种场景:a方法有@trasanctional注解b方法没有,a方法有这个注解b方法没有,问两种情况分别有没有事务
2.晚上阿里面试:java的锁的区别,redis雪崩,击穿;zk的锁;hashmap;mysql的默认隔离级别;乐观锁,悲观锁
3.阿里外包二面:主要还是线程池,和一些基本的排序算法吧,然后其他就是现实开发大概的流程,如技术方案怎么写,谁写,一个需求来了,到交付大概的流程,
4.共道科技一面:sql优化,kafka细节,spring,springboot,springcloud,fegin,eureka,docker和dockercompose基本命令,项目发布的流程,线上出问题咋办,gitlab工作流,项目有几种环境
5.视频面,秒杀中redis上分布式锁作为排队标记是怎么实现的,mysql优化索引怎么建,有什么要求,abc三个字段怎么匹配最左前缀法则,一个场景:在mysql中ab两张表字段一样,a表是空的没有数据,b表有数据,怎么写sql吧b表的数据写到a表,一条sql能不能实现,其他没了,都是技术之外的为题
6.秒杀:画时序图
访问秒杀结束标记,还判断库存吗,还是原子操作吗,逻辑是怎样的!!
分布式锁为什么不一开始在访问就使用,setnx具体作用,
访问库存的流程,有job吗,redis和mysql数据同步怎么实现,
为什么要使用zk?
下单时依然出现超卖要怎么解决,如何保证mysql数据,可以用乐观锁来解决吗,
sql索引失效的情况 ,原理是什么,
kafka出现消息积压怎么解决,怎么保证消费可靠性,
手写一个requestmapping,加载url原理。
7.华萃面试,mysql优化建索引时对字段有什么要求,什么类型的字段适合建索引,在哪些场景中用到kafka,redis原子操作解决超卖少买是具体是怎么实现的,索引失效的情况
8.在mysql中插入多条数据,但是其中一个数据发现错了,问怎么回滚,还有安全框架security中怎么根据不同的权限显示不同的页面,是怎么实现的
16、其他
1、最左前缀法则
2、volatile的工作内存,主内存
3.项目怎么打包怎么运行
4.项目具体数据量多大,日志多大
5.你在之前的开发中有什么让你印象深刻的问题
6.项目有多少人
7.有一个问题 大家思考下,面试也常问:你项目中最近碰到的一个问题,怎么解决?——答案可以去晨考里找,或者把秒杀里碰到的问题拿出来说
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/65616.html