- 博客(33)
- 收藏
- 关注
原创 互联网大厂Java求职面试实战案例:谢飞机的三轮技术挑战
通过三轮面试案例,谢飞机深度展现Java技术栈及实际业务思考,为求职者提供实战复习与学习参考。
2026-04-04 22:38:52
48
原创 互联网大厂Java求职者面试实战录:严肃面试官vs搞笑程序员谢飞机
MySQL四种隔离级别,业务场景如采购流程:读未提交风险高,读已提交常用,重复读防止二次修改,串行化保险但慢。如果用打牌来比喻,封装是藏牌,继承是换牌,多态是变牌,抽象是桌子——没有桌子玩啥牌嘛!本文采用面试对话形式,结合真实业务场景,覆盖Java核心技术栈,精细解答面试官提问,适合Java初学者参考学习。Spring就像项目的万金油,IOC帮你管理Bean,AOP帮你偷懒搞切面,事务就是信用卡,保证不出事!Java嘛,就是程序员的咖啡因,项目经理的抗压药,下班党的永恒之敌!谈谈你对JVM内存模型的理解。
2026-04-03 16:56:50
23
原创 互联网大厂Java面试场景深度剖析:核心技术栈与代码案例实录
在互联网大厂面试Java岗位,除了扎实的技术基础,还离不开对核心技术栈的全方位掌握。本文结合真实对话场景和代码案例,为求职者深度剖析面试流程与思路。
2026-04-03 16:38:20
162
原创 互联网大厂Java求职者面试实战演练——谢飞机的三轮面试故事
面试官(严肃):欢迎谢飞机来到我们互联网大厂Java岗位的面试。接下来,我们将进行三轮提问,确保你的技术功底和业务理解能力。
2026-04-03 16:26:58
333
原创 互联网大厂Java面试实录:谢飞机的奇葩答题之旅
ReentrantLock 啊,嗯……额,面向对象嘛,无非就是封装、继承、多态。封装就是把东西装起来,继承嘛就是儿子继承老子的东西,多态就是……HashMap 哦,底层不就是数组和链表嘛,后来听说又加了红黑树?MyBatis,就是个 ORM 框架嘛,帮我们写 SQL 的。核心线程数、最大线程数、存活时间,还有队列……啊,不对,是快一点。好了,今天的面试就到这里吧,我们回去后会对你的表现进行评估,请回去等通知。什么自动配置,我记不清了……Spring 啊,听说过,核心功能就是 IOC 和 AOP,对吧?
2026-03-31 11:39:36
167
原创 黑马商城day11-微服务面试
TCC模式的每个阶段是做什么的?Try:资源检查和预留Confirm:业务执行和提交Cancel:预留资源的释放TCC的优点是什么?一阶段完成直接提交事务,释放数据库资源,性能好相比AT模型,无需生成快照,无需使用全局锁,性能最强不依赖数据库事务,而是依赖补偿操作,可以用于非事务型数据库TCC的缺点是什么?有代码侵入,需要人为编写try、Confirm和Cancel接口,太麻烦软状态,事务是最终一致需要考虑Confirm和Cancel的失败情况,做好幂等处理、事务悬挂和空回滚处理。
2025-12-03 20:26:11
956
原创 黑马商城day10-Redis面试篇
Sentinel的三个作用是什么?集群监控故障恢复状态通知Sentinel如何判断一个redis实例是否健康?每隔1秒发送一次ping命令,如果超过一定时间没有相向则认为是主观下线(sdown如果大多数sentinel都认为实例主观下线,则判定服务客观下线(odown故障转移步骤有哪些?首先要在sentinel中选出一个leader,由leader执行failover选定一个slave作为新的master,执行,切换到master模式然后让所有节点都执行slaveof新master。
2025-12-02 21:29:42
810
原创 黑马商城day9-ES02
match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件文档搜索的基本步骤是:创建对象准备,也就是DSL。来构建查询条件传入的。
2025-11-03 21:46:01
882
原创 黑马商城day8-ES01
文档操作有哪些?POST /{索引库名}/_doc/文档id { json文档 }GET /{索引库名}/_doc/文档idDELETE /{索引库名}/_doc/文档id修改文档:PUT /{索引库名}/_doc/文档id { json文档 }/文档id { "doc": {字段}}创建XxxIndexRequest。XXX是Create、Get、Delete准备请求参数( Create时需要) 发送请求。
2025-10-31 21:30:54
824
原创 黑马商城day7-消息可靠性
如何保证支付服务与交易服务之间的订单状态一致性?首先,支付服务会正在用户支付成功以后利用MQ消息异步通知交易服务,完成订单状态同步。其次,为了保证MQ消息的可靠性,我们采用了生产者确认机制、消费者确认、消费者失败重试等策略,确保消息投递和处理的可靠性。同时也开启了MQ的持久化,避免因服务宕机导致消息丢失。最后,我们还在交易服务更新订单状态时做了业务幂等判断,避免因消息重复消费导致订单状态异常。如果交易服务消息处理失败,有没有什么兜底方案?我们可以在交易服务设置定时任务,定期查询订单支付状态。
2025-10-29 20:42:12
1099
原创 黑马商城day6-RabbitMQ入门
本文介绍了微服务架构中同步与异步通信的实现方式,重点讲解了RabbitMQ消息队列的应用。主要内容包括: 同步调用与异步调用的对比:同步调用时效性强但存在耦合度高、性能下降等问题;异步调用通过消息代理解耦服务,提高性能和可扩展性。 RabbitMQ的核心概念:包括生产者、消费者、队列、交换机和虚拟主机等组件,以及四种交换机类型(Fanout、Direct、Topic、Headers)的特点和使用场景。 Spring AMQP的使用:通过RabbitTemplate发送消息,利用@RabbitListener
2025-10-26 21:35:24
1009
原创 黑马商城day5-服务保护和分布式事务
Sentinel是阿里巴巴开源的一款服务保护框架,目前已经加入SpringCloudAlibaba中。核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。将jar包放在任意非中文、不包含特殊字符的目录下,重命名为。
2025-10-22 22:53:23
808
原创 黑马商城day4-微服务02
Component//继承Ordered是为了对filter进行排序,ordered越小filter越先执行@Override//todo 模拟登录校验逻辑//放行@Overridereturn 0;到目前为止我们已经解决了微服务相关的几个问题:微服务远程调用微服务注册、发现微服务请求路由、负载均衡微服务登录用户信息传递不过,现在依然还有几个问题需要解决:网关路由在配置文件中写死了,如果变更必须重启微服务某些业务配置在配置文件中写死了,每次修改都要重启服务。
2025-10-21 20:37:58
1061
原创 黑马商城day3-微服务01
什么时候需要拆分微服务?如果是创业型公司,最好先用单体架构快速迭代开发,验证市场运作模型,快速试错。当业务跑通以后,随着业务规模扩大、人员规模增加,再考虑拆分微服务。如果是大型企业,有充足的资源,可以在项目开始之初就搭建微服务架构。如何拆分?首先要做到高内聚、低耦合从拆分方式来说,有横向拆分和纵向拆分两种。纵向就是按照业务功能模块,横向则是拆分通用性业务,提高复用性服务拆分之后,不可避免的会出现跨微服务的业务,此时微服务之间就需要进行远程调用。微服务之间的远程调用被称为RPC,即远程过程调用。
2025-10-15 22:24:47
950
原创 黑马商城day2-Docker
Docker是做什么的?Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用什么是镜像?将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像什么是容器?为每个镜像的应用进程创建的隔离运行环境就是容器数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。html:放置一些静态资源conf:放置配置文件如果我们要让Nginx代理我们的静态资源,最好是放到html目录;如果我们要修改Nginx的配置,最好是找到conf下的。
2025-10-14 11:19:08
675
3
原创 黑马商城day1-MyBatis-Plus
引入起步依赖自定义Mapper继承BaseMapper<泛型>在实体类上添加注解声明 数据库表信息在application.yml中根据需要添加配置直接使用Wrapper存在问题:在Service层编写sql语句,这不符合开发规范。以上两个案例都存在,如果完全使用Wrapper不可避免在Service层编写sql语句。为了解决这一问题,我们可以通过 自定义sql语句前半部分,后半部分where条件通过Wrapper定义,来实现。
2025-10-12 19:03:52
1186
原创 苍穹外卖 day12-POI
Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。银行网银系统导出交易明细各种业务系统导出Excel报表批量导入业务数据。
2025-09-28 20:46:26
678
原创 苍穹外卖day11-StringUtils、Java 8 Stream API、LocalDateTime.of、group by
使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式要求的动态数据,然后响应给前端来展示图表。Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。1). 柱形图2). 饼形图3). 折线图不管是哪种形式的图形,最本质的东西实际上是数据,它其实是对数据的一种可视化展示。
2025-09-28 14:09:10
1054
原创 苍穹外卖 day10-Spring Task、WebSocket
是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定时任务框架定时自动执行某段Java代码1). 信用卡每月还款提醒2). 银行贷款每月还款提醒3). 火车票售票系统处理未支付订单4). 入职纪念日为用户发送通知只要是需要定时处理的场景都可以使用Spring TaskWebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。HTTP是短连接。
2025-09-26 16:33:31
853
原创 苍穹外卖 day9-引入百度地图API
产品原型:业务规则分页查询历史订单可以根据订单状态查询展示订单数据时,需要展示的数据包括:下单时间、订单状态、订单金额、订单明细(商品名称、图片)
2025-09-25 21:32:46
1116
原创 苍穹外卖 day8-微信小程序订单支付流程
其中前三步,我们已经实现。后续关键步骤为第5步和第10步微信支付相关接口:商户系统调用该接口在微信支付服务后台生成预支付交易单(对应时序图的第5步)通过JSAPI下单接口获取到发起支付的必要参数prepay_id,然后使用微信支付提供的小程序方法调起小程序支付(对应时序图的第10步)
2025-09-21 22:02:27
671
原创 苍穹外卖 day7-Spring Cache
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如:EHCacheCaffeineRedis(常用)前者用来引入SpringCache,后者用来声明使用的是redis,如果想使用其他缓存数据库,引入对应缓存的java客户端即可。
2025-09-20 15:59:54
737
原创 苍穹外卖day6-HttpClient基本使用、微信小程序联调
发送HTTP请求接收响应数据HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。为什么要在Java程序中发送Http请求?有哪些应用场景呢?当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时。
2025-09-18 19:30:09
881
原创 苍穹外卖 day5-Redis基本操作
Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。导入Spring Data Redis的maven坐标配置Redis数据源编写配置类,创建RedisTemplate对象通过RedisTemplate对象操作Redis。
2025-09-12 21:45:50
686
原创 苍穹外卖day3
该自定义注解是为了标识切入点。当某个方法上存在该注解时,执行切面类,再通过该注解的value值获取这是一个INSERT方法/UPDATE方法,从而为4/2个字段赋值。因为是只能用在方法上的注解,所以要对元注解进行规定。同时创建OperationType枚举类,该枚举类只有INSERT和UPDATE两个枚举项。将来在方法上使用注解,定义value值时必须使用OperationType.INSERT/OperationType.UPDATE,而不是一个String字符串,使用了枚举类的安全特性。
2025-09-08 12:27:14
820
原创 枚举、动态代理、反射、枚举
枚举是 Java 中处理固定常量集合的最佳实践,它将数据与行为封装在一起,提供类型安全和编译时检查,减少运行时错误,并提升代码的可维护性。当需要表示一组有限且固定的值时(如状态、选项、配置等),优先使用枚举而非普通常量。拦截方法调用:你可以在目标对象的方法执行前后添加额外的逻辑,比如日志记录、事务管理等。实现 AOP(面向切面编程):通过代理可以将一些通用的功能(如权限校验、性能监控)从业务逻辑中分离出来,提高代码的可维护性和复用性。为什么要使用动态代理?
2025-08-11 02:03:07
763
原创 事务管理+AOP
使用@Transactional开启事务(一般添加在方法上,类、接口也可以)异常回滚的属性:rollbackFor;默认异常回滚属性为“运行时异常”,使用rollbackFor可以指定异常回滚类型。使用格式:@Transactional(rollbackFor=Exception.class)事务传播行为:propagation;默认事务方法A调用事务方法B,出现回滚时两个方法执行的内容都要回滚;如果希望事务方法A和事务方法B作为两个独立的方法(一方出现异常回滚不能影响另一方。
2025-07-25 17:17:33
1091
原创 苍穹外卖day2
ThreadLocal 并不是一个Thread,而是Thread的局部变量。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
2025-07-23 18:58:44
855
原创 苍穹外卖day1
本项目中在构建系统管理后台的前端页面,我们会用到H5、Vue.js、ElementUI、apache echarts(展示图表)等技术。而在构建移动端应用时,我们会使用到微信小程序。Nginx是一个服务器,主要用来作为Http服务器,部署静态资源,访问性能高。在Nginx中还有两个比较重要的作用: 反向代理和负载均衡, 在进行项目部署时,要实现Tomcat的负载均衡,就可以通过Nginx来实现。
2025-07-20 22:17:00
895
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