首页 > 很早之前的PingCAP数据库开发实习挂经
头像
半不多
编辑于 2021-03-20 23:28
+ 关注

很早之前的PingCAP数据库开发实习挂经

HR面-电话面

PingCAP和其他公司不同的是一面为HR面。

  1. 聊一聊项目中遇到的问题

  2. 对TiDB的了解

  3. 反问

结束后会给一个小作业,时间大概为一周左右。我的小作业是:使用raft-rs和grpc-rs做一个HA KVServer。且有如下要求

  • Provide basic get, set, delete, and scan operations
  • The data saved in one node must be persistent in the disk (restart can't lose data)
  • Need to show - Kill minority node, the service can still work
  • Need to show - Kill majority node, the service can't work
  • Need to support add/remove node dynamically
  • [Plus Point] Use a benchmark tool to find some performance problems.

https://github.com/BanBuDu0/Simple-KV
我没有完全写完。。。

一面

自我介绍,说简历上面没有的东西

然后和我聊了聊我的小论文。

问我学校学了哪些课程,计算机科学与技术专业和软件工程专业有什么不同(我本科计科,硕士调剂到了软工)

假设有一个函数,它的作用是随机返回数组里的内容,怎么判断它是真的随机

聊了聊之前布置的小作业

算法题:DFS,记录树的每条路径,用GO写

package main

import (
)

type node struct {
    children []*node
}

func restoreToSQL(*node) string {
    return ""
}

func solve(*node) []string {
    // implememnt this
    return nil
}

func main() {
    level21 := &node{}
    level22 := &node{}
    level23 := &node{}
    level11 := &node{children: []*node{level21, level22}}
    level12 := &node{children: []*node{level23}}
    root := &node{children: []*node{level11, level12}}
    // root
    // |                \
    // level11          level12
    // |       \        |
    // level21 level22  level23

    result := solve(root)



    // assert
    level11.children = []*node{level21}
    root.children = []*node{level11}
    _ = result[0] == restoreToSQL(root) // root -> level11 -> level21
    level11.children = []*node{level22}
    _ = result[1] == restoreToSQL(root) // root -> level11 -> level22
    root.children = []*node{level12}
    _ = result[2] == restoreToSQL(root) // root -> level12 -> level23
}

反问

一面的面试官很nice,在家一边带娃一边面试,面完的印象就是那种和蔼的长辈。

二面

  1. Chain Replication

  2. CAP定理和C怎么理解

  3. Raft主要解决CAP哪两个问题

  4. Raft的figure 8

  5. Raft persist的变量有哪些

  6. 为什么commitIndex不用persist

  7. linearizability vs sequential consistency(没答出来,回答了Linearizability vs Serializability)

  8. 进程和线程的区别

  9. 进程的通信方式

  10. 进程申请内存的过程

  11. 算法: 二叉树的最近公共祖先

  12. 反问

只记得这些内容了,当时没录音

个人觉得PingCAP比较坑的就是面试前得花一周多的时间做小作业,我吭哧吭哧写了一周多的Rust(现学现写),然后面试的时候又让我用go写算法题,导致我手撕算法时go语法都有点忘了。。。

更多模拟面试

全部评论

(5) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