小米一面 9.9 35min
面试官面试了一下午 头都晕了,很逗 面试官人还挺不错的
1、自我介绍
2、聊项目
1)redis的发布订阅模式如何实现的
2)消息 转发的如何实现?
3)所有服务器都的经过redis server这个中心节点,问是否听过不存在中心节点的发布订阅模式?(不了解)
4)负载均衡如何实现?
5)做了负载均衡后系统哪块性能得到的了提升?
处理速度得到提升,但是连接数没有提高
6)线程池如何实现的?线程池的调度如何实现
7)pthread库中 条件变量和mutex是如何使用实现生产者消费者模型?
3、聊操作系统的内存管理?这个聊了很久
介绍了下内存管理的作用、段式内存管理到页式内存管理的演变、还聊了虚拟内存到物理内存的映射涉及swap机制 内存回收 oom机制、内核的内存管理buddy、slab算法
4、select、poll、epoll的区别
5、大小端转换如何实现
反问环节:
小米这边主要做平台软件:包含手机和车
小米二面9.15 50min
1、介绍自己竞赛和项目
没有特别深入问项目,基本常规的问题,问了下zookeeper作用
2、Linux中进程和线程区别?
3、用户态地址空间和内核态地址空间最大差异是什么?
回答用户态和内核态区别--能够直接访问硬件资源
4、地址空间是虚拟还是物理的?用户空间的资源是共享还是隔离的?
5、自旋锁和互斥锁区别(面试官开始说的英文,没听懂自旋锁)
6、多线程环境下,如何保证某个函数的线程安全?
阻塞同步、非阻塞同步、threadlocal这3中方案
7、static关键字修饰全局变量和局部变量的作用?
全局变量-隐藏变量 局部变量-延长生命周期
8、register关键字作用?(register不了解)volatile 关键字的作用?
register关键字:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率
9、堆内存和栈内存的区别?
10、用户态申请一块内存,操作系统会立刻分配内存吗?
聊了下swap机制
11、内核态管理内存的方式?
详细说了下buddy和slab算法
12、copy on write机制了解吗?其实就是问了下fork后读时共享写时复制的底层原理?
13、调度队列上有很多的ready任务,操作系统通过什么方式进行调度?
14、是否了解优先级翻转情况?资源访问 锁 有关的优先级反转? 这个不了解
涉及到优先级继承
15、算法题:单链表反转
16、反问环节
小米主要做系统平台研发,很重视操作系统这块 二面完就泡池子了 在线寻找小米池子群
#你的秋招进展怎么样了##小米##C++工程师#
#23届秋招#