thumbnail
腾讯 2026 届暑期实习面试经历
由 ChatGPT 生成的文章摘要
在这篇文章中,作者分享了自己申请腾讯2026届暑期实习的经验。首先,作者在2024年底看到腾讯微信事业群的招聘信息,并在朋友的建议下投递了简历,最终获得了面试机会。 面试分为两轮。第一面是在2025年2月进行的,主要讨论了作者的项目经验、数据结构和算法,作者介绍了自己开发的体素模型光线追踪引擎(VRT),回答了关于技术细节和解决方案的问题。在面试后不久,网站状态更新为复试。 第二面则专注于项目中的技术细节,面试官询问了作者在多模态人工智能项目中的具体工作,包括视频理解的任务及其实现方法。作者描述了自己的实验数据和对未来应用前景的看法。 整篇文章详细记录了作者的面试经历,以及在技术问题上的思考和解决方案,展现了对技术的深入理解和实际应用的能力。

概述

2024 年底看到《腾讯微信事业群实习生招聘火热进行中》的推文,在朋友的建议下投递了微信事业群(WXG)的技术架构和微信支付两个部门。后续是平台与内容事业群(PCG)的 QQ 部门捞我面试。

已 Offer。

我要是有你们这么强就好了

一面

原定于 2025 年 2 月 11 日(周二)晚八点面试,邮件在面试前二十小时发送。但在开始前七分钟邮件通知改为 2 月 14 日(周五)晚七点。面试用时一小时整,主要涵盖项目、数据结构算法和借项目延伸的少量技术细节和场景问题,面试体验良好,面试完半小时内官网状态变更为复试。

  1. 自我介绍(五分钟)。
  2. 介绍体素模型光线追踪引擎(VRT)背景。
  3. 开发 VRT 中遇到了什么困难?(提到计算消耗资源太大导致服务器主线程卡顿)
    3.1. 为什么不在主线程上计算也会导致主线程卡顿?(没回答好,实际上是因为线程数比核心数多,使得分给主线程的核心也要参与计算)
    3.2. (提到我的解决方案是在尚未完成的任务数超过阈值时将其排入就绪队列,仍然会导致主线程卡顿,所以此时将提交任务的协程挂起阻止继续提交)为什么不复用任务对象?(我这里也没回答好,实际上复用对象解决的是对象创建代价大的问题,而不是同时存在的对象数量太多占满内存的问题,无法解决当前问题)
    3.3. 你提到了对象数量太多,讲讲 GC 的历史(只知道刚开始 Serial GC,后来为了利用多核性能使用 Parallel GC,后续为了减少 STW 时间出现了 CMS、G1、ZGC 等等)、GC 的机制(STW 标注 GC Roots,遍历图标注可达对象,接着用某种策略决定是否要回收)、C++ 智能指针的机制(介绍了独占指针和共享指针,提出共享指针循环引用的缺陷与 JVM 里可达性判断的好处)、是否有方法让 JVM GC(System.gc() 可以建议 JVM 执行一次 Full GC,但是没法强制执行)、是否有方法释放内存(常规方法不行,但 Unsafe 里有对应的方法)。
    3.3. VRT 有什么技术积累?(提到了自己大一的 SCI 与后续的射线体素求交算法)
    3.4. 如果让你现在复刻 Minecraft 这款游戏你会选择什么技术栈?(Kotlin,味大,无需多盐)
  4. 介绍微服务化插件化框架。
    4.1. 为什么要设计一套这样的体系?
    4.2. (提到项目里有一个 CodeThink 的中心服务器)如何保证服务器安全?(提到防火墙、组子网和在非标准端口上开放服务等,此处其实还可以延申一下用密钥登录、组 VPN 并用 CDN 隐藏源站)(提到应对此前服务器中 kthreaddk 木马的问题我的排查和解决方法)。
    4.3. (提到有权限机制)为什么要做鉴权?(提到有两类,一类是应用权限控制,一类是用户权限控制)如何防止用户伪装?比如用假 QQ 客户端?(我们的系统和 QQ 服务器通讯,假 QQ 客户端不和我们通讯,超出软件范畴)。
  5. 实习经历。
  6. 手撕代码:LeetCode – 142. 环形链表 II
  7. 反问。

二面

