
面试
文章平均质量分 86
醒了就刷牙
这个作者很懒,什么都没留下…
展开
-
20250306经纬恒润java实习一面
总共就16分钟。原创 2025-03-06 11:27:07 · 241 阅读 · 0 评论 -
黑马Java面试教程_P6_消息中间件
还是存在一个问题,如果主节点的队列还没来得及给镜像节点同步数据,这时候主节点就宕机了,那是不是说数据还没有同步完成,就有可能丢失数据,虽然发生概率低。可以用仲裁队列来解决。第一个是消息未到达交换机或者队列,第二个是MQ宕机导致,第三个是消费者宕机导致(未接收到消息或者未处理消息)。第一个方案是,在处理消息时,查看业务id是否存在,如果已经存在,说明数据库中已经有了消息所包含的内容,防止重复处理。- 主节点处理所有操作并同步给从节点,若主节点宕机,从节点可接替为主节点,但需注意数据同步的完整性。原创 2025-03-05 23:02:53 · 762 阅读 · 0 评论 -
20250919小米Java研发工程师实习生一面 已挂
面经原创 2025-02-27 20:37:54 · 119 阅读 · 0 评论 -
黑马Java面试教程_P5_微服务
如果降级(位置来的请求)太多,就会触发熔断机制。原创 2025-02-27 11:07:32 · 1076 阅读 · 0 评论 -
简历_熟悉Linux系统指令
grep是一个功能强大的工具,它能通过指定的文本模式查找文件内容,并且可以通过各种选项进行灵活的过滤和展示。原创 2025-02-18 12:16:28 · 787 阅读 · 0 评论 -
苍穹外卖使用MyBatis-Plus_P2
WebMvcConfiguration类的修改如下。sky-take-out的pom.xml修改如下。原创 2025-01-29 00:45:31 · 245 阅读 · 0 评论 -
为什么我可以在拦截其中BaseContext.setCurrentId(empId);然后在controller中通过BaseContext.getCurrentId(empId);拿到值
你在拦截器中通过存储了数据到当前线程的中。在控制器中,通过获取同一个线程中的数据,从而拿到empId。确保了每个线程有独立的存储空间,因此在同一线程中的不同方法之间,可以共享数据。和操作的是同一个变量,且在类中只有一个实例。是基于线程的,它在同一个线程内允许方法之间共享数据,但不会在每次调用时创建新的对象。原创 2025-01-29 00:04:53 · 920 阅读 · 0 评论 -
苍穹外卖使用MyBatis-Plus
将spring-boot-starter-parent父工程的版本号从2.7.3修改为3.0.5。将lombok依赖的版本号从原来的1.18.20更改为1.18.30。中增加mybatis-plus框架的依赖。将druid:注释掉。原创 2025-01-28 16:16:06 · 615 阅读 · 0 评论 -
@RestControllerAdvice 的作用
是 Spring 中一种集中处理异常、模型属性、数据绑定等的机制,它让你可以在一个地方集中管理所有控制器相关的操作,从而使得代码更加简洁和可维护。原创 2025-01-28 11:14:08 · 952 阅读 · 0 评论 -
黑马点评_Redis消息队列实现异步秒杀
日常生活中,我们简单想一下,可能我们作为消费者不想有快递柜,想让快递员送货上门,但是如果我们在班上,快递到了还要跑回家签收,其实很不合理,所以快递柜的存在对于快递员和我们消费者都是有利的。解耦性:消息队列实现了发送方和接收方的解耦,发送方只需将消息发送到队列中,不需要直接知道接收方的存在或状态,接收方通过订阅队列来获取消息,而不需要关心消息的发送者。比如你开启两个窗口,一个使用BRPOP,如果消息队列中没有数据,会阻塞住,另外一个窗口如果输入进出数据了,卡住的窗口会解除阻塞,输出被输入的数据。原创 2025-01-22 19:13:43 · 690 阅读 · 0 评论 -
黑马点评_秒杀优化_基于阻塞队列实现秒杀异步下单
现在的效率很低,所以我们可以再请一个人,小姐姐负责照顾顾客,点单下单,后厨拿到单之后负责做菜,做好菜,再上菜即可。优化后的流程图如下:由于秒杀资格判断需要数据库中的数据,如果还是每次从MySQL中拿数据,太慢了,所以可以使用Redis来存储一部分数据,用于秒杀资格的判断。这时候为了分离两部分,我们需要有个“小票”使得两部分连接起来,可以使用阻塞队列,用来记录谁买了什么,还要返回订单id,让顾客可以直接买单了,这时候订单可能还没有创建或者写入数据库,但未来我们保证可以完成创建。原创 2025-01-21 21:40:35 · 678 阅读 · 0 评论 -
黑马点评_优惠卷秒杀思路梳理_秒杀优化之前
又出现了一个新的问题,就是我们现在用了事务,我再整个方法的代码运行完毕,锁也释放了的时候,springboot才对事务进行提交(把数据写入数据库),可能还没来得及提交,已经有新的线程拿到了锁,开始查数据库了,发现没有针对同一个用户Id的订单,他也会继续执行针对相同用户Id创建订单的代码,这时候又会出现线程安全问题。锁有两种(理念),悲观锁和乐观锁。获取锁还有两种机制,一种是阻塞式的机制,我获取失败,我就等待,另一种是非阻塞的机制,我获取失败就返回false,我就不再获取,成功就返回true。原创 2025-01-21 16:39:58 · 1284 阅读 · 0 评论 -
简历_基于 Cache Aside 模式解决数据库与缓存一致性问题。
缓存更新策略的最佳实践方案:1.低一致性需求:使用Redis自带的内存淘汰机制2.高一致性需求:主动更新,并以超时剔除作为兜底方案读操作:缓存命中则直接返回缓存未命中则查询数据库,并写入缓存,设定超时时间写操作:先写数据库,然后再删除缓存要确保数据库与缓存操作的原子性。原创 2025-01-18 23:27:14 · 866 阅读 · 0 评论 -
简历_使用 Redis 解决集群模式下的 Session 共享问题,使用拦截器实现用户的登录,校验和权限刷新以及对单位时间内请求频繁的用户IP地址进行限流。
选择合适的数据结构选择合适的key选择合适的存储粒度。原创 2025-01-18 23:26:28 · 753 阅读 · 0 评论 -
黑马Java面试教程_P1_导学与准备篇
(他表面是问你如何定位慢查询,本质是想问你之前调优的经验,这是自然发生的,并不是死记硬背的东西,本教程会涉及什么场景会涉及慢查询的现象)HR收到简历后先进行筛选,通过后的简历给部门负责人再筛选,筛选再次通过后,部门负责人让HR来预约面试。业务条件(技术达标后,可能会进一步看项目类型是否与现在正在干的项目相关,比如电商、银行、物流)上图中第一点可以说明你意志力强。如果面试官一开始就只是想问,你权限认证怎么做的,你把如何设计都说出来,是很加分的。5- 6 是最核心的内容,是面试官的主要参考,被问到最多。原创 2025-01-17 14:27:48 · 1554 阅读 · 0 评论 -
简历_使用优化的Redis自增ID策略生成分布式环境下全局唯一ID,用于用户上传数据的命名以及多种ID的生成
我们需要设置全局唯一ID。原因:当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题。问题:id的规律性太明显、受单表数据量的限制。所以在自己的项目中,针对上传的数据的ID的生成也可以使用全局唯一ID。,是一种在分布式系统下用来生成全局唯一ID的工具,一般要满足下列特性:高可用、唯一性、高性能、递增性、安全性。ID 的构造是 :时间戳 + 计数器。每天一个key,方便统计订单量。原创 2025-01-17 10:34:26 · 623 阅读 · 0 评论 -
简历_专业技能_熟悉分布式锁Redisson的原理以及使用
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。原创 2025-01-05 22:39:28 · 441 阅读 · 0 评论 -
简历_熟悉缓存高并发场景处理方法(使用 Redis 对高频访问的信息进行缓存,降低数据库査询压力),如缓存穿透、缓存击穿、缓存雪崩
*服务实现类*原创 2025-01-05 09:31:47 · 1573 阅读 · 0 评论 -
简历_专业技能_熟悉Redis常用数据结构及其操作命令
注意查询哪些人是张三的好友却不是李四的好友用SDIFF即可。原创 2025-01-04 22:08:35 · 619 阅读 · 0 评论 -
黑马Java面试教程_P11_技术场景
下面9个问题都是比较通用的,不管你做过什么项目,都会包含下面的技术场景。我们针对的是如何回答这些面试问题,只告诉回答问题的核心要点,和回答问题的思路,并不会再实现一边,如果要深入学习这些内容,要自己系统学习。原创 2025-01-04 17:38:56 · 741 阅读 · 0 评论 -
黑马Java面试教程_P10_设计模式
在平时的开发中,涉及到设计模式的有两块内容,第一个是我们平时使用的框架(比如spring、mybatis等),第二个是我们自己开发业务使用的设计模式。面试官一般比较关心的是你在开发过程中,有没有使用过设计模式,或者你在简历上写了关于设计模式的描述,那么这样我们就需要重点关心自己开发中用过的设计模式。原创 2025-01-02 22:35:56 · 1251 阅读 · 0 评论 -
黑马Java面试教程_P4_框架
现在企业都是用框架进行开发,框架的面试题也很重要。spring的框架包含三个Spring、SpringMVB、SpringBoot。和持久层框架MyBatis。考察你对AOP的理解,有没有使用AOP,因为AOP在Spring中是个难点。AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。原创 2025-01-01 22:53:08 · 953 阅读 · 0 评论 -
黑马Java面试教程_P3_MySQL
项目中不可能不用数据库,mysql是最常见的数据库。这一篇分为两部分。定义:索引(index)是帮助MSQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。不是所有字段都可以当聚集索引。如果存在主键,主键索引就是聚集索引。如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。原创 2024-12-25 21:21:16 · 1265 阅读 · 0 评论 -
黑马Java面试教程_P9_JVM虚拟机
为什么要学JVM,应对面试,中高级程序员必备,深入了解JAVA。程序计数器:线程私有的,每个线程一份,内部保存字节码的行号。用于记录正在执行的字节码指令的地址。javap -verbose xx.class 打印堆栈大小,局部变量的数量和方法的参数。我们可以得到下图。java虚拟机对于多线程是通过线程轮流切换并且分配线程执行时间。在任何的一个时间点上,一个处理器只会处理执行一个线程,如果当前被执行的这个线程它所分配的执行时间用完了【挂起】。处理器会切换到另外的一个线程上来进行执行。原创 2024-12-24 22:22:39 · 494 阅读 · 0 评论 -
Threadlocal中map的面试tips
实例指的是你创建的对象,它在每个线程中提供一个独立的变量副本。每个线程有自己独立的,在这个 map 中存储了每个实例的值。因此,即使不同线程使用同一个实例,它们存储的值也是互相隔离的,线程间的数据不会相互干扰。原创 2024-12-24 04:00:00 · 389 阅读 · 0 评论 -
黑马Java面试教程_P8_并发编程
线程是个难点,但是面试官很爱问。分为四部分:线程的基础知识(简单好回答),线程中并发安全(这个以及之后都难起来了),线程池,使用场景。线程包括哪些状态新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)等待(WAITING)时间等待(TIMED_WALTING)、终止(TERMINATED)线程状态之间是如何变化的创建线程对象是新建状态调用了start()方法转变为可执行状态线程获取到了CPU的执行权,执行结束是终止状态。原创 2024-12-20 16:01:20 · 1079 阅读 · 0 评论 -
黑马Java面试教程_P1_导学与准备篇_旧版
面试官:在MySQL中,如何定位慢查询?(他表面是问你如何定位慢查询,本质是想问你之前调优的经验,这是自然发生的,并不是死记硬背的东西,本教程会涉及什么场景会涉及慢查询的现象)Step2:表象:页面加载过慢、接口压测响应时间过长(超过1s)(表现形式就是一个实际真的遇到过的情况)此专题讲解了面试题的背后逻辑,进行拆解问题讲解,最后给出回答方式及参考回答。Step1:首先分析什么场景会出现慢查询的现象,如下四点。Step3:回答面试题的思路,以及提供其参考回答。原创 2024-12-19 21:43:32 · 192 阅读 · 0 评论 -
黑马Java面试教程_P2_Redis
现在几乎所有项目,都要使用Redis,面试过程中占比很高,所以是重点学习的内容。Redis的内容分类为Redis的使用场景,Redis其他面试问题。面试官问使用场景的时候经常与实际业务进行关联,Redis使用场景一般为缓存(穿透、击穿、雪崩、双写一致、持久化、数据过期、淘汰策略)、分布式锁(setnx,rediness)、计数器、保存token、消息队列、延迟队列(三个数据类型:普通String、List、ZSet)。主要是缓存和分布式锁。其他面试题:(1)集群(主从、哨兵、集群)。(2)事务。原创 2024-12-19 21:43:12 · 1692 阅读 · 0 评论 -
黑马Java面试教程_P7_常见集合_P4_HashMap
他是由hashMap的内部类Node组成的数组,Node里面有哈希值(用来记录存储的位置)、key和value,还有next,因为发生冲突的时候会用到链表以及红黑树。当然,JDK 8 将扩容算法做了调整,不再将元素加入链表头(而是保持与扩容前一样的顺序),使用尾插法,就避免了jdk7中死循环的问题。在jdk1.7的hashmap中在数组进行扩容的时候,因为链表是头插法,在进行数据迁移的过程中,有可能导致死循环。线程一先将A移入新的链表,再将B插入到链头,由于另外一个线程的原因,B的next指向了A,原创 2024-12-18 20:59:51 · 702 阅读 · 0 评论 -
布隆过滤器
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,主要用于测试一个元素是否是某集合的成员。它的特点是可能会误判(即认为某元素在集合中,但实际上并不在),但不会漏判(即不可能认为一个集合中的元素不在集合中)。原创 2024-12-17 21:23:45 · 315 阅读 · 0 评论