mark下
1. 自我介绍2. HTTPS 的原理3. TCP的粘包、拆包了解吗?4. Goland 了解什么语法吗?协程优势在哪里?5. 你知道Context类,实现原理是什么?6. 消息队列?kafka你知道哪些消息重复消费的情况?7. 多个消费者在一个消费组里, 如何避免消费重复的情况?8. 如何实现一个延迟时间调用api的?9. Mysql 底层数据结构是什么? 优势在哪里?10. 出现慢查询有什办法?11. Redis了解?和本地缓存有什么区别?12. 有咩有办法本地缓存只保存在某一个实例中, 每次能固定访问到, 而不用13. 缓存和数据库的一致性怎么保证?14. 如何只用Mysql也能增加吞吐量?15. 项目中优化了Job调度策略是怎么回事?16. 导出性能优化30min -> 3min 是做了什么?17. 什么是优化的第二种方案流式导出18. 算法题: 回文链表 先讲思路再实现19. 反问:部门业务、面试表现以为录音开了😭😭,记得了后续再更新, 回答下午更新2.25 更新当时回答回答1. 自我介绍:学校+实习+项目2. 先说结论是非对称加密随机数秘钥, 对称加密传输, 防止中间掉包, 服务端增加第三方证书认证。 在说明了这么做的原因:非对称加密(保密性好但开销大)和  对称加密(开销小)3. 不了解4. 就说了协程是用户级线程, 减少了内核态线程和用户级线程的切换,减少了性能开销5. 用过, 用于上下文,比如截止、超时时间等6. 我说了业务上可能生产者在多个地方生成了一样的消息, 面试官说不要说业务上, 消费这边技术上的。 我说可能消费组读取了同一个offset没加锁,他说不太对, 读取了就会更新offset, 后来提示说, 消费了但是系统重启了, 忘记告诉消费信息。7.  a. 消费重复发生了的时间间隙长 存一下消息id进缓存, 消费前检验下是否有存在的Id;  b. 短时间的情况就每次消费前加个分布式锁8. 我说实现一个优先级队列, 以最终发送时间的时间戳为优先级判断, 优先级队列用堆实现。 再加一个定时任务, 以最小精度来访问, 每次取出所有到达当前时间戳的任务去调用。9. 插入时间复杂度 o(lgn) , 查询o(1);10. B+树;查询高度地却且稳定、范围查询效率大、插入维护成本低; 分别和AVL 树 红黑树(插入自旋消耗大), B树(性能取决于树高、数据记录占用大, 树高不稳定且要比B+树高很多), Hash(效率高,但范围查询效率低), 跳表(存在磁盘, 一样是高度太高了, 磁盘io太多, 内存读取很快不用考虑io性能,而且实现简单性能优秀, redis用跳表)ps: 感觉腾讯面试很看基础, 尤其是基本的数据结构问题, 场景题要说清楚用什么?为什么这么用就挺加分11. 在实际工程中, 慢查询一般从监控里面得出, 第一步会看 同样看监控里面的数据库指标, 比如出现时间、buffer pool 命中率等, 有可能是Buffer pool 太小或者脏页太多, 调高大小、调低脏页, 减少抖动,一般阈值是99%*************************************; 第二步看, 检查具体慢查询sql语句执行计划, 看explain字段, 讲了各字段意义, 一般这种情况就可以解决了, 讲了一次因为前后人员版本开发的问题,增加了索引但新业务没走新索引, 最后用了force走强制索引; 最后看mysql链接, 有一次查询调用时间很快,但是网络开销大, 发现是Mysql服务群那边重启了服务连接数回了默认值、比原来的连接数少导致12. 联合索引是依据索引内字段顺序构建索引的,先比第一个再比第二个, 如果不考虑sql语句条件顺序, 会导致第二个字段走了全表查13. 有了解, 一个分布式缓存,一个本地缓存,本地缓存每台实例都有存储14. 先说了分发的时候加实例映射, 固定分发到一台实例, 后来让我用技术上实现, 说就取某台实例的特殊id, 用唯一性算法比如mod, 制定分发的时候只要到特殊的实例才会读取本地缓存15. 1. 立刻同步, 加锁, 2. 延迟一致性, 先更新缓存, 后续异步任务更新数据库16. 想了一会 —— 分库分表!17. 讲了下这个跟项目实现有关等等18. 主要是解决两个问题: 1. 大表查询, 当时考虑分页深度查询和流式查询, 最终考虑到实现难度选择了简单的分页游标查询。 2. 中间有很多对外掉接口的情况, 有大量的网络开销, 用arthes查具体的大开销地方,然后在导出里面减少到不必要的接口调用, 如果能存下来, 时间开销能降到1min内19. 流式导出, 这个是之前看的一篇文章https://mp.weixin.qq.com/s/SOsx-6rCLqdEBfOV77ybyA, 就是一次性发送所有全量请求, 输送的数量有服务端控制20. 瞬间看出来, 之前在牛客的面经里面看过, 现将思路:1. 最简单的用栈来实现 两边读取就可以 2. 把后一半翻转, 顺序比就行面试官提问: 能不能不用读取长度呢 答:快慢指针 就可以然后花了15min写完, 中间还问了一个问题,不记得了, 啥数据结构、测试用了都要写, 大概总体花了快30min
点赞 27
评论 14
全部评论

相关推荐

03-26 15:18
已编辑
华北水利水电大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务