于 2 月 17 日下午两点收到次日晚八点的面试邀约。面试用时约 40 分钟,主要涵盖简历上的各种项目里的技术细节。二面结束后两天官网状态显示为 HR 面。

  1. (无自我介绍)
  2. 看到你做了多模态人工智能,你做的是什么?(视频理解)具体是什么任务?(视频问答和搜索)、实现方法(对比学习,提取对象和关键帧特征做不同粒度之间特征的融合等等)、实验数据(MSVD T2V R@1 45% 作用,V2T R@1 65% 作用)、落地了吗(还没)、对应用前景有什么理解(它是一个划时代的技术,以往是人找内容,现在可以内容找人,极大地提升了效率)、相比图片理解,视频理解的难度在哪里(视频有时间轴)、相比其他方法有什么优势(参数量小、性能强悍等等)。
  3. 实习过程里负责什么、遇到的最大挑战是什么(串讲会,快速记录文件名、函数名和设备路径等关键信息,随后在会后专门梳理一下,在反串讲里起到了很好的效果)。
  4. 介绍一下 VRT 的背景(MC 海明距离在室内和夜间效果差劲等等)、是你自己写的吗(是,并主动提到大一有相关 SCI)、了解图形渲染管线吗(不了解,并提到体素模型和三角面模型渲染的差异)、哪些参数影响整体的光照亮度(光线数、反射次数、反射率、gamma 值)、渲染几轮(目前只实现了核心的一轮,在时间上滤波的功能设计好了但还没写)、是实时的吗(不是,是通过光源方块修改场景,所以只需要渲染一次)、渲染耗时(3s,面试官表示那性能还可以)。
  5. JVM、Java、计算机组成原理、操作系统
    5.1. Java Object 类有什么方法(toString、getClass、wait、notify、notifyAll、clone,剩下两个 equals 和 hashCode 忘了没答上来)、比较两个对象是否相等有什么方法(如果是引用比较,用 ==,否则用 Object#equals。此时补充前面忘记说了,还有 hashCode)(此时还可以引申一下 String#intern())
    5.2. Java 对象序列化(如果用 JVM 序列化,需要实现 SerializableExternalizable,然后用 ObjectInputStreamObjectOutputStream 实现读入和输出;但 JVM 序列化不推荐用,因为体积大、效率低、不安全,所以我们一般用其他的方式,例如 JSON 之类的数据交换语言,当然需要依赖第三方库)
    5.3. Java 多线程有什么需要注意的地方(第一:线程安全,特别是不同线程之间需要访问同一个可变的对象;第二:线程上下文切换开销;第三:区别计算密集型和 IO 密集型,后者最好不要过多地阻塞线程;第四:避免死锁;第五:使用一些良好的习惯,例如在 finallyunlock)。
    5.4. 多线程可能导致 crash 吗(不知道,面试后查了一下是 EXC_BAD_ACCESS
    5.5. 解决多线程安全除了锁,还有什么方法(无锁并发,基于 CAS,使用失败重试的方式)
    5.6. 还有其他方法吗(如果是 IO 密集型,还可以用协程)、协程的基本机制(主动挂起,所以是非抢占式调度,区别于线程的抢占式调度)
    5.7. volatile 机制(用来保证可见性,通过内存屏障实现)、内存屏障具体怎么实现(分为 volatile 读和 volatile 写,以及他们具体插入屏障的方式)、有没有直接用过屏障(没)、什么时候学的(本科,面试官惊叹这么久了还记得)
    5.8. volatile 在 JVM 里的作用(阻止读取线程缓存,直接从内存里读取等等)
    5.9. Java 编译完在虚拟机运行里函数如何调用(一开始我以为问 invoke_virtual 之类的,但中途被打断,问参数传递方式,遂回答不清楚 JVM 的,但清楚 C 的)、C 函数调用如何传递参数(通过第几个参数放在第几个寄存器实现,超出部分放在栈帧对应位置)、一般多少个能放在寄存器里(我记得是 6 到 7 之间的一个值,面试后查了下 x86 是前六个参数可以放在寄存器里)、你了解哪些寄存器(记得不清,但是大概有这几类:eax 返回值、esp 控制栈顶指针、pc 控制指令地址、r1、r2、r3…… 之类的扩展,面试官表示这些没什么用)
    5.10. ARM 相比 X86 设计上有什么区别(不知道)、CISC 和 RISC 区别(区别在于一个功能用多个指令实现,还是一个指令实现,带来很多影响,比如分支预测困难,所以现在一般用 RISC)
    5.11. 进程地址空间(堆、栈、全局变量、代码区;后来想了想应该说 0-1G 是操作系统镜像,1-4G 是进程的部分,在后面才是这些)
    5.12. 跨进程通讯那种效率最高(共享内存,但局限性也很大)、如果把数据拷过去有几次拷贝(只有一次,因为物理页是同一个)、具体怎么做(mmap)、你为什么能记住这样的东西?因为一般人记不住(看起来需要表示一下对技术深挖的热爱,所以表示自己去看了 Linux 源码的书)
    5.13. 你平时用过网络编程吗(用过)、最常用什么协议(WebSocket)、为什么用(好处是双方都可以主动向对方发消息)、它和 HTTP 的区别和联系(先建立 HTTP,然后协议升级为 WebSocket)、HTTP 长连接策略(早期版本 HTTP 默认短链接,1.1 后默认长连接)、实际上是真的长连接吗(一段时间后没有发,会主动关闭)、所以 WebSocket 也会受这个限制是吗(是的,突然有几个数据包发的很慢;应对这个问题我们之前做了心跳)、心跳间隔(两类设置,一类是 3s-5s,还有一类是 30s-5min)、为什么要两类策略。随后面试官指出你这个是拉活,而不是保活。
    5.14. 有没有直接用过 TCP 和 UDP(没),有没有了解最新的协议基于 UDP(QUIC)、解决什么问题(可靠、避免队头阻塞)、还有什么特性(多路复用,这里其他的没想到,实际上还有连接迁移等)。
  6. 手撕代码:LeetCode – 42. 接雨水,用 DP 完成代码,并讲了下用单调栈优化等等。
  7. 反问。

HR 面

于 2 月 26 日下午进行二十分钟的 HR 面,后两小时内系统状态变为录用评估。2 月 28 日下午 OfferCall 和发 Offer。

Not by AI

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