【华为OD技术面试 | 真八股 】MySQL联合索引,谈springIOC的理解,谈springAOP的理解,Erika和zookeeper等问题

这篇具有很好参考价值的文章主要介绍了【华为OD技术面试 | 真八股 】MySQL联合索引,谈springIOC的理解,谈springAOP的理解,Erika和zookeeper等问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

华为 OD 面试流程

  1. 机试:三道算法题,关于机试,橡皮擦已经准备好了各语言专栏,可以直接订阅。
  2. 性格测试:机试
  3. 技术一面(本专栏核心)
  4. 技术二面(本专栏核心)
  5. 主管面试
  6. 定级定薪发 offer
  7. 体检入职

本专栏的所有博客,将为大家整理技术一面二面中【面试官问到的真题】,并提供大家答案。

⭐️ 华为 OD 机考 Python https://blog.csdn.net/hihell/category_12199275.html
⭐️ 华为 OD 机考 C++ https://blog.csdn.net/hihell/category_12199283.html
⭐️ 华为 OD 机考真 C 语言 https://blog.csdn.net/hihell/category_12225286.html
⭐️ 华为 OD 机考 JAVA https://blog.csdn.net/hihell/category_12201821.html
⭐️ 华为 OD 机考 JS https://blog.csdn.net/hihell/category_12201825.html
⭐️ 华为 OD 机考 Golang https://blog.csdn.net/hihell/category_12231589.html

所有问题都来自通过华为 OD 机考通过人员反馈信息。
每篇博客会涉及 7 个面试题,题目和答案仅供参考~

1. mysql 数据库建了两个字段,且设置了联合索引,如果其中有一个字段为空会出现什么问题?

如果在 MySQL 数据库中建立了两个字段并设置了联合索引,但其中一个字段为空,可能会出现以下问题:

  1. 索引效率降低:如果其中一个字段为空,那么联合索引的效率可能会降低,因为 MySQL 会忽略空值。这将导致索引无法完全覆盖表格的数据,影响查询的效率。 🐌
  2. 查询结果错误:如果查询语句中使用了空值的字段作为查询条件,可能会导致查询结果出现错误或者没有任何结果。这是因为 MySQL 无法确定空值的具体取值,从而无法确定查询结果。🔍
  3. 数据插入问题:如果其中一个字段为空,插入数据时可能会出现问题,例如插入重复数据或者无法插入数据。这将导致数据的完整性和一致性受到影响。🤕

2. 谈谈 springIOC 的理解,有什么好处,解决了什么问题

在传统的 Java 应用程序中,通常是由程序员编写代码来创建和管理对象之间的关系。
但是,这种方式存在一些问题,例如代码耦合度高、代码可读性差、难以维护等问题。
Spring IOC 就是为了解决这些问题而出现的。

Spring IOC 的实现方式是将对象的创建和依赖关系的管理委托给 Spring 框架。在 Spring 中,通过使用配置文件或者注解来描述对象之间的依赖关系,然后由 Spring 框架负责创建和管理这些对象。这样,就可以将应用程序的各个组件解耦,提高代码的可维护性和可读性。

Spring IOC 的好处包括:

  1. 降低代码耦合度:通过将对象之间的依赖关系从代码中分离出来,可以降低代码之间的耦合度,从而使应用程序更加灵活和易于维护。 🌟
  2. 提高代码可读性:通过将对象之间的依赖关系配置到外部文件或注解中,可以使代码更加简洁、易于理解和阅读。💻
  3. 方便测试:由于对象之间的依赖关系被外部配置文件或注解所管理,所以在测试时可以轻松地模拟和替换对象之间的依赖关系,从而使测试更加简单和灵活。🧪
  4. 提高代码复用性:通过将对象的创建和依赖关系的管理集中到 Spring 框架中,可以方便地在不同的应用程序中重用这些对象。🚀

3. 谈谈 springAOP 的理解,切面编程有没有实际应用,有哪些注解,作用是什么,有那些应用场景?

通过使用 Spring AOP,我们可以将一些通用的功能(例如事务处理、日志记录等)从业务逻辑中分离出来,并统一管理和配置这些通用功能,从而提高代码的可维护性和可重用性。

Spring AOP 是通过在运行时动态地为对象添加一些额外的行为,以实现切面的功能。这些额外的行为被称为“切面”,可以被理解为横切关注点(cross-cutting concern)。

Spring AOP 的实现方式是基于代理模式,通过代理对象来实现切面的功能。

Spring AOP 中常用的注解包括:

  • @Aspect:用于定义一个切面。
  • @Pointcut:用于定义一个切入点,表示在哪些方法或类中应用切面。
  • @Before:用于定义一个前置通知,表示在目标方法执行之前执行切面。
  • @After:用于定义一个后置通知,表示在目标方法执行之后执行切面。
  • @AfterReturning:用于定义一个返回通知,表示在目标方法返回结果之后执行切面。
  • @AfterThrowing:用于定义一个异常通知,表示在目标方法抛出异常之后执行切面。

