4年服务端社招面经

347 阅读4分钟

最近9月份出去面试了一波互联网公司,面试前准备了差不多两个星期,看之前做的八股文笔记和刷leetcode 100高频题。之后就直接边面试边积累面经,这篇文章分享一下面经。

美团

MySQL

  • 业界默认的隔离级别
  • 如何实现可重复读
  • 如何实现幻读,除了MVCC还有什么方式
  • 索引的原理
  • 如何对索引进行优化
  • 插入一条数据的全过程

Redis

  • redis的分布式锁是怎么实现的
  • 分布式锁一般用在哪些场景

Kafka

  • 消费者积压过多怎么处理?
  • 扩容会有什么影响?

开放题

  • 如果一个线上服务突然出现大面积的接口超时,可能是什么原因?
  • 如果出现这样的问题,你会怎么处理?
  • 一般哪些原因会导致内存泄漏?
  • 什么原因会导致CPU利用率暴涨?

算法题

  • 斐波那契数列,先写递归写法分析时间复杂度,再写循环写法,最后写空间复杂度为O(1)的写法

滴滴

基础

  • golang的GMP模型
  • golang垃圾回收机制
  • mysql的四种隔离级别和含义
  • 如何实现可重复读:MVCC
  • MySQL update一条记录的全过程
  • redis有哪些集群模式
  • redis持久化的两种方式
  • redis如何实现高可用
  • redis主节点挂了是怎么进行故障转移操作的
  • kafka如何实现高可用
  • kafka如何防止消息丢失

设计

  • 微信群发红包设计:考虑高并发场景下如何保证不多抢

算法

  • 判断一个字符串中有效括号的个数(比如)(())

B站

基础

  • golang的sync map怎么实现的
  • golang里有哪些锁
  • 读写锁做了哪些优化
  • golang的gc原理,为了提升效率有哪些优化
  • kafka相比其他mq的优势
  • kafka如何保证高吞吐
  • kafka零拷贝的原理

代码

  • leetcode143 重排链表
  • 用golang实现,m个goroutine轮流打印n个hello world,主协程等待打印完毕

百度

golang

  • init的执行时机是什么,它和全局变量的执行顺序是怎样的;全局的变量先初始化还是常量先初始化
  • 局部变量是分配在堆上还是栈上
  • 两个interface可以进行比较吗
  • nil之间可能会不相等吗

MySQL

  • MySQL有哪些索引
  • 什么情况下二级索引会失效
  • 什么情况下带索引的in条件查询,会不走索引?

redis

  • 如何保证可靠性
  • redis有什么集群模式
  • 设计一个延时消息队列

算法

  • 最长回文子串
  • 最小覆盖子串

美团v2

这次是被其他部门捞起来面

基础

  • MySQL查询一条记录的时候,会加哪些锁
  • 范围查询记录的时候,会加哪些锁
  • redo日志和undo日志分别是干什么的
  • ES的nested结构有了解吗
  • 更新db后,如何保证db和缓存数据的一致性?如何保证强一致性?

算法

  • 将一个int型正整数(最高到billion级别),翻译成英文

快手

基础

  • kafka如何保证消息不丢(blog.csdn.net/m0_57836225…);如何保证没有重复消息
  • 介绍一下kafka的rebalance
  • MySQL的四种隔离级别
  • MySQL mvcc原理
  • MySQL如何实现回滚
  • 写一个SQL,获取学生分数表中排名101名学生的分数

设计

  • 设计一个分布式自增id服务

算法

  • 三数之和

拼多多

设计

  • 设计一个单机的定时任务调度系统
  • 有一个按小时记录的文件,每个文件中记录了这个小时中的<user_id, keyword, timestamp>的用户查询记录,每个文件大小1T,单机内存100G。要求设计一个接口,查询出[t1, t2]时间范围内的top3的查询keyword以及对应的user_id列表

算法