2.23 腾讯qq一面 1.5h

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 写了两道题 问了两个场景就没了
2 回复 分享
发布于 02-24 17:04 上海
这个还是hr部门那个暑期提前批吗?
1 回复 分享
发布于 02-24 14:20 北京
go相关的只问了4.5吗?佬
1 回复 分享
发布于 02-24 13:16 广东
同学,考虑一下淘天集团嘛
点赞 回复 分享
发布于 03-04 17:55 浙江
同学阿里云块存储要不要了解一下?阿里云块存储,核心岗,java,c++,机器学习算法岗,base杭州北京成都,有兴趣可以私聊我,直推到组里 面评不进系统,面试不影响后面正式投递!
点赞 回复 分享
发布于 02-27 16:35 北京
哪个部门?
点赞 回复 分享
发布于 02-25 14:19 江西
佬,过了没
点赞 回复 分享
发布于 02-25 13:17 上海
同学考虑上海米哈游不,我们正在进行春季招聘,实习也有,社招也有,可看我主页看岗位哈,感兴趣可直接扫码投递
点赞 回复 分享
发布于 02-25 10:12 上海
pdd春招开啦,欢迎投递
点赞 回复 分享
发布于 02-24 20:19 上海
佬请问部门用的语言是啥呀
点赞 回复 分享
发布于 02-24 17:47 北京
哪个部门呀uu
点赞 回复 分享
发布于 02-24 16:52 四川
做什么业务的
点赞 回复 分享
发布于 02-24 15:21 湖北
话说藤子24号正式批开。我23投的简历,后面面试算提前批的还是正式批啊
点赞 回复 分享
发布于 02-24 15:19 江苏
周日也面试吗
点赞 回复 分享
发布于 02-24 15:01 辽宁

相关推荐

