当前位置: 首页 > news >正文

【面试题】 Java 三年工作经验(2025)

问题列表

  1. 为什么选择 spring boot 框架,它与 Spring 有什么区别?
  2. spring mvc 的执行流程是什么?
  3. 如何实现 spring 的 IOC 过程,会用到什么技术?
  4. spring boot 的自动化配置的原理是什么?
  5. 如何理解 spring boot 中的 star?
  6. spring boot 为什么要用嵌入式的 web 容器?
  7. 利用 REDIS 存储数据的原则是什么?
  8. 如果 dB 的数据发生变更,如何更新缓存内的数据?
  9. 如果流量很大,REDIS 挂了会发生什么,采取的措施是什么,有什么兜底的方案?
  10. 造成 REDIS 挂掉的原因有哪些?
  11. 什么是数据的倾斜,如何预防数据的倾斜?
  12. REDIS6.0 的多线程是怎样的?
  13. 有没有遇到过 REDIS 突然变慢的情况,原因是什么?
  14. REDIS 的内存碎片是怎么造成的?
  15. REDIS 是如何支持原子操作的?
  16. 在订单每天都是百万级别的数据量且超过 30 分钟未支付系统自动取消订单的场景下,如何设计把订单的状态改为取消?
  17. 订单系统中 MQ 的具体使用场景是什么?
  18. 如何保证 MQ 消息的幂等?
  19. rocket mq 是如何保证消息不丢失的?有没有做过相关设置?
  20. 微服务拆分的原则是什么?
  21. 微服务中分布式事务的具体解决的方案是什么?采用的 Seata 是用的哪种模式,其执行过程是什么?这种模式下的隔离级别和 MYSQL 的隔离级别有什么不一样,会不会有什么问题,如何解决?
  22. 公司的 SQL 语句规范是什么?表在建立索引的时候有什么原则?
  23. 为什么不建议用 uuid 作为 MYSQL 的主键索引?
  24. select 语句的查询过程是什么,如何预防回表?
  25. 在线上给一个小表加了个字段结果导致整个库都挂了,原因是什么,如何解决?
  26. MYSQL 中是如何出现死锁的,在设计表的时候如何减少锁的冲突?
  27. 单点登录系统是用什么协议来实现的?如何解决 token 或 session 的跨域问题?
  28. 如何设计和实现微信扫码登录的功能?

面试题答案

Spring相关

  1. 为什么选择Spring Boot框架,它与Spring有什么区别
    • 选择原因:快速构建项目,简化配置,有大量starter依赖,自动配置减少开发工作量,内置服务器便于部署和运行。
    • 区别:Spring是一个框架体系,需大量配置;Spring Boot基于Spring,以约定大于配置为核心,简化配置,更易上手和快速开发。
  2. Spring MVC的执行流程
    • 用户发送请求到DispatcherServlet。
    • DispatcherServlet查询HandlerMapping找到对应的Handler。
    • 调用HandlerAdapter执行Handler。
    • Handler执行完成返回ModelAndView给DispatcherServlet。
    • DispatcherServlet通过ViewResolver解析视图并渲染,将结果返回给用户。
  3. 如何实现Spring的IOC过程,会用到什么技术
    • 实现方式:通过配置文件或注解定义Bean,Spring容器负责创建和管理Bean。
    • 技术:反射用于创建对象,依赖注入通过构造函数、Setter方法等实现。
  4. Spring Boot的自动化配置的原理
    • 基于条件注解,根据类路径下是否存在某些类、Bean等条件,决定是否自动配置某个功能。通过@ConfigurationProperties绑定配置属性,EnableAutoConfiguration开启自动配置,读取META-INF/spring.factories文件中的自动配置类进行加载和配置。
  5. 如何理解Spring Boot中的starter
    • Starter是一组依赖描述符,将相关的依赖和配置整合在一起。用户只需引入starter依赖,Spring Boot就能自动配置相关功能,简化依赖管理和配置,如spring-boot-starter-web引入后可快速搭建Web项目。
  6. Spring Boot为什么要用嵌入式的web容器
    • 便于快速部署和运行,无需单独安装和配置外部Web容器。可将应用打包成可执行的jar或war文件,直接运行,提高开发和部署效率,便于在不同环境中快速迁移和部署。

