2.13字节飞书实习一面

  • 自我介绍

  • mysql的底层引擎有哪些?
    InnoDB, Myisam,见深入理解mysql的底层实现

  • mysql优化-给定两个字段,性别和学号,应该在哪个字段建?
    在学号建,因为实现是B+树,性别只有两三个取值,形成的B+树只有三层(根节点+性别取值+每个性别对应的数据),不能充分利用其性能。

  • 那如果要在学号建呢?面试官提示:位图索引
    每个性别都有一个位图索引表,求某性别的数据时只需按与操作。

  • 为什么用性别时位图索引更好?因为这时候学号构建的位图索引只有一个值为1,其他位均为0,造成了极大的空间浪费。这题从存储性能答。

  • 项目中Spring的启动流程
    略复杂 Spring的启动流程

  • 项目中序列化和反序列化用的是什么
    protobuf

  • 用户态和内核态的区别

  • 线程和进程的区别

  • 有哪些锁?只记得互斥锁和自旋锁的名称

  • 多线程程序中,多少个线程比较好
    多线程,多线程

  • 什么是泛化调用

  • 怎么做拥塞控制

  • 查看负载的linux命令

  • Hashmap的工程实现

  • OSI七层模型

  • TCP头部有哪些字段

  • 回车输入网址返回网址页面,中间经过了哪些层?

  • 什么是智能指针

  • GC语言和不GC的区别
    内存回收机制?

  • C语言,不知道函数的参数和和返回值,怎么动态调用函数
    反汇编看函数的调用栈。(不懂)

编程和算法:

  • 给定用户使用app的时长,求使用时长在前99%的用户
    先说的快排的思路,面试官提示用也可以实现。用堆的话要维护两个堆:最大堆和最小堆,分别存放使用时长在前99%的用户和99%之后的
  • 求根号2,精确到小数点后n位
  • 100个人从1-100编号,经过编号同样从1-100的路灯,当路灯编号可整除人的编号时,该灯切换状态。初始时所有灯均灭,问行人全部通过后,有多少灯量
  • 假设我们有一块连续的内存地址,以非固定大小分隔成了一个个的小栅格,比如:
    栅格1:0x00000000 ~ 0x000000FF
    栅格2:0x00000100 ~ 0x000002AF
    栅格3:0x000002B0 ~ 0x000002B3


    现在随机给定一个指针(内存地址),需要能快速找到该指针所指向的栅格的起始地址和终止地址,要求时间复杂度尽量低。
    比如,对于上面所列的三个栅格,给定地址为0x0000010A,需要能返回所在栅格的起始地址和终止地址分别为:<0x00000100,0x000002AF>,也就是栅格2的起止地址。
    备注:你可以自己决定使用何种数据结构来保存所有栅格的地址序列,init()方法用于初始化该数据结构,无须填充,直接使用你定义的结构即可。
    Map addrSearching(int pointer){
    // 想到的是二分查找
    }
    private void init(){
    //无须填充
    }

你可能感兴趣的:(工作面经,面试,字节跳动)