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