Redis相关

  1. 利用REDIS存储数据的原则是什么

    • 数据读写频繁、对读写速度要求高的适合存Redis。如缓存热点数据、实时统计数据、分布式锁等。要考虑数据的生命周期,合理设置过期时间,避免内存占用过多。
  2. 如果DB的数据发生变更,如何更新缓存内的数据

    • 采用缓存更新策略,有先更新数据库再更新缓存、先删除缓存再更新数据库、先更新数据库再异步删除缓存等方式。根据业务场景选择合适策略,注意数据一致性问题。
  3. 如果流量很大,REDIS挂了会发生什么,采取的措施是什么,有什么兜底的方案

    • 发生情况:缓存失效,大量请求直接访问数据库,可能导致数据库压力过大甚至崩溃,系统响应变慢,部分业务可能无法正常处理。
    • 措施:采用Redis集群,增加节点提高可靠性和性能;开启持久化,保证数据不丢失。
    • 兜底方案:使用本地缓存做临时过渡,对数据库进行限流、降级等操作,保证核心业务可用。
  4. 造成REDIS挂掉的原因有哪些

    • 内存不足,超出最大内存限制。网络故障,节点之间通信异常。大量请求导致CPU使用率过高。持久化出现问题,如磁盘空间满等。软件或硬件故障等。
  5. 什么是数据的倾斜,如何预防数据的倾斜

    • 定义:数据在Redis集群节点中分布不均匀,部分节点数据量过大,部分节点数据量很少,导致负载不均衡。
    • 预防:合理设计数据分片策略,采用一致性哈希等算法。对数据进行预处理,将数据均匀分布。监控数据分布情况,及时调整。
  6. REDIS6.0的多线程是怎样的

    • Redis 6.0引入多线程主要用于网络I/O读写,提高网络读写性能。多线程负责读取请求、解析命令、发送响应等操作,数据处理仍由单线程执行,避免了多线程数据竞争问题,通过配置参数可调整线程数量等。
  7. 有没有遇到过REDIS突然变慢的情况,原因是什么

    • 内存不足,触发内存淘汰策略,导致数据读写变慢。有大量复杂的慢查询命令,阻塞了Redis线程。网络带宽不足或网络延迟高。持久化操作频繁,影响了读写性能。CPU负载过高,忙于处理其他任务。
  8. REDIS的内存碎片是怎么造成的

    • 内存分配器分配和释放内存时,由于分配的内存块大小和实际使用的内存大小不一致,多次分配和释放后就会产生内存碎片。例如,频繁地创建和删除不同大小的键值对,会导致内存空间不连续,形成碎片。
  9. REDIS是如何支持原子操作的

    • Redis通过单线程和命令队列来实现原子操作。单线程保证了同一时间只有一个命令在执行,不会被其他命令打断。命令队列则确保命令按照顺序依次执行,在执行一个命令的过程中不会插入其他命令,从而保证了原子性。

订单系统相关

  1. 在订单每天都是百万级别的数据量且超过30分钟未支付系统自动取消订单的场景下,如何设计把订单的状态改为取消
    • 可以使用Redis的有序集合,以订单创建时间加上30分钟作为score,订单ID作为member。定时任务定期扫描有序集合,取出当前时间超过score的订单ID,去数据库中更新订单状态为取消。也可以使用消息队列延迟消息功能,在订单创建时发送一个30分钟后的延迟消息,消息到达时更新订单状态。
  2. 订单系统中MQ的具体使用场景是什么
    • 订单创建后,发送消息到MQ通知库存系统扣减库存。通知支付系统进行支付处理。订单状态变更时,通知相关系统更新状态,如通知物流系统订单已支付待发货等。实现异步解耦,提高系统的稳定性和性能。
  3. 如何保证MQ消息的幂等
    • 在消息中添加唯一标识,消费者在处理消息前先检查是否已处理过该标识的消息。利用数据库的唯一索引,对消息中的关键信息建唯一索引,插入时若冲突则表示重复消息,不做处理。使用状态机,记录消息处理的状态,根据状态决定是否处理消息。

