腾讯IEG天美工作室后台开发实习一二面凉经

发面经,涨好运
一面 2.25
1h30min,无算法,基本上是全程八股
1.go slice实现原理,追问扩容数组拷贝很耗时,有了解怎么做的优化吗
2.redis缓存雪崩,缓存击穿,缓存穿透
3.缓存击穿提到了分布式锁方案,问分布式锁如何实现。追问分布式锁抢锁失败应该做什么
4.缓存穿透提到了布隆过滤器,问布隆过滤器的原理,追问写操作时写布隆过滤器和写redis数据缓存的一致性如何保障
5.kafka如何保证消息的可靠性,追问消费者幂等性如何实现。幂等性提到了唯一id的方案,追问唯一id在哪里生成
6.内存只有512M,进程分配1G内存可以实现吗。追问如何关闭换页机制,追问oom kill时杀哪些进程
7.问tcp可靠性如何保证
8.tcp场景,发送端发seq=11,12,13,接收端只收到11,13,接收端回复什么信息。追问超时重传,快速重传。追问tcp滑动窗口的概念,滑动窗口的初始大小通过什么参数调整
9.发http请求的过程,追问tls握手过程,追问一个会话如何记录用户的状态信息(token),追问为什么用了https还需要session,token这些东西
10.线程池优化相关,为什么线程多了性能反而受到影响,追问linux线程调度的实现,追问线程调度优先级如何设置
11.聊实习的时候顺便基于当时的场景问了一个时序问题,A,B两个机器向C发请求,A比B先发,怎么保证到C的请求的时序和A,B发请求的时序是同一个(这个问题聊了一会,当时没意识到没办法实现),追问为什么没办法实现。追问如果A,B在一个进程里,能实现吗,如何实现

二面 3.3
约面的时候说要面1h30min,结果最后只面了30min
1.简单聊了一下两个项目的架构,一两个关于项目的问题,但不深
2.问我熟不熟悉微服务sidecar架构
3.一些个人bg方面的问题
4.等边三角形三个顶点上三只蚂蚁,每只等概率往两边走,问蚂蚁不相撞的概率是多少
5.一道口述的算法题,平面上一堆点,找出所有最小围住的区域的集合。一开始以为是力扣那种恶心人的平面几何数学题,后面沟通让我用图论的方式做,又聊了一下思路,说不用写代码了,也不知道他是觉得算法能力强还是弱
6.反问出结果时间,说要横向对比

感觉二面啥都没问,面完就有种要挂掉的预感,果然今天早上看挂了。
#面经##腾讯#
全部评论
1 回复 分享
发布于 03-04 17:20 江苏
哪个业务呀佬
点赞 回复 分享
发布于 03-07 22:26 四川
佬,平面上一堆点,找出所有最小围住的区域的集合,这个咋做的?
点赞 回复 分享
发布于 03-06 13:38 北京
太难了吧😰
点赞 回复 分享
发布于 03-05 14:12 广东

相关推荐

