本文主要是分享真实的面经,关于这些问题的详解,我们只整理了一部分,文末有他们的详解跳转链接,如果需要可以点进去看看。
对于我们没有整理的面经详解,我建议大家可以使用 AI,基于这些真实的面经去获取对应的答案。
如果你需要更多的面经,也可以私信我联系我。
腾讯一面
- 协程池的作用?
- 内存逃逸分析?
- go的内存回收什么条件会触发? go的GC能够手动触发吗?
- channel的底层实现? 有缓冲的,无缓冲的channel, 如果管道已经关闭了, 读取会不会发生错误?
- 切片使用的时候需要注意什么?
- go中的参数传递是值传递还是引用传递?
- defer的执行顺序?
- 100G的文件, 统计出所有英文字母, 按照字母表顺序输出
- linux如何分割文件?
- 接口性能如何优化?
- 什么情况会全表扫描?
- 主丛同步的原理? mysql还有什么相关的log文件?
- 分布式锁的原理?
腾讯二面
项目拷打15分钟
- Kafka的消息丢失和消息重复消费。
- Kafka和Rabbitmq的区别在哪?(架构、推和拉)
- 拉的模式有什么好处(控制消费速度)
- 使用分布式锁的过程中应用挂了?
- 优雅启停+defer
- 使用过期时间+自动续期
- 对象存储和文件存储的主要区别是什么?
- 分片上传是怎么实现的(文件合并hash一致性校验,引出文件秒传)
- 邮箱验证码功能怎么实现的。(redis+邮箱组件)
- jwt的格式。加密算法、内容、过期时间
- 讲一下defer的原理
- 讲一下map的底层结构
- map中hash冲突怎么解决(链表、红黑树)
- 讲一下go性能调优的案例(pprof,线程日志)
- 通过线程日志延伸出,怎么看一个线程在线程日志里是卡在循环还是事件等待?
- 线程日志上面会有标记。
- 讲一下mysql的事务隔离级别?
- 解释一下什么是可重复读?
- 事务实现的底层原理?
- Redis持久化机制(RDB,AOF)
- 为什么持久化的时候是fork子进程处理
- 讲一下docker实现容器的基本原理
- 用过其他容器运行时吗
- K8s有哪些组件?
腾讯一面(校招)
- map怎么去做并发安全
- 外层的协程能捕获子协程的panic吗?
- panic都会被捕获吗?哪些panic不会捕获?
- slice和数组的区别?底层结构?
- go哪些内置类型是并发安全的?
- go的结构体可以嵌套组合吗?
- 两个结构体可以等值比较吗?
- 你如何理解interface类型
- 1.18版本后interface有什么增强?
- interface可以进行等值比较吗?
- 说说逃逸分析
- channel有缓冲和无缓冲的区别
- map并发访问会怎么样?这个异常可以捕获吗?
- GMP模型
- GMP模型中什么时候把G放全局队列?
- go的gc
- gc扫描是并发的吗?
- gc中的根对象是什么?
- 项目中etcd用来干什么的?
- mysql索引B+T
- 索引的优缺点
- redis用来做什么的?
- 用户信息怎么存的?都走缓存吗?
- redis过期淘汰策略
腾讯二面(校招)
- 会什么语言?
- tcp和udp的本质区别
- tcp可靠通信怎么实现的
- 说一说拥塞控制
- 滑动窗口的作用
- 什么是粘包,怎么解决
- 堆和栈有什么区别
- 进程的进程空间是怎么样的?
- 进程,线程,协程的区别
- 链表额线性表的区别
- 有序双向链表如何高效查询?
- kafka如何实现高吞吐的?
- 介绍最近的项目
- 缓存击穿,雪崩,穿透
腾讯三面(校招)
- 项目中比较有挑战性的事?
- 什么是伪随机?
- c++里面的继承和虚函数,抽象封装,和go的interface有什么区别?
- 为什么go不是传统意义上的面向对象语言?
- c++多重继承可能导致循环继承,go用interface实现有这种问题吗?
- 单例模式?什么情况用饿汉模式,什么时候用懒汉模式?
- 表的主键用什么类型的字段?用字符串不可以吗?
- 消息队列是什么?
- 有了解过其他消息队列吗?
- kafka你们是怎么部署的呢?
- 能说一说你们怎么使用devops的吗?
- 不用kafka可以吗?
- ES是干什么的?
- 前后端通信用的什么协议?
- grpc相比http的优势在什么地方呢?
腾讯QQ一面
- 自我介绍
- 算法:20有效括号,240搜索二维矩阵Ⅱ
- 项目在运行了吗?数据表的设计?简单画一下
- 数据库外键关联不同表吗?
- 抢单的设计是怎么做的?
- Redis里缓存了所有悬赏的订单?
- 怎样防止多人抢单?没有很理解递减是怎么实现的
- 悬赏下单的用户?
- 为什么有订单数量的概念?
- 如果Redis抢单成功但是后面的逻辑失败怎么办?即发消息队列的失败了会怎么样?会出现什么问题?
- 上述问题有没有什么解决办法?
- 直接用Mysql实现多人抢单可以吗?
- 使用Mysql的话有没有不通过数量控制的方案?
- 上个问题相对更优雅的解决方案,如根据订单状态
- QPS提升3倍,为什么只提升了3倍?所有服务搭载在个人机上,提升比较小,这样测试是不合理的
- 点赞是怎么设计的?点赞的底层逻辑怎么存的?
- 评论怎么设计的?
- 评论可以折叠吗?只有一个层级?
- 如果你考虑针对评论进行回复的话,他可能的数据表结构是怎样的?
- 设计完成以后怎么查这些不同层级的评论?
- 所以其实实现不同层级的评论只需要一个表就行了,只不过子评论要记录其对应的主评论的id
- Go了解的多不多?
- Java的集合大概讲一讲
- ArrayList的底层怎么实现,数据结构怎么样,扩容策略是怎样的
- HashMap的底层实现呢,Hash冲突怎么处理的?扩容策略?加载因子多大?为什么是0.75
- Java的垃圾收集机制
- 新生代老年代是怎么划分的?
- 网络相关的HTTP了解的不多吗?Get和Post的区别?
- 登录请求的话用什么请求?用Get会有什么问题
- 从浏览器输入个网址到显示页面的过程
- TCP和UDP的区别?
- 操作系统相关的了解吗?
- Redis常用的数据结构有哪些?如果要实现一个排行榜,用什么数据结构?
- 如果实现分布式锁呢?什么命令?setnx
- Redis实现简易的布隆过滤器是怎么实现的?
- Redis常见的穿透击穿雪崩问题?
- 击穿的解决方案
- 逻辑过期的话怎么更新呢?逻辑过期的时间点有很多请求过来,是不是都会去数据库请求更新数据?
- Redis的过期淘汰策略
- Redis过期数据的删除策略?
- Mysql的索引通常是怎么划分的?从数据结构上可以划分为哪些索引?是指这些索引数据结构不一样,比如InnoDB的?MyISAM的?哈希的?
- 聚簇索引和非聚簇索引的区别?
- 数据和索引放一起的优点
- 什么是回表?
- Mysql事务的隔离级别
- 未提交读有什么问题?
- 什么是不可重复读?什么是幻读?
- 反问
腾讯QQ二面(电话面)
- 自我介绍
- Golang协程与线程的区别
- 专业问题
- 中间漏了几个问题
- Redis缓存击穿解决方案在项目中是否用过,用在什么地方
- 检查到key过期了,都请求数据库不就击穿了吗
- 怎么加锁
- 这个锁放在本地吗?内存里面吗?
- MySQL支持的最大并发数
- Redis支持的最大并发数
- 算法:文件里面有20亿个整数,找到前1000个最大的,要求时间复杂度尽可能低
- 上述算法时间复杂度多少
- 项目背景
- Jmter压测的哪个接口
- QPS
- 具体是怎么优化的呢
- 压测后qps提升了3倍,瓶颈在哪个地方,为什么不能再多了
- 阿里云用的是Cos服务是吧
- 订单超卖是什么意思
- 项目大概多少人参与
- 这个服务有几个系统
- 这个项目是用来给自己学校的吗?还是各个学校通用的项目?
- 这个项目打通了学校里面的账号体系了吗?
- 反问
腾讯云智
一面
- 自我介绍
- 第一个项目是实习项目吗
- 你在里面负责的部分
- 用户悬赏下单的业务流程讲一下
- RabbitMQ写库失败了会怎么处理
- Redis的数据与数据库里的数据是怎么保持一致的
- 什么时候写库什么时候写Redis,数据库中有库存吗
- Redis是在哪部署的
- Redis用的哪种数据类型,项目中Redis哪些地方用了
- SpringCache依赖Redis,那用的是什么数据类型
- 登录注册是怎么实现的
- 什么是JWT
- 鉴权是怎么做的
- 退出登录是怎么实现的
- 简易短视频都负责什么?登录注册是怎么实现的
- TCP的三次握手和四次挥手的过程
- Time wait的作用是什么
- 断开连接是客户端发起还是服务端发起?服务端可以断开吗?
- HTTP和HTTPS的区别
- HTTPS是怎么加密的了解吗
- Session,Cookie,token的区别
- Session是在哪存的
- 进程线程协程这三个的区别
- CPU调度是哪个
- 数据库事务的隔离级别
- 什么是幻读
- MySQL主键索引和普通索引的区别
- 怎么避免回表操作
- 索引失效的场景
- B树和B+树的区别
- 如何实现一个HashMap(HashMap的底层结构以及一些扩容操作)
- HashMap和ConcurrentHashMap的区别
- 深拷贝和浅拷贝的区别
- 说一说使用逻辑过期解决缓存击穿问题
- key逻辑过期后,与数据库的一致性怎么保证
- 缓存穿透问题及解决方案
- ThreadLocal实现线程信息隔离说一下
- 用户登录以后,再请求其他接口,这时是同一个线程吗?
- 不把用户id放到threadlocal可以吗?
- 算法题
二面
- 自我介绍
- 挑一个项目聊一下
- 第一版方案为什么会超卖呢
- Redis中的库存还没有递减完成,出现了比如OOM的情况,数据库怎么获得已经抢成功的数据?
- 数据库和缓存数据一致性的问题
- 如果数据库更新完成了,但是删除缓存时没有成功,这时会怎么办
- 项目有实际需求吗?还是找的课题
- RabbitMQ在项目里是干嘛用的?
- 抢单的人怎么知道要查哪个key呢?
- 具体压测的数据
- 简易短视频是怎样的项目
- 反问
腾讯
某不知名组一面(电话面)
- 简单的自我介绍
- Java判断相等使用==和使用equals的区别
- Java里面接口和抽象类的区别,属性、方法、继承限制等方面回答
- 详细介绍下项目用户注册和登录的流程
- 密码存到数据库中是用的哪种方式进行的加密
- 不加盐的问题
- 登录成功以后返回的什么数据
- 返回的token是怎么生成的
- token里面包含了什么信息
- 客户端和后台通信走什么协议
- 对于HTTP协议有多少了解
- Redis提供了哪些基础的数据类型
- 这些数据类型底层是基于什么数据结构实现的
- 使用Redis做性能优化具体是怎么做的
- 对Linux操作系统熟悉吗
- 项目后台不是部署在Linux上的吗
- 反问
二面
- 自我介绍
- 对面介绍自己的组,问可以接受Go语言吗?
- 算法:53最大子数组和,239滑动窗口最大值,136只出现一次的数字
- 进程和线程是怎么理解的?
- 协程是什么意思?这三者对比一下
- 在设计程序的时候如何抉择呢?比如应该用多进程的方式还是单进程多线程的方式?
- 线程池中的核心参数
- 线程池的执行流程
- 开发过程中用过线程池吗?线程池的这几个参数是如何确定的?
- 为什么是n+1和2n和?
- 你的项目你认为是CPU密集型还是IO密集型
- 项目v2要上线了,项目v1中还有任务在线程池中,这个时候要怎么办呢?【回答的shutdown和shutdownNow的区别,使用shutdown,等待任务队列里的任务执行完再关闭v1版本的项目】
- 线程的超时时间设置
- 你的项目的请求上限是多少?上限多少是右哪些因素决定的?
- springBoot可以调吗,让他的上限多一些
- Java中的反射解决的问题?使用的场景?
- C/C++不支持反射,了解过为什么有些语言持支反射有些不支持反射吗?有什么编程语言的特性决定了他可以用反射吗?
- Java中如何判断一个对象可以被回收了?
- 判断对象是不是被引用标记了,扫一遍的时间可能会非常长,如何来优化它或者现有的机制是如何做的?
- 如何入手MySQL的优化?看Explain的什么内容?
- 索引的底层数据结构是什么样子?
- B+树为什么比较合适?为什么不用二叉树?红黑树?B树?
- MySQL里开启了两个事务,第一个事务插入一条记录并返回了id,此时这个事务还没有提交,第二个事务可以查询到id为2的记录吗?什么隔离级别可以查到,什么隔离级别查不到?
- Redis是单线程的为什么比较快?【内存,多线程切换,IO多路复用,Redis的数据结构】
- 怎么理解IO多路复用?相对于什么IO多路复用性能更高
- git的合并的命令?git merge 和 git rebase 用过吗?
- 假设一个场景:我合入了一个版本,其他同学在之后也合入了三四个版本,这个时候发现我合入的版本有bug,需要把这个撤回,要怎么做呢?
- 反问
腾讯音乐
(一)开场
- 面试官介绍岗位
- 岗位为腾讯音乐 - 全民K歌 - 国际版 - 直播歌房后台研发工程师,主要负责直播相关功能,开发语言为Go和C++。
- 关于求职者基本情况
- 要求5分钟以内的自我介绍。
- 被问到所在公司技术团队裁撤后为何会留下自己。
- 岗位base深圳能否接受。
(二)项目相关
- 系统重构 - 数据迁移项目
- 微服务相关
- 如何理解微服务,为什么微服务能提升系统可拓展性。
- 微服务相比于单体服务的缺点。
- 服务间通信成本指的是什么,成本体现在哪。
- 数据库迁移原因与成本评估
- 把数据库从MongoDB迁移到MySQL的原因。
- 如何评估迁移异构数据库(MongoDB到MySQL)的成本,是否仅考虑成熟度和被接受程度,因为迁移涉及数据同步工作量巨大。
- 技术选型相关
- 如果采用最终一致性方案,MySQL支持事务而MongoDB不支持事务,有什么原因不使用最终一致性方案。
- 数据同步与异常处理
- 迁移过程中数据同步怎么做(新数据库写MySQL,写脚本迁移Mongo数据到MySQL)。
- 业务要读写新旧数据时怎么办。
- 迁移比较暴力,如何发现数据异常,异构数据库迁移时如何保证每条数据正常迁移到MySQL。
- 唯一键场景下(Mongo已有数据,切换到MySQL写时可能重复写入)的处理。
- 优化服务器项目
- 分布式缓存实现
- 优化服务器引入分布式缓存技术(具体是Redis),如何实现的。
- 缓存与数据库一致性
- 如何保证Redis缓存和数据库的数据一致性(回答缓存先写数据库后写存在问题)。
- 写缓存成功数据库失败时缓存是否为脏数据。
- 先写数据库成功再写Redis,缓存更新失败怎么办,如何知道何时将数据库数据同步到缓存及同步的做法。
- 缓存是否有过期时间机制,有没有不过期一直生效的情况,有过期的话多久过期。
- 缓存同时过期会有什么问题以及如何解决。
- 数据抓取业务项目
- Kafka相关
- Kafka在业务中的角色。
- 业务为什么要经过Kafka这一层,账号量有多大。
- 定时任务可分散执行时间,Kafka在这种情况下削峰意义不大,是否有其他考虑使用Kafka的因素。
- 防止账号丢失已有确认机制,当作下游处理失败重新触发即可,为何还需要Kafka。
- 抖音微信小游戏归因业务项目
- Token缓存相关
- 微信小游戏的token存于sync.map(服务内存),为何使用服务内存而不使用Redis或其他外部缓存方案。
- 用户量相关,当有一定数量实例和用户量时这种方案是否有缺陷(此处存在理解偏差导致回答失误)。
(三)Go和MySQL
- MySQL中索引如何实现,为什么MySQL里不使用B树。
- 切片如何实现
- Go里并发读写map会出现问题,如何解决
- Go里的sort排序如何实现
- 协程和线程的区别,线程开销大的原因,协程有上下文切换为何线程消耗更多CPU资源
(四)算法与反问
- 算法手撕
- 反问
腾讯互娱 一面/Go
- Go的接口作用,用处,实现
- 空struct用途,会不会分配内存
- Go原生支持默认参数或可选参数吗,如何实现
- Go defer执行顺序
- 协程,协程间信息如何同步
- Go GMP
性能开销大原因
- GM
- GMP
- go生成一个协程,此时放在P中还是M中
- G阻塞,M、P如何
- 操作系统中大端编码、小端编码
- TCP、UDP
- 三次握手、四次挥手
- 为什么挥手是四次,会不会合并
- 流量控制
- Redis项目中使用(主数据库还是缓存)
- Redis与MySQL数据如何同步
- MySQL索引建立原则
- Explain,字段
- Redis持久化方式
- Redis过期删除策略
- Redis高可用设计
- 主从复制方式,模式
- kafka业务使用
- Redis常用数据结构
- zset使用场景,具体实现
- 部署方式,k8s部署(相关概念)
- Go性能优化方式
- 请求耗时过长,有无使用到链路观测
- 单链表判断有没有环
- 玩家积分排序topN实现算法
- 项目中遇到的困难较高的场景
- 微服务r如何理解,有何问题
- 服务端崩溃检测
腾讯外包 /后端开发/一面
- 自我介绍
- go开发几年(1年半)
- 熟悉到什么程度(增删改查不是问题)
- map是否安全(不安全)
- 为什么不安全
- slice的底层结构
- apendslice会安全吗
- automatic有用过(用过+1-1)
- 说一下什么是原子性(要么成功要么失败)
- 怎么做有一个有序的排序(结构里搞个切片,然后用sort排序)
- mysql主从同步机制(不会)
- redis常用数据结构(string、list、hash、set、zset、bitmap)
- 有序列表的底层结构(不会,跳表)
- 常用的索引数据结构(哈希、b+树、二叉树)
- 微服务的服务发现(客户端服务、服务端服务)
- 怎么感知服务集群的变化(服务注册中心、轮询服务健康、监控系统)
- 注册中心如何感知服务的变化(心跳推送?触发机制之类的)
- 会不会k8s(不会)
字节跳动
- 介绍一下业务表的字段
- 定时任务刷新字段, 是怎么实现的?
- 分布式锁? 分布式死锁如何解决? 看门狗机制? 如何避免当前线程加的锁, 被其它线程解锁?
- 乐观锁和悲观锁的区别? 写多读少的情况, 应该使用乐观锁还是悲观锁?
- 分布式场景下, 如何实现乐观锁?
- kafka的幂等性? 如何避免消息被重复消费?
- 两个线程, 同时向mysql中插入一条数据?
- kafka如何保证消息不丢失
- sql优化场景:
select id,name,balance from account where update_time > '2020-09-19' limit 100000, 10
该语句为什么查询慢? 有什么优化思路?
- 算法题: 子集
字节一面(技术)
- make和new的区别?
- mutex锁有几种模式?
- 讲一下GMP调度模型
- 两道语法纠错题(牛客上可以多刷一下)并解释为什么
- 一道算法爬楼梯
- 一道编程题:有100个并发线程,需要控制最多只有10个执行(有缓冲channel实现)并解释思路
- 知道哪些设计者模式?
字节二面(技术+人事)
技术:
- 讲一下一个系统访问的整个链路过程
- K8s有哪些组件?
- 怎么把node里的pod暴露给外面使用?
- 我对监控的理解,怎么判断一个系统是否已经挂调了?
- 如果让你对系统进行一个巡检,你会怎么做?
- 举例数据库巡检
- 用过云产品吗?讲一下你对公有云的理解
- 用过OPEN AI吗?你一般怎么使用?
人事:
- 从技术上和工作上上一家公司对你有什么成长?
- 在工作中和技术上学到哪些技能?举例说明
- 离职原因,未来职业规划
字节
- 自我介绍
- 选择一个项目或者需求详细介绍一下
- 代码题,输出什么内容
package main
import (
"encoding/json"
"fmt"
)
func main() {
jsonStr := `{"id":321789788912372911233,"name":"John","age":30,"city":"New York"}`
var person map[string]interface{}
json.Unmarshal([]byte(jsonStr), &person)
person["married"] = true
person["children"] = []string{"Tom", "Jerry"}
fmt.Println(person)
jsonB,_ := json.Marshal(person)
fmt.Println(string(jsonB))
}
- tcp 拥塞控制算法
- mvcc 底层实现原理
- 在有些实际生产中会将默认隔离级别调整至读提交,为什么,有什么好处
- mysql 怎么实现乐观锁和悲观锁
- 一条 sql 语句,匹配到了一条语句,会加什么锁,锁表还是锁行
- es 里面是怎么实现分页的,分页有哪几种方式
- 算法题 力扣 42 接雨水
美团 一面
- 自我介绍
- leetcode141 环形链表,判断是否有环路
- 延申leetcode142 环形链表2,找到入口位置
- 判断一个sql(左右模糊查询)能否命中索引
- 为什么左右模糊不能命中索引
- 如何优化这个sql(左右模糊查询)
- 全文索引底层怎么实现的
- 建立分词后,如何进行快速的模糊检索
- 分词用的什么数据结构
- 跳表的时间复杂度,哈希表呢
- 哈希表有什么问题
- 说一下MySQL的索引
- 什么是聚簇索引、非聚簇索引
- 事务隔离级别
- InnoDB如何实现可重复读
- 死锁是什么,如何解决死锁
- 拷打项目
- 你觉得科研中什么能力比较重要
美团 二面
- 自我介绍
- 拷打项目
- socket、TCP/IP 的关系
- 输入 url 的到浏览器显示网页的过程
- 反问
美团
- Go中Map的数据结构?扩容机制?key为什么是无序的?
- 简述-下rune类型
- 什么是协程泄露?
- select 底层数据结构和一些特性?
- 对已经关闭的的chan进行读写,会怎么样?为什么?
- 除了加Mutex锁以外还有哪些方式安全读写共享变量?
- 互斥锁正常模式和饥饿模式的区别 ?
- 原子操作和锁的区别 ?
- 一条select语句的执行流程?
- CHAR 和 VARCHAR的区别?
- MYISAM和INNODB的不同?
- binlog的工作模式有哪些?
- 持久化机制?各自的优缺点?
- 怎么理解Redis事务?
美团
- 自我介绍
- 项目做完了吗?背景是什么?项目初期的背景调研是怎么做的?现在这个系统做到哪一步了?
- 用户下单用户派送的优劣了解过吗?怎么管理?
- 项目里面遇到的最大的难题是什么?为什么?
- 为什么使用乐观锁?你了解乐观锁的使用场景和实现逻辑吗?
- 乐观锁怎么实现的你了解吗?
- 了解悲观锁吗?
- 最开始有没有考虑乐观锁的适用场景和悲观锁的适用场景?
- 乐观锁会不会导致频繁的冲突啊?这种情况下和悲观锁谁的性能更好一些呢?
- 关于 Redis 的递减特性你了解哪些?
- 关于 Redis 的指令还用到过其他哪些呢?
- setnx 的原理你知道吗?
- 有个场景你了解吗:锁获取后程序退出了,这样锁永远不会释放,导致死锁
- 看你简历里说比较了解集合,对集合的了解简单说一下
- 怎样判断内存是否需要回收?(对象死亡的判断方法?)
- 可达性分析是如何对对象进行标记的?三色标记法了解吗?
- 垃圾回收的过程(针对某一个具体的垃圾收集器 CMS 或 G1)
- 清除的过程呢?
- 标记清除算法的优点和缺点?
- CMS 标记阶段比较长,如果产生了过多的浮动垃圾,有可能会出现回收赶不上分配的情况,从而导致 GC 失败,这种要怎么解决?
- CMS 和 G1 的比对了解吗?为什么废除了 CMS?
- G1 怎么做到指定具体的垃圾清除时间的?
- 线程的生命周期你了解吗?
- 每个状态之间怎么流转的你了解吗?
饿了么
一面
- 自我介绍
- Java面向对象的三个特性,什么是多态
- 双亲委派机制
- HashMap在JDK1.7以前有线程不安全,怎么个情况
- 保证线程安全用什么Map
- ConcurrentHashMap是怎样的
- 线程池用过吗?核心参数以及有啥作用
- 使用线程池有什么好处
- 悲观锁和乐观锁是怎么样子的
- Java中怎么实现悲观锁和乐观锁
- HTTP和HTTPS的区别,加密过程是怎样的
- TCP的粘包是怎样的现象
- Cookie和session的区别
- 用户登录之后怎么找到对应的Session的呢
- 两个项目哪个有挑战一点,挑一个讲一讲
- 平时做项目或科研会遇到什么困难,遇到困难一般自己解决吗
- 最近有了解一些新的技术或者看一些技术书籍之类的吗
- 算法题:反转链表
- 其他的offer
- 之后有往上海发展的打算吗
- 反问
阿里巴巴
数字零售技术部-ERP技术一面(电话面)
- 自我介绍
- 项目背景?
- 你觉得项目难点是哪些?
- 第一版是怎么实现的?为什么会出现超卖问题?
- 记录抢单结果的表是怎么设计的?
- 这张表的索引和其他的约束是怎么做的?
- 乐观锁为什么不是加在抢单关系表而是在订单表里的?
- 你现在数据库的设计上似乎有些问题
- 你们的订单允许取消吗?
- 如果要取消的话应该怎么设计呢?
- 简易短视频做了哪些东西
- 用户登录的处理流程是怎么个样子
- 接收登录请求是HTTP吗
- HTTP里面登录的状态保持是怎么做的?
- 怎么判断JWT的合法性
- JWT里面保持了哪些东西?数据结构大概是什么样子?
- JWT和普通的Session的方式有什么区别?
- session的方式了解过吗?
- 使用JWT要实现一个状态只能一个设备登录,这应该怎么做呢?
- 怎么设置JWT的校验不通过呢?
- JWT对于登录数量有要求的就很痛苦
- Java的双亲委派,为什么要这么设计呢?
- 类如果重复加载会有什么问题呢?
- 有遇到过非双亲委派模型的场景吗?
- 类加载的过程一般会做哪些事情?每一步具体都在做些什么呢?
- 对JVM的调优有了解过吗?
- 说说你对Redis的了解
- bitmap是个什么样的东西
- 项目里的Redis是怎么用的?
- 抢单为什么会有库存数量
- 使用Redis防止超卖的流程是怎样的,会不会有并发的问题?
- 递减是怎么操作的?
- 这样会不会有问题,递减完成时的并发判断库存大小的时候出问题,因为递减和判断不是原子性的
- ThreadLocal的作用
- 什么样的情况下会使用ThreadLocal?
- 后面怎么使用的?
- 这么设计(使用ThreadLocal)的原因?目前来说ThreadLocal是能不用就不用的
- 内部起个线程池,这时能拿到ThreadLocal的内容吗?
- SpringCache和Redis有什么区别?(考虑业务上的合理性)
- MySQL有哪些储存引擎了解吗?有什么区别
- 聚簇索引和非聚簇索引有什么区别?
- 回表的优化了解过吗?
- 为什么不要使用select * 呢?
- 没有被索引覆盖是什么?
- 什么是索引下推
- 反问
二面(电话面)
- 自我介绍
- 这里面比较有挑战的是哪个系统
- 在Redis里怎么做库存的扣减
- 怎么保证是不超卖的呢
- 面试官举了个例子表示对Redis递减防止超卖的不理解
- HashMap底层是什么数据结构组成的
- 红黑树有什么好处
- 28个元素放到HashMap里面,那么HashMap初始化的容量为多少比较好
- 初始化了一个固定线程数的线程池,线程数是5个,把6个任务扔进去,线程池怎么处理
- MySQL有个表,里面四个字段有abc三个字段,d是主键,我要查询ab,条件是bc,这时怎么设计索引
- 什么是回表
- 假设还是这个表,数据量很大,这时要做分页,每页100条,你怎么设计这个查询语句
- 子查询怎么设计
- 比如要查第10000页,你会怎么写这个sql
- 用过limit查询吗
- 项目里Redis防止超卖的方案,Redis就类似一个锁了
- 解释缓存穿透和缓存雪崩
- 上述情况的解决方案
- 刷新视频时系统会推荐20条用户没看过的视频,这时怎么设计会让性能更优呢
考虑位图或者布隆过滤器,使用二进制数组来保存视频,实现筛选没看过的视频
- 笔试题:输出每个url最多的访问次数(类似华子实习笔试第一题,但是简单一些)
- 反问
阿里
- 分别介绍一下MySOL、ES、Mongo数据库各自的特点以及适合的使用场景是什么?
- 倒排索引了解吗?
- ES的分页功能有什么特性?
- ES的分词检索?
- Kafka与Zookeeper是什么关系?
- 多个同样的消息被发送到Kafka如何控制他们只消费一个?
- 什么是Kafka的羊群效应 ?
- Redis相比Memcached有哪些优势?
- 阐述缓存穿透?怎么解决?
- 什么是bigkey?会有什么影响?
阿里外包/一面
- 自我介绍
- 遇到过高并发?(网站大访问量用redis缓存,表单做提交)
- 进程、线程、协程(随便说说)
- go的协程设置原理(说了gmp模型)
- go的锁,用到什么锁(mutex、rwmutex)
- 锁怎么实现的,有没有看过源码(莫得)
- innodb和myisam区别(事务支持、查询速度、表文件结构、外键支持、innodb有主键,查询效率高)
- 为什么查询效率高(叶子节点存储索引和数据,避免回表二次查询)
- mysql优化(说了分表和覆盖索引)
- explain关注的字段(命中索引、可能命中索引、全表扫描、用到覆盖索引)
- redis和kafka的区别(说了redis和kafka的特点)
- 用过k8s吗(没)
- mysql的版本控制(说了mvcc,以及怎么实现的)
- 前期用php?(公司转型)
- php和go哪个好用(说了go协程用起来方便,php的麻烦一点,编译型语言,安全比php明文安全)
- goroutine+channel依次输出小猫小狗100次(设置猫狗channel,先读猫channel输出,狗输出的时候先读猫channel来保证顺序,没说好这一块)
- map怎么用?线程安全?怎么扩容?(不是安全的,用sync.map安全,说了双倍扩容)
- 怎么解决他的哈希冲突?(重新扩容、哈希函数重新生成)
- 设计模式(说了单例模式、策略模式)
- php用什么框架(tp、laravel)
- laravel的依赖注入
蚂蚁
工具开发一面(电话面)
- 自我介绍
- 项目背景
- JMeter做了压测,压测是怎么设计的
- 500压测线程的设置和服务器以及JVM的规格和设置有什么关系吗
- 优化了50%,那么优化点主要体现在哪里呢
- RabbitMQ在写DB时如果出现了异常,导致了数据不一致,有什么补偿的机制吗
- 在线程池中线程复用的情况下,ThreadLocal会不会有什么问题
- 代码里面会是什么时机做ThreadLocal的remove呢
- 在使用AOP的时候,对于接口会有一些规范的要求吗?比如方法签名中的参数会不会有一些规范?
- 如果要依赖一些参数做做一些权限的控制的话,对于参数的规范会有一些怎样的考虑
- 具体讲一下使用逻辑过期方案解决Redis的缓存击穿问题
- 这个跟Redis里面看门狗的机制有什么区别吗
- 如果内存不够大了会选择使用什么方案来解决呢(逻辑过期不让缓存过期)
- 如果是要开一个线程来同步数据库从而解决逻辑过期的话,新开的线程与其他读取缓存的线程之间的协作关系怎么处理呢
- JDK的类库里面有没有了解到可以做线程之间协作关系的
- 除了synchronized还有其他更加灵活的方案吗?
- 怎么理解乐观锁和悲观锁的
- 怎么考量用乐观锁还是悲观锁的?
- 项目中有没有遇到JVM相关的问题,比如内存溢出等问题
- 万一有OOM或者线程卡住了,我们排查的手段和步骤是怎么样的?
- 在设置JVM参数的时候,考虑机器有4G的内存,那我设置会有什么样的原则吗
- 对自己职业的预期,更偏向算法还是更偏向工程
- 互联网+的比赛做的是什么?控制平衡还是视觉识别
- 对于具象智能有什么想法吗
- 算法题:使用多线程统计一个文件中不同的词出现的次数,记不清了
- 反问
工具开发二面(电话面)
- 自我介绍
- 这三个项目的时间顺序
- 项目背景
- Java的list有哪些以及他们的区别和原理
- HashMap和HashTable的区别
- 一个类在JVM的生命周期,按照这个说一下类的加载过程
- 验证这个阶段会加载到JVM的内存结构的哪个部分去
- 用过命令去打过jar包吗
- 介绍双亲委派机制
- 有自己写一个类加载器吗
- 知道可以拓展类加载器吗
- 说一下对于AOP和IOC的理解
- AOP的实际的应用有哪些
- SpringBoot你常用的注解有哪些
- 有了解过注解的原理吗?注解的本质是什么
- Spring里面有很多SDK,你常用的有哪些?比如MyBatis
- 这块原理有了解过吗
- 这里有没有对哪一块比较熟悉并且研究过原理的
- 设计模式有了解过吗
- 数据库索引的原理了解吗
- 讲一下你对b+树的理解
- 项目中有遇到过一些慢sql的情况吗
- 除了explain还有其他定位慢sql的方式吗
- 一般是什么原因会导致慢sql
- 介绍项目中Redis是怎么用的
- Redis是单线程还是多线程的
- Redis的持久化有了解过吗
- 有没有了解过Redis的集群
- 数据库这块除了MySQL有没有了解过Mongo
- Redis里面的事务原理有了解过吗
- Redis的缓存穿透、雪崩怎么解决
- shell这一块有了解吗
- 大模型这块有了解过相关的技术或者产品吗
- transform有了解过吗
- 你觉得你过去做的最有挑战的事是什么
- 你觉得你成就感最大的事情是什么
- 自己的性格有测过吗MBTI
- 对base地有要求吗
- 手头有其他offer吗?对蚂蚁这边的意向怎样
- 反问
工具开发三面
- 自我介绍
- 论文的层次,参加的比赛,专利
- 介绍实验室的科研项目
- 已经拿到的offer,base选择
- 为什么不继续科研方向
- 参加过开源项目吗?github有账号吗
- 为什么没有参加实习
- 项目的收获
- 项目收获比较大的地方
- 反问
百度
1.GMP模型?
2.协程创建后如何调度?
先进入p的私有队列, 如果满了, 进入全局队列
3.context的结构和用法
4.一次url的请求过程?
5.请求到达项目服务器后的调用链路
6.nginx是否为单例的.
7.算法: 两数相除
8.平时mysql优化的案例?
9.in, exist的使用
10.联合索引
11.binlog日志
12.分布式事务: 下游两个db使用redis, 需要更新这两个不同的db, 如何自己实现最终一致性
13.两阶段提交, 三阶段提交?
百度后端研发工程师
- 自我介绍
- 操作系统处理死锁的方法
- 操作系统内存管理的方法
- Redis持久化
- Memcache知道吗
- 使用shell统计文件中top3的ip地址
- 磁盘满了写不进去,排查命令
- 找出文件夹中最大的几个文件,命令是什么
- 说-下ES和Redis的区别
- 编程题
//Go两个goroutine交替打印1-10
//G1 1
//G2 2
//G1 3
//G2 4
//..
//G1 9
//G2 10
京东 golang
一面 60min
- 讲一下项目
- go语言的掌握程度
- 数据结构
- 空间利用率提高,但是发生冲突的可能性也增大了
- go语言的map
- 拉链法的优缺点
- 拉链法如何优化
- 负载因子调到1会有什么后果
数据库
- 数据库索引有哪些
ql建表
设计一张字生表:表需求是可以记录学生姓名、出生日明、手机 号、是否在读。邮箱。家庭地址、生表现评价 常见查询条件为姓名、出生日期、手机号、是否在读
- 这个表有什么缺陷
- 新加一个学号字段要考虑什么
- 数据库四大特性
- innodb默认隔离级别
- rr是怎么实现的
网络
- tcp三次握手
- ip位于哪层?icmp位于哪层?ping命令位于哪层?
- telnet是什么操作?位于哪层?
- https加密过程 (这个我不太清楚 如果有大佬知道 麻烦评论区指点一下)
二面 35mn
- 二面面试官:"看你简历感觉你对go的接触程度不是特别深 你需要在接下来的过程中说服我"
- 对哪些语言比较熟悉
- 为什么很多大厂都用go
- 说一说对slice的认识
- slice如何做深拷贝
数据库
- 如何避免回表
- 标识性差的字段一定不能做索引列吗?
- 标识性差的字段为什么不能用来做索引列?
- b和b+树的区别
- mysql默认隔离级别
- rr如何解决不可重复读
京东
一面
- 算法题:leetcode16.最接近的三数之和,leetcode234.回文链表,leetcode72.编辑距离
- 自我介绍
- 前面两个项目是自己发起的还是什么契机去做这个项目的
- ThreadLocal怎样保证其线程安全
- 怎样保证多线程来使用他??
- 如果主线程中有信息,其他线程怎么获取主线程中的信息
- 项目中Redis哪些地方用到了
- Redis的哪些操作有原子性
- 除了递减指令还有哪些指令具有原子性呢
- 两个项目里面你觉得那部分是有技术难点的
- 超卖问题还有什么别的解决方案呢
- 如果是两个应用都要写数据库,加锁怎么解决超卖问题呢
- 聊一聊乐观锁和悲观锁
- 两种锁各自的应用场景
- ArrayList和LinkedList说一说吧
- String类可以被继承吗?为什么?
- JVM的组成部分
- 说一说使用的垃圾回收器
- G1垃圾回收期和CMS的改进或者说不一样的地方
- G1的分区,有哪些区(堆的分区)
- G1的清除算法
- 什么情况下会产生full GC
- 原空间是用来做什么的?
- TCP的四次挥手是怎么样的
- 为什么要等待
- 有没有主动去了解过一些新的技术?
- 从大学到现在做的最有成就感的事情
- 第三个项目是主导地位?可以安排别人的工作
- 你觉得你的优势是什么
- 学习成绩怎么样
- 反问
二面
- 自我介绍,介绍一个项目
- 这两个项目是自己开发的还是给公司做的
- 哪个项目是自己承担的更多
- 超卖问题是怎么发现的,解决思路,怎么找到的方案
- 网上的成熟方案你觉得有没有更好的方案或者现有的方案有没有什么问题
- Redis失效后怎么保证与数据库中数据的一致性
- Redis持久化可以解决这种突发的情况吗?这个没有调研过吗
- 一般去哪里找这些解决方案,不同地方有什么倾向性吗
- 做的这两个项目里面比较大的收获是什么
- 这个项目后面会继续做吗
- 自己对未来一两年的规划是怎样的
- 行业或者技术方向会有考虑吗
- 为什么是Java和Go呢
- 当前行业的语言都了解过哪些
- 你觉得自己的最大的优势是什么
- 反问
京东一面 (30min )
微服务中间件开发部门
- 自我介绍
- 实习项目中确保结果准确性
- 实习项目上游数据有问题怎么办
- Golang new 和make的区别
- 为什么多协程优化,不使用协程呢?
- 实习项目过程中还有什么可以优化的地方
- 微服务的优势,为什么用微服务
- 怎么确保线程安全
- 信号量和锁的区别
- 你有什么问题吗?
PDD 一面/Java
- MySQL
- 提交了怎么样的事务有可能导致死锁
- 怎样用?什么情况使用
- 数据同步怎么实现
- 使用null作为条件查询问题
- 最左前缀原则
- 索引下推、索引覆盖
- join原理实现
- 索引设计讲究/原则
- 聚簇索引
- InnoDB为什么建议用自增整数作为主键
- MySQL内存磁盘同步机制
- 数据页在内存中是完整的数据吗?
- 分库分表
- MySQL主从架构
- MySQL什么时候会死锁
- 表中有业务主键、逻辑删除标志,逻辑删除后又插入同样的一条记录,平衡业务主键和逻辑删除的问题
- 项目工程
- 业务背景
- 系统QPS
- 项目中算法如何使用
- 项目中的架构设计有何问题
- 业务修改后 MySQL、Redis数据如何更新
- 如何进行数据持久化
- 哪一部分占比较高
- 如何重新设计MySQL、Redis架构
- 设计模式(工程上使用)
- 单体应用多层异常处理原则(异常管理原则)
- Redis、MySQL配合使用,如何确保数据一致性
- 项目介绍
- 系统故障问题、如何解决
- 服务器部署情况
- 代码迭代过程中防止代码腐化
- 关注的业务指标
PDD服务端开发
- 自我介绍
- 项目的各种细节
- 服务发现一般可以怎么做!
- InnoDB 引擎的特性
- MySQL 数据库支持高并发的读写,设计上有哪些可以用的方案?
- 了解哪些缓存淘汰策略?
- go 的 defer 机制
- go 的 map 是有序还是无序?为什么?
- GET、POST 区别
- HTTP 是无状态的,如何做到有状态?(cookie session)
- HTTPS 过程
- 算法题:
- LRU
- LeetCode 62 不同路径
酷狗音乐
一面
- mysql存储引擎?
- mysql隔离级别? 分别解决了什么问题?
- 2pc, 3pc 算法
- 10亿个数据获取前100个最大数据?
- 单个表到达多大要进行拆分? 为什么需要拆表?
- redis哪些使用场景?
- 服务的熔断降级?
- 平时如何提升和学习?
- TCP和UDP可以绑定同一个端口吗?
- linux如何查看cpu, 内存负载?
- 进程间通信有哪些方式?
- redis的数据类型?
- redis和mysql的一致性问题?
二面
- 项目中涉及到哪些监控? prometheus
- 队列出现消息积压, 如何处理?
- 消息幂等性?
- 一个sql语句, 已经建立了索引, 但是突然查询很慢, 如何排查?
- 索引失效场景?
- mysql如何解决的幻读?
select ... for update: 保证当前事务中查询的范围加锁, 不被其它事务修改
- 做索引优化, 如何减少回表次数--索引下推
索引下推: 指将上层(服务层)负责的事情, 交给下层(引擎层)处理.
不使用索引下推: 根据索引中的主键值, 定位并读取完整的行记录, 然后将记录交给server层去检测该记录是否满足where条件
使用索引下推: 获取索引, 判断索引是否符合条件范围, 如果满足, 再进行对应的回表查询获取主键, 如果不满足, 直接过滤掉
- 分布式事务, 二阶段提交, 三阶段提交的区别?
- linux查看网络io的命令? netstat
- 如果出现大量time-wait状态, 如何处理?
- 网络的拥塞控制?
b站外包/go开发/一面
- 自我介绍
- 在百度什么级别?t几?(没有技术级别,当时忘记自己是什么级别了,说了个m,然后他说m是经理hhh)
- 怎么设计一个api的(没答好,已读乱回)
- 怎么去防那个ddos(redis限流+nginx层做处理,最后还是花钱买服务)
- 怎么部署那个安全拦截服务的(领导买了,在控制台做的服务,点点点)
- cdn的理解(加快访问速度之类的,问我还有没有别的,我说没有)
- 负载均衡怎么做的(领导在控制台点点点)
- 说项目没难度(我说是,不像b站外包用到这么多技术)
- 分表是怎么分的
b站外包
- 旋转数组
- mysql索引相关。
- B+树有什么特点?
- 为什么不用B树(查询的速度差不多,因为b+树数据都在叶子节点)。
- 非聚簇索引和聚簇索引的区别。
- 索引为什么要用id不用字符
- Linux相关命令和场景
- docker和k8s
360 一面
- 协程池的作用?
- 内存逃逸分析?
- go的内存回收什么条件会触发? go的GC能够手动触发吗?
- channel的底层实现? 有缓冲的,无缓冲的channel, 如果管道已经关闭了, 读取会不会发生错误?
- 切片使用的时候需要注意什么?
- go中的参数传递是值传递还是引用传递?
- defer的执行顺序?
- 100G的文件, 统计出所有英文字母, 按照字母表顺序输出
- linux如何分割文件?
- 接口性能如何优化?
- 什么情况会全表扫描?
- 主丛同步的原理? mysql还有什么相关的log文件?
- 分布式锁的原理?
360 二面
- 自我介绍
- 实现LRU算法
- 这个lru算法用在生产环境会出现什么问题
- 如果十万个线程同时put,会出现什么问题
- 如何控制并发,加什么锁,读写锁还是互斥锁
- 进程、线程、协程
- 程序从加载到运行的过程
- 为什么线程消耗比协程大,具体体现在哪些方面
- 生产中哪些服务用的 进程、线程,为什么要这么做,有什么好处(今天第二次问到)
- nginx master-worker进程、进程与redis 进程、线程
- 数据库事务,隔离级别
- 各个隔离级别怎么实现的,原理
- RR能解决幻读吗,为什么
- MVCC
- 数据库中的锁
- 乐观锁、悲观锁适用于什么情况,并发,读多写少
- 分布式锁
- zookeeper、mysql、redis 、etcd 怎么实现分布式锁,各有什么优缺点,生产中一般用那个
- zookeeper原理,怎么保持高可用
- tcp三次握手、四次挥手
- timewait、closewait出现,怎么处理
- tcp调优相关参数
- 拥塞控制算法、滑动窗口、零窗口报文
- http1.0 - http3.0 改进,优缺点
360 三面
- 说说 Linux 常用操作,ps 是干嘛的
- Go map 为什么是无序的?
- MySQL 索引分类,索引的优点和缺点
- 分库分表
- Cookie 和 Session 的区别和应用,分布式 Session 的实现
- TCP三次握手/四次挥手
- Redis 的数据类型及其数据结构,Bitmap 是什么
- Redis 的雪崩效应 ,是什么,怎么解决
- 线程,进程,协程区别
- 算法:用 Go 手撕快速排序
好未来
- 为什么要自己实现大顶堆? 大顶堆和小顶堆的使用场景?
- 如何利用堆, 获取第k大的元素? 堆如何删除某一个特定的节点? 大顶堆如何转换为一个小顶堆?
- 引入mq, 实现异步提速, 如何理解?
- 协程池使用的是第三方包吗? 如果自己实现一个协程池, 描述你的思路?
- recover能捕获到其它协程的panic吗?
- 说一下对grpc的理解? grpc互相调用, 如何实现互相的权限验证和授权?
- http2.0 的tsl三次握手过程?
- grpc中, 如果客户端需要向服务端发送大文件, 如何实现? (使用客户端流模式)
- http2.0的相关特性? 其中的多路复用为了解决什么问题? (解决对头阻塞问题)
- grpc中的deadLine和timeout, 应该怎么用? grpc的流控是如何处理的? 滑动窗口控制发送和接收速速率?
- go-zero中的服务熔断和限流是怎么做的?
- 以下两个代码片段输出的结果:
func test() int {
result := 1
defer func() {
result++
}
return 0
}
func test() (result int) {
result = 1
defer func() {
result++
}
return 0
}
深信服
- slice原理 底层数据机构
- map 原理 底层数据结构 _ a.扩容机制
b.并发会导致什么问题?为什么?
c. Map的key是有顺序的?为什么?
d. 能否实现map key的序 - Go垃圾回收,算法 三色标记是哪三色,分别代表什么?
- 堆和栈区别?内存何时分配在栈上?何时分配在堆上?
- 如何保证缓存一致性?
- redis 有哪些数据结构?常见用途
- 虚拟机和docker区别
Docker 底层原理 通过什么实现 - 二叉树前序中序后序遍历怎么回事?
- 写代码实现两个协程交替打印100以内数字
- Mysql如何优化慢查询
- Shell命令考察
a.如何判断一台服务器还是活的
B. 给一个文本文件 取出其中特定的列数据 然后排序 - kafka如何保证消息不丢失
- udp报文头部有哪些字段?
北京贝壳外包
- 自我介绍
- 项目拷打
- Redis 跟 MySQL 以及 Kafka 之间是什么关系?
- Kafka partion的概念
- Kafka 偏移量
- 比如说有你在线上发现一条慢SQL,你怎么分析它?
- 索引的最左前缀原则是什么意思?a>1and b=1andc=1,你看这个能命中这个索引吗?
- Redis 常见的数据结构?他们的应用场景?
- zset 你一般在什么场景下会用?底层的数据结构是什么?
- JWT 是什么东西?
- 协程了解吗?和线程对比
一道算法题
找到具有最大和的连续子数组,并返回该子数组
编程颖
用两个协程,两个channel分别接收1,2,并打印
网易外包/Go后端开发
一面
- 自我介绍
- mysql查询慢是什么原因(没索引、表数据量大、死锁)
- mysql插入慢什么原因(表数据量大,sql语句多,表索引量大)
- 抽奖逻辑是怎么样的
- 怎么实现用户登录
- 用户登录安全有了解过吗(乱说一通)
- redis击穿
- redis穿透
- redis其他数据结构有用过吗?hmap、zet
- 短信发送失败怎么处理的(记录发送状态+重试机制)
二面
- 自我介绍
- cms系统0-1开发的?(开源框架二次开发)
- 做了哪些功能(栏目、文章、配置、模型管理之类的)
- 登录的过程说一下
- session登录有什么弊端,怎么改(多台服务器拿不到session,用redis做缓存)
- 客户端拿着token,你是怎么通过token获取客户的信息(校验token,获取token作为key的信息)
- 有没有难一点的功能,说一下(没有,单体项目量不大,只是业务复杂度的难,技术上的难点没有)
- 用户信息怎么做加密,token怎么生成之类的(md5+拼接指定的key或者之类的)
- 200个券码,发送客户,怎么设计?(分布式锁,数据库唯一索引兜底)
- 还可以怎么优化(redis布隆过滤器,避免大量重复请求,处理逻辑做幂等方案)【睡不着想起来还可以做mysql的乐观锁,数据做缓存预热,减轻数据库请求压力】
- 长连接做成短连接,怎么设计,怎么做到短连接唯一(说了和自己的 短信生成方法(用户id活动id,二进制),php的uuid,时间戳,uuid截取?引用第三方库之类的)
- 面试官说要短的,要唯一的,答不出来
面经详解跳转链接
欢迎关注 ❤
我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。
没准能让你能刷到自己意向公司的最新面试题呢。
感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:sf面试群。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。