「前端」美团一面面经(已过)

总体体验很好,团子永远这么暖,面试官笑眯眯的,有些答不上来的也不纠结,春天面暑期实习的时候就感觉团子的面试体验是最好的,我觉得他们内部肯定对面试官有培训,而且面完了一个小时就打电话约二面了,我爱团子😇。

一开始没让自我介绍,只让我介绍了我认为成熟度最高的一个项目,项目里用了 GSAP 的动画库,就从动画开始聊起了

  1. 你了解 GSAP 的动画是如何实现的吗
    1. 用 js 实现的动画,具体的不太清楚
  2. 还有什么方式?
    1. css
  3. Three.js(项目里用了)可以做动画吗?
    1. 可以,镜头调度或者物体移动都可以实现动画效果
  4. CSS 动画, JS 动画和 Three.js 动画有什么区别?
    1. css 动画使用了 GPU 硬件加速,相对来说性能更好,但交互性比较差,难以做到实时打断等交互;JS 就是反过来,Three.js 就是性能开销更大,毕竟是个 3D 引擎
  5. 在性能以外的方面,比如说渲染效果上有什么区别?
    1. 跟面试官纠结了一下什么叫渲染效果,原来说的是流畅度,我答的 CSS 的渲染效果会更好,比如帧率之类的,因为 JS 毕竟跑在主线程上,如果有一些别的任务可能导致 js 动画掉帧
  6. 了解重排和重绘吗?
    1. 八股复读
  7. CSS 和 JS 动画会导致重排吗?
    1. 像 transform 这样的不会改变文档流的是不会的,相反比如改变大小之类的会导致文档流变化的就会
  8. 项目里提到的 Sentry 做了性能分析,提了一些指标,问了我分别是什么意思
    1. 有几个比如 INP 和 TTFB 实在不是很熟悉,面板上给了我就贴上去了,所以大家写上去的性能指标自己一定要至少知道是什么意思😅,还好面试官人不错没纠结
  9. 请问这些性能指标是怎么测出来的?
    1. 在 JS 里加入一些监控代码,在对应的时间节点纪录时间然后计算出来
  10. sentry 给出的性能指标是平均值还是什么?一个开放性问题,你如何收集各种性能数据?怎么分析数据?
    1. 给定合理范围内有差异化的的硬件指标(比如 CPU 性能和网络状态各异,合理范围就是说像 80%loss 这样的网络环境啥网站都不可能有好性能,就不用考虑这种极端场景了)
    2. 指标除了平均值以外,还可以使用中位数、1% low 这样的指标来评价大多数人的体验和极端情况下最坏的体验(1%low 这个是平时显卡评测看多了临时胡诌的😅,但我感觉还蛮合理的)
    3. 分析最坏的情况,针对性的对其进行一定的优化
  11. 继续追问,比如我们发现一部分用户在初始化渲染上花的时间很长,你如何优化?
    1. 在自己的测试环境下可以用 performace 标签录制去看哪个任务开销比较大,然后针对性的优化
  12. 如果是用户打上来的 log 呢?
    1. 那就根据 log 里的设备类型去判断,根据这类用户的共性和这类用户与别的用户的差异性两个方面去寻找可能发生问题的点,比如这类用户可能普遍 CPU 比较差,那就可以在本地测试过后去尝试优化 CPU 开销最大的部分;如果网络普遍比较差就去优化一些资源大小
  13. TailwindCSS 和 CSS 有什么区别?
    1. 以类似行内样式的方式去写样式,不用想类名了,写起来读起来都更清晰,不用来回跳
  14. 性能上有什么差异吗?
    1. 作为一个 css 预处理器,他的性能提升基本上局限于优化 css 能做到的范围,比如按需构建可以移除未使用的类,从而 css 文件会更小;同时都会尽量使用性能更好的类/标签选择器而不是高级选择器;
  15. React 用的什么版本
    1. 我老是不知道用的什么版本,都回答的最新版,面试官好像还挺喜欢问的,毕竟最近两个版本的 React 引入了 Fiber 架构之类面试官很喜欢问的问题,我后来看了一下是 18.3.1,建议大家自己去看一下 package.json
  16. 看你还用过 Vue3,有了解过其他 UI 框架吗?
    1. 主要就了解了这两个比较主流的
  17. memo, useMemo, useCallback 分别是干什么的?
    1. 缓存组件/函数的计算结果/回调函数的引用
  18. 什么场景下需要缓存
    1. 计算开销很大的组件/函数,以及缓存回调函数可以避免父组件重新创建的时候传递给子组件的回调函数被重新创建,从而让子组件以为自己拿到了新的回调函数,导致无意义的重新渲染
  19. 子组件怎么判断我拿到了一个新的回调?
    1. 引用发生改变
  20. 我把所有的组件都用 memo 包起来有什么问题?
    1. 缓存本质上是用空间换时间,如果随便使用就会导致内存开销很大,有些组件可能就是个 100 个 a+b 这样的组件,缓存带来的性能提升可以忽略不计,但内存消耗却很大
  21. 那我怎么判断该不该用 memo?
    1. 衡量每次重新渲染的成本和缓存的成本,就可以衡量使用缓存的性价比
  22. 那 memo 具体做了什么事?
    1. React 的组件更新机制父组件重新渲染的情况下也会重新渲染子组件,memo 将其变为只有在 props 变化的时候才会重新渲染子组件,具体的方式是缓存渲染结果,并只在 props 发生改变时重新渲染
  23. 发现你 Vite 和 Next.js 都用过,你会做 SSR 吗?
    1. 我的项目都部署在静态服务器上,所以只用了 SSG,没有 SSR
  24. Next.js 内部使用了什么工具进行构建?
    1. 没答出来,搜了一下是 Webpack/TurboPack,说了我知道 Vite 用的是 ESBuild 和 Rollup
  25. 那这两个工具都做了什么?
    1. 分别负责开发和生产阶段的构建,讲了一下开发阶段的 ESModule 开发服务器/即时启动/按序编译/热模块替换以及打包阶段的入口/依赖图构建/loader/plugin/输出
  26. 用过 TS 吗,跟 JS 有什么区别?
    1. 支持静态类型标注/接口/泛型/枚举
  27. 手撕:数组拉平(flatten)
  28. 看你用了for…of循环,他跟 for…in 有什么区别?
    1. 前者遍历可迭代对象,需要具有Symbol.iterator方法;后者遍历可枚举属性,比如对象的 key
  29. 在你这个场景下两个都可以吗?
    1. 都可以
  30. 了解过 Native 开发和小程序开发吗?
    1. 玩过 uni-app 和 React Native,但不是很了解
  31. 如果给你一个 app,你怎么知道它是原生开发还是 web 开发的?
    1. 如果他卡大概率就是 web 开发的(我问了 gpt,这还真是一条判断标准,剩下的可以通过抓包来看有没有大量的 html/css 之类的)
    2. 追问下说 web 开发的页面加载的时候基本都是一片白,但是原生开发的只有数据会加载,基本上组件都是就位的,体验上差很多
  32. 小程序的渲染机制是什么样的?
    1. 我说就是个套壳的 web 应用
  33. 有原生的东西吗?
    1. 我觉得可能有,面试官让我再了解了解,实际上在渲染层完全就是 Webview,只会在通信层面调用一些 native 能力
  34. React Native 渲染的是 native 还是 web?
    1. native(人家把 native 都写名字里了,猜也该猜 Native 吧🤣)
  35. 有没有了解过其他比较热门的语言,比如 rust?
    1. 有兴趣,但是找工作的角度上没什么帮助,可能拿到 Offer 后再从个人兴趣的角度出发去玩玩,我知道现在有 rust everything 的趋势,我用的很多命令行工具都在被 rust 重写
  36. 了解过为什么这些工具会被 rust 重写吗?
    1. 性能强,媲美 C/C++
    2. 内存安全
    3. 查了一下还有并发安全、cargo 的工具链支持等
  37. 反问环节