Spring AOP 的应用场景包括:

  1. 日志记录:通过在切面中添加日志记录功能,可以方便地记录方法的调用信息和执行结果。

  2. 安全控制:通过在切面中添加安全控制功能,可以对访问方法进行权限控制和身份验证。

  3. 性能监控:通过在切面中添加性能监控功能,可以对方法的执行时间和资源消耗进行监控和统计。

  4. 事务管理:通过在切面中添加事务管理功能,可以对数据库事务进行管理和控制。

4. Erika 和 zookeeper 有了解过吗,作用是什么,主要解决了什么问题

Erika 是一个实时操作系统内核,专门为嵌入式系统设计。它的目标是提供可靠的实时性能和资源管理。Erika 的设计注重小型化和高效性,可以在资源受限的系统上运行,例如微控制器。

而 ZooKeeper 是一个分布式应用程序协调服务,旨在解决分布式系统中的一些问题,例如数据一致性、分布式锁、配置管理等。ZooKeeper 提供了一个具有高可用性的分布式环境,允许应用程序在其中注册、发现和协调服务。

在嵌入式系统中,Erika 通常用于处理实时任务,而 ZooKeeper 则可以在分布式系统中用于解决数据管理和协调问题。虽然这两个技术的应用场景不同,但它们都旨在提高系统的可靠性和效率。

5. 谈谈 JDK、JRE、JVM 的理解,区别是什么

👉 JDK 是 Java 开发工具包的缩写,它提供了 Java 开发所需的所有工具和资源,包括编译器、调试器、JRE、类库等。JDK 通常用于开发 Java 应用程序。

👉JRE 是 Java 运行环境,用于在计算机上运行 Java 应用程序和 Applet。

👉JVM 是 Java 虚拟机,是 Java 语言的核心组成部分,负责将 Java 代码转换为计算机可执行的字节码并执行。

JDK 包含了 JRE,因此 JDK 可以用于开发和运行 Java 应用程序。而 JRE 只包含了运行 Java 应用程序所必需的组件,而没有用于开发 Java 应用程序的工具。

JVM 负责解释并执行 Java 代码,这意味着无论是开发还是运行 Java 应用程序都需要 JVM。JVM 运行在操作系统之上,允许 Java 应用程序在不同的操作系统和硬件架构上运行,实现了 Java 语言的“一次编写,到处运行”的特性。

JDK 是用于开发 Java 应用程序的工具包,JRE 是用于在计算机上运行 Java 应用程序的组件,而 JVM 则是将 Java 代码转换为可执行代码并执行的虚拟机。

6. 谈谈对泛型的理解

泛型是 Java 语言中的一种重要特性,允许程序员编写可重用的代码,提高了代码的安全性和可读性。

泛型是一种参数化类型的概念,允许程序员在定义类、接口、方法时使用类型参数,这些类型参数可以在使用时被具体的类型替代。泛型可以将代码中的数据类型从代码中分离出来,从而使代码更加灵活和可维护。

Java 中的泛型有两种形式:

  • 类型参数化类:定义一个类时,可以通过类型参数来表示该类中的属性、方法的数据类型,例如 ArrayList<T>,其中 T 表示一个类型参数。

  • 泛型方法:定义一个方法时,可以通过类型参数来表示方法的参数类型、返回值类型等,例如 public <T> void printArray(T[] array),其中 <T> 表示一个类型参数。

使用泛型可以带来许多好处,包括:

安全性:通过泛型,可以在编译时检查类型安全,避免在运行时出现类型转换错误。

可读性:泛型可以提高代码的可读性,使代码更易于理解和维护。

可重用性:通过泛型,可以编写可重用的代码,避免重复编写相同或类似的代码。文章来源地址https://www.toymoban.com/news/detail-413122.html

7.JVM 的组成

  • Class Loader (类加载器):负责将编译好的 Java 类加载到 JVM 中,以便被执行。类加载器将类文件读入内存,并将其转换为 JVM 内部使用的数据结构。
  • Runtime Data Area (运行时数据区):是 JVM 中用于存储数据的区域。它包括以下几个部分:
    • Method Area (方法区):用于存储类信息、常量、静态变量和即时编译后的代码等数据。
    • Heap (堆):用于存储 Java 对象。在 Java 程序运行时,动态创建的对象都被分配在堆中。
    • Java Stack (Java 栈):用于存储方法的局部变量、操作数栈、动态链接、方法出口等信息。
    • Native Method Stack (本地方法栈):与 Java 栈类似,但用于存储本地方法的信息。
  • Execution Engine (执行引擎):负责执行编译好的 Java 代码。它包括解释器和 JIT (即时编译器) 两部分。解释器将字节码解释为机器码并执行,而 JIT 则将频繁执行的代码编译为本地机器码,以提高代码的执行效率。
  • Native Interface (本地接口):提供了 Java 与本地代码交互的能力。通过本地接口,Java 程序可以调用 C/C++ 等本地代码。

