wxg开放平台基建日常实习面经(2/3面)

接前篇:https://www.nowcoder.com/feed/main/detail/819661fbac1942d79faabaff2125fee5

最有压力的一集,有两位面试官,一位问一位听。一开始还好,都是从浅层知识开始问起,后续就开始深入拷打,一直拷打到不会为止,太可怕了。

其次是计算机基础,还得是科班同学,当时从编译原理一路回溯到计算机组成原理,最后感觉还是操作系统最重要,当时做 mit cow 实验理解了一下其思想,没想到现在回过头来在面试用上了,这个寒假一定要好好看看操作系统和数据结构以及一些基础。

感觉入手比较简单的还是计算机网络,毕竟可能更多时间都会花在 rfc 文档的阅读和对传输的理解和作用以及优缺点

其次是远程协同这个课题能拷打的地方真的很多,我虽然认真想了,但想的还是不够,还可以变得更好,只能说慢慢来吧

我曾经也憧憬过在开源圈内总结一套比较稳固的远程协同实现,包括服务器崩溃,服务中断等,这些都留给未来的自己吧

- 简单自我介绍
- 什么时候开始学前端
- 前端工程化,以及各种其他方面的东西是怎么学习到的
- 怎么平衡学校与个人学习
- 觉得学校的课业对学习有帮助吗,举个例子
- 讲一下 cow 是什么(copy on write)
- 为什么说考虑过用编译原理的知识尝试去实现 markdown 编译
- 对于 string.replace 方法假如要自己实现有什么优化的想法吗
- 挑一个项目最有挑战的点来说
- 简单解释一下 CRDT
- 协同面对的两个问题
- 跟 OT 对比优劣在哪
- 为什么选择远程协同作为解决方案,在此之前调研过其他方案吗
- 说一下光标速度优化,具体为了优化哪个层面(网络传输)
- 讲一下前后端结构设计
- 服务器崩溃问题(一路延申到快照创建,历史版本,内容压缩,使用外存)
- 说一下现在的解决方案和未来的解决方案
- 为什么快照可能可以解决 yDoc 实例占用内存过多的问题
- 遇到环形引用怎么解决,这里如果改为 json 可不可以进行压缩
- 结合 cow 说一下 json 压缩实现
- 说一下 yjs 在避免内存泄漏上实现的 gc 是什么
- 做上下文序列化时为什么说可能阻塞
- 说到阻塞,解释一下为什么 js 与 gui 互斥,从操作系统层面来说可以通过什么方式去实现互斥
- 平台有多少人在用
- 了解 js 与原生语言之间的通信吗
- 简单说一下 tauri 那个项目
- 用 rust 实现了什么功能,解决了什么问题
- 除了编程还有什么爱好
- 反问
- 需要改进的地方
- 您负责的内容

**这一面能很明显感受到考察的是项目思考深度,我可以说一个好的项目是非常加分的,这个好指的是你对他的思考,深入到了什么地步,对比过什么方案,最终权衡下怎么解决的,为什么选用这个方案,效能比怎么样,有考虑过未来发展吗等等问题**,即 STAR 法则。而不是单纯说我 star 多,被推荐等。我简历上的项目也没说多少人 star,因为他面向的是一个特定领域的解决方案,是我们团队内部为了解决问题而实现的一套工具。

压力面加上发挥的一般,一些基础和深入点没讲好,面完后有点难过,觉得自己马上挂了,结果两个小时后约了电话 3 面,真的是极大惊喜啊。

### 三面(电话面 30min)

这一次是电话面,连时间都没约,直接发邮件问面不面,那当然是趁着这股劲狠狠的面了!

听声音感觉是一位很和蔼的面试官,给了我 20 分钟讲项目,中间提问 + 反问。可能是为了考察一下沟通能力,因为二面的时候讲塞壬唱片项目的时候没有讲好,有点啰嗦和抓不到重点,可能因此加了一面。

- 自我介绍
- 之前有实习过吗
- 简单说一下项目立项
- 第三方平台卡内容?那有没有想过其他自由的平台(我们的平台有属于自己的精神内核和思想,希望从自己的网站上去体现)
- 平时平台上面会发布什么内容,选择 astro 框架的原因
- 除了对比市面上的框架,还有没有调研过 hexo wordpress 这种框架?
- 成果怎么样
- 之前面过微信游戏,有没有总结面试为什么挂了,简单说说
- 对于玩具项目的定义
- 项目第一次大更新的目的是什么,解决了什么问题,中间有什么困难,现有的问题和未来的发展
- 第二次大更新解决的问题和困难,以及现在的状态
- 聊聊结构设计,为什么分了新仓库,基于什么考量,为什么要这样设计,好处和缺点
- 反问
- 这一次面试这么快的吗(把内容输出总结了就大概知道是什么水平了)
- 您负责的职责(c 端用户端)
- 还有几面(应该是最后一面)
- 可以改进的地方
- 入职时间