#美团求职进展汇总##美团##前端##秋招#
全部评论
太强了佬,明天要面的我已经瑟瑟发抖啊
5 回复 分享
发布于 2024-08-22 18:22 陕西
美团前端开发的需要笔试吗
2 回复 分享
发布于 2024-08-22 17:13 天津
美团哪个事业群啊?
2 回复 分享
发布于 2024-08-22 16:42 北京
恭喜佬
1 回复 分享
发布于 2024-08-23 23:33 黑龙江
挺强的佬
1 回复 分享
发布于 2024-08-22 17:18 北京
好强啊
点赞 回复 分享
发布于 2024-09-04 22:33 江苏
是北京的岗吗佬👀
点赞 回复 分享
发布于 2024-08-25 21:50 重庆
好强
点赞 回复 分享
发布于 2024-08-22 23:31 北京

相关推荐

不愿透露姓名的神秘牛友
08-09 12:05
点赞 评论 收藏
分享
头像
09-09 16:59
已编辑
武汉大学 Java
结果是三面确实过了,但是没hc了,所以挂了。What can I say😃😃———————————————————————————别急,有反转,第二天又把楼主捞起来,直接进入等待面试结果了。不会是误操作罢。真给阿里云👻了。———————————————————————————3天后挂了,纯聊天也挂楼主。给阿里云👻了。———————————————————————————从二面推测出三面肯定纯聊天,结果果然。开始表忠心,楼主对阿里云一心一意。忠!诚!1. 自我介绍2. 个人经历盘问3. RUST经验,写过的代码行数(几k行肯定是有的啦,但是没什么所谓)4. 对安全攻击的了解(中间人、sql注入、跨域、arp洪泛、tls请求重放)5. Tcp三次握手,tcp flags了解吗(不了解)6. Ai使用(讲完app讲galgame知识图谱,楼主想了半天想出了日本文字冒险游戏的代称)7. 职业规划8. 反问:部门培养:没什么好问的,听上去面试官管了几个楼主一二面的组,应该是+2面试流程:也没什么好问的,反正4面没问提前实习,有点不适应,总之楼主抓住一切空隙表忠心。提到即使baidu、pdd都过了,但只要阿里云给offer,楼主肯定直接抛弃他们。收了楼主,给阿里云👻了。———————————————————————————二面就开始问能不能提前实习了,今年的市场是怎么了。1. 自我介绍2. 个人经历盘点3. cgo简介,楼主确实也在本科用过,在gal文本提取的项目里,顺便提到了golang的gc由于cgo的限制导致不能使用Java的zgc思想。4. Ai使用,楼主确实深入用过(游戏文本翻译、网页内容结构化提取、逻辑判断器等等),顺便踩一波rag、顺便吹一波qwen踩一波llama5. 职业规划6. 部门业务介绍7. 反问:为啥不问算法八股:一面问了(问了吗,其实没问)培养路线:进入一条产线以点带面,但也允许大头兵的存在超越字节二面的简单,应该是楼主目前面的最简单的二面,虽然字节把我挂了,这个总不能挂我吧。许愿三面🙏🙏————————————————————————————真·老东家。1. 自我介绍,面试官自我介绍,团队搞防火墙应用的。2. 自我经历盘点3. Rust、go与C++印象最深刻的特性(泛型,实际讲的不好,没串起来)4. 面试官说你懂网络吗,楼主说为了teg腾讯会议组看过一大堆http3面经,让他问问,面试官说看你很懂的样子就不问了。5. 写题:- 层序遍历- 最长有效括号本来以为shopee与pdd的ide就够难用了,阿里云的更是依托,pdd好歹面试官还能一键运行,阿里云的竟然是纯文本编辑器,面试官估计打开了leetcode复制楼主的上去跑,跑了三四遍,每遍出什么错都要口述给楼主debug。6. 智力题,100只老虎,1只羊,有以下规则:- 所有老虎都想吃羊,但是更想活下去- 老虎吃羊会变成羊问100只老虎会吃羊吗?楼主从乐子人的角度指出只有有一个老虎吃了羊,其他老虎也会吃,然后系统就会坍缩至一只羊。面试官乐了,但是不对。老虎都是理性老虎,所以要这样分析:1只老虎1只羊,老虎肯定吃羊;2只老虎1只羊,由于理性老虎知道谁先吃谁就死,所以都不吃;3只老虎1只羊,由于任意一只老虎都知道只要吃了羊,系统就会变成2只老虎1只羊,这样就没老虎敢吃了,所以老虎会吃羊;以此类推,奇数只老虎会吃,偶数只老虎不会吃。理性老虎真的是太理性了,楼主都没这么理性。6. 反问:部门:防火墙作息:9:30~20:30,反正就弹性早十晚九呗闲聊老东家,顺便吹一下阿里云的工单团队与研发团队分开(然后diss华x云与腾x云)。话术果真是一脉相承,阿里系的名不虚传。面试官还说互联网都这样,哪里都这样了😠,楼主面这么多家,阿里风是最突出的,什么owner、产线并行、职责交叉,除了阿里谁家说这些😇😇。
查看13道真题和解析
点赞 评论 收藏
分享
📍面试公司:科大讯飞🕐面试时间:2025年09月09日💻面试岗位:嵌入式C++软件开发❓面试问题:1.内存对齐有哪几种方式?请解释其原理和优缺点。2.栈溢出会导致什么后果?如何避免?3.在资源受限的嵌入式系统(如RAM极小)中,有哪些优化内存使用的策略?4.static关键字在C语言中有哪些作用?请分点说明。5.函数和宏定义的区别是什么?各自适用于什么场景?6.请解释环形缓冲区(Ring Buffer)的原理及其应用场景。7.CPU从I/O接口读取数据的路径是怎样的?请描述这一过程。8.看门狗(Watchdog)的工作原理是什么?它在嵌入式系统中的作用是什么?9.C++中map和unordered_map的区别是什么?(可从底层实现、时间复杂度、内存占用等方面回答)10.哈希表的扩容机制是如何工作的?负载因子(Load Factor)的意义是什么?11.请谈谈你在项目中最具挑战性的一个任务,你是如何分析和解决其中的难题的?12.你如何理解科大讯飞的技术方向(如人工智能、语音识别)?你认为你的技能如何与公司业务结合?13.作为校招生,你更看重公司的哪些方面?(如技术成长、团队氛围、项目机会等)🙌面试感想:科大讯飞的面试官非常注重基础知识的深度和理解,尤其是C/C++、内存管理、数据结构和嵌入式系统相关概念。此外,项目经验中的实际问题解决能力也是考察重点。建议在校招面试前充分复习底层知识(如内存对齐、栈机制、硬件交互等),并对简历中的项目细节做好深入准备的准备。同时,了解公司的主要技术方向(如AI、语音处理)并能结合自身技能表达兴趣和匹配度,会是一个明显的加分项
查看13道真题和解析
点赞 评论 收藏
分享
评论
22
64
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务