RocketMQ相关

  1. rocket mq是如何保证消息不丢失的?有没有做过相关设置
    • 生产者发送消息时采用同步发送方式,并设置合理的重试次数。Broker配置刷盘策略为同步刷盘,保证消息及时持久化到磁盘。消费者采用手动提交偏移量,处理完消息后再提交,防止消费过程中丢失消息。设置相关参数如unflushDelayMills控制刷盘时机等。

微服务相关

  1. 微服务拆分的原则是什么
    • 单一职责原则,每个微服务只负责一项主要功能。高内聚低耦合,微服务内部功能紧密相关,微服务之间耦合度低。业务边界清晰,按业务模块进行拆分。可扩展性原则,便于独立扩展和维护。数据独立,每个微服务有自己独立的数据库或数据存储。
  2. 微服务中分布式事务的具体解决的方案是什么?采用的Seata是用的哪种模式,其执行过程是什么?这种模式下的隔离级别和MYSQL的隔离级别有什么不一样,会不会有什么问题,如何解决
    • 解决方案:有两阶段提交、TCC、本地消息表、Seata等。
    • Seata模式:以AT模式为例,执行过程是开启全局事务,业务操作时Seata拦截SQL,记录数据的前后镜像,提交时协调各分支事务提交,若失败则根据镜像回滚。
    • 隔离级别差异:Seata AT模式默认读未提交,MySQL默认可重复读。Seata可能存在脏读问题。
    • 问题及解决:可通过在业务层控制事务边界,结合MySQL的锁机制等,必要时提高Seata隔离级别来解决。

数据库相关

  1. 公司的SQL语句规范是什么?表在建立索引的时候有什么原则
    • SQL规范:命名规范,表名、字段名等要有意义且遵循统一格式。语句格式化,缩进、换行规范。避免使用SELECT *,明确列出所需字段。合理使用事务等。
    • 索引原则:在经常用于查询条件、连接条件、排序和分组的字段上建立索引。区分度高的字段优先建索引。避免过多索引,考虑索引的维护成本。联合索引遵循最左前缀原则。

23. 为什么不建议用 uuid 作为 MYSQL 的主键索引?

  • 存储开销大:UUID 是 128 位,通常以 36 个字符的字符串形式存储,相比自增整数(如 INT 型 4 字节)占用更多存储空间,增加了索引文件大小。
  • 性能影响
    • 插入性能:UUID 无序,插入时会导致数据页频繁分裂,影响插入效率。而自增主键按顺序插入,数据页分裂频率低。
    • 查询性能:范围查询时,自增主键更具优势,因为其值连续,利于快速定位数据范围;UUID 无序,无法利用范围查询优化。

24. select 语句的查询过程是什么,如何预防回表?

  • 查询过程
    • 解析与预处理:MySQL 解析 SQL 语句,检查语法,生成解析树,并进行预处理,如权限检查、表名和列名解析。
    • 优化器:分析查询语句,考虑多种执行方案,如索引使用、表连接顺序等,基于成本模型选择最优执行计划。
    • 执行器:按照执行计划调用存储引擎 API,获取数据并返回给客户端。
  • 预防回表
    • 覆盖索引:查询列包含在索引中,避免回表操作。例如,查询 SELECT col1, col2 FROM table WHERE col3 = 'value',若建立 (col3, col1, col2) 复合索引,可利用覆盖索引直接获取结果。
    • 减少不必要查询列:仅查询索引列可避免回表。