到了这里,关于【华为OD技术面试 | 真八股 】MySQL联合索引,谈springIOC的理解,谈springAOP的理解,Erika和zookeeper等问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql联合索引详解

    比较简单的是单列索引(b+tree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 b+tree结构如下: 每一个磁盘块在mysql中是一个页,页大小是固定的,mysql innodb的默认的页大小是16k,每个索引会分配在页上的数量是由字段的大小决定。当字段值的长

    2024年02月14日
    浏览(24)
  • mysql中主键索引和联合索引的原理解析

    主键索引 :按照主键数据从小到大按照从左到右进行排序,叶节点只存储数据区; 接着将上面的页生成出来,页只存储索引和指针,指针指向数据域,当通过主键查找数据时,从B+树的头部开始寻址数据、读取数据。 上面为索引页 下面为数据页 查询select * from table where a=6,

    2024年04月08日
    浏览(29)
  • 华为OD-按索引范围翻转文章片段

    输入一个英文文章片段 翻转指定区域的单词顺序 标点符号和普通字母一样处理 例如输入字符串 I am a developer. [0,3] 则输出 developer. a am I 使⽤换⾏隔开三个参数 第⼀个参数为英⽂⽂章内容即英⽂字符串 第⼆个参数为翻转起始单词下标(下标从0开始) 第三个参数为结束 单词下

    2024年02月11日
    浏览(27)
  • 【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

    目录 0. 简介 1. 主键 2. 唯一索引 3. 联合索引 4. 索引对数据库操作的影响 5. 其他索引 5.1 普通索引 5.2 全文索引 5.3 前缀索引 6. 总结 7. 参考资料 索引是一类特殊的 文件 ,用来存储检索信息,使数据库查找更加快速。 主键是一类特殊的唯一索引,选择某一列元素作为主键,用

    2024年02月09日
    浏览(34)
  • C++面试八股文:技术勘误

    不知不觉,《C++面试八股文》已经更新30篇了,这是我第一次写技术博客,由于个人能力有限,出现了不少纰漏,在此向各位读者小伙伴们致歉。 为了不误导更多的小伙伴,以后会不定期的出勘误文章,请各位小伙伴留意。 在《C++面试八股文:C++中,设计一个类要注意哪些东

    2024年02月11日
    浏览(31)
  • MySQL索引可能失效之or、is null、is not null、不等于(!=,<>)、联合索引

    1、如果 A,B 两列都有索引,那么  select * from Table where A=a or B=b;  会走索引吗? 答案:会,因为 A,B都有索引; 2、如果 A,B有索引,但是C没有索引; select * from Table where A=a or B=b or C =c; 会走索引吗? 答案:不会走,因为C是or的形式,且没有索引 3、如果 建了A B联合索引,但是

    2024年02月11日
    浏览(23)
  • 华为OD高频面试真题

     华为OD机试真题目录:真题目录 题目保证都是考过的真题,目前是六个,后四题都是华为od祖传的题目,很经常出 考前练练很有帮助,也可以看下大概难度 两个专栏都有,要是不需要机试题可以购买第二个专栏 一、面试面试官发题大多是在腾讯会议的聊天中以文字的形式发

    2024年02月07日
    浏览(36)
  • 华为od面试记录

    一、笔试(100+100+200) 第一题是数据流中的中位数 第二题是某通信公司,新员工编号生成问题 第三题是面试官调度问题 总结:运气不好,没有抽到简单题,都是中等难度题目,但是运气又好了点,考试前一个小时刷题碰到了跟第三题类似的,结果第一题100%,第二题空着了,

    2023年04月25日
    浏览(20)
  • 华为OD面试(部分)

    问题和算法题都挺简单的 Java内存泄漏 算法题思路不对,没写完只说了下思路:Leetcode516. Longest Palindromic Subsequence 最后告诉我hr面挂了。其实这不是最重要的,因为还可以转推其他部门。但是定薪改不了,比我预期少了很多,跌破了心理底线。真操蛋。

    2024年02月13日
    浏览(27)
  • 【技术面试】Java八股文业余选手-上篇(持续更新)

    以下目录参考下篇 5. RocketMQ 消息中间件、RabbitMQ、ActiveMQ 【√】5.1 RocketMQ 6. Kafka 大数据量消息中间件、ElasticSearch、ZooKeeper 【√】6.1 Kafka 【√】6.2 ElasticSearch 7. 分布式、研发提效、高并发、线程安全 【×】7.1 分布式与集群 【√】7.2 高并发、线程安全 【×】7.3 研发提效 【√

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包