- 博客(52)
- 收藏
- 关注
原创 近几年字节飞书测开部分面试题整理
本文摘要了常见的面试技术问题及解决方案,涵盖数据库索引、拦截器与过滤器区别、JWT与Session对比、SQL优化、Redis与Memcached比较、Linux命令、飞书视频测试要点及在线文档测试用例等内容。重点包括: 数据库索引创建方式及SQL优化技巧 拦截器与过滤器的核心区别和应用场景 JWT在分布式系统中的优势及安全注意事项 大表查询的索引和分页优化策略 Redis与Memcached的特性对比和适用场景 实用Linux命令示例 视频会议系统的功能测试要点和性能保障方案 协同文档的核心测试用例设计
2025-06-04 11:32:02
1116
原创 跟着deepseek浅学分布式事务(2) - 两阶段提交(2PC)
两阶段提交(2PC)是一种分布式事务协议,分为准备阶段和提交/回滚阶段。协调者发起事务,参与者执行本地操作但不提交。若所有参与者同意,协调者发送提交命令;否则回滚。其缺点是同步阻塞、单点故障和数据不一致风险。改进方案包括超时机制、三阶段提交(3PC)或TCC等补偿模式。适用于强一致性需求场景,如金融交易。伪代码展示了参与者与协调者的交互流程,包括准备、提交和回滚操作,模拟了转账事务的实现与异常处理。
2025-06-04 10:46:09
823
原创 跟着deepseek浅学分布式事务(1) - 概述
本文简要介绍分布式事务的核心概念与解决方案。主要内容包括:分布式事务的定义及典型场景(如电商下单),核心挑战(CAP原理、网络问题、性能权衡),以及主流解决方案(2PC/3PC、TCC、SAGA、本地消息表、Seata框架)。文章还探讨了实际场景中的选型建议和常见问题,如超时处理、幂等性设计等。声明资料来源于DeepSeek,仅供学习参考。
2025-05-30 10:28:00
339
原创 CallerRunsPolicy 线程池拒绝策略适用场景分析
CallerRunsPolicy是Java线程池的一种拒绝策略,适用于对任务完成可靠性要求高、可以接受性能下降、任务执行时间可控、需要平滑降级以及批处理系统等场景。它通过让提交任务的调用者线程直接执行任务,确保任务不丢失,但可能影响整体性能和调用者线程的响应。不适用于高吞吐量、低延迟、调用者线程不能被阻塞或任务执行时间不可预测的场景。实现上,该策略在rejectedExecution方法中直接调用任务的run方法,提供了一种自然的反馈机制,减缓新任务提交速度。
2025-05-20 14:55:58
280
原创 近几年字节抖音测开部分面试题整理
本文整理了计算机网络和Python相关的面试问题摘要: 浏览器URL访问过程:包括DNS解析、TCP三次握手、TLS加密协商、HTTP请求/响应、页面渲染等完整流程。 内存管理:比较堆栈存储差异,栈用于函数调用自动管理,堆用于动态内存分配。 HTTP协议:POST请求支持JSON/form-data等格式,分析HTTPS加密原理及与HTTP的性能安全差异。 Python数据结构:详细对比列表、元组、集合、字典的特性差异和使用场景,解释is与==的本质区别。 系统运维:缩容操作需关注业务评估、容量规划、数据备
2025-04-22 10:31:26
734
原创 Java面试43-常见的限流算法有哪些?
限流的本质是实现系统保护,最终选择什么样的算法,一方面取决于统计的精准度,另一方面考虑限流维度和场景的需求。,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。
2025-04-08 17:16:57
303
1
原创 Java面试42-什么是幂等?如何解决幂等性问题?
1. 用户的重复提交或者用户的恶意攻击,导致这个请求被多次重复执行;2. 在分布式架构中,为了避免网络通信导致的数据丢失,在服务之间进行通信的时候都会设计超时重试的机制,而这种机制有可能导致服务端接口被重复调用。所以在程序设计中,对于数据变更类操作的接口,需要保证接口的幂等性。之所以要考虑到幂等性问题,是因为在网络通信中,存在两种行为可能会导致。所谓幂等,其实它是一个数学书的概念,在计算机编程领域中,幂等性的核心思想,其实就是。使用状态机来实现幂等。
2025-04-08 15:28:28
346
原创 Java面试41-IO和NIO有什么区别?
I/O,指的是IO流,它可以实现数据从磁盘中的读取以及写入。当程序是面向网络进行数据的IO操作的时候,Java里面提供了。NIO,是JDK1.4里面新增的一种NEW IO机制,相比于传统的IO,NIO在效率上做了很大的优化,并且新增了几个核心组件:Channel、Buffer、Selectors。另外,还提供了非阻塞的特性,所以对于网络IO来说,NIO通常也称为。,也就是说,在连接以及IO事件未就绪的情况下,当前的连接会处于阻塞等待的状态。因此,总的来说,IO和NIO的区别,站在网络IO的视角来说,
2025-04-08 10:55:49
134
原创 Java面试40-Redis存在线程安全问题吗?
虽然Redis Server中的指令执行是原子的,但是如果有多个Redis客户端同时执行多个指令的时候,就无法保证原子性。假设两个Redis Client同时获取Redis Server上的key,同时进行修改和写入,因为多线程环境中的原子性无法被保障,以及多进程情况下的共享资源访问的竞争问题,使得数据的安全性无法得到保障。虽然Redis 6.0里面,增加了多线程的模型,但是增加的多线程只是用来处理网络IO事件,对于指令的执行过程,仍然是由主线程来处理,所以不会存在多个线程通知执行操作指令的情况。
2025-04-08 09:09:40
200
原创 Java面试39-Zookeeper中的Watch机制的原理
Zookeeper提供了一个Watch机制,可以让客户端感知到Zookeeper Server上存储的数据变化,这一机制可以让Zookeeper实现很多的场景,比如配置中心、注册中心等。Watch机制采用了。的方式来实现,也就是说客户端和Zookeeper Server会建立一个长连接,一旦监听的指定节点发生了变化,就会通过这个长连接把变化的事件推送给客户端。,为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的。,以节点的方式来管理存储在Zookeeper上的数据。
2025-04-07 17:27:03
325
原创 Java面试38-Dubbo是如何动态感知服务下线的?
当Dubbo服务提供方出现故障导致Zookeeper剔除了这个服务的地址,那么Dubbo服务消费端需要感知到地址的变化,从而避免后续的请求发送到故障节点,导致请求失败,也就是说Dubbo要提供服务下线的动态感知能力。Dubbo Client端收到事件以后,就会把本地缓存的这个服务地址删除,这样后续就不会把请求发送到失败的节点上,完成服务下线感知。的方式来维护Dubbo服务提供端的协议地址,Dubbo服务消费端会从Zookeeper Server上去查找目标服务的地址列表,从而完成服务的注册和消费的功能。
2025-04-07 14:47:44
294
原创 Java面试37-Dubbo的服务请求失败怎么处理?
Dubbo是一个RPC框架,它为我们的应用提供了远程通信能力的封装,并且在RPC通信的基础上,逐步在向一个生态在演进,它涵盖了服务注册、动态路由、容错、服务降级、负载均衡等能力,基本上在微服务架构下面临的问题,Dubbo都可以解决。,也就是说,如果基于Dubbo进行服务间通信出现异常,服务消费者会对服务提供者集群其他的节点发起重试,确保这次请求成功,要注意的是,默认基于重试策略的容错机制中,需要注意幂等性的处理,否则在事务型的操作中,容易出现多次数据变更的问题。而对于Dubbo服务请求失败的场景,
2025-04-07 14:30:13
207
原创 Java面试36-什么叫阻塞队列的有界和无界
其中,阻塞队列中能够容纳的元素个数,通常情况下是有界的,比如实例化一个ArrayBlockingList,可以在构造方法中传入一个整型的数字,表示这个。,像LinkedBlockingQueue,它的默认队列长度是Integer.MAX_VALUE,所以我们感知不到它的长度限制。无界队列存在比较大的潜在风险,如果在并发量较大的情况下,线程池中可以几乎无限制的添加任务,容易导致内存溢出的问题。,不过它并不是像我们理解的那种元素没有任何限制,而是它的。,这种就是有界队列。
2025-04-07 13:57:17
246
原创 Java面试35-CPU飙高系统反应慢怎么排查?
CPU是整个电脑的核心计算资源,对于一个应用进程来说,CPU的最小执行单元是线程。CPU利用率过高之后,导致应用中的线程无法获得CPU的调度,从而影响程序的执行效率。最后有可能定位的结果是程序正常,只是在CPU飙高的那一刻,用户访问量较大,导致系统资源不够。命令,找到CPU利用率较高的进程,再通过。CPU上下文切换过多。
2025-04-07 11:25:14
227
原创 Java面试34-Kafka的零拷贝原理
技术把文件内容复制到内核空间中的Read Buffer,接着把包含数据位置和长度信息的文件描述符加载到Socket Buffer中,DMA引擎直接可以把数据从内核空间中传递给网卡设备。在这个流程中,数据只经历了两次拷贝就发送到了网卡中,并且减少了两次CPU的上下文切换,对于效率有非常大的提高。所谓零拷贝,并不是完全没有数据复制,只是相对于用户空间来说,不再需要进行数据拷贝。除此之外,由于用户空间和内核空间的切换会带来CPU的上下文切换,对于CPU性能也会造成性能影响。,就是把这两次多余的拷贝省略掉,
2025-04-03 15:55:31
417
原创 Java面试33-fail-safe机制与fail-fast机制分别有什么作用
fail-safe基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容,即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合发生的修改迭代器是不知道的。包下的容器都是安全失败的,比如ConcurrentHashMap和CopyOnWriteArrayList等,可以在多线程下并发使用,并发修改。
2025-04-03 15:30:49
148
原创 Java面试32-对Spring Cloud的理解
它提供了快速构建分布式系统的常用的一些组件,比如说配置管理、服务的注册与发现、服务调用的负载均衡、资源隔离、熔断降级等等。不过Spring Cloud只是Spring官方提供的一套微服务标准定义,而真正的实现目前有两套体系用的比较多,一个是Spring Cloud Netflix,一个是Spring Cloud Alibaba。有了Spring Cloud这样的技术生态,使得我们在落地微服务架构时,不用去考虑第三方技术集成带来额外成本,只要通过配置组件来完成架构下的技术问题,从而让我们更加侧重性能方面。
2025-04-03 08:52:07
158
原创 Java面试31-MySQL如何解决幻读问题?
并且在MVCC里面规定了高版本能够看到低版本的事务变更,低版本看不到高版本的事务变更,从而实现了不同事务之间的事务隔离,解决了幻读的问题。但是在当前读的情况下,是直接读取内存的数据,跳过了快照读,所以还是会出现幻读问题。在RR(可重复读)的事务隔离级别下,InnoDB采用了。机制来解决幻读问题。
2025-04-02 17:16:02
197
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人