专题:面试题
共15篇相关文章

Go的GMP调度模型各自职责如何构成一个高效并发系统的核心?
一、为什么需要调度模型? 先问一个问题: Go 里可以同时开成千上万个 goroutine,它是怎么做到的? 如果每个 goroutine 都对应一个操作系统线程,那系统早就炸了。 因为: 线程很重(几 MB 栈空间) 创建销毁成本高 线程...

Go语言中抢占式调度是如何实现的?
一、什么是“抢占式调度”? 先理解什么是“抢占”。 非抢占式(早期 Go) 早期 Go(1.14 之前): goroutine 只有在 函数调用 channel 操作 syscall runtime 检查点 才会被切换。 如果一个 goro...

如何有效降低Go语言中频繁抢占CPU的频率?
前言 “能抢占”和“频繁抢占”是两回事。 如果抢占太频繁,会导致: 上下文切换开销大 cache 失效 调度成本增加 性能下降 所以 Go 的设计目标是: 能抢占,但不会乱抢占。 我们一步步讲清楚它是怎么控制频率的。 一、核心原则:不是随时...

为何说goroutine相较于线程在资源占用上更为轻盈?
前言 很多人听说: goroutine 很轻,可以开几十万 但为什么轻?到底轻在哪里? 我们从 内存、创建成本、切换成本、调度方式 四个维度拆开讲清楚。 一、最核心的一句话 goroutine 轻,是因为它是用户态调度 +...

goroutine栈自动扩容机制是怎样的?
前言 goroutine 初始栈很小(≈2KB),但可以自动变大。 那它是怎么做到的? 一、先说结论 goroutine 的栈扩容是通过: 在函数调用前做“栈空间检查”,如果不够,就调用 runtime 进行扩容。 关键机制是: stack...

GOMAXPROCS在Go语言中如何影响并发性能?
GOMAXPROCS 决定: 同一时间最多有多少个 goroutine 可以并行运行(占用 CPU)。 更准确说: 它决定 P(Processor)的数量。 一、回忆一下 GMP 模型 我们之前讲过: G = goroutine(任务) M...

MySQL三层主键索引极限数据量是多少?
面试题:MySQL 的 3 层主键索引最多能支撑多少数据量? 我们知道MySQL InnoDB表的主键索引中,所有数据行都存储在B+树的叶子节点,内部节点只存储用于路由的主键值。 这是一个比较宽泛的题目,当被问到这类问题时...

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
装箱和拆箱是C#为了统一类型系统而提供的便利,但便利背后是有代价的。理解它的性能影响,写出能避免无谓装箱的代码,是C#开发者进阶的必修课。下次面试被问到这道题,不妨从概念到实战,一层层剥开,展示出你对底层机制的深刻理解。...

为何不推荐用UUID字符串做MySQL主键?
摘要:MySQL InnoDB表不推荐使用UUID等字符串做主键,推荐用整型自增ID。 先说简单描述一下结论:使用UUID(通用唯一识别码)等字符串作为主键会因乱序插入而频繁触发页分裂,所以,尽量选择整型连续自增ID作为索引,尤其是主键索引...

MySQL InnoDB表主键整型自增,这样的设置有什么好处?
【面试题】为什么建议 MySQL InnoDB 表建一个整型自增主键? 你如果不了解MySQL索引中数据的存储机制、查询过程和插入过程,请参考《浅析二叉树、B树、B+树、B*树和MySQL索引底层原理》,它介绍了二叉树、A...

为什么MySQL InnoDB不采用哈希索引来优化查询?
MySQL InnoDB索引的数据结构选择了B+树,而没有选择hash,原因是什么?原因是hash不支持范围查找。 对于hash索引,纵使表中有一亿个数据元素,经过一次hash也可以定位到索引所在行的磁盘文件地址,它这么快...

为什么InnoDB索引叶节点存储主键值而非数据行?
为了节省存储空间和数据一致性。我们知道主键索引叶子节点已经存储了全部数据行,内部节点存储主键值。如果辅助索引叶子节点继续存数据行,就会导致一个数据行存储多份,使得占用的存储空间翻倍。另一方面是为了保持数据一致性,辅助索引都通过主键索引回表查...

为什么InnoDB B树内部节点存储索引键值而非数据行?
MySQL一个数据页不能太大也不能太小,默认大小为16Kb,把data元素挪走以后,数据页就能存更多的索引了,意味着分叉就更多但树的高度不变,进而使得叶子节点更多,所以在查询效率不变的情况下能存储更多的数据行了。 《浅析二叉树、B树、B&a...

Linux系统基础知识有哪些?
Linux系统中如何管理用户和组? Linux系统中用户和组的管理通常包括以下几个方面: 1、创建用户和组: 使用useradd和groupadd命令创建新用户和新组。 2、修改用户和组信息: 使用usermod和groupmod命令来修改...

Linux系统基础(二)中哪些知识点是面试官常问的问题?
Linux系统中的定时任务有哪些类型,它们是如何配置的? Linux系统中的定时任务主要有两种类型:Cron作业和at作业。 1、Cron作业: 使用crontab命令配置和管理。 配置周期性执行的任务,如每天、每周或每月执行。 编辑cro...
