后端面试问题

数据库基础
1、char 和 varchar 的区别
2、int(20) 是什么意思
3、select 语句的执行顺序
4、什么是索引,mysql 的索引的底层实现
5、什么是事务?事务的四大特性
6、innodb 和 myiasm 的区别
7、什么是乐观锁和悲观锁

数据库进阶
1、事务隔离级别(什么是幻读、脏读、不可重复读)
2、mysql 的 redo log、undo log 及 binlog
3、innodb 和 myiasm 的锁的粒度
4、在多读和多写的场景中使用乐观锁还是悲观锁
5、binlog 的同步
缓存
1、redis 的主要数据类型(有序集是用什么数据结构实现的)
2、什么是缓存的雪崩、击穿和穿透,如何解决?

缓存进阶
1、分布式缓存的如何保证数据写入的均匀分布(延伸到一致性 hash )
2、redis 的分布式锁的实现
3、redis 的 数据持久化
4、redis cluster 和 redis sentinal 的原理
5、redis cluster 的伸缩

开放
1、你是如何优化服务的并发性能的?
2、后台请求超时严重,如何排查和定位?有哪些工具?有哪些可能的情况?
3、如何设计一个可靠的、分布式的奖品发放系统?如何限流?如何防止超卖?如何审计?如何降级?

Linux、网络、算法

进程间通信
软连和硬连
如何设置环境变量
查看进程占用端口
周期性执行某段脚本
epoll_wait(-1)优雅退出
TCP滑窗、 关闭缓存区后socket行为
有哪些重要系统日志需要关心 系统异常排查
Swap分区
Load Avg高问题排查
后台service进程常见启动方式
init进程
每行一个url, 统计文件url出现次数
超大的文件做搜索
free 实际使用内存和used为何对不上
端口转发以及限制访问ip段
watchdog工作机制

go

go基础:

1、 make、new区别?
2、引用类型有哪些? 如何实现深拷贝?
3、两个slice底层对应同一个array,修改一个另外一个会受影响吗?拷贝大slice一定比小的slice代价高吗?
4、for range遍历slice,对每个元素的修改会影响原slice吗?
5、线程、进程、协程区别?
6、channel是怎么实现的,channel没有close会怎么样?
7、go如何实现继承?如何实现单例?
8、如何检测死锁?
9、map是怎么实现的?(如何解决hash碰撞、惰性更新)
11、context包用过吗?有什么用?
12、了解过singlefly吗?它的使用场景?(或者从缓存穿透的场景引入,如一个key一秒钟被更新1000次,怎么优化代码?)
13、sync.Poool用过吗?(或者从短时间内创建大批量对象的场景引入)

进阶:
  1. 如何将一个任务拆成多个子任务并行执行?如何取得子任务返回值?如何处理子任务异常状态?
  2. 多生产者多消费者的channel如何优雅退出?
    3. 有没有看过一些开源项目的源码?
  3. 如何实现一个hashmap?线程安全怎么做?不用锁怎么实现线程安全的map?
  4. 高并发调用的方法,字符串参数传值还是引用更高效?(涉及到内存分配)
  5. 项目中使用了哪些RPC框架,能说说它的脉络吗?
    ** 1. 服务发现(AP和CP)**
    ** 2. 负载均衡(常见的算法,wrr等传统算法存在的问题?)**
    ** 3. 流量隔离(意义、怎么做)**
    ** 4. 优雅关停**
    ** 5. 健康检查**
    ** 6. 熔断限流**
  6. GC是怎么实现的?(分布式三色标记,读写屏障, 协助线程 解决什么问题,大概的触发时机等等)
    10、性能问题定位goprof
  7. 如何实现一个log sdk(发布-消费者模式,IO缓冲,采样)?
    9. 结合go net库,说说go的调度能力怎么与epoll结合(或者goroutine怎么和epoll结合,go原生库的 conn per goroutine 有什么问题,常见的reactor模式是怎么样的)
业务设计
  1. 订单系统(如何做幂等)
  2. feed流 (读写扩散)
  3. im (接入层,消息怎么不丢不重?)
  4. 服务高可用 (https://www.tapd.cn/51005639/markdown_wikis/show#1151005639001000580)
分布式
  1. 分布式事务
  2. 分布式一致性算法
    1. raft,假设一瞬间所有节点全部挂掉,重启之后,他们如何保证快速选出一个唯一的领导?
    2. 单leader的一致性算法有什么问题,怎么解决(一致性hash)
  3. 分布式锁怎么搞(如果用redis,过期时间怎么设置,怎么避免锁key过期,锁失效的问题)
  4. 分布式限流器设计
mysql
  1. innodb原理(b+树、undo log、 redo log)
  2. mysql如何实现高并发(各种锁+mvcc)
  3. 怎么定位慢查询
redis
  1. 主从复制(fork,写时复制,全量+增量)
  2. aof、rdb
  3. 跳表
  4. 布隆过滤器
kafka
  1. 基本用法、作用、大概描述一下架构
  2. 怎么保证消息不重不丢
  3. 为什么这么快
    1. 数据流并行
    2. 零拷贝
    3. 数据压缩
    4. 批量发送(进一步考察延迟队列的实现,多重时间轮)
    5. 日志落盘顺序IO
    6. 规避GC
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值