虾皮 | Data-infra Foundation | 二面已过

面经
自我介绍
一些课程安排(主要是听到我学校的课程里没有计网, 这估计也是没有问我计网的主要原因)

操作系统
内核态和用户态
- 从概念扯到了在Linux中的实现, 内核态本质上是内核空间和权限的集合, 说了下进入到内核态怎么发生的用户栈切换到内核栈
哪些操作是内核态的操作
- 中断, 异常, I/O等
用户进程怎么进入到内核态
- 用户进程主动发起的系统调用, 以及中断(缺页中断), 异常
系统调用和普通函数之间的区别
- 普通函数是用户创建存在elf文件的text区域里面, 系统调用是写入系统内核源码的, 通过make来完整编译出来
- 执行普通函数在用户的栈区里, 执行系统调用在这个进程的内核栈里
执行上, 普通函数和系统调用之间区别
- 系统调用会走内核栈, 申请内存也是通过伙伴系统分配物理内存, 通过slab内存管理器来分配内核对象
Linux查看和CPU相关的参数, 使用什么命令查看
- Top查看动态的排行
- ps获取快照
- perf查看某个进程的调用栈中每个函数的CPU占用比例
怎么看一个系统在内核态占用的CPU的使用率
- 当时忘记了, 和面试官说了下不记得了, 只记得怎么看内核对象的内存占用率了(slabtop), 实际上是pidstat
CPU的IO_WAIT数量是怎么统计出来的
- 大概说了IO_WAIT指的是因为IO操作被阻塞了
IO_WAIT状态的时候, CPU是忙碌的吗
- 现代IO设备里面都有DMA设施, 搬运数据的操作是交给DMA来做的, 不会阻塞CPU
什么是零拷贝
- 只有一次系统调用, 并且开启了某个内核参数以后, 能实现在内核空间不会有冗余拷贝
- 在用户态是通过mmap直接将内核缓冲区映射到用户的虚拟地址空间上的
什么是虚拟内存
- 提供完全隔离的运行地址空间, 屏蔽了操作物理内存的问题
- swap机制(也会导致程序抖动)
- 内核里一段虚拟内存对应一个vma
- 通过mm_struct管理vma
什么时候开始分配物理内存
- 触发缺页中断的时候会从伙伴系统里分配对应数量的页出来

数据库
什么是聚簇索引
- 从聚簇到非聚簇, 再到非聚簇存在回表
聚簇索引B+树的非叶子节点存储的是什么
- 我说的索引, 但是面试官想让我回答的是id, 两个人因为这个问题都笑出来了
主键是什么字段
- 64位的int, 为什么是64位的int. 不使用32位
- 32位太小了, 现在单张表很容易超
主键一般有什么修饰
- prime key
- Unique
- Autoincreament
为什么是单增的
- 能避免B+树出现页分裂
什么是联合索引
- 形式到最左前缀匹配规则到常见的用途, 索引下推和索引覆盖优化查询
MySQL的一个查询最多可以用几个索引
- 是一个trick向的问题(笑哭), 就是一个非主键索引加上回表的时候的主键索引, 两个索引, 也是说完两个人都笑了下
Java线程的状态
- CREATE, INTERRUPTABLE, BLOCK, RUNNING, STOP, TERMINATED
INTERRUPTABLE和BLOCK之间的区别
- 说了下什么时候会分别出来这两种状态, BLOCK说了IO阻塞, 让我下去重新看下

项目
我自己说项目
问为什么使用的rabbitmq
- 我回答的是调研的结果是这个mq最简单易用, 但是被问到的为什么别的更复杂, 回答的只有简单的了解
rabbitmq是保序的吗
- 我说的是, 然后扯了些可靠性保证的一些内容
rabbitmq是怎么做高可用的
- 我回答的是不清楚, 但是为了避免mq成为单点问题, 是肯定有成熟的解决方案的, 不是很难的问题, 能很容易搜到解决方案

场景题目
超大文件排序
- 两个人交流着写完了, 中间给了我一些提示

算法
原地操作的合并数组(第一个数组大小是m+n)
反问
对我的评价
我的优缺点
(没问业务是上一个面试官那问得挺清楚的)

面试总结
总体上看发挥还好, 就是Java上有点薄弱, 对于技术选型的考量上也太简单了.
全部评论
HR面已过, 等offer
点赞 回复 分享
发布于 09-02 18:20 山西

相关推荐

神秘博士:应该是hc比较稀缺
投递美团等公司10个岗位
点赞 评论 收藏
分享
09-02 16:03
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务