05-19 23:59
湖南大学 Java
1、慢SQL的具体内容;2、应用DB是如何确保事务的持久性;    写前日志机制:再事务对数据库进行修改之前,数据库系统回先将事务的操作信息记录到日志文件中。这些日志信息包括事务的开始,每个操作的细节(如修改了哪些数据、修改前后的值等)以及事务的结束等内容。日志文件通常被写入磁盘等持久化存储设备上。这样可以保证系统出现故障时,可以更具日志来恢复事务的执行状态;    在mysql中,事务的持久性主要通过1、利用InnoDB的存储引擎的日志机制,当事务对数据进行修改时,InnoDB存储引擎会先将这些修改记录记录到redolog中。redo log属于物理日志,它记录的是数据页的物理修改情况。例如,当更新一行数据时,redo log会记录该数据页中具体字节的修改内容。binlog时记录了所有数据库的修改操作,包括数据的增删改查。binlog是逻辑日志,记录的是sql语句或者行的变化。例如,执行一条“UPDATE table SET column = value WHERE condition”语句,binlog会记录这条语句的执行细节。2、通过事务提交时的磁盘写入操作:当事务提交时,mysql会将事务涉及的数据页从内存中的缓冲池刷新到磁盘。缓冲池是InnoDB用于缓存数据页和索引页的内存区域,数据的修改首先是在内存中进行的。写入操作不是完全同步的,而是结合了redo log机制,因为redo log已经保证了事务的持久性,数据页的最终写入磁盘可以在检查点过程中进行。3、事务的隔离级别4、自适应哈希索引流的机制    自适应哈希索引是一种用于优化数据库性能的机制,它可以根据数据库的负载和查询模式动态地创建和维护哈希索引,以下是具体介绍:工作原理    数据页监控 :InnoDB 存储引擎会监控对表中数据页的访问情况。当发现某些数据页被频繁访问时,就会考虑为这些页创建哈希索引。    哈希索引创建 :如果一个数据页被访问的次数超过了设定的阈值,并且内存中还有足够的空间来存储哈希索引结构,InnoDB 会自动在后台为该数据页上的某个索引创建一个哈希索引。    哈希索引维护 :随着数据的插入、删除和更新操作,哈希索引会自动进行维护,以保证其有效性和准确性。当数据页的访问频率降低,或者内存空间不足时,InnoDB 也会自动删除不再需要的哈希索引。5、网络协议http、https协议的区别6、timewait的作用7、TCP如何进行拥塞控制8、操作系统的内存管理机制    虚拟内存(虚拟内存是一种内存管理技术,使得程序可以使用比实际物理内存更大的地址空间。它通过将程序的地址空间分割成多个页面或者段,然后将这些页面或者段部分的存储在内存中,而将其他部分存储在磁盘外部存储器上。当需要访问一个不在内存中的页面时,由操作系统负责将其调入内存):分页式存储、段页式存储    地址映射:静态重定位(绝对地址映射)、动态重定位(相对地址映射)    内存保护:分区保护:在分区分配系统中,为每个分区设置保护机制来限制进程的访问范围;页表保护:在虚拟内存系统中,通过页表来实现内存保护。每个进程都有自己的页表,页表中除了包含虚页到物理块的映射关系外,还包含访问权限位。9、软链接和硬链接的区别软链接软链接是一个独立的文件,它包含了一个指向目标文件或目录的路径。从本质上来说,软链接就像是一个快捷方式,它有自己的 inode(文件系统用于存储文件元数据的结构)。例如,如果有一个文件 file1,创建一个软链接 symlink1 指向它,symlink1 有自己的 inode,其内容是指向 file1 的路径。软链接可以跨文件系统,也就是说,软链接可以位于与目标文件不同的文件系统上。例如,目标文件在 /dev/sda1 分区,软链接可以在 /dev/sda2 分区。硬链接硬链接是直接指向目标文件 inode 的链接。多个硬链接共享同一个 inode,它们是同一个文件的不同名称。例如,对于文件 file1,创建硬链接 hardlink1 后,hardlink1 和 file1 都指向同一个 inode,操作系统将它们视为同一个文件的两个入口。硬链接不能跨文件系统。因为硬链接依赖于目标文件的 inode,而 inode 号在不同的文件系统中是独立的,所以硬链接必须位于与目标文件相同的文件系统中。
查看9道真题和解析
点赞 评论 收藏
分享
05-04 21:11
门头沟学院 Java
面试官很和蔼,很尊重我。面试开始时,首先介绍了自己所工作的部门,当时说的太快,我听的不太清。接下来就是项目和八股了:1、你先介绍一下自己在做项目时遇到的难点,以及你是怎么解决的。答的稀烂,没提前准备。直接让面试官问我了,感觉面评会很差!2、那你先说一下怎么基于拦截器进行Token的校验以及刷新,答的越详细越好。3、为什么要用双层拦截器?4、知道ThreadLoacl的底层原理吗?说一下。5、知道死锁吗?解释一下死锁。6、死锁怎么解决呢?答了一次性申请所有资源和申请不到资源就自己释放自己的资源。面试官肯定了第二种,说不同的场景要用不同的解决方法。我甚至让面试官说一种场景,面试官被我干沉默了半分钟,说这不太好说,但还是说了一个场景。7、解释一下通过分布式锁以及stream消息实现高并发一人一单的优化。答的很烂,说了个大概,分布式锁实现一人一单,stream加快执行效率。8、用到了什么分布式锁呢?9、setnx的底层原理是什么?知道吗?10、假如现在有三个线程来下单了,库存只有两个了,那三个线程都判断库存充足,并且都是首次下单,是不是三个线程都能判断自己可以下单成功,这时你将三个线程中的用户id和优惠券id都放到消息队列中,这个时候只能消耗两条消息,还有一条消息怎么办?没回答上来(事实上,库存判断+是否下过单判断+减库存+写入Stream队列全部封装在一个Lua脚本中原子执行,Lua脚本具有原子性,多个线程即使并发执行EVAL命令,Redis仍会串行执行脚本逻辑,保证同一时刻只有一个线程完成判断与写入流程。)11、说一下是怎么使用工厂模式和策略模式实现布隆过滤器解决缓存穿透。12、解释布隆过滤器的底层原理。13、知道MySQL吗,说一下都有哪些索引?14、联合索引知道吗?底层是什么数据结构?15、解释一下B+树。16、联合索引的查询规则最左前缀法则的底层原理。答了JavaGuide上的,通过每个索引筛选掉一部分数据。面试官说,那直接从第二个索引也能进行筛选啊,怎么解释呢?17、说一下事务的隔离级别。18、脏读、不可重复读和幻读。19、场景题:N个数的文件中,怎么搜索到前10大的数字?答的是将数据先存到DB表中,再读取就可以了。面试官说,这效率太慢了,一般不采取。20、知道ReenTrantLock吗?说一下它的底层原理。就回答了个CLH锁,忘记AQS了.......算法题:股票问题Ⅲ,没撕出来,跟着carl刷到动态了,但还没刷到这一题,面试官提醒了我3次,还是不会。反问环节总结:人生中的第一次大厂面试,总时长1小时15分钟。自己准备的不够充分,回答问题逻辑性不够(回答的很多话都需要面试官去理解,然后问我是不是这样),很多知识点的底层原理也不太清楚。虽然结果不好,但是已经尽力了,毕竟从决定学java到现在不过才2个月,还是要多学多思考。
美团一面2232人在聊 查看20道真题和解析
点赞 评论 收藏
分享
评论
27
162
分享

创作者周榜

更多
牛客网
牛客企业服务