1. (点评)说一下功能模块、架构
3. 怎么用redis解决session共享,拦截器怎么写的
q:为什么需要分布式
即将应用程序部署在多台服务器上,并通过nginx做统一的请求分发。而服务器与服务器之间是隔离的,它们的session是不共享的,这就存在session同步的问题了,如下图:
分布式session的解决方案
更合理的方式就是采用类似于Redis这样的高性能缓存服务器,来实现分布式session。
具体实现的思路如下图,我们在服务端增加两段程序:
从图示可以看出 两端程序是 创建令牌和验证令牌
developer.aliyun.com/article/134…
拦截器怎么写
4. 查询缓存怎么写的,redis存了什么。
5. 6. 说一下缓存穿透、击穿、雪崩,以及你项目里具体怎么解决雪崩的 缓存穿透是指缓存和数据库中都不存在的数据被频繁请求,导致每次请求都要到数据库去查询,从而失去了缓存的意义。这通常是由于恶意攻击或程序错误引起的。 穿透就是啥都没有可不就直接穿过去了 然后击穿就是本来有 但是突然失效了 所以对应热点数据
7. 秒杀怎么解决
应该是在问怎么解决超卖的问题
(可能还有缓存击穿的问题)www.cnblogs.com/crazymakerc…
解决的方法就是 悲观锁和乐观锁两种都可以
9. 为什么redis分布式锁可以解决一人一单
文章:# redis分布式锁实现原理-以秒杀活动一人一单问题为例
在上述几个小节的描述中,我们循序渐进的讲述了redis分布式锁的实现原理,包括:
(1)利用set nx满足互斥性
(2)利用set ex保证故障时锁依然能释放,避免死锁,提高安全性
(3)利用唯一的线程标识防止锁的误删
(4)利用lua脚本保证删除锁操作的原子性
redis的分布式锁有两种 setnx还有Redisson 针对误删 可以在java里面使用lua脚本 setnx还是有很多问题 blog.csdn.net/qq_43856972…
这个问题的回答就是 因为它可以保证一个时间段内只有一个线程进行描述 blog.csdn.net/weixin_4654…
8. 说一下怎么用redis消息队列解决异步下单的
Redis也可以用来实现消息队列。Redis提供了几种不同的方式来实现消息队列,包括使用List、ZSet、PubSub模式和Stream等。这些方式各有优劣,适用于不同的应用场景。
这里只会讲解redis的stream实现 Stream 是 Redis 5.0 引入的一种新数据类型,可以实现一个功能非常完善的消息队列。 blog.csdn.net/Drifter_Gal… cloud.tencent.com/developer/a… blog.csdn.net/qq_17732903…
10. 了解redis持久化机制吗(说了AOF、RDB,她说还有别的,没答上 还有混合式的)
redis持久化还有一个混合持久化,先打个rdb快照,再用aof存储后续写命令,redis7之前是一个文件,后面分成三个文件,一个rdb,一个aof,还有一个main文件存储的是两个文件加载的先后顺序
10. 如果加个功能,用户必须发表评论才能买东西,怎么设计
10. 登录功能只有短信验证码吗,如果需要更多元化的登录方式怎么实现
12. (另一个项目)瓶颈在哪,怎么调优的
13. java线程池的工作原理、执行流程
任务进来 然后如果线程数量小于核心 那么就创建线程去执行 如果不小于就放入阻塞队列 如果满了就创建线程
如果线程也满了就使用拒绝策略 默认是抛弃任务
14. 手撕:二叉树展开为链表,最小k个数
leetcode.cn/problems/fl…
看题解其实就是子树的嫁接
第一步
将 根节点 的左子树插入到右子树的地方
第二步 将原来的右子树接到左子树的最右边节点 第三步
所以代码第一步先判断左子树是不是空的 如果为空那么就看右子树
如果有左子树 那么把左子树移出去 让右子树占领左子树的位置
www.nowcoder.com/feed/main/d…
1.反射是什么
反射(Reflection)是 Java 的一种特性,它可以让程序在运行时获取自身的信息,并且动态地操作类或对象的属性、方法和构造器等。通过反射功能,可以让我们在不知道具体类名的情况下,依然能够实例化对象调用方法以及设置属性
blog.csdn.net/qq_45450889…
2.反射的坏处有哪些
blog.csdn.net/qq_36470686…
主要是性能和安全问题
3.sychonized关键字解释
blog.csdn.net/qq_28082757…
第一
有啥用
第二 怎么用以及作用域
第三
底层原理是什么
blog.csdn.net/qq_28082757…
segmentfault.com/a/119000004…
4.sychonized锁升级
blog.csdn.net/a1405/artic…
www.cnblogs.com/star95/p/17… 注意第一步是无锁状态
5.wait和sleep区别
developer.aliyun.com/article/932…
6.一小部分项目
7.redis主从靠什么保持一致性 其实就是redis主从同步机制
因为Redis主从库目的呢其实就是为了实现高可靠。上篇文章中我们说过Redis的AOF、RDB日志其实就是为了减少****数据丢失,这是高可靠的一部分。 这篇文章呢,我们聊聊Redis实现高可靠的另一方面:尽量减少服务中断。这里Redis是怎么做的呢?Redis的做法是增加副本冗余,将一份数据同时保存在多个实例上。这样某个实例挂掉并不影响其它实例提供对外服务,保证我们的业务正常运行 cloud.tencent.com/developer/a… 其实就是问redis怎么保证的主从两个的数据一致
8.redisson看门狗机制
Redisson提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期,也就是说,如果一个拿到锁的线程一直没有完成逻辑,那么看门狗会帮助线程不断的延长锁超时时间,锁不会因为超时而被释放。
默认情况下,看门狗的续期时间是30s,也可以通过修改Config.lockWatchdogTimeout来另行指定。另外Redisson 还提供了可以指定leaseTime参数的加锁方法来指定加锁的时间。超过这个时间后锁便自动解开了,不会延长锁的有效期。
www.cnblogs.com/jelly12345/…
9.redisson可重入原理
Redisson通过维护一个计数器来实现锁的可重入特性。
当同一个线程第一次获取锁时,Redis会记录下这个线程的,并将锁的持有次数设置为1。 如果这个线程再次请求锁(即可重入操作),Redisson会检测到当前持有锁的与当前线程相同,则不会重新设置锁,而是简单地增加计数器,表示这个线程再次持有了锁。 每次释放锁时,Redisson会减少计数器,只有当计数器减为0时,锁才会真正释放。 blog.csdn.net/weixin_5389…
10.redisson官方为什么不推荐红锁(求解答)
blog.csdn.net/feiying101/… way2j.com/a/1338
11.final关键字
blog.csdn.net/qq_42651904…
12.mysql的存储引擎有哪些,异同
blog.csdn.net/riemann_/ar…
13.ThreadLocal是什么,作用
JDK1.2开始提供的java.lang.ThreadLocal的使用方式非常简单
所以threadlocal只是一个类而已
zhuanlan.zhihu.com/p/192997550
14.说说幻读
一次事务 两次不同的select 结果集数量不一样
15.怎么解决幻读
看小林coding的文章
16.什么是回表
,回表(Look Up)指的是在进行索引查询时,首先通过索引定位到对应页,然后再根据行的物理地址找到所需的数据行。换句话说,回表是指根据索引查询到的主键值再去访问主键索引,从而获取完整的数据记录。
场景八股:
1.说说redis集群的原理。
www.yuque.com/snailclimb/…
2.说说渐进式哈希,redis底层怎么扩容的?
zhuanlan.zhihu.com/p/258340429…
3.微博上面的热搜,打在了集群的分片上,分片扛不住怎么办?
3.用限流解决,有哪些实现限流的方法?
4.限流的话,用户看到的一个页面就是一个空白页面,对用户不够友好,还有什么别的方案?(冗余key缓存,存储在不同的分片上,把key打散)
5.现在如果我不知道哪个帖子会成为热搜帖子,这种情况怎么处理?(本质原因是无法水平扩容,采用多级缓存解决)
最后手撕,
数组:
1 2 3
4 5 6
7 8 9
要求打印顺序:1 4 2 3 7 5 8 6 9
www.nowcoder.com/feed/main/d… 垃圾回收算法了解哪些?
新生代和老年代的区别是什么?
当多个线程在新生代申请空间时,jvm 是怎么处理的?(这个不知道)
线程池的参数有哪些?
Spring AOP 和 IOC 是什么? 他们的优点?
Spring Boot 的自动配置原理是什么?
MySQL 索引的数据结构有哪些?B+树相对于其他的结构有什么优点?
blog.csdn.net/Pireley/art…
Redis 的分布式锁的实现?演化过程
https://segmentfault.com/a/1190000041172633
项目拷打。
场景题。
反问。
面完说找老板聊一下。主要是项目拷打。
Java 的反射的作用?为什么他比直接 new 一个对象性能更差?(项目延申的问题)
blog.csdn.net/qq_16828223…
可能是步骤多了吧 涉及到底层了
项目拷打。
理想,规划。
反问。
1. 说说数据结构
3. JDK中,你觉得哪种数据结构用的比较好、比较巧妙的,讲讲
www.runoob.com/java/java-d…
在javautil包下
5. HashMap的链表为什么要转换成红黑树
7. HashMap为什么是线程不安全的?在哪几个地方线程不是安全的
cloud.tencent.com/developer/a…
1.7 1.8分版本的
9. 假如要你做一个,就是全局唯一ID,你会采用哪种算法来实现?(我说用Hash函数,再哈希去解决冲突,他说数据很多的话内存太大。我说用时间戳去拼接字符串,他说不行)
ID在程序设计中,无处不在,至关重要。
- 分布式锁中,我们会用唯一ID宣誓锁的归属。
- 数据库中用主键ID记录每一行并绑定Data。
- 分库分表的系统中,用ID生成,来保证全局唯一等等 blog.csdn.net/u010697366/… blog.csdn.net/u010697366/…
11. 网络七层,大体说一下视频通话的时候数据在网络中的流转过程
https://developer.aliyun.com/article/1508695
13. TCP三次握手,以及怎么解决丢包问题的
www.yuque.com/snailclimb/…
zhuanlan.zhihu.com/p/356225028
www.cnblogs.com/fly-bryant/…
15. 项目相关
17. 假如我是有一个 Innodb 的 MySQL 表,我要查询它 ID 从 1 到 100 数据,这个数据查询的过程,它大体的在数据库的流程是什么样的?
这个是select流程
www.cnblogs.com/llzhang123/…
blog.csdn.net/STILLxjy/ar…
19. 描述一下b+树的结构
21. 索引失效的情况
23. 对Spring的看法
25. Spring Boot 集成了 原来Spring的哪些组件
27. 你觉得自己做技术这一行做到什么程度是比较厉害的?或者你想成为什么样的一个技术人?
28. 反问
项目介绍
多线程你了解多少
加锁是怎么加锁的
互斥锁有哪些
你用过哪几种锁
怎么使用乐观锁的
常见的锁有哪些
分布式锁 redlock
悲观锁有哪些你用过哪些
lock接口
多线程通信有哪些
案例 a b两个线程 a执行到一半需要等待b线程的执行结果 这个逻辑怎么实现 b线程通过什么方式将结果传输给a线程 全局变量可以传输吗 ? 具体是怎么等待的 怎么唤醒 阻塞队列怎么实现等待的
thread.join是什么意思 管道流是什么用法
什么情况下去做封装
内部类的特征 什么是静态内部类
设计模式直到哪些
单例模式 实现 使用案例 饿汉懒汉
、
盒马秋招Java二面
自我介绍
用过什么数据库
redis用来做什么的
过期时间设置多久,超过过期时间会咋样
除了做缓存还能干嘛
其他非关系型数据库了解哪些
MySQL底层数据结构
MySQL写SQL需要注意哪些,不走索引有哪些情况
索引优化有没有做过
分析是否走索引有哪些办法
红黑书数据结构
有没有了解微服务结构
做微服务的好处是什么,难点是什么
有没有了解过ddd,你的理解
接口qps暴增怎么处理,还有没有再想一下
哪些方法可以实现限流
降级怎么降
还有没有什么方法
未来3-5年在技术需要达到什么效果,目前最缺的是什么
毕业之后第一份工作最看重的是什么
期望薪资
武汉城市有什么看法,有没有打算长期发展
反问
多久有结果
看重应届生哪些能力
1. 自我介绍
3.讲下你的学习,说着打开了我的博客 blog.picmemo.top
4.讲了我博客的学习流程
5.讲实习
6.redis的部署
7.redis的主从架构的部署
8.redis主从数据的同步
9.redis的持久化
10.Redis的zset
blog.csdn.net/shulianghan…
11.b+树
12.为什么不用B+树,用跳表
13.出了mysql的锁相关的sql题
A:select name from A where id = a -> A
B: update A set name = B
A:select name from A where id = a ->?
13.delete from table where a =1,里面有几个锁
14.根据我上面说的,你觉得隔离级别和锁有关系吗
有啊 隔离级别的不同 会导致
15.反问
、 www.nowcoder.com/discuss/682…
1. 自我介绍
3.hashmap的底层
2.mysql的索引底层
是b+树作为底层数据结构
3.Zset的底层
cloud.tencent.com/developer/a…
4.红黑树的基础知识了解多少
blog.csdn.net/cy973071263…
5.为什么Zset用跳表不用红黑树,B+树
blog.csdn.net/f80407515/a…
6.聊实习
7.你还知道哪些http实体头
www.cnblogs.com/timssd/p/58…
还分好几种 比如响应头 请求头 通用头
8.http状态码知道哪些
9.聊天
10.俺CSDN喜提快手✌的关注
然后就是算法题
1. 自我介绍
3. 除了本科阶段课堂学习java之外,别的途径怎么学习java的
4. 项目是自学的,还是参与公司开发的
6. jdk、jre、JVM的区别
www.cnblogs.com/bingyimeili…
8. volatile 了解吗? 作用是什么?
10. ++操作符是线程安全的吗?
不是
++ 分为三步 第一就是从主内存取值 然后+1后 再写入到主内存
12. 如何创建一个线程
14. runnable和callable有什么区别
两者的区别
1、最大的区别,runnable没有返回值,而实现callable接口的任务线程能返回执行结果
2、callable接口实现类中的run方法允许异常向上抛出,可以在内部处理,try catch,但是runnable接口实现类中run方法的异常必须在内部处理,不能抛出
blog.csdn.net/syw_0406/ar…
16. 线程池的核心参数
18. 有了线程之后,为什么还要线程池?
20. 简历中提到线程池,是怎么用的, 它的作用是什么,他的目的是什么?是提高查询速度还是怎么样?
22. 如何来确保线程安全?
24. 用到哪些消息中间件(Rabbitmq),有哪些消息模型?
26. 生产者广播消息,怎么设计
28. 消费者是怎么获取消息的, 是直接连交换机吗 这个问的估计是ribbitmq
31. 生成者发生消息到两个消息队列,消费1能收到几条
33. 另一种场景,一个消费者消费一条消息,怎么设计
34. spring、Springboot、springmvc、Mybatis、SpringCloud有哪些常用的注解(当时想不起了,就随便说了几个)
36. SpringbootApplication注解的作用
38. 看你使用了微服务,SpringCloud alibaba有哪些你用到的组件?
40. Gateway你了解他的工作流程吗?
blog.csdn.net/Jokeronee/a…
42. 这个路由转发包含哪些要素呢?
44. redis有哪些基本类型,以及hash怎么实现put操作(redis命令)
46. redis的持久化机制?
48. MySQL索引失效的原则?
作者:靠谱的三文鱼希望被捞
链接:www.nowcoder.com/feed/main/d…
来源:牛客网
算法题 还有冒泡排序的写法要记得做
对于遍历的理解 可以看整体
比如前序遍历 顺序是中左右
那么第一个肯定是5 然后就是左子树的遍历 左子树又是开始中左右 那么就是4 1 2 右边也一样
sql题目 blog.csdn.net/qiqi123i/ar… 做前面十个题目 知识点1: inner join www.w3schools.com/SQL/sql_joi…
public class Main {
private static void change(StringBuffer a, StringBuffer b) {
a=b;
b = new StringBuffer("new world");
a.append("new world");
}
public static void main(String[] args) {
StringBuffer str1 = new StringBuffer("hello");
StringBuffer str2 = new StringBuffer("great ");
change(str1, str2);
System.out.println(str1.toString());
System.out.println(str2.toString());
}
}