京东Java开发一二面

一面:
1.mybatis一级缓存和二级缓存(当场去世)
2.mybatis分页插件的原理(当场去世)
3.mybaits的mapper是怎么实现注入的,是什么设计模式(当场去世)
4.mybatis的$和#有什么区别
5.怎么理解Spring的application context,是什么设计模式
6.applicationcontext提供的核心功能是什么(控制反转)
7.mysql怎么删除表,truncate和drop哪个能释放表空间(当场去世)
8.rabbitmq的延迟交换机是怎么实现的,自己猜测一下
9.rpc项目中使用压缩算法,如果压缩算法太过耗时怎么办,有没有考虑这个问题(当场去世)
10.duboo或者grpc,它们的核心是什么(我说稳定性)
11.spring aop
12.cglib动态代理和jdk动态代理有什么区别
12.concurrenthashmap是怎么实现线程安全的
14.hashtable和linkedhashmap
15.spring是怎么创建bean和实现自动注入的(反射)
16.垃圾回收相关
17.mybatis怎么实现批量插入(当场去世,事后想起来应该是问动态sql)
18.mybatis动态sql的实现原理(当场去世)
19.分库分表和怎么实现分库分表
20.主键索引和唯一索引有什么区别

二面:
1.项目中遇到的难点
2.怎么防止库存超卖
3.怎么实现一个用户最多购买两个商品
4.秒杀项目怎么让用户最多购买两个商品
5.怎么理解Spring
6.职业规划
7.怎么理解分布式服务和微服务
8.订单15分钟未支付过期是怎么实现的
全部评论
这咋一半都是框架啊
点赞 回复 分享
发布于 2022-09-15 21:35 天津
开头暴击
4 回复 分享
发布于 2022-09-15 12:26 湖南
我感觉你比我今天面试的简单多了,我今天面试让我说如何实现一个servlet
1 回复 分享
发布于 2022-09-15 23:00 广西
同学,考虑来恒生电子吗?😁😁😁😁恒生2023校园招聘开始了,现在刚开放秋招岗位,大量岗位空缺,机会多多哦!需要的小伙伴可以找我内推哦。 Hi,我是恒生招聘,我在恒生电子股份有限公司帮你内推~ 您可登录链接:[campus.hundsun.com] 进行投递,投递之前填写我的推荐码:  IS3MJ0 我就可以帮您内推哦~内推码:    IS3MJ0 还可以微信关注恒生招聘来手机投递简历哦
点赞 回复 分享
发布于 2022-09-16 00:03 浙江
当场去世 uu好强
点赞 回复 分享
发布于 2022-09-15 15:11 湖北
同学是因为写了秒杀项目,二面才被问的吗?
点赞 回复 分享
发布于 2022-09-15 09:21 湖北

相关推荐

