获赞
192
粉丝
145
关注
18
看过 TA
3419
门头沟学院
2026
后端工程师
IP属地:北京
暂未填写个人简介
私信
关注
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
伤心的毕业生在投简历:刚面完qq 写了两道题 问了两个场景就没了
查看19道真题和解析
0 点赞 评论 收藏
分享
算法题: 1, 2, 5, 10 硬币组成n元的组合方式答: 完全背包的动态规划, 但是递推公式有点问题, 没做出来, 应该是求出用不用第i硬币的加法而不是取max类似:********************************************************问题1. 上次面试有哪些不会?学了吗?2. 什么情况下数据会进入老年代?3. JVM老年代会不会被GC?4. 为什么GC要分成不同的年代?5. GC的分代内存是连续的还是零碎?各有什么好处?坏处?6. 数据链路层、网络层、传输层为啥要分层, 各层的职责7. 那为啥要分呢, 不分不是更好8. 传输层 什么是链接?9. 如果网络某一个路由器断开3s, 链接还存在吗?10. 进程间通信方式共享内存, 进程A 存放字符串的指针, 进程B读指针,然后print(指针) 会打印出什么?11. 你能讲讲你个人的优势在哪里?回答:1. 上次关于JVM进程的详解没有讲清楚, 这次详细讲解了new 一个对象的全过程● 类加载检查, 看下这个对象所属的类有没有加载、链接、初始化成功, 否则先加载类(JVM类加载具有动态加载的特性)● 分配内存, 分配方式根据内存模型的规整与否(关系GC的选择)● 内存零值赋值● 初始化对象头,包括这个对象的年龄代、字面量、属于哪个类的元数据等, 其实就是标记字段 + 类 指针● Init(), Java程序看起来,对象的创建函数,字段init(), 对象的地址分配给引用变量● JVM内存模型分为不同的年龄代, Eden Survivor Old等● 年龄代存在对象头中, 用于记录GC情况, 当一个对象对于GC Root没有被引用的地方,即不可达时, 会被标记, 后续再次会被删除2. Eden在经过一次MoniGC 还存活的对象进入S0、S1区, 年龄+1, 年龄超过GC器阈值(0 -15)可以进入老年代, 同时大对象也可以进入老年代3. 会。被回收的直接原因是因为对象的引用可达性不存了,GC一般分为部分GC和Full GC, 部分GC可以在单独的Eden、Old乃至混合区域GC,如果内存不够还会触发Full GC 引用不可达的老年代对象一样会被删除4. 不同年代内存区域有各自的适用范围, 比如Eden每时每刻都会有大量的对象死去, 适用用标记-复制, 而老年代对象存活时间较长, 用标记-清除、标记-整理更好, 分代GC效率更高5. 零碎的。零碎的好处是空间利用率高, 只需要一个逻辑标识就能知道是哪个年龄代, 坏处是没有利用好空间局部性。连续的好处是利用了空间局部性, 但是容易有碎片。6. 有点问穿, 数据链路层的基本单位是数据帧, 用于咋局域网内的物理机器地址mac传输, 网络层是在不同的子网内ip传输, 传输层是在找到了应用端间口建立的稳定或者不稳定的链接7. 。。。。我回到是耦合性, 解耦了, 不同层有不同的协议解决各自的问题, 混沌系统太复杂的很难排查, 分层每次只需要接受下层接口,给上层提供服务就行,而不用关心实现细节8. 我认为的链接是指在目标端口的过程中, 无论是IP协议会在不同路由器留下转发映射, 还是APR协议留下目标MAC IP转换, 在逻辑上是有一条通路的, 这就是链接9. 我认为如果路由器的ip映射也消失了, 就会断开链接, 如果没有不一定会断开, 还会重新去找路径链接, 如果在没有超过ACK确认的时间内找到了则不会断开(这段感觉在胡言乱语)10. 这不太会, 我答的是地址或者HashCode, 提到了很多虚拟地址的情况, C++相关的问题, 后面查资料是因为每个进程的虚拟地址空间不一样, 进程B是打印不对的11. 从个人专业学习、工程经验、团队经验、个人性格四个方面回答
查看11道真题和解析
0 点赞 评论 收藏
分享
算法题:字母大小写全排列 *****************************************************一眼回溯很快做出来了, 先讲回溯思路,然后花5分钟做出来了基本上是根据项目用到的内容1. 问了我是考研还是保研的?答:考研的, 内容是4082. JVM 层次 一个new Object 从创建到GC的完整过程(没回答上来。。没复习到 简历没更新、旧简历还在后续以更新, 就只回答了 对象的创建是先1分配内存、 2初始化对象、3把对象指向内存)3. kafka 的延迟队列自己如何实现? 答:Java本身用延迟阻塞队列来接数据,面试官引导这样会造成每个机器都需要部署, 如果是分布式环境是不是需要分布式延迟队列, 我说是4. 有没有了解过RockedMQ 是如何做延迟队列的?答:学习过程中只清楚RocketMQ和Kafka底层数据结构和吞吐量高的原因, 还没了解到RocketMQ比Kafka新增的应用是怎么实现的。5. 消息队列如果发生消息堆积怎么办? 答:从生产端、消费端、队列本身入手, 消费端增加消费者, 生产端做一个回调缓冲(如果太多减少消息生产), 队列进行消息压缩(我具体是说很多消息的id等属性重复在业务上可以接受压缩成一条)6. 场景:如果增加了消费者,性能、吞吐量还是很低是为什么?答:排查的方式, 如果还是没有提高, 可能是消费组里有空闲消费者没有用到, 增加partition, 重平衡(面试官说重平衡不能增加partition)7. kafka 怎么保证消息消费的有序性,patition内offset 可以顺序消费 , Topic内也是有序的(面试官说这个不对 Topic内不是有序的,他说的应该意思和我有些差别)8. Mysql , innodb 底层数据结构 答B+, 分析了底层数据页、块的链接结构, 和B+为什么作为Innodb结构的原因(通过和其他数据结构进行比较)9. Mysql锁, select 会加锁吗?什么情况下会加锁? 答: select不会加锁, RC、RR隔离级别下读的是ReadView, 通过MVCC机制来构建的, 讲了下MVCC是通过undolog 和 事务id算法 进行实现的, 在可见、不可见、 活跃区可以判断要查哪些数据, RC下是每个select前创建一个ReadView, RR下是第一个Select就创建ReadView。加锁的情况 是设定了select 。。。 for update 或者 in shard mode10. 项目数据量多少? 答每天10w+, 一年3kw。11. 项目中Mysql索引失效的场景, 尤其是Like, 在你们的数据量大情况, 有什么办法实现模糊搜索高性能? 答: like 是会造成性能问题, 面试官引导我大数据情况下应该怎么做到模糊搜索, 我回到了ES是可以实现,面试官追问怎么实现的?没回答上(后续看是倒排索引), 最后回答的是维护一个前缀树, 但是第一次查询也会很慢12. redis2hive、申请Redis集群是什么? 答:杂活, 完成自测,hive2redis不合理, 之前的简历没更新。。。。。13. 项目查询怎么实现的? 答: 项目的第一步一般都是查询展示, 需要根据查询人的权限和查询条件查询, 也就是RBAC + 筛选条件, 角色获取由权限控制获取, 筛选条件写在Mybait的动态查询里面, <if test = > </if> 那些14. 如何排查慢查询?实际操作是什么?答:1. 网络连接数是否匹配? 2. 多人多版本开发问题, 后人增加索引, 但是优化器还是走了老索引, force强制走索引 3. 查看监控Buffer Pool的命中情况, 一般低于99%, 一般考虑是业务逻辑有问题, 违背了局部性原理, 抖动太多 4. 索引失效: explain 看 走的索引、类型、长度、 extra、 搜到rows 判断, 并修改15.MySQL中B+树结构,根据主键具体查询过程、二级索引查询过程? 二级索引, 如果像是联合索引, 查询目标就在索引里面,直接返回, 如果不在, 二级索引的叶子结点就是主键, 再根据主键查询一次16. 现在已知公网源IP、 目标IP, 输入的全过程?答: 子网掩码, 在子网内通过ARP协议搜索目标IP或者路由器的Mac地址, 在通过路由器转发,可以是邻接转发也可以是洪范, 直到找到目标子网, 再通过APR找到目标Mac进行访问, 后续还说Tcp、http(面试官说多了)17. 其他关于专业选择、和未来求职、导师学位?答:学的都是计算机基础, 未来目标就是后端开发、导师很开明自由选择方向我选择的就是去企业学习。反问:1. 进去做什么 2 部门业务
牛客33389502...:北大✌️也太强了吧
查看17道真题和解析
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务