- 博客(53)
- 收藏
- 关注
原创 互联网大厂Java/Agent面试实战:微服务、RAG与Agent化实战(含答疑解析)
本次面试为互联网大厂后端岗位(Java/Agent方向),业务场景设定为AIGC驱动的内容社区与UGC平台,结合实时推荐、异步流水、内容审核与向量检索服务(RAG)。以上为Java/Agent方向的系统化面试对话与详解,覆盖架构设计、实现细节、性能、监控、安全与AI/Agent深层问题。每轮4次提问,每轮3-5个问题,问题之间有技术与业务的衔接,逐步深入:从架构与选型→到实现细节→到性能与可观测性→到AI/Agent与安全治理。第一轮:宏观架构与技术选型(场景:UGC内容平台,需支持实时推荐与离线训练)
2025-12-05 11:30:58
835
原创 互联网大厂Java/Agent面试实战:JVM、Spring Boot、微服务与RAG全栈问答
场景:某互联网大厂Java后端/Agent岗位现场面试。面试官(严肃、专业)与资深程序员“牢大”进行问答。问题围绕实际业务场景(内容社区/UGC、AIGC与检索、消息流、微服务扩展等)循序渐进,由浅入深、兼顾业务与技术实现。
2025-12-05 11:25:48
700
原创 互联网大厂Java/Agent面试实战:Spring Boot、JVM、微服务与AI Agent/RAG场景问答
牢大:简述熔断、限流、隔离策略、用Resilience4j实现、结合Bulkhead与RateLimiter。牢大:说明锁版本、checksum、构件库(Nexus/Artifactory)、构建产物签名与可追溯性。牢大:权限隔离、最小化能力、审计日志、sandbox执行与速率限制,以及MCP/工具调用标准化的思路。牢大:讲分层拆分、契约测试、金丝雀/灰度发布、Kubernetes、GitOps与CI/CD实践。牢大:内容审查、恶意生成检测、权限控制、审计链、KYC与用户分级、模型输出过滤与人工复核流程。
2025-12-05 11:20:40
498
原创 互联网大厂Java/Agent面试实战:AIGC+微服务+向量检索全栈面试问答(含答案详解)
牢大:按业务边界划分服务(用户、内容、推荐、生成、审核、搜索、分析),采用CQRS把读写分离,事件驱动用Kafka做异步通信,向量索引用专服(Milvus/RedisVector/Chroma),关系数据用Postgres或MySQL,冷数据/Hadoop用于离线训练。牢大:服务指标(RT、QPS、错误率)、模型指标(隐私泄露、新鲜度、输出分布漂移)、业务指标(转化率、召回/精确率),用Prometheus+Grafana、Alertmanager与分布式Tracing(Jaeger/Zipkin)。
2025-12-05 08:50:55
264
原创 互联网大厂Java/Agent面试实战:Spring Boot、JVM、微服务、Kafka与AI Agent场景问答
本文以面试对话形式覆盖从基础架构、JVM调优、消息与流处理、微服务、CI/CD、缓存与一致性,到AI Agent与RAG的工程化落地等技术点。关键点:分段策略、Embedding一致性、向量数据库选择(向量召回精度与吞吐)、检索召回与重排、证据链返回。牢大:用GitLab CI/Jenkins/GitHub Actions编排,构建镜像后打tag、推到镜像仓库,使用Immutable Artifacts,测试(单元、集成、E2E)通过才部署,并在流水线记录构建信息与镜像元数据。
2025-12-05 00:01:18
1242
原创 互联网大厂Java/Agent面试实战:AIGC内容社区场景下的技术问答(含RAG/Agent/微服务/向量搜索)
1)RAG流程:用户输入 -> 检索(向量搜索 top-k)+基于过滤器的候选打分(Elasticsearch + vector)-> 组装上下文(include source citations)-> 发送给生成模型(温度控制、system prompt)-> 输出并附带引用与置信度。3)避免幻觉:提供检索证据、限制模型自由发挥(提示工程),使用评分策略、基于逻辑规则的过滤、后处理验证(可校验事实的API),以及使用NLI/faithfulness模型进行二次验证。在消费端做去重,使用乐观锁或幂等键。
2025-12-04 13:00:47
419
原创 互联网大厂Java/Agent面试:Spring Boot、JVM、微服务、RAG与向量检索实战问答
简介:本次面试围绕一个AIGC驱动的内容社区与智能检索服务展开,系统涉及Java基础、JVM调优、Spring Boot微服务、数据库与缓存、消息队列、CI/CD、观测性以及AI相关的Agent与RAG等。挑战:对外部工具调用的幂等性与超时处理、权限与安全、调用链可观测性、错误补偿策略、避免模型幻觉(验证和来源回溯)。牢:因为Java生态成熟,线程模型、工具链(Maven/Gradle)、大量成熟库(Spring生态、Kafka、Hibernate)和企业级运维支持,适合高并发、长期维护的互联网大厂项目。
2025-12-04 12:00:52
617
1
原创 互联网大厂Java/Agent求职者面试实战
在构建Web应用时,Spring Boot与Spring MVC各有什么优势?Spring Boot提供快速开发和自动配置功能,非常适合微服务架构;而Spring MVC则更灵活,适合大型应用的定制需求。它在微服务中的作用是什么?Spring Cloud是一系列工具,可以简化微服务中的配置和服务发现等问题。
2025-12-04 10:50:35
612
原创 Java/Agent求职者面试模拟:技术与业务的结合
在这篇文章中,我们将通过一场严肃的面试,模拟互联网大厂Java/Agent求职者的面试过程,考察应聘者在技术及业务场景中的能力。
2025-12-04 03:39:30
241
原创 互联网大厂Java求职者面试纪实:从Java SE到Spring Boot的挑战
Java 8特点: Lambda表达式、Stream API,提高代码简洁性与效率。JVM: Java虚拟机,负责将Java字节码转化为机器代码。Spring Boot优点: 简化配置,快速开发,自动化配置。: 支持微服务架构的开发,服务注册与发现,负载均衡等。Hibernate使用: ORM框架,简化数据库操作,但需注意性能问题。: 提供安全服务,保护应用程序不被攻击。
2025-12-04 03:27:24
282
原创 面向互联网大厂Java求职者的系统化面试全攻略:涵盖核心语言、微服务、AI与业务场景深度解析
在如今竞争激烈的互联网大厂Java开发岗位面试中,求职者既需掌握扎实的Java及相关技术栈知识,又要能够结合具体业务场景,展示解决复杂问题的能力。本文通过一个拟人化的面试故事——严肃面试官与搞笑水货程序员谢飞机的三轮提问,覆盖从Java基础到微服务,再到AI和业务场景的联动,帮助广大求职者系统化梳理面试知识点。
2025-11-17 20:23:32
659
原创 互联网大厂Java面试实战:从Spring Boot到微服务再到AI应用场景全解析
本文模拟了一个互联网大厂Java求职者谢飞机的面试场景,面试官针对Java技术栈和业务场景展开循序渐进的提问。涵盖了核心语言、Web框架、微服务、云原生、消息队列、缓存、日志、监控、大数据、AI等技术领域。通过谢飞机的回答,读者能深入了解相关知识点及应用。
2025-11-17 20:22:59
657
原创 互联网大厂Java求职面试场景问答详解:Spring Boot至微服务全覆盖
本文最后详细讲解每轮问题背后的业务场景和技术原理,帮助小白理解核心技术点,包括Java新特性、构建工具、微服务架构、数据库处理、消息队列、缓存技术、测试框架及容器化部署等。
2025-11-17 12:40:06
299
原创 互联网大厂Java求职者面试:避雷哥的技术挑战与幽默
它是一个开源框架,用于简化Spring应用的开发,提供自动配置和快速开发能力,使得构建独立的、生产级别的Spring应用变得容易。:Java通过堆和栈管理内存,堆用于存储对象,栈用于存储基本数据类型和对象引用。:JUnit是一个用于编写和运行测试的框架,Mockito则是用于创建模拟对象的库,常用于单元测试中。:微服务架构将应用拆分成多个小服务,各自独立部署、扩展和开发,提升了系统的灵活性与可维护性。:哦,内存管理就是把东西放在内存里,然后用的时候再拿出来嘛,像我家里收拾东西一样!
2025-11-16 19:30:10
367
原创 互联网大厂前端求职者面试:避雷哥的幽默与技术挑战
HTML语义化:使用合适的标签提高可读性和SEO。CSS盒模型:理解内容、边框、内边距和外边距的概念。JavaScript核心:掌握原型和闭包的概念。ES6+特性:熟悉箭头函数、模板字符串等新特性。前端工程化:使用工具提高开发效率。性能优化:通过CDN、懒加载等手段提升加载速度。HTTP与跨域:理解HTTP的基本概念及跨域问题。
2025-11-16 19:20:17
306
原创 互联网大厂Java求职者面试:避雷哥的搞笑与技术挑战
经过三轮提问,面试官对避雷哥的表现感到满意,虽然有些回答不够清晰,但也展现了他的幽默感与基本知识。
2025-11-16 19:10:12
372
原创 互联网大厂Java求职面试:从核心语言到微服务的技术问答
这场面试通过简单和复杂的问题引导,让避雷哥在展示知识的同时,也暴露了一些知识盲区。希望这篇文章可以帮助大家在求职面试中更好地准备。
2025-11-05 15:50:16
228
原创 互联网大厂前端面试实录:HTML5、ES6、Vue/React、工程化与性能优化全覆盖
本故事发生在一家知名互联网大厂的前端面试现场。面试官老王经验丰富,严肃认真。而面试者避雷哥是一位幽默风趣、偶尔有点水的程序员,面对基础问题还能对答如流,但复杂问题就有点应付了。
2025-11-04 18:00:41
845
原创 互联网大厂Java面试实录:从Spring全家桶到AI智能场景避雷全攻略
本实录不仅展示了互联网大厂Java面试的流程和深度,也剖析了核心业务技术场景与AI前沿应用。希望每位读者都能避开面试雷区,进阶为真正的技术高手!
2025-11-04 12:00:40
465
原创 互联网大厂前端面试:牢大的奇幻求职历程
CSS盒模型是网页布局的基础,包含内容(content)、内边距(padding)、边框(border)和外边距(margin)四个部分。CSS布局方式多样,常用的有浮动布局(float)、弹性布局(flexbox)和网格布局(grid)。HTML语义化是指通过使用合适的HTML标签来表示页面内容的结构和意义,这不仅有助于SEO优化,还可以提高代码的可读性和可维护性。在互联网大厂的面试间,面试官严肃地坐在桌子后面,而面试者——一位自称为“水货程序员”的牢大,正满面笑容地准备迎接他的挑战。
2025-11-03 16:51:27
940
原创 互联网大厂Java面试实录:严肃面试官vs搞笑程序员谢飞机
抽象定义类的核心行为。:线程池管理多个线程,减少系统开销,提高性能。:当然,Java的面向对象特性包括继承、封装、多态和抽象。呃,就像我爸,我妈,还有我。一个是记性好的大脑,一个是书架,Redis负责记住,我们负责记下来。:MyBatis是一款优秀的持久层框架,简化了数据库操作。:好的,接下来我们深入一些。:(笑)好,最后一个问题,这一轮:能解释一下RabbitMQ的工作机制吗。:线程池就像是我上学时的班级,大家都很闲,但一旦有作业,大家就开始忙了?:Linux是厨师,Docker是他的便当盒,方便携带。
2025-11-03 16:29:26
393
原创 一场互联网大厂Java面试的笑与泪:从Spring框架到微服务架构
在互联网大厂的光辉大楼里,谢飞机,一个经验尚浅但心怀大志的程序员,正坐在面试官对面。面试官神情严肃,而谢飞机则显得有些紧张。
2025-11-03 02:20:45
465
原创 深入理解Java JVM中的垃圾回收器
垃圾回收器是Java JVM中不可或缺的组件。了解和调优垃圾回收器不仅能提高应用的性能,还能增强系统的稳定性。选择合适的垃圾回收算法和策略对于应用的成功至关重要。
2025-11-03 02:20:11
422
原创 类加载机制
概念当程序需要用到某一个类时,如果这个类没有加载到内存中,那么JVM会通过加载、链接、初始化这三个步骤来实现类的初始化。过程加载加载是指通过类的全限定名找到类的class文件,然后将该文件的二进制字节流读入内存,生成java.lang.Class实例对象。类被加载到内存中,会生成两部分,一部分是class文件的内容,一部分是class类的对象,这个对象指向这些内容。链接链接包括三部分,验证、准备、解析。验证验证阶段主要是验证被加载进来的类的内部结构是否符合规范,主要包括文件格式验证,元
2021-02-06 11:12:07
235
原创 并发之锁的优化
锁优化1、减少锁的持有时间public synchronized void test(){ needLock(); dontNeedLock();}改成public void test(){ synchronized needLock(); dnotNeedLock();}2、降低锁的粒度将大对象拆分成小对象,对小对象进行加锁,降低锁的粒度,使得偏向锁和轻量级锁使用率提高。比如对于hashmap的锁,使用concurrenthashmap的锁的粒度就比Collections.sy
2021-02-06 11:11:29
330
1
原创 阻塞队列
阻塞队列1、概念阻塞队列就是一个队列,它有两种形式,一种是先进先出的形式,一种是后进先出的形式,即处理最近发生的事情。2、作用在多线程中,队列可以实现数据共享,它类似消费者生产者模式。一般情况下,会有多个线程用于生产数据,线程将这些数据存放到队列中,由多个线程来消费这些数据。在阻塞队列出现之前,由于生产者的生产速度大于消费者的话,生产者线程就会挂起阻塞,等待消费者去消费这些数据,反之亦然,这个要是由程序员来控制的话是十分麻烦的,所以concurrent包出现解决了这个问题。当队列被塞满时,生产者线
2021-02-03 17:34:16
304
1
原创 多路复用IO之select、poll、epoll
select在多路复用IO中,select函数负责轮训的检查是否有就绪的socket,然后将socket中的数据写入缓冲区,并通知用户线程进行读写操作。select的缺点就是:1、单个进程可以监视的fd(文件描述符)是有限的,FD_SETSIZE:32位系统中默认是1024,64位系统中默认是2048。2、采用轮训的方式对socket进行扫描,当socket较多时,它不知道哪个是就绪的,它就会去扫描所有的socket,这样子效率是很低的。pollpoll和select差不多,它将用户传入的数组复
2021-02-03 16:59:21
326
原创 JAVA对象探索
对象的创建第一步当JAVA虚拟机遇到一条new字节码指令时,首先去检查这个指令的参数是否能在常量池中找到它的符号引用,并检查这个符号引用的类是否已经被加载、解析和初始化过,如果没有,则先执行类的加载过程,再创建对象。第二步在类加载检查通过后,虚拟机就给新生的对象分配内存。对象所需的内存大小,在类加载的过程中就已经完全确定了。对象的内存空间分配实际上就是将一小块内存从堆内存划分出来。分配方式1、指针碰撞假设JAVA堆的内存是绝对规整的,就是说被使用的内存划分到一边,空闲的内存划分到另一边,然后
2021-02-02 20:09:16
233
2
原创 Node.JS学习总结
模块定义模块/*定义模块暴露模块*/// 第一种function getValue(value){ return value;}exports.getValue=getValue;// 第二种exports.getValue=function(value){ return value;}// 第三种var func={ get:function(){ return "获取数据"; } post:function(val){ return "提交了数据"+va
2020-11-29 14:44:03
654
原创 BIO、NIO、多路复用IO、AIO
BIO阻塞IO,当用户发送一个请求时,系统还没有准备好数据的话,就会处于一个阻塞状态,一直等待数据准备好返回给用户之后,才能再发送下一个请求。图解如下NIO非阻塞IO,当用户发送一个请求时,系统还没有准备好数据的话,立马返回数据还没准备好的消息,然后用户继续发送同一请求,直到接收到准备好的数据为止。图解如下多路复用IO异步阻塞IO,redis就是使用这种IO模型,当用于发送一个请求时,系统还没有准备好数据的话,系统会对用户的这个请求进行标记,用户会对这个请求进行监听。用户可以发送多个其他
2020-10-21 11:14:45
240
原创 强、软、弱、虚引用
强引用代码public static void main(String[] args){ Demo d=new Demo(); d=null; System.gc();}解析这里的d就是一个强引用,new Demo()在内存中分配了一块内存,d指向这个内存。当d变为null时,就被系统回收。软引用代码public static void main(String[] args){ // 创建一个SoftReference对象,一个10m的字节数组。 // sr对于SoftRefer
2020-10-20 18:00:09
159
原创 Cookie和Session
定义与区别Cookiecookie是客户端用于存储相关数据的文本文档,它保存在客户端浏览器上,由于cookie在浏览器可以看到,所以比较不安全,而且能存储的数据量较小,它常用于存储一些安全性要求不高的信息。Sessionsession中的数据都保存在服务器上,所以相对来说比较安全,而且存储数据量也比较多,但是当session请求过多时,对系统的压力也是很大的,session用于存储一些安全性要求较高的信息。session的唯一识别是sessionID,它存储于cookie中。Tomcat中,ses
2020-10-20 17:30:43
170
原创 HTTP协议
概念http协议是基于TCP/IP协议的一个应用层协议。它是无状态且无连接的。无状态: http不保存客户端的任何行为,也不保存客户端的任何数据,每一新的请求,它都会有新的响应,减少服务器的消耗。无连接: http每次连接只处理一个请求,请求处理完就断开连接,而不是持续连接持续处理请求。http请求报文: 请求行(请求方法+url)、请求头、请求体。http响应报文: 响应行(http版本号+http状态码)、响应头、响应体。方法1、post:请求的参数不会在地址栏显示,比较安全且传输的数据
2020-10-20 15:53:45
252
原创 JAVA基础
JAVA三大特性:多态、继承、封装。构造方法是方法名必须和类名一致,且构造方法不被void修饰,没有返回值和返回类型,一个类可以有多个构造方法,若没声明构造方法,则JAVA编译器会提供一个默认的构造方法。创建对象的四种方式:采用new关键字创建、采用反射机制创建、采用反序列化机制创建、采用clone()方式创建。源文件一个源文件只能有一个public类但是可以有多个非public类;源文件名称必须跟public类的名字一致;如果源文件在某个包中,那么package语句必须在最前..
2020-10-09 18:02:27
243
原创 拥塞控制与滑动窗口机制
拥塞控制拥塞拥塞是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时可能会产生死锁。拥塞控制就是用来防止过多数据注入到网络中,防止网络性能下降。拥塞控制的方法1)慢开始+拥塞避免一开始拥塞窗口的值设置是1,代表传送一个TCP报文段。这时候使用的是慢开始算法,接收方回送一个TCP报文段,拥塞窗口值置为2。这时发送方就可以发送2个TCP报文段,当接收方回送两个TCP报文段时,拥塞窗口置为4,发送方就可以发送4个TCP报文段。。。
2020-10-06 00:03:10
913
原创 TCP与UDP
TCPTCP协议是一种可靠的、一对一的、面向连接的通信协议,面向字节流进行传输。在使用TCP协议进行数据传输时,往往需要服务器和客户端直接建立一对一的“通道”,这个通道只允许被该服务器和客户端使用。TCP中的标志ACK:用于通知对方自己已经接收到消息。当ACK等于1时,确认号字段有效。FIN:用于请求断开连接。SYN:用于建立连接时同步序号。当SYN=1,ACK=0时,表示请求连接报文,当SYN=1,ACK=1时,表示同意连接报文。URG:当URG=1时,表示这个报文是紧急报文,应尽快传送,不
2020-10-05 22:46:22
165
原创 TCP三次握手、四次挥手
三次握手过程1、客户端发送SYN包到服务器请求建立连接;2、服务器接收到这个请求,如果有足够的资源,就允许连接,并发一个SYN+ACK包给客户端,告诉客户端允许建立连接;3、客户端接收到服务器的SYN+ACK包后,发送一个ACK包给服务器,告诉服务器说我知道你允许建立连接了,这时才真正建立起连接。思考问题1、为什么得三次握手,而不是一次、两次呢?假如只有一次握手,服务器不知道客户端是否可以正常接收数据,客户端也不知道服务器能否正常接收数据,有可能造成服务器资源的浪费。假如只有两次握手,只
2020-10-05 16:18:06
218
原创 JVM运行时数据区——JDK1.7、JDK1.8
一、运行时数据区1、程序计数器程序计数器是一个较小的内存空间,是线程私有的且不发生OOM,它记录的是当前线程字节码指令的行号。由于JAVA虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,一个处理器只会执行一条线程中的指令。所以,为了线程切换时恢复到正确的位置执行,每个线程都有自己的一个程序计数器来记录字节码指令的行号。如果正在执行的是JAVA方法,则程序计数器的值为字节码指令的行号;如果是Native方法,则程序计数器的值为空。2、虚拟机栈虚拟机栈也是线程私有的,它的生命周
2020-10-03 17:13:24
1105
原创 剑指Offer—求二叉搜索树第k小节点—简单
题目给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路由于是二叉搜索树,所以经过中序遍历之后,它就是一个有序的数组,将遍历后的结果放入ArrayList里面,通过list.get()方法获取即可。代码/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public
2020-10-01 17:19:23
164
原创 剑指Offer—两链表找共同点—简单
题目输入两个链表,找出它们的第一个公共结点。思路交替遍历:例如链表A:1->3->4->5->6,链表B:2->7->8->->9->5->6,当链表A遍历完,就指向链表B的头结点继续遍历;当链表B遍历完就指向链表A的头结点,这时他们就可以在同一个位置遍历了。代码/*public class ListNode {int val;ListNode next = null;ListNode(int val) { this.v
2020-09-29 17:39:47
156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