文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

百度二面,有点小激动!附面试题

2024-11-29 21:19

关注

前几天刚面完百度,这不,没两天就收到二面邀请了,还有点小激动呢!来看看这次都问了哪些面试题吧,附答案仅供参考。

ConsurrentHashMap如何计算下标?

ConsurrentHashMap 计算下标和 HashMap 类似,它的主要执行流程有以下两步:

计算 key 哈希值:

  1. JDK 1.7:key.hashCode()。
  2. **JDK 1.8+**:((h=key.hashCode()) ^ (h>>>16)) -> 算法更均匀,哈希冲突越少。

计算下标:hash & (table.length-1)。

说说MVCC机制?

MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于解决数据库并发访问中,数据一致性问题。它通过在读写操作期间保存多个数据版本,以提供并发事务间的隔离性,从而避免了传统的锁机制所带来的资源争用和阻塞问题。

在 MVCC 机制中,每个事务的读操作都能看到事务开始之前的一致性数据快照,而不受其他并发事务的修改的影响。核心思想是通过创建多个数据版本,保持事务的一致性和隔离性。

MVCC 主要是依靠以下两部分实现的:

Undo Log 链

我们知道 Undo Log 主要是用于数据库中事务回滚的,但在 MVCC 机制中也发挥着重要的作用,那什么是 Undo Log 链呢?

Undo Log 链是指在每个数据对象上维护的 Undo Log 记录链表。每张表都会有与之相对应的 Undo Log 链,用于记录修改前的数据信息(以方便数据进行回滚)。

Read View

Read View(读视图)用于管理事务之间数据可见性的一种机制。Read View 在特定时刻为事务创建的一个快照,该快照包含了在该时刻所有未提交事务的事务标识符,以及其他一些辅助信息。

在 Read View 中包含了以下 4 个主要的字段:

RC 级别中,每次快照读都会生成一个全新的 Read View,而 RR 级别中同一个事务会复用一个 Read View。

有了 Read View 和 Undo Log 链之后,并发事务在查询时就知道要读取那些数据了。

判断方法

判断方法是根据 Read View 中的 4 个重要字段,先去 Undo Log 中最新的数据行进行比对,如果满足下面 Read View 的判断条件,则返回当前行的数据,如果不满足则继续查找 Undo Log 的下一行数据,直到找到满足的条件的数据为止,如果查询完没有满足条件的数据,则返回 NULL。

判断规则

  1. trx_id 在 m_ids 中:说明事务尚未执行完,该行数据不可被访问。
  2. trx_id 未在 m_ids 中:说明事务已经执行完,可以返回该行数据。

以上判断规则从 Undo Log 最新的行数据,逐行对比,直到找到匹配的数据,否则查询完未匹配上,则返回 NULL。

说说读已提交和可重复读各自创建ReadView的时机?

创建 ReadView 时机如下:

你知道哪些常用的Linux命令?

Linux 常用的命令有以下这些:

如何排查CPU占用比较高的问题?

以 Linux 系统为例,排查 CPU 飙升问题的实现步骤如下:

说说Top命令各个指标的具体含义?

使用 top 命令查询 cpu 占用最高的进程 ID(PID),如下图所示:

可以使用 shift+P 快捷键进行 CPU 占用率排序(从高到低)。

指标含义:包括进程ID (PID)、用户 (USER)、优先级 (PR)、nice 值 (NI)、虚拟内存使用量 (VIRT)、物理内存使用量 (RES)、共享内存大小 (SHR)、进程状态 (S)、CPU 使用率 (%CPU)、内存使用率 (%MEM)、进程累计 CPU 时间 (TIME+) 和命令名 (COMMAND)。

其中:

Redis为什么快?

Redis 运行比较快的原因主要有以下几点:

Redis有哪些持久化方式?

Redis 4.0 之后支持以下 3 种持久化方案:

说说AOF中的写时复制技术?

① AOF 重写背景

随着 Redis 运行,AOF 文件会不断增长,因为每次写操作都被追加到文件中。为了减小文件体积、提高恢复速度,Redis 提供了 AOF 重写功能,它可以创建一个新的、更紧凑的 AOF 文件,仅包含重建当前数据集所需的最小命令序列。

② 写时复制在 AOF 中的应用

  1. 子进程写时复制:Redis 在执行 AOF 重写(bgrewriteaof)时,会 fork 出一个子进程(bgsave 子进程)来负责 AOF 文件的重写,主进程依然执行 Redis 的业务命令。
  2. AOP 重写遇到写操作:在 bgsave 子进程运行期间,如果主进程有写操作(如修改 key-value),主进程会采用写时复制机制。具体来说,主进程会把这个新写或修改的数据写入到一个新的物理地址中,并修改自己的页表映射。这样,虚拟页和物理页的关系在子进程中保持不变,而主进程中的数据已经被更新。
  3. AOF 重写缓冲区:为了解决主进程在 AOF 重写过程中修改数据导致的数据不一致问题,Redis 设置了一个 AOF 重写缓冲区。在重写 AOF 期间,当 Redis 执行完一个写命令之后,它会同时将这个写命令写入到 AOF 缓冲区和 AOF 重写缓冲区。当 AOF 重写完成后,Redis 会将 AOF 重写缓冲区中的命令追加到新的 AOF 文件中,以确保数据的一致性。

手撕算法:三数之和?

来源:磊哥和Java内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