25. 在线上给一个小表加了个字段结果导致整个库都挂了,原因是什么,如何解决?

  • 原因
    • 锁表问题:在添加字段操作时,MySQL 可能会使用表锁,长时间占用表资源,导致其他读写操作被阻塞,若有大量并发请求,可能拖垮整个数据库。
    • 磁盘空间不足:添加字段可能导致表结构变更,需要额外磁盘空间。若磁盘空间已满,操作失败并可能影响数据库其他功能。
  • 解决方法
    • 在线 DDL 工具:使用工具如 pt-online-schema-changegh-ost,它们通过创建临时表、复制数据等方式,实现无锁或低锁的表结构变更。
    • 提前检查磁盘空间:在操作前确保有足够磁盘空间。

26. MYSQL 中是如何出现死锁的,在设计表的时候如何减少锁的冲突?

  • 死锁产生原因:两个或多个事务在获取资源时,互相等待对方释放已占有的资源,形成循环等待,导致死锁。例如,事务 A 持有锁 L1 并请求锁 L2,事务 B 持有锁 L2 并请求锁 L1。
  • 减少锁冲突的表设计方法
    • 合理设计索引:确保经常用于查询条件的字段有索引,减少全表扫描,降低锁的粒度和时间。
    • 优化事务顺序:按照固定顺序访问资源,避免循环等待。例如,所有事务都先访问表 A 再访问表 B。
    • 降低事务隔离级别:在满足业务需求前提下,适当降低事务隔离级别,减少锁的持有时间。

27. 单点登录系统是用什么协议来实现的?如何解决 token 或 session 的跨域问题?

  • 常用协议
    • CAS(Central Authentication Service):简单的单点登录协议,客户端通过 CAS 服务器认证,服务器返回票据,客户端凭票据访问其他应用。
    • OAuth(开放授权):用于授权第三方应用访问用户资源,用户在授权服务器认证后,第三方应用获取授权令牌访问资源。
    • SAML(Security Assertion Markup Language):基于 XML 的标准,用于在不同安全域间交换认证和授权信息。
  • 解决跨域问题
    • Token 跨域:通过在响应头设置 Access - Control - Allow - Origin 允许跨域访问,前端在请求时携带 Token。也可使用 JSONP 或 CORS 代理方式传递 Token。
    • Session 跨域:使用 JSONP 传递 Session ID,或通过设置代理服务器,在代理服务器上维护统一的 Session 存储,实现跨域共享 Session。

28. 如何设计和实现微信扫码登录的功能?

  • 设计思路
    • 前端:展示扫码登录按钮,调用微信提供的扫码登录接口,显示二维码。
    • 后端:接收微信服务器回调,验证回调信息,生成用户登录状态,返回登录结果给前端。
  • 实现步骤
    • 注册应用:在微信开放平台注册应用,获取 AppID 和 AppSecret。
    • 前端生成二维码:前端调用微信 JS - SDK 生成带有唯一标识(如 state 参数)的二维码,展示给用户。
    • 用户扫码:用户使用微信扫码,微信服务器将扫码信息发送到后端服务器。
    • 后端验证:后端接收微信回调,使用 AppID 和 AppSecret 验证回调信息合法性,获取用户信息。
    • 生成登录状态:后端生成用户登录状态(如 Token),存储用户登录信息,返回登录结果给前端。
    • 前端处理:前端根据后端返回结果,处理登录成功或失败逻辑。

在Redis集群中使用Lua锁

可能会存在以下一些问题

一致性问题
  • 数据同步延迟:Redis集群采用异步复制机制,主节点将数据复制到从节点存在一定延迟。当使用Lua脚本获取锁时,若主节点在未完成数据同步到从节点的情况下出现故障,新的主节点可能没有锁的相关数据,导致锁的一致性被破坏,出现多个客户端同时获取到锁的情况。
  • 网络分区影响:在网络分区场景下,集群可能会被分割成多个子集群。若获取锁的客户端所在子集群与持有锁的主节点所在子集群隔离,可能会导致客户端无法正确判断锁的状态,出现误判获取锁成功的情况,进而引发数据不一致等问题。
