七牛

2021-3-16-七牛一面

  • 自我介绍
  • 项目介绍
    • 亮点?
    • 进程崩溃的解决办法
    • DB崩溃的解决办法
  • 哪些MySQL优化方法
  • MySQL索引
  • B树和B+树的区别
    • B+树好处
      • 查询稳定
      • 用链表全体扫描比较快
      • 节点存储的引用更多
      • 一个节点大小等于一页,减少磁盘IO
  • 为什么不用UUID作为数据库主键
  • Java Hashcode 作用
    • 为什么要重写Hashcode
  • 常用的GC引擎
    • 挑一个介绍一下
  • 新生代/老年代的GC算法
  • TCP四次挥手
  • 代码:
    • 合并两个有序链表
  • 反问

2021-3-29-七牛二面

  • 自我介绍

  • Linux相关

    • 共享他的ubuntu桌面

    • 输入top,解释各个内容的含义

      • load average 含义(系统负载,三个数值分别对应了从现在往回1分钟、5分钟、15分钟的任务队列平均长度)
    • 如何创建一个僵尸进程(一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

    • 怎么能让 CPU us 指标更高

    • 怎么能让CPU sy指标更高

    • 为什么申请10G的内存,实际物理内存要略大于10G,虚拟内存要远大于10G

    • 输入 netstat 命令查看网络情况,解释输出结果的含义

    • 如果两台机器建立了TCP连接,这时候剪段了网线,会出现什么情况

      • https://hit-alibaba.github.io/interview/basic/network/TCP.html

      • TCP 的连接,实际上是一种纯软件层面的概念,在物理层面并没有“连接”这种概念。TCP 通信双方建立交互的连接,但是并不是一直存在数据交互,有些连接会在数据交互完毕后,主动释放连接,而有些不会。在长时间无数据交互的时间段内,交互双方都有可能出现掉电、死机、异常重启等各种意外,当这些意外发生之后,这些 TCP 连接并未来得及正常释放,在软件层面上,连接的另一方并不知道对端的情况,它会一直维护这个连接,长时间的积累会导致非常多的半打开连接,造成端系统资源的消耗和浪费,为了解决这个问题,在传输层可以利用 TCP 的 KeepAlive 机制实现来实现。主流的操作系统基本都在内核里支持了这个特性。

        TCP KeepAlive 的基本原理是,隔一段时间给连接对端发送一个探测包,如果收到对方回应的 ACK,则认为连接还是存活的,在超过一定重试次数之后还是没有收到对方的回应,则丢弃该 TCP 连接。

    • SYN攻击

      • 防御?
        • 缩短超时(SYN Timeout)时间
        • 增加最大半连接数
        • 过滤网关防护
        • SYN cookies技术
  • JVM相关

    • 内存模型
    • 栈帧内容
    public static void main(){
    
        int a = 1;
        Integer b = new Integer(5);
        Integer c = 10;
    
        // a, 1, b , 5, new Integer(5) 对象,c , 10 分别在内存的什么位置
        // a,b,c 栈帧中的局部变量表
        // 1,5,10  在常量池
        // new Integer(5) 对象在堆中
    }
    
  • 代码

    • 二分查找
    • 组合数
    • 图案解锁,有多少种解锁方式

面试     

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

Redis入门 上一篇
2021春招 下一篇