字节跳动

  • 视频技术面

    • 简单介绍自己
    • 根据简历提了一些问题
    • 手撕代码(单链表交换相邻的两个节点)
    • TCP三次握手、四次挥手的过程
    • epoll / select的细节
    • IO在应用层(用户空间)进入内核空间所做的操作(调度/下文切换/内存拷贝)
    • 基础考察
    • 你有什么问题想问我的?

华为

  • 现场技术面一

    • 自我介绍
    • 照着简历提问题
    • static声明的函数和static声明的变量的区别是什么?
    • static声明的变量和全局变量的区别是什么?
    • 做项目的过程中有什么让你觉得最棘手的问题?
    • 手撕代码(字符串技术问题)
  • 现场技术面二

    • 自我介绍
    • 照着简历提问题
    • Open-Channel和LightNVM的示意图、IO通路示意图
    • 你做的最有成就感的项目是哪个?
    • FIOS的设计算法是怎样的?
    • 手撕代码(电梯调度算法)
  • 现场综合面

    • 自我介绍
    • 闲聊
    • 你有什么问题想问我的?

小米

  • 视频技术面一

    • 挑一个你做过的认为最有难度的项目介绍一下
    • 介绍一下lightnvm
    • 讲一下IO栈,从VFS开始
    • 介绍一下cfq调度器和deadline调度器
    • 说一下IO优化有哪些做法(应用程序/文件系统/块层调度器/驱动程序)
    • 手撕代码1(数组元素的计数问题)
    • 手撕代码2(斐波那契数的递归实现方法)
    • 手撕代码3(实现一个简单的memcpy函数)
    • 你有什么问题想问我的?
  • 电话技术面二

    • 首先请自我介绍一下
    • Open-Channel这个项目,OC-SSD相对于传统的SSD,提升了多少百分比的性能?
    • 源码大约有多少行?
    • 你们在上面做的工作是什么?
    • 这个项目上面遇到的最大困难是什么?
    • 你们是怎么调试内核的?用内核态还是用户态?
    • 怎么调试内核core kdump?
    • 分布式系统里面,你们的系统参考了ceph的哪些内容?
    • ceph用的是crush映射,你们的系统是怎么映射的?
    • 你们的分布式系统怎么来查找一个数据?
    • 你们的分布式冗余的配置是怎样的?为什么设置这么大的冗余?有必要吗?
    • 节点损毁后,怎么进行数据的迁移?
    • 调度器这个项目,你们的调度器相对于Noop和CFQ,提升了多少百分点的性能?
    • 你们的调度器在延迟上,相对与其他调度器,降低了多少百分比的延迟?
    • 你们怎么来测调度器的性能提升了多少?用什么方法?为什么用这的方法?听过block trace没?
    • IO栈,从系统调用开始,经过哪些路径?(你这个太快了,映射和page cache都跳过去了)
    • 好吧就这样吧,你有什么问题想问我的?

海康威视

  • 电话技术面一

    • 先介绍一下自己吧
    • 简单介绍下分布式系统和调度器
    • std::vector的内存管理存在哪些问题?
    • C++11了解多少?共享内存了解吗?让你设计一个auto_ptr你会怎么设计?
    • std::string的内存是怎么管理的?
    • 让你设计内存池你会怎么设计?
    • 怎么优化内存池?内存池和malloc相比谁的性能更高?为什么?
    • 多线程有哪些问题?是否会影响性能?
    • 怎么来优化多线程以提高性能?
    • epoll / select了解吗?网络编程了解多少?
    • 你有什么问题想问我的?

OPPO

  • 现场技术面一

    • 自我介绍
    • 根据简历提了一些问题
    • 梳理一下内核IO栈
    • 带了成绩单没?
    • 讲讲计算机体系结构有哪些组成部分,软件的硬件的?
    • 为什么要优化调度器,CFQ在SSD上为什么不行?
    • 闪存的读比写快有具体的测试数据没?
    • 你有什么问题想问我的?