面试题:为什么 MySQL 索引用的是 B+ 树而不是红黑树?
MySQL 选择 B+ 树作为索引结构而不是红黑树,主要基于以下几个关键原因: 1. 磁盘 I/O 效率 B+ 树是为磁盘存储系统优化的数据结构: 多路平衡查找树:B+ 树的每个节点可以包含多个键值(通常为...
面试题:JavaScript 中 Map 和 Object 的区别是什么?
Map 和 Object 都可以用来存储键值对,但它们在设计、特性和使用场景上有显著区别。理解这些差异对于选择合适的数据结构至关重要。 核心区别对比 特性MapObject键的类型任意类型(对象、函数、...
面试题:如果 React 的 Consumer 组件在上下文树中找不到 Provider,如何处理?
这是一个很好的问题,涉及到 React Context API 的健壮性设计。 当一个 Consumer 组件在组件树中找不到对应的 Provider 时,React 会使用在 createContext 时定义的 defaultValue(默认值)。 1...
面试题:Volatile 与 Synchronized 的区别是什么?
在 Java 中,volatile 和 synchronized 都是用于确保线程之间的可见性和有序性,但它们的作用和使用场景有着明显的区别。以下是它们的主要区别: 1. 可见性 volatile:保证了变量的可见性,即当...
面试题:line-height: 100% 和 line-height: 1 有什么区别?
这是一个考察对 CSS line-height 属性计算方式深刻理解的经典面试题。虽然 100% 和 1 看似等价,但在 line-height 的上下文中,它们的行为有本质区别。 核心区别 值计算方式是否继承实际效果lin...
面试题:JavaScript 的 forEach 和 map 方法有什么区别?
forEach 和 map 都是 JavaScript 中用于遍历数组的方法,但它们在目的、返回值和使用场景上有本质的区别。 核心区别总结 特性forEachmap目的执行副作用(如修改外部变量、操作 DOM、打印日志)...
面试题:MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
在 MySQL 中,COUNT(*)、COUNT(1) 和 COUNT(字段名) 都是用于计算行数的聚合函数,但它们之间有一些细微的区别: 1. COUNT(*) 作用:计算表中所有行的数量,包括含有 NULL 值的行。 性能:MySQL...
面试题:JavaScript 中怎么删除数组最后一个元素?
这是一个基础但高频的 JavaScript 面试题。删除数组最后一个元素有多种方法,以下是几种常用方式及其区别: ✅ 方法一:pop() —— 最常用、最推荐 const arr = [1, 2, 3, 4]; const lastElemen...
面试题:Java 中 HashMap 的扩容机制是怎样的?
在 Java 中,HashMap 的扩容机制是为了在键值对数量增加时,动态调整数组容量以减少哈希冲突并保持高效的查询和插入性能。以下是其核心原理和流程的详细解析: 1. 扩容触发条件 当 Ha...
面试题:如何用 CSS 实现一个宽高自适应的正方形?
要使用 CSS 实现一个宽高自适应的正方形,可以利用多种方法。这里介绍几种常见的实现方式: 方法一:使用 padding-top 或 padding-bottom 这种方法利用了 padding 百分比值是相对于包含块的宽度...