整个过程还是聊的很愉快的,能感受到面试官为了理解我的项目在做提问。

**沟通真的是很重要的一环**,作为开发人员沟通是绝对少不了的,因为你要搞懂需求,确认上下文,个人觉得唯一不用沟通的就是搞算法科研,天天发论文就好(雾)。不过把沟通交给我的话我还是要事先准备准备,对自己要说的各种东西有一个大致的了解,这样才不会在现场时显得很慌乱

其次就是感觉在与大佬沟通的时候,我就像是在给老板分析我的产品,他的优劣,以及综合团队的思考等,还有他带来的收益

### 后续

2025/1/2 - oc

我的秋招实习之旅到此算是以 1 wxg 日常实习 offer + 1 外企日常实习 offer 结束了,虽然我完全有信心一口气在外企干到毕业并努力转正。但是我还是想说攒好经验,开阔了眼界后再寻找更好的机会,到时候我也更有信心去面对面试。

## 后记

有人问过我说为什么我的项目能做这么多东西,我的答案是:经历了长时间的沉淀;为什么能坚持这么久,因为我想**我正在做我喜欢,且能满足我和让我充满动力的事情**,在此引用一句其他大佬精辟的总结:**Do what you love, love what you do.**

其次是由于面试,我也脱离我的项目组有一段时间了,是时候要回归他们,做一些 mvp 开发和文档攥写了。他们都是很善良很友好的人,没有他们我可能就没有我简历上这个项目,也没法约到这些面试了,可以说是他们成就了我的项目基础;其次要感谢社区所有的开源开发者,他们燃烧自己的热情去实现了一个又一个无与伦比的开源库与包,尤其是感谢 astro 与 yjs,astro 官方维护成员很积极,社区声音也很多,对于 bug 处理也非常认真;yjs 则是实现了一整套生态周边,方便了我们快速上手,如果单纯给我一篇论文让我自己去实现远程协同那绝对是做不到的。

希望这份经历能够帮助到正在阅读的你,给你带来一些思考或者启发

另附文中说的项目和一些参与过的项目:

