- 博客(16)
- 收藏
- 关注
原创 LLM+MCP工具调用
本文介绍了基于模型上下文协议(MCP)的大语言模型工具调用系统实现方案。系统采用C/S架构,分为Python服务端和Java客户端两个部分:服务端通过阿里百炼LLM(qwen-turbo模型)处理用户查询,并根据MCP协议规范调用外部工具(如高德天气API和翻译功能);客户端通过HTTP接口与服务端交互。系统实现了工具描述标准化、调用流程自动化和错误处理机制,支持天气查询和文本翻译等功能,并通过JSON格式进行结构化数据交换。示例展示了从Java客户端发起查询到获取最终结果的全流程,验证了该方案的可行性。
2025-11-01 17:11:14
226
原创 操作系统 + Linux指令面试题
内核态和用户态是操作系统为保护系统资源而设计的两张执行模式内核态是操作系统的特权执行模式,解决用户程序无序访问资源的问题通过主动请求(系统调用)和被动触发(中断/异常)两种方式1. 主动切换:系统调用(最常见)当用户程序需要使用内核资源(如读文件、分配内存)时,主动请求进入内核态,流程可概括为 “触发 - 处理 - 返回” 三步:比如最终会调用系统调用,由内核完成屏幕输出的硬件交互,用户程序全程不直接碰硬件。2. 被动切换:中断 / 异常当硬件事件或程序错误发生时,CPU 强制从用户态切换到内核态,无需用户
2025-10-24 17:12:16
721
原创 Redis面试题
简单说,普通单链表查找需要逐个遍历(时间复杂度 O (n)),而跳表通过给链表加 “索引层” 解决这个问题:最底层是存储所有数据的原始链表,上层则是从下层 “抽样” 节点形成的索引(比如第 1 层索引每隔 1 个节点取 1 个,第 2 层从第 1 层再每隔 1 个取 1 个,以此类推,形成多层索引)。对查询商品分类目录业务实现缓存,在查分类时先通过布隆过滤器检查,优化缓存穿透,再查缓存,如果缓存中没有再查数据库,然后把查到的数据转为json存入redis缓存并设置随机过期时间优化缓存雪崩。
2025-09-19 14:27:44
901
原创 JUC并发编程面试题
新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、时间等待(TIMED_WAITING)、终止(TERMINATED)
2025-09-19 14:22:36
545
原创 JVM虚拟机面试题
线程共享的区域:主要保存对象实例,数组等,内存不够时抛出OOM异常优先选 ZGC:若使用 JDK 15+、需超低延迟或超大堆(如 TB 级),直接选 ZGC(未来主流方向)。次选 G1:若 JDK 9~JDK14、堆内存 4GB~100GB、需平衡延迟与吞吐量,G1 是默认且稳定的选择。避免选 CMS:仅 JDK 8 及以下老系统可用,需接受碎片和 Full GC 风险,建议逐步迁移到 G1/ZGC。
2025-09-19 14:21:02
629
原创 RAG—检索增强生成—快速理解
承接初步检索(如 BM25、向量检索、多路召回)输出的候选结果,通过更细粒度的语义理解和上下文匹配,重新调整结果排序,让最贴合用户需求的信息排在最前。这正是使用向量数据库的原因 — 它极其擅长快速定位语义相似的内容。检索增强生成(RAG),是一种将外部知识库检索与LLM结合的技术框架,将相关数据整合到提示词中获取准确AI响应,缓解了传统LLM的模型幻觉和知识滞后的问题。价值:单一检索路径容易陷入 “路径依赖陷阱”:比如仅依赖向量检索可能漏掉关键词匹配的关键信息,仅检索文档库可能忽略数据库中的结构化数据。
2025-09-12 22:55:20
1142
原创 Java面试场景题(持续更新)
无锁的核心是 CAS(比较并交换),这是 CPU 硬件支持的原子操作,能原子完成 “读 - 比 - 改” 三步,比如 Java 中的 AtomicReference 就封装了这种能力。可以在Redis中使用哈希表存储锁的状态,key表示锁,存储字段包括:owner:持有者标识,count:计数器,expires_at:锁到期时间。在电商系统中,用户对订单是一对多,订单对商品是多对多;使用缓存:实现缓存机制(如Redis、Memcached),将常访问的数据存储在内存中,减少数据库读取次数,加快响应速度。
2025-09-12 22:52:15
972
原创 Java面试题—框架篇
AOP称为面向切面编程,能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,减少系统中的重复代码,降低了模块之间的耦合度,同时提高了系统的可维护性1、记录操作日志2、权限控制3、Spring内置的事务处理记录操作日志核心:使用AOP中的环绕通知+切点表达式(找到要记录日志的方法),通过环绕通知的参数获取请求方法的参数(类、方法、注解、请求方式等),获取到这些参数后,保存到数据库1、创建一个切面类@Aspect。
2025-08-07 19:05:14
875
原创 计算机网络 面试题
线程是进程内的一个执行单元,也是CPU调度和分派的基本单位。因为需要考虑连接时丢包的问题,如果只握手2次,第二次握手时如果服务端发给客户端的确认报文段丢失,此时服务端已经准备好了收发数据,而客户端一直没收到服务端的确认报文,所以客户端不知道服务端是否已经准备好了,这种情况下客户端不会给服务端发数据,也会忽略服务端发过来的数据。于是他给我回信,我如果收到了就知道了我和他的收发能力都可以,但是他不知道自己的发件能力和我的收件能力可不可以,所以我最后回馈一次,他如果收到了就知道他的发件和我的收件是可以的。
2025-06-23 16:52:43
1838
原创 MQ消息队列面试题
消息队列技术对比与实现原理 摘要:本文系统对比了三种主流消息队列技术:RabbitMQ、RocketMQ和Kafka。RabbitMQ适合企业级集成和复杂路由场景,RocketMQ适用于金融等高可靠性场景,Kafka则专为大数据高吞吐设计。文章详细分析了它们的架构差异、性能特点(吞吐量、延迟等)和适用场景。针对消息队列设计,提出了核心模型定义、存储层设计、通信协议等关键要素。深入解析了RocketMQ底层实现原理,包括消息顺序保证、积压处理和分布式事务等核心机制。同时探讨了RabbitMQ的交换机类型和消息
2025-06-22 17:45:28
618
原创 MySQL面试题
索引(index):索引是帮助MySQL高效获取数据的有序数据结构,能提高数据检索的效率,降低IO成本,通过索引列队数据进行排序,降低数据排序成本,降低了CPU消耗聚集索引:将数据与索引存储在一起,索引结构的叶子节点保存行数据。必须有且只能有一个二级索引:将数据和索引分开存储,索引结构的叶子节点关联的是对应主键。可以存在多个如果存在主键,主键就是聚集索引不存在主键,使用第一个唯一索引作为聚集索引如果主键和唯一索引都没有,InnoDB自动生成一个隐藏的聚集索引。
2025-06-18 15:14:36
1334
原创 Java基础面试题
线程共享的区域:主要保存对象实例,数组等,内存不够时抛出OOM异常每个线程运行时所需要的内存称为虚拟机栈每个栈由多个栈帧(frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法。
2025-06-18 15:12:51
795
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