性能问题
  • 脚本执行阻塞:Redis是单线程处理命令,Lua脚本在执行时会阻塞其他命令的执行。如果Lua锁脚本执行时间过长,会影响Redis对其他请求的处理能力,降低整个系统的性能和响应速度。
  • 集群资源消耗:在集群环境中,执行Lua脚本需要在多个节点之间协调和同步,这会增加网络开销和节点的计算资源消耗。大量使用Lua锁可能导致集群资源紧张,影响整体性能。
复杂性问题
  • 脚本编写难度:编写正确、高效且能在集群环境中稳定运行的Lua锁脚本具有一定难度。需要开发者对Redis集群的工作原理、数据一致性模型以及Lua脚本的特性有深入理解,否则容易出现逻辑漏洞和错误。
  • 维护和调试困难:由于Lua锁脚本在集群中的执行涉及多个节点和复杂的网络交互,出现问题时定位和解决问题的难度较大。例如,当锁出现异常释放或无法获取的情况时,很难快速确定是脚本逻辑问题、网络问题还是节点故障等原因导致。
兼容性问题
  • 版本差异:不同版本的Redis对Lua脚本的支持可能存在差异,某些特性或行为可能在不同版本中有所变化。在使用Lua锁时,可能会因为Redis版本升级或集群中节点版本不一致等原因,导致锁的行为不符合预期。
  • 与其他模块冲突:如果Redis集群中还使用了其他模块或扩展,可能会与Lua锁产生兼容性问题。例如,某些模块可能会修改Redis的命令执行逻辑或数据结构,影响Lua锁的正常工作。

如何处理Redis中大key

大key的检测
  • 使用Redis命令:可以使用MEMORY USAGE命令来获取键的内存占用情况,从而找出大key。例如MEMORY USAGE key可以返回key的内存占用字节数。还可以结合SCAN命令,遍历所有键,对每个键执行MEMORY USAGE来全面检测大key。
  • 借助Redis工具:利用redis-cli--bigkeys选项,它可以快速扫描并找出内存中占用空间较大的键。也可以使用Redis的可视化工具,如RedisInsight、RedisDesktopManager等,这些工具通常提供了直观的界面来展示键的大小和分布情况,方便查找大key。
优化存储结构
  • 对象编码优化:Redis的不同数据类型有不同的编码方式,例如hash类型如果字段较少且值较小,使用ziplist编码会更节省空间。可以通过OBJECT ENCODING命令查看键的编码方式,并考虑是否可以通过调整数据结构或使用合适的命令来优化编码。比如,对于一个包含大量小字段的hash,可以使用HMSET而不是逐个HSET来插入数据,这样可能会使Redis采用更紧凑的编码。
  • 使用压缩:对于值是字符串类型的大key,如果内容可压缩,可以在客户端对数据进行压缩后再存储到Redis中,获取数据时再进行解压缩。可以使用gzipzlib等压缩库来实现。不过要注意压缩和解压缩会带来一定的CPU开销,需要根据实际情况权衡。
数据拆分
  • 按数据特征拆分:如果大key是一个hashlist等集合类型,可以根据数据的业务特征将其拆分成多个小key。例如,一个包含用户所有订单信息的大hash,可以按照订单时间或订单类型等维度拆分成多个hash,每个hash只包含部分订单信息。
  • 使用Redis集群:将大key的数据分布到多个Redis节点上,通过集群的方式来分散存储和访问压力。可以使用Redis的分片集群,如Redis Cluster,它会根据键的哈希值将数据分布到不同的节点上。在使用Redis Cluster时,需要合理设计键的命名规则,确保相关数据能够均匀分布在各个节点上。