- [dmv-wiki-toolkit](https://gitee.com/shiinafan/dmv-wiki-toolkit) - 一套一站式生成 minecraft mod Wiki 网站解决方案
- [pdc-wiki](https://gitee.com/shiinafan/pdc-wiki) - Wiki 网站解决方案项目的前身
- [MonsterSirenDesktop](https://github.com/QingXia-Ela/MonsterSirenDesktop) - 对塞壬唱片官网实现的一个功能增强,为其增加了自定义播放列表 / 第三方音乐平台接入 / 歌曲下载 / 离线访问等功能

- [astro](https://github.com/withastro/astro/) - 一套以内容驱动为中心,支持 SSR & SSG & 混合渲染的全栈 Web 框架(提了两个小 pr 和文档修改)
- [elysiajs](https://elysiajs.com/) - 一个基于 bun 的后端框架,支持高度自定义编码风格(只是改了一下文档(逃))
全部评论
知识量真庞大,给我看emo了
1 回复 分享
发布于 01-04 00:40 广东
点赞 回复 分享
发布于 01-03 15:33 北京
真神
点赞 回复 分享
发布于 01-04 01:12 湖南
真神
点赞 回复 分享
发布于 01-04 11:13 广东

相关推荐

01-04 09:48
已编辑
门头沟学院 Web前端
先说一下背景:双非,目前在读大三,目前 (2024/12/31) 无实习经历,所有投递都是从官网投递,无内推。岗位是微信开放平台基建最汗流浃背的一集,当时刚好是在游戏部门挂了后几天微信打电话过来问愿不愿意面试,我说上次不是挂了吗,双方就都很尴尬的笑了一下,最后说回去思考一天再确定要不要面。当时学期也快结束了,跟几个哥们聊了一下这件事,就觉得可能是 kpi。还好当时鼓足了勇气,想着就算是 kpi 也要尽力去学到东西和表达想法。事实证明确实不是 kpi 面,而且拷打的非常恐怖,一面面试官说看了面评知道项目很大很复杂,于是就狠狠的考察了项目的广度,以及临场反应速度。二面则是结合计算机基础深究了项目的细节,现在回想起来我都不知道我是怎么顶住面试官的拷问的。三面则是最轻松但也是最需要口才的一集,就像是在给上司讲述自己的产品,讲自己的思考以及是否存在能效提升一样视频面两面都没有开摄像头,就最后 hr 面开了一下。最后实习 oc 也选了他,首先是因为没几个能选的,同期的就另一个外企发了offer,地点在北京,往返比较麻烦。微信这边主要是技术栈为 js 和 rust,还是基建岗,感觉还是比较符合胃口的。我对这次面试最大的总结就是:计算机的基础思想很重要,许多地方都可以用上他。理解思想,并把它融入到自身作为一个工具使用。就好比我前文提到的 monorepo 和 react hooks 一样,我感觉就像是把他融入到自身,他是一个工具,理解他在什么时候该发挥什么样的作用其次还是基础,一面结束后复盘了一下八股,答得真的是稀烂,寒假还是要恶狠狠的弥补啊。### 一面(2h 30min)上来先四道英文题目手撕(1小时 + 20 分钟思路拷打):- async pub sub- 依赖解析- 爬楼梯- glob 库实现八股:- 事件循环- 异步任务的作用- setTimeout 浏览器底层实现- JS 内存管理(v8 回收,但是讲的不是很清楚- 引用计数- weakMap 以及为什么不能遍历,以及只能用引用数据类型做 key- 对 ts 泛型的理解- rust 用过什么异步框架(tokio)- rust 内存管理(drop trait,作用域,无GC)- css 媒体查询- git merge 行为(只知道合并成一个提交,面试官说还有一些其他行为,后续看了一下是 fast forward / 无冲突 merge / 有冲突 merge)- 约定式提交以及如何做约束(命令行应用与 git hooks 正则匹配)- https 中间人攻击- https 链接上请求内放密码- https 的数据是安全的吗(只想到密钥泄露)- 快排时间复杂度,为什么最坏是 On2- 对一块内存上的数组尾插 / 头插元素的时间复杂度讲项目(40min+)- 立项,重构,后台实现,远程协同- CRDT 思想- 脏路径处理- 并发冲突- 简单说说 YATA 数学证明?(包不懂的)- 断网后怎么办,或者说有个客户端延迟很高(插入永远有一个唯一位置,应对比较轻松)- 服务是中心化还是去中心化- 一个人删除了一行文字,另一个人在这行文字添加内容,结果是什么(根据 YATA 算法第一层比较,客户端小的操作优先)- 简单对比 OT- 项目背景- 简单介绍 Astro 框架- 项目设计(做成 npm 包,并作为 astro 插件使用)- 项目技术栈对比,自研的原因- 第一次升级后的成果与遇到的问题(框架问题,GitHub issue 讨论,细节挺多的)- 语法分析器的设计(core 层 和 plugin 层)- 如何进行语法检查的(ast 语法树遍历分析)- LSP 服务器设计与消息优化(VSCode LSP 使用 pipeline 或 websocket,如果要优化可以通过自研协议分主动推送和监听广播行为)- 前后端结构(前端,后端,脚手架后端)- 项目发布过程- mdx 中用户如何使用自定义组件- mdx 可以回退 md 吗(没有研究,后续看了一下,mdx 是作为一个 astro 插件使用,回退的话可能需要对内容进行过滤处理(表达式,用户组件,script 标签过滤))- markdown 过滤- astro 编译 mdx 底层实现(讲了用到的插件,但是还可以继续讲讲 vite 怎么去 resolve module 的,和源码中经过了几次编译后才输出结果)- 如果有用户恶意输入,你是怎么处理的(pr check)- 如果用户太多你管不过来怎么办(插件过滤 script,工作流中使用 bot 自动检查)- mdx 注入组件的白名单- mdx 可以渲染 react,那可以渲染 vue 吗(可以,配置插件即可)- 如果要在一个 react 组件里面使用 vue,我该做什么- app.mount 发生了什么(没说全,讲了一下对比和 mount 和 patch,其实就相当于把 vue 渲染讲一遍)- 如果我想在 react 组件内用 vue,vue 组件内继续套 react,我该怎么办(编译器做一个类似 rust 的宏展开自动注入 render code)- 还有可以扯的吗(astro wasm 组件编译,content layer api,SSR 编译 mdx 可以实现运行时无编译开销;选择 jsx 作为通用组件的原因)- 反问- 技术栈(js ts rust c++)- 业务还是基建(基建)- 期望实习时长- 大概还有几轮(一般三轮)- 关于微信游戏二面面评(每个面试官都有自己的看法)- 需要改进的地方当时开始做题的时候我还没有意识到事情的严重性,还跟群友聊了一下说怎么一上来就做题,随后一顿拷打让我知道自己是多渺小了。八股复盘的时候感觉自己就是个超级大笨蛋,说不定面试官都躲在屏幕后面笑,说这小孩子想象力还挺丰富的面完这两个半小时人都虚脱了,在会议室里面跟群友汇报完后缓了好久才走出会议室,刚好实验室外面刚刚结束24届大一同学面试。后端的一哥们说想转前端了,于是就把前端在场的同学一起叫了过来,聊了一下他们的学习进度,并针对他们现场确定了一下学习路线,最需要关注的内容和接下来该做的事情以及未来要如何发展,全部聊完后也都晚上 11:10 了,于是听着私宅特有的歌冲回了宿舍。实验室真的跟家一样,我可以说实验室和简历的项目几乎就是我大学的全部了,没有这两样我也走不到今天这一步
投递腾讯等公司9个岗位
点赞 评论 收藏
分享
评论
8
4
分享
牛客网
牛客企业服务