记录我的面试经历

记录我的面试经历
菠萝记录自己的面试过程!!!
3月6号,腾讯一面(寄)
1.使用过分布式锁吗?怎么实现的?
goredisson
redis的set nx
2.分布式锁的使用场景
对共享资源的保护。
3.介绍一下子redis集群
主从,哨兵,切片集群
4.redis集群的模式
- 主从
- 哨兵
- 切片
5.说一下缓存雪崩
缓存雪崩的话,有几种情况:
- 缓存的key在同一时间同时失效
- Redis宕机
6.缓存击穿和缓存穿透有什么区别
缓存击穿一般是针对于热点key问题,是指,热点key过期的时候,会有大量的并发请求,一瞬间打到MySQL服务器,导致MySQL宕机
缓存击穿是指,某些非法数据,不存在于数据库中,频繁的访问,不经过缓存,直接打到数据库,且数据库也没有数据,无法被缓存。
7.说一下go语言中的Context
context就是上下文的意思。主要记录当前goroutine的上下文,一般用于goroutine之间传递信息,类似于map的key,value存储。
emptyCtx
todoCtx
valueCtx
cancleCtx
8.问了一下项目。项目背景。项目难点。你是怎么做的。具体过程。
9.三个题目
- 第一题就是简单的考察二叉树
// 1. 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 |
- 考察了二叉树的性质
// 2. 对于一棵满二叉排序树深度为K,节点数为 2^K - 1 ;节点值为 1至 (2^K-1)。 |
- 常见的面试题
// 3. 最长回文子串: |
字节面试题
在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?
- 对浏览器的URL进行解析
- 通过DNS查询服务,找到URL的IP地址(具体查询过程…)
- 通过TCP三次握手简历连接
- 通过网卡发送 ==> HTTP请求
- 在网络传输中,通过交换机和路由器,将请求发送到服务器
- 服务器响应请求,返回数据
- 浏览器进行渲染
如何排查一条慢SQL?可以从哪些方面入手?
回答:
项目中 | 可以采用日志分析这个接口的运行时间 |
---|---|
sql语句 | 采用explain指定去查这个sql的执行计划 |
数据库终端 | 开启mysql的慢日志查询,设置好时间阈值,进行捕获 |
在企业内部对于慢查SQL的优化主要经历以下的几个步骤:
在慢SQL的优化过程中,可以从以下五个角度去思考优化:
- SQL优化:SQL语句优化方式主要是通过选择合适的索引,优化查询语句,避免全表扫描等提高查询效率,减少慢SQL的出现
- 资源占用:
- 业务改造
- 数据减少
- 源头替换
资源占用
- 锁资源等待:在读写很热的表上,通常会发生锁资源争夺,从而导致慢查询情况。
- 谨慎使用 for update;
- 增删改尽量使用到索引;
- 降低并发,避免对同一条数据进行反复修改。
- 网络波动:往客户端发送数据时发生网络波动导致的慢查询
- 硬件配置:CPU利用率高,磁盘IO经常慢载,导致慢查询
业务改造
- 是不是真的需要全部查出来,还是取其中的top N就能够满足需求了
- 查询条件过多的情况下,能否前端页面提示限制过多的查询条件的使用
- 针对实时导出的数据,涉及到实时查DB导出大量数据时,限制导出数据量 or 走T+1的离线导出是不是也是可以的
- 现在业务上需要做数据搜索,使用了 LIKE “%关键词%” 做全模糊查询,从而导致了慢SQL。是不是可以让业务方妥协下,最右模糊匹配,这样就可以利用上索引了
3.13 字节日常实习一面
1. 上来问了项目,为什么做这些项目?项目难点?你如何解决的?
2. 两道算法题。
- 求平方根
采用牛顿迭代法求解(或者采用二分法也行)
package main |
- 子集合问题