过期策略和淘汰机制
  • 设置合理过期时间:对于一些时效性较强的大key,设置合适的过期时间,让Redis自动删除过期的大key,以释放内存空间。比如缓存类的大key,根据其业务场景设置几分钟到几小时不等的过期时间。
  • 调整淘汰策略:根据业务需求调整Redis的内存淘汰策略。例如,设置为volatile-lru(对设置了过期时间的键采用LRU算法淘汰)或allkeys-lru(对所有键采用LRU算法淘汰),让Redis在内存不足时优先淘汰不常用的大key。也可以结合maxmemory配置项,合理设置Redis的最大内存使用量,触发淘汰机制。

相关文章:

【面试题】 Java 三年工作经验(2025)

问题列表 为什么选择 spring boot 框架,它与 Spring 有什么区别?spring mvc 的执行流程是什么?如何实现 spring 的 IOC 过程,会用到什么技术?spring boot 的自动化配置的原理是什么?如何理解 spring boot 中…...

MOS的体二极管能通多大电流

第一个问题:MOS导通之后电流方向可以使任意的,既可以从D到S,也可以从S到D。 第二个问题:MOS里面的体二极管电流可以达到几百安培,这也就解释了MOS选型的时候很少考虑体二极管的最大电流,而是考虑DS之间电流…...

Node.js下载安装及环境配置教程 (详细版)

Node.js:是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其非常适合构建实时应用程序。 Node.js 提供了一种轻量、高效、可扩展的方式来构建网络应用程序&#xff0…...

嵌入式MCU面试笔记2

目录 串口通信 概论 原理 配置 HAL库代码 1. 初始化函数 2. 数据发送和接收函数 3. 中断和DMA函数 4. 中断服务函数 串口通信 概论 我们知道,通信桥接了两个设备之间的交流。一个经典的例子就是使用串口通信交换上位机和单片机之间的数据。 比较常见的串…...

代码随想录算法【Day34】

Day34 62.不同路径 思路 第一种&#xff1a;深搜 -> 超时 第二种&#xff1a;动态规划 第三种&#xff1a;数论 动态规划代码如下&#xff1a; class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n,…...

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印P126、P131勘误

勘误&#xff1a;打圈的地方有指数二字。 指数滤波器本身是错误的概念&#xff0c;我在书上打了一个叉&#xff0c;排版人员误删了。 滤波器部分从根本上有问题&#xff0c;本来要改&#xff0c;但是时间不够了。 和廖老师讨论多次后&#xff0c;决定大动。指数滤波器的概念…...

vim多文件操作如何同屏开多个文件

[rootxxx ~]# vimdiff aa.txt bb.txt cc.txt #带颜色比较的纵向排列打开的同屏多文件操作 示例&#xff1a; [rootxxx ~]# vimdiff -o aa.txt bb.txt cc.txt #带颜色比较的横向排列打开的同屏多文件操作 示例&#xff1a; [rootxxx ~]# vim -O aa.txt bb.txt c…...

day6手机摄影社区,可以去苹果摄影社区学习拍摄技巧

逛自己手机的社区&#xff1a;即&#xff08;手机牌子&#xff09;摄影社区 拍照时防止抖动可以控制自己的呼吸&#xff0c;不要大喘气 拍一张照片后&#xff0c;如何简单的用手机修图&#xff1f; HDR模式就是让高光部分和阴影部分更协调&#xff08;拍风紧时可以打开&…...

渗透测试之WAF规则触发绕过规则之规则库绕过方式

目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格&#xff0c;比如在mysql中%0a是换行&#xff0c;可以代替空格 这个方法也可以部分绕过最新版本的…...

C语言【基础篇】之流程控制——掌握三大结构的奥秘