05-23 15:16
已编辑
门头沟学院 Java
1,缓存架构?答:讲了一下redis在项目中的具体实现注:其实面试官想问的是多层架构2,redsi缓存击穿,穿透,雪崩怎么解决?答:击穿可以通过设置热key永不过期穿透可以使用缓存空值和布隆过滤器来解决雪崩可以通过给键设置基础时间值+随机时间值来解决注:缓存击穿还可以还通过互斥锁进行解决(性能较低)关于雪崩上面只说了大量key过期的问题 没有提到redis宕机解决方法:(1)设置多层架构(2)建立redis主从或集群(3)提前演练redis宕机 从而设计解决方法3,大量不存在的用户同时登录时会给数据库造成压力,怎么解决?答:使用redis缓存空值注:缓存空值不能有效解决这类缓存穿透问题这里要使用布隆过滤器进行拦截 更加有效在实际业务开发中最好俩者结合使用4,jwt?答:说了一下jwt的生成和解析以及结构5,讲讲乐观锁和悲观锁答:讲了一遍sychronized的底层实现从无锁->偏向锁->轻量级锁->重量级锁这里轻量级锁就是乐观锁 重量级锁就是悲观锁6,乐观锁和悲观锁最主要的区别?答:在低并发场景下乐观锁性能好在高并发场景下悲观锁性能好注:乐观锁是认为操作的时候没有线程和我并发操作通过cas判断 不会让你的线程挂起 可能会不断自旋去尝试获取锁悲观锁是认为有线程和我并发操作 拿不到锁线程就会进入阻塞状态直到拿到锁的线程释放锁后唤醒该线程7,sychronized和reentrantlock有什么区别?答:sychronized由jvm释放锁 reentrantlock手动释放sychronized不可重入 reentrantlock可重入(避免死锁)注:这里答错了sychronized可重入他们的主要区别在于sychronized不支持公平锁,不支持超时不可中断,不支持多条件sychronized是java内置的关键字 reentrantlock是由juc类库所提供的8,aop怎么理解?这里答的太乱了不清楚注:把那些非核心功能抽取出来封装成一个切面去掉冗余代码通过动态代理的方式 将需要注入切面的对象进行代理在进行调用的时候直接将公共逻辑注入侵入性较低1,缓存架构?答:讲了一下redis在项目中的具体实现注:其实面试官想问的是多层架构2,redsi缓存击穿,穿透,雪崩怎么解决?答:击穿可以通过设置热key永不过期穿透可以使用缓存空值和布隆过滤器来解决雪崩可以通过给键设置基础时间值+随机时间值来解决注:缓存击穿还可以还通过互斥锁进行解决(性能较低)关于雪崩上面只说了大量key过期的问题 没有提到redis宕机解决方法:(1)设置多层架构(2)建立redis主从或集群(3)提前演练redis宕机 从而设计解决方法3,大量不存在的用户同时登录时会给数据库造成压力,怎么解决?答:使用redis缓存空值注:缓存空值不能有效解决这类缓存穿透问题这里要使用布隆过滤器进行拦截 更加有效在实际业务开发中最好俩者结合使用4,jwt?答:说了一下jwt的生成和解析以及结构5,讲讲乐观锁和悲观锁答:讲了一遍sychronized的底层实现从无锁->偏向锁->轻量级锁->重量级锁这里轻量级锁就是乐观锁 重量级锁就是悲观锁6,乐观锁和悲观锁最主要的区别?答:在低并发场景下乐观锁性能好在高并发场景下悲观锁性能好注:乐观锁是认为操作的时候没有线程和我并发操作通过cas判断 不会让你的线程挂起 可能会不断自旋去尝试获取锁悲观锁是认为有线程和我并发操作 拿不到锁线程就会进入阻塞状态直到拿到锁的线程释放锁后唤醒该线程7,sychronized和reentrantlock有什么区别?答:sychronized由jvm释放锁 reentrantlock手动释放sychronized不可重入 reentrantlock可重入(避免死锁)注:这里答错了sychronized可重入他们的主要区别在于sychronized不支持公平锁,不支持超时不可中断,不支持多条件sychronized是java内置的关键字 reentrantlock是由juc类库所提供的8,aop怎么理解?这里答的太乱了不清楚注:把那些非核心功能抽取出来封装成一个切面去掉冗余代码通过动态代理的方式 将需要注入切面的对象进行代理在进行调用的时候直接将公共逻辑注入 侵入性较低不想写了 直接把问题都扔出来吧java线程池的七个参数?1. Java线程池,5核⼼、10最⼤、10队列,第6个任务来了是什么状态?任务扔到⼯作队列中2. 如果在第6个任务过来的时候,5个核⼼线程都已经空闲了呢?⼀样扔到队列(线程池只关注数量)3. 第16个任务来了怎么处理?创建⾮核⼼线程去处理第16个任务4. 第16个任务来了的时候,要是有核⼼线程空闲了呢?如果这个空闲的线程,将⼯作队列中的10个任务,取⾛了⼀个,变为了9个,那任务扔队列。如果空闲的线程还没来得及取⾛任务,投递时,队列⻓度依然为10,那还是创建⾮核⼼。5. 队列满了以后执⾏队列的任务是从队列头 or 队尾取?⼀般咱们的阻塞队列都是FIFO的,所以先进先出,从头取。6. 核⼼线程和⾮核⼼线程执⾏结束后,谁先执⾏队列⾥的任务?谁空闲了,并且去等待任务,谁先去执⾏队列⾥的任务。7.为什么⾮核⼼优先执⾏投递的任务?8.核⼼线程与⾮核⼼线程有什么区别?9.MySQL中如何实现数据的读⼀致性?10. MySQL的InnoDB引擎是如何通过⽇志实现事务的?11. MySQL崩溃恢复为什么不⽤binLog?12.Redis的事务了解吗?13.Redis 的持久化机制?总结:对底层的理解还是不够深入 之前没有了解过redis事务 有的时候答非所问容易跑题
点赞 评论 收藏
分享
查看22道真题和解析
点赞 评论 收藏
分享
评论
7
77
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务