很早之前的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语法都有点忘了。。。

#实习##面经##PingCAP##数据库工程师#
全部评论
感觉楼主答得挺好,怎么挂了呢😭
点赞 回复 分享
发布于 2021-03-21 10:34
hhh作业我写了半天就不写了,让我优化,我才懒得管,本来也就没想去,蹭个面试玩儿
点赞 回复 分享
发布于 2021-03-22 11:42
楼主你简历有没有写分布式东西呢
点赞 回复 分享
发布于 2021-10-30 00:05
今年好像改成两轮技术加hr了,明天面试,有个单机数据库的项目,估计要凉了😭
点赞 回复 分享
发布于 2022-03-14 21:40

相关推荐

点赞 40 评论
分享
牛客网
牛客企业服务