流程控制 &#x1f680;前言&#x1f99c;顺序结构&#x1f4af; 定义&#x1f4af;执行规则 &#x1f31f;选择结构&#x1f4af;if语句&#x1f4af;switch语句&#x1f4af;case穿透规则 &#x1f914;循环结构&#x1f4af;for循环&#x1f4af;while循环&#x1f4af;do -…...

c++小知识点

抽象类包含至少一个纯虚函数&#xff0c;不能实例化对象。派生类必须实现基类的所有纯虚函数才能成为非抽象类&#xff0c;从而可以实例化对象。可以使用抽象类的指针或引用指向派生类对象&#xff0c;实现多态性调用。抽象类虽然不能直接实例化&#xff0c;但可以拥有构造函数…...

团体程序设计天梯赛-练习集——L1-022 奇偶分家

前言 这几道题都偏简单一点&#xff0c;没有什么计算&#xff0c;10分 L1-022 奇偶分家 给定N个正整数&#xff0c;请统计奇数和偶数各有多少个&#xff1f; 输入格式&#xff1a; 输入第一行给出一个正整N&#xff08;≤1000&#xff09;&#xff1b;第2行给出N个非负整数…...

vue项目中,如何获取某一部分的宽高

vue项目中&#xff0c;如何获取某一部分的宽高 在Vue项目中&#xff0c;如果你想要获取某个DOM元素的宽度和高度&#xff0c;可以使用原生的JavaScript方法或者结合Vue的特性来实现。以下是几种常见的方法&#xff1a; 使用ref属性 你可以给需要测量宽高的元素添加一个ref属…...

LeetCode - #195 Swift 实现打印文件中的第十行

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

机试题——最小矩阵宽度

题目描述 给定一个矩阵&#xff0c;包含 N * M 个整数&#xff0c;和一个包含 K 个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵&#xff0c;要求子矩阵包含数组中所有的整数。 输入描述 第一行输入两个正整数 N&#xff0c;M&#xff0c;表示矩阵大小。 接下…...

香港维尔利健康科技集团重金投资,内地多地体验中心同步启动

香港维尔利健康科技集团近期宣布&#xff0c;将投资数亿港元在内地多个城市建立全新的健康科技体验中心。这一战略举措旨在进一步拓展集团在内地市场的布局&#xff0c;推动创新医疗技术的普及和应用。 多地布局&#xff0c;覆盖主要城市 据悉&#xff0c;维尔利健康科技集团将…...

ZYNQ-IP-AXI-GPIO

AXI GPIO 可以将 PS 端的一个 AXI 4-Lite 接口转化为 GPIO 接口&#xff0c;并且可以被配置为单端口或双端口&#xff0c;每个通道的位宽可以独立配置。 通过使能三态门可以将端口动态地配置为输入或输出。 AXIGPIO 是 ZYNQ PL 端的一个 IP 核&#xff0c;可以将 AXI-Lite Mas…...

Netty的心跳机制怎么实现的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的心跳机制怎么实现的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的心跳机制怎么实现的&#xff1f; Netty的心跳机制主要是通过在客户端和服务器之间定期发送特殊的数据包&#xff08;比如空消息或自定义的控…...

java基础——专题一 《面向对象之前需要掌握的知识》

目录 Δ前言 一、拾枝杂谈 1.Java是什么&#xff1f; 2.计组前瞻&#xff1a; 3.JDK&#xff0c;JRE&#xff0c;JVM&#xff1f; 二、环境搭建 1.JDK安装和配置&#xff1a; 1.1 人话 1.2 JDK的配置 1.3 如何切换JDK的版本&#xff1f; 2.DOS的简单使用&#xff1a; 2.1 介…...

Python 数据清洗与处理常用方法全解析

在数据处理与分析过程中&#xff0c;缺失值、重复值、异常值等问题是常见的挑战。本文总结了多种数据清洗与处理方法&#xff1a;缺失值处理包括删除缺失值、固定值填充、前后向填充以及删除缺失率高的列&#xff1b;重复值处理通过删除或标记重复项解决数据冗余问题&#xff1…...