05-24 12:16
湖南大学 Java
1、全表查询和走索引查询有什么区别呢?为什么左模糊匹配走不了索引查询呢    全表查询就是依次扫描表中的每一行,检查是否符合查询条件,时间复杂度为 O(N),效率低,可能耗时较长。而走索引查询是根据索引快速定位到符合条件的行,时间复杂度通常优于 O(N),效率高,能快速返回查询结果。左模糊匹配走不了索引查询是因为其模式是 “% 模糊内容”。当使用左模糊查询时,数据库无法利用索引快速定位到匹配的行。因为索引是按顺序存储的,左模糊匹配需要从第一个字符开始匹配,数据库无法确定从哪里开始查找,只能进行全表扫描。而右模糊匹配(模糊内容 %)或中间模糊匹配(% 模糊内容 %)在一定条件下可以走索引查询。2、流式传输和传统http请求有什么区别吗传统 HTTP 请求 :是面向请求 - 响应模式,客户端发送请求,服务器返回一个完整的响应体,通常是将整个资源(如一个网页、一张图片等)一次性加载完成。例如,当在浏览器中输入一个网址访问网页时,浏览器会发送 HTTP 请求,服务器处理后将整个网页的 HTML 内容作为响应返回给浏览器。浏览器在收到全部内容后进行渲染显示。如果网页内容很大,用户可能需要等待较长时间才能看到完整的内容。流式传输 :数据是分块传输的,客户端可以一边接收数据一边处理,而不需要等待整个数据传输完成。以视频播放为例,在流式传输模式下,视频数据被分割成许多小的数据块。客户端在接收到足够多的数据块后就可以开始播放视频,同时后续的数据块还在持续传输中。这样用户可以快速看到视频的开头部分,而不用等待整个视频下载完成。3、https如何保证安全当客户端(如浏览器)与服务器建立 HTTPS 连接时,服务器会将自己的数字证书发送给客户端。客户端会检查证书的合法性,包括证书是否由受信任的 CA 颁发、证书中的域名是否与访问的域名一致、证书是否在有效期内等。例如,如果用户访问一个银行网站,浏览器会检查该网站提供的证书是否是由权威的 CA(如 VeriSign 等)颁发的,以此来确认用户连接的是真正的银行服务器,而不是假冒的服务器。通过结合对称加密和非对称加密,HTTPS 在通信双方之间建立了一个双向加密的通道。在连接建立的初期,使用非对称加密来协商出一个对称加密的密钥,之后使用对称加密来加密传输的数据。这样既能保证密钥分发的安全性,又能高效地加密大量数据传输,从而确保数据在传输过程中不被窃取或篡改。例如,当用户在电商网站上输入信用卡信息并提交订单时,这些敏感信息通过 HTTPS 加密通道传输,即使数据在网络中被截获,攻击者也很难解密获取真实的信息。
查看3道真题和解析
点赞 评论 收藏
分享
05-10 00:10
中山大学 golang
发面经许愿过自我介绍进程和线程的区别?为什么线程会比线程快?进程中哪些资源是不共享的?共享的呢?线程中哪些资源是不共享的?共享的呢?为什么堆不共享,讲一下堆不共享的情况?协程知道吗?现在有100个进程,一个进程有10个线程,那么如果方法栈不共享的话是不是会有1000个方法栈,从协程的角度讲一下会有这种情况吗?讲一下为什么要三握手?http2.0和3.0的区别?http2.0和1.0的区别?讲一下Java目前版本的GC的一个过程?Redis和Mysql的区别?Redis是怎么更新的?Redis的数据如果删除失败了怎么解决?(从流程上解决)慢查询怎么找?讲一下之前实习的查询优化怎么实现的?讲一下具体怎么找到慢查询的?RESTFUL API的特点?(回答了域名是什么样的就写了什么)1t个整型数据怎么找中位数?(提示从快排的角度)算法题:LRU连续子数和答案:### **1. 进程和线程的区别?**进程是系统资源分配的最小单位,而线程是程序执行的最小单位。一个进程可以包含多个线程,线程之间共享进程的资源,比如内存空间、文件描述符等,而不同进程之间资源隔离,通信需要通过进程间通信机制。---### **2. 为什么线程会比进程快?**因为线程间切换的开销小,共享资源多,比如内存空间无需重新分配,而进程切换涉及到上下文切换、内存空间的重新加载等,代价更大。---### **3. 进程中哪些资源是不共享的?共享的呢?**不共享的有:内存地址空间、堆栈、全局变量等。共享的有:代码段、只读数据段、内核资源(如打开的文件、信号处理器)。---### **4. 线程中哪些资源是不共享的?共享的呢?**不共享的有:线程自己的栈空间、程序计数器、寄存器上下文。共享的有:进程的内存空间、文件描述符、全局变量、静态变量等。---### **5. 为什么堆不共享,讲一下堆不共享的情况?**其实堆在**线程间是共享的**,因为多个线程可以访问进程的堆区数据。但在**多进程中堆是不共享的**,每个进程有独立的虚拟地址空间,堆也各自分配,不会共享,除非通过共享内存机制显式实现。---### **6. 协程知道吗?**协程是一种用户态的轻量级线程,不依赖操作系统调度,由用户控制上下文切换。相比线程更轻,适用于大量并发但不需要多核并行的场景,比如高并发 IO 操作。---### **7. 有100个进程,每个进程10个线程,如果方法栈不共享,是不是有1000个方法栈?从协程角度讲有这种情况吗?**是的,如果线程不共享栈,那么确实会有1000个独立的栈。协程也是一样,每个协程也需要单独的栈空间,尽管更小,常见是几 KB,所以如果用协程实现相同数量,也会有近似数量的栈,只是代价更小。---### **8. 为什么要三次握手?**三次握手是为了确保双方都有收发能力:- 第一次客户端发起连接(SYN),- 第二次服务端确认并回应(SYN+ACK),- 第三次客户端再确认(ACK)。        如果没有第三次,服务端无法确认客户端是否能正常接收数据。    ---### **9. HTTP2.0和3.0的区别?**HTTP/2 使用 TCP,多路复用减少了 TCP 连接数,但仍受 TCP 队头阻塞影响;HTTP/3 基于 QUIC 协议,使用 UDP,解决了 TCP 队头阻塞问题,同时提升了连接恢复和握手效率。---### **10. HTTP2.0和1.0的区别?**HTTP/1.0 每次请求都要新建连接;HTTP/2 引入了多路复用、头部压缩、服务器推送等特性,提高了性能,且可以复用同一个 TCP 连接处理多个请求。---### **11. Java 当前版本的 GC 过程?**以 G1 GC 为例,它将堆划分为多个 Region,分代管理。先在年轻代进行 Minor GC,把对象晋升到老年代;当老年代空间不足时进行 Mixed GC,回收部分老年代;G1 的目标是低延迟,使用并发标记、并发清理等方式减少 STW 时间。---### **12. Redis 和 MySQL 的区别?**Redis 是内存数据库,读写速度快,适合缓存、排行榜等场景;MySQL 是磁盘数据库,支持复杂查询、事务等,适合数据存储场景。Redis 通常作为 MySQL 的补充,不是替代。---### **13. Redis 是怎么更新的?**通常使用 **写穿** 或 **写回** 策略。- 写穿是:写数据库后,主动更新或删除 Redis 缓存;- 写回是:先写 Redis,异步同步到数据库(一般需要消息队列保证最终一致性)。---### **14. Redis 的数据如果删除失败了怎么解决?(从流程上解决)**可以用 **延迟双删策略**:第一次删除 Redis 缓存 → 更新数据库 → 延迟一段时间后再次删除 Redis,防止并发请求中缓存被旧数据污染。同时可以通过消息队列或异步任务补偿失败的缓存删除。---### **15. 慢查询怎么找?**- 对 MySQL,可以开启 `slow_query_log`,设定阈值,日志中就能找到执行时间较长的 SQL。- 也可以用 `EXPLAIN` 或 `SHOW PROFILE` 分析执行计划,找出瓶颈。- 在 Redis 中可以使用慢查询日志 `slowlog` 命令查看。---### **16. 实习中查询优化怎么实现的?**我通过 SQL 优化 + 索引优化 + 缓存设计三方面入手:比如原来使用 `LIKE '%keyword%'` 模糊查询,改为分词索引提高命中;并对常用查询加入缓存,如 Redis + 本地缓存双层缓存机制。---### **17. 具体怎么找到慢查询的?**在 MySQL 中打开 `slow_query_log`,通过 `mysqldumpslow` 工具整理日志;配合监控工具(如阿里云 DMS、Prometheus + Grafana)定位慢 SQL,再用 `EXPLAIN` 看是否走索引,有没有全表扫描。---### **18. RESTful API 的特点?**- 使用统一的 URI 命名资源(如 `/users/123`);- 使用 HTTP 方法表达行为(GET、POST、PUT、DELETE);- 无状态性,服务端不存客户端状态;- 可缓存,提高性能;- 结构清晰,易于维护和扩展。---### **19. 1TB 整型数据怎么找中位数?(提示快排)**1TB 数据无法一次性放进内存。可以使用**外部排序算法**,或者基于**快速选择算法(QuickSelect)**的思想,通过分区,把比 pivot 小和大的数分别归类,类似快排的 partition 过程,只递归中位数所在的分区,直到找到目标位置。时间复杂度期望是 O(n)。
查看22道真题和解析
点赞 评论 收藏
分享
评论
7
56
分享

创作者周榜

更多
牛客网
牛客企业服务