小刘整理的 go 面试题

Go相关

  • map、channel、slice的底层实现,
  • sync.map、sync.pool、sync.Once的原理
  • GC的过程、写屏障的含义及作用
  • GMP模型,触发Goroutine切换的原因有哪些?for死循环会怎么样?全局goroutine里面存储什么?
  • interface的底层实现,怎么判空?
  • reflect的使用
  • 逃逸分析
  • context的使用
  • go 性能问题的定位过程(pprof的使用)
  • 协程池的使用

Mysql相关

  • 索引的分类
  • 为什么选择B+树实现索引?一般深度为多少?b+树和红黑树的区别?
  • 聚簇索引和非聚簇索引的区别
  • 创建索引后,查询读取I/O的次数
  • 索引的最左前缀原则
  • mysql数据的索引优化以及失效
  • 从学生表中查询每个班的分数的前3名
  • mysql的隔离级别?处理什么问题的(脏读、幻读、不可重复读)
  • mysql的主从复制过程?
  • mysql的大表优化方式

Redis相关

  • redis的数据类型以及日常的应用
  • redis的发布/订阅的原理
  • zset的底层实现
  • 数据缓存过期策略
  • redis的部署模式
  • redis为什么速度比较快
  • reids的大key、热key的处理
  • 如何实现分布式锁的
  • 持久化策略及其对比
  • 缓存雪崩、缓存击穿、缓存穿透

Etcd相关

  • etcd是什么?有什么优势
  • raft选主逻辑
  • 日志复制
  • 脑裂问题
  • etcd的watch机制
  • etcd如何实现配置下发和服务发现
  • etcd对于偶数机器的集群的选主处理
  • 选主实现逻辑

Prometheus相关

  • 简介
  • 数据存储原理
  • 数据类型

Grpc相关

  • 相较于restful的优势
  • 数据交互方式
  • 限流(通过流模式传输时,发送方数据量过大,会发生什么?)
  • protobuf和json的对比
  • grpc负载均衡的实现

Linux相关

  • awk
  • poll、epoll、select
  • I/O模型

网络协议相关

  • http2的优势
  • https的建连过程(7次握手)
  • 对称加密和非对称加密
  • icmp协议的原理
  • tcp三次握手、四次挥手
  • tcp 拥塞策略
  • tcp的time_wait状态和colse_wait状态
  • 如何解决tcp的粘包问题
  • quic协议是什么
  • 如何理解网络模型
  • http的状态码含义

智力题

  • 25匹马,每次只能比赛5组,最快几次找到前3名

  • 宝石问题(3个盒子,其中2个宝石,一个石头;先随机选取一个,然后剔除剩余两个中的宝石;第三次选择,选择哪个为宝石的概率大?)

系统设计

  • RPC的设计

  • 架构设计分单系统,每秒3000订单有效期15分钟,50W司机进行抢单操作,如果一直没有抢单,则订单失效

  • 字符串hash算法的实现

  • 敏感词过滤

  • 设计一个高可用的稳定的并发模型处理HTTP请求

其他

  • 一致性hash算法
  • 微服务概述
  • 什么是死锁,如何避免
  • 限流策略

算法

  • 如何原地交换两个数

  • 岛屿问题

  • 数组中重复的数据

  • 1到n乱序排列的数据,少了其中一个,找出这个数

  • 二叉树的右视图

  • LRU缓存机制 (考虑并发访问)

  • 高并发的生产者消费者模式

  • 通过中序遍历序列和先序序列恢复二叉树

  • 爬楼梯问题

  • 单链表逆序

  • 单向链表排序

  • string1 = 1234dsafaserewr,string2 = 23aefasdfwer,求string3 = string1 + string2

  • 二叉树节点的公共祖先

  • 二叉树的最大深度

  • 二叉树的中序遍历和层次遍历

  • 寻找两个升序数组的第K大值

  • 最长回文子串长度

  • 最短回文串

  • 合并两个有序链表

  • 全排列

  • 接雨水

  • 盛最多水的容器

  • Pow(x, n)

海量数据处理问题(面试官很喜欢问)

  • hash
  • 字典树
  • bitmap
  • 布隆过滤器
  • MapReduce

你可能感兴趣的:(go)