BFS算法的实现(例题)

这是C算法基础-搜索与图论专栏的第X篇文章&#xff0c;专栏详情请见此处。 引入 上篇博客&#xff0c;我们学习了BFS算法的大体套路&#xff0c;这次&#xff0c;我将会通过两个例题来更详细的讲解。 下面我们就来讲BFS算法&#xff08;例题&#xff09;的实现。 过程 例题1&a…...

clean code阅读笔记——如何命名?

命名的原则 1. “小处诚实非小事“ 有个词叫做”以小见大“。以建筑作喻&#xff0c;宏大建筑中最细小的部分&#xff0c;比如关不紧的门、未铺平的地板&#xff0c;甚至时凌乱的桌面&#xff0c;都会将整个大局的魅力毁灭殆尽&#xff0c;这就是整洁代码之所系。 2. 有意义…...

MacOS 如何解决无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件

背景 在安装软件时&#xff0c;遇到“无法打开 ‘xxx’&#xff0c;因为 Apple 无法检查其是否包含恶意软件” 的提示&#xff0c;许多用户可能会感到困惑&#xff0c;不知道该如何处理。遇到这个问题时&#xff0c;按以下步骤操作即可解决。 首先&#xff0c;这个警告提示的出…...

Java并发学习:进程与线程的区别

进程的基本原理 一个进程是一个程序的一次启动和执行&#xff0c;是操作系统程序装入内存&#xff0c;给程序分配必要的系统资源&#xff0c;并且开始运行程序的指令。 同一个程序可以多次启动&#xff0c;对应多个进程&#xff0c;例如同一个浏览器打开多次。 一个进程由程…...

省市区三级联动

引言 在网页中&#xff0c;经常会遇到需要用户选择地区的场景&#xff0c;如注册表单、地址填写等。为了提供更好的用户体验&#xff0c;我们可以实现一个三级联动的地区选择器&#xff0c;让用户依次选择省份、城市和地区。 效果展示&#xff1a; 只有先选择省份后才可以选择…...

springboot 动态配置定时任务

要在Spring Boot中动态配置定时任务&#xff0c;可以使用ScheduledTaskRegistrar类来实现。 首先&#xff0c;创建一个定时任务类&#xff0c;该类需要实现Runnable接口。例如&#xff1a; Component public class MyTask implements Runnable {Overridepublic void run() {/…...

数据结构与算法学习笔记----求组合数

数据结构与算法学习笔记----求组合数 author: 明月清了个风 first publish time: 2025.1.27 ps⭐️一组求组合数的模版题&#xff0c;因为数据范围的不同要用不同的方法进行求解&#xff0c;涉及了很多之前的东西快速幂&#xff0c;逆元&#xff0c;质数&#xff0c;高精度等…...

Arouter详解・常见面试题

前言&#xff1a;ARouter是一个用于 Android App 进行组件化改造的路由框架 —— 支持模块间的路由、通信、解耦。 一、路由简介&#xff1a; 路由&#xff1a;就是通过互联的网络把信息从源地址传输到目的地址的活动。完成路由这个操作的实体设备就是 路由器&#xff08;Rout…...

全志开发板 视频输入框架

笔记来源于百问网出品的教程。 1.VIN camera驱动框架 • 使用过程中可简单的看成是vin 模块 device 模块af driver flash 控制模块的方式&#xff1b; • vin.c 是驱动的主要功能实现&#xff0c;包括注册/注销、参数读取、与v4l2 上层接口、与各device 的下层接口、中断处…...

寒假学web--day10

简介 一些高级的反序列化 phar反序列化 phar类似于java的jar包&#xff0c;将多个php文件合并为独立的压缩包&#xff0c;不用解压就能执行里面的php文件&#xff0c;支持web服务器和命令行 metadata $phar->setmetadata($h); metadata可以存放一个类实例&#xff0c;…...