字节跳动社招面试

3,642 阅读4分钟

面试岗位:后端研发,除了hr面之外,其他都是1小时左右

一面

  • 自我介绍
  • 介绍下你的项目
  • 采用分库分表性能提升了多少知道吗?为什么要用分库分表?怎么解决分库导致的分布式事务问题?分库分表怎么查询的
  • 说一下读写分离,如果有数据库延迟怎么办?
  • 谈一下限流,怎么做的,限流的资源是什么
  • 谈一谈分布式锁
  • DDD有什么好处?你们用ddd重构后带来了什么好处?有什么缺点吗?你们的业务专家是怎么处理的
  • 谈谈分布式事务
  • 说一说你的项目中列表搜索重构是怎么做的
  • 缓存用过吗?你们redis有用在哪些场景,redis zset有用过吗,原理是什么样的?跳表原理
  • 大key了解吗?大key有什么坏处,为什么?如何解决大key
  • 热点key了解吗,怎么解决呢
  • 你们redis的内存淘汰策略是什么?用的哨兵还是集群,一致性hash与redis哈希槽原理
  • 算法题
题目描述
有个接口不断被调用,需要实现:如果该接口“最近”10分钟(11分统计1-11分)被调用次数超过1000,则不允许被调用;失败不算调用次数。假定每次调用前都会访问下面这个静态方法,如果允许调用则返回true,否则返回false
public static boolean canInvoke(){
}

二面(交叉面)

  • 介绍一下你们的业务以及流程
  • 数据库索引相关
mysql给以下表结构(innodb)
user(uid,mobile,email,pwd,status)
primary key uid
key idx_acc(mobile,email)
key idx_seu(status,email)

1. sql查询效率排序,为什么?
  A: select pwd from users where mobile = 'XXX'
  B: select uid from users where mobile = 'XXX'
  C: select uid from users where email = 'XXX'
2. status取值 1-5,下面这个查询有什么问题,explain查询计划怎么看,除了explain还有什么方法
  D: select count(1) from users where status = 1
  • 聚簇索引和非聚簇区别
  • 组合索引,最左前缀原则,为什么
  • 数据库并发修改,或者upsert(没有就插入)效果怎么实现
  • 分布式锁怎么实现的
  • 网络篇
  • http请求格式是怎样的,请求行有哪些内容
  • nginx熟悉吗?nginx转发属于7层或者5层的哪一层
  • cookie和session是什么,有什么关联吗
  • 编程题
找K的个数
题目描述
输入:
递增数组1,2,3,3,4,4,8,12
目标值K
输出:
K的个数,时间复杂度O(log2^N)

三面

  • 自我介绍
  • pinpoint与其他的对比,有了解其他公司监控是怎么做的吗
  • 你们pinpoint主要用于什么,应用有多少接入了
  • 介绍一下你们的业务和流程
  • 你现在主要在做哪块,有几个人在做,
  • 稳定治理在做什么,怎么做的
  • 有带团队吗
  • 算法题 (Leetcode 459)
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000
abab true
aaaaa true
aaaab false
aabaab true

hr面(沟通)

  • 自我介绍(主要过往工作选择以及项目经验)
  • 为什么在这个阶段看机会
  • 新的工作机会主要关注哪些因素
  • 你怎么理解发展空间,或者哪些因素使你感觉发展空间比较大
  • 大概介绍下你接触过的业务,你觉得积累比较深入的子域是哪块
  • 什么时间开始做的项目负责人,觉得负责人和非负责人有什么不一样吗
  • 项目团队内合作和跨团队合作,跨团队合作有什么心得
  • 长期的职业发展你是怎么规划的
  • 在杭州定居了吗?上海的需求更充沛,杭州今年的规划不太多
  • 你对我们部门有了解吗
  • 现在公司的工作强度和氛围是怎样
  • 你有什么需要我为你解答的吗