美团到店前端秋招面经

⭐一面

  1. 自我介绍
  2. 问我是不是主学的Vue技术栈,美团是react,并让我不要担心,公司并不看重框架,而是看重你的基础,来了之后在公司的培养下是可以很快进行切换的。
  3. 问我对上面第二点有什么看法(一顿夸,大公司气魄就是不一样,我也是认为框架只是工具,基础才是最重要的)
  4. 介绍一下项目的亮难点以及协同开发的任务分配
  5. 这个项目背景是什么(本来是我自己的,后来和同学准备一起做成社区化的形式)
  6. 具体介绍一下你的长文章加载优化,是预加载吗,分页并发是怎么处理的(我的文章是以一份markdown、一份html的形式存在数据库的,也算是预加载,分页是在redis中的分块存储,页码信息在key中,每个接口发送请求时会携带对应的page,就能去redis中进行获取)
  7. 你的并发请求是如何发起的,其中细节介绍一下(就说了一下实现的逻辑)
  8. 并发时的错误重试是整个并发重试还是单个接口重试(单个接口)
  9. 看你还有一个电商项目(比较简单,练手用的)
  10. 你的两段实训应该有做项目,简历没有体现出来(都是一些比较简单的项目,含金量不高就没写,然后简单介绍了一下几个项目)
  11. 介绍一下你对vue生命周期的理解(问的有点宽泛了,我就大概讲了一下理解,没有详细说具体的内容)
  12. 可以再具体一点吗,比如父子组件的生命周期顺序(父创建到beforMount,然后子组件创建挂载到父组件,父组件再执行mounted)
  13. 组件通信有哪些方式(常规八股了)
  14. 异步请求你一般放在哪个生命周期去做?(当时我考虑的是请求回来会操作dom,就回答了mounted,现在想想单纯异步请求的话created中就可以做,大意了)
  15. 平时是怎么发异步请求的(说了项目中的请求方式,axios二次封装暴露不同的请求方式,再单独开一个api文件用来封装后端接口,除去promise async/await其他的话还有回调函数、生成器之类的)
  16. 异步请求方式是怎么选择的(有点迷,说遇到回调地狱的话使用promise+async/await,传异步操作的钩子的话用回调函数)
  17. 事件循环你是怎么用的(讲了一个首屏js动画被阻塞的问题,后来通过把动画推到宏队列解决的)
  18. 说一下你对虚拟DOM的理解(从起源到作用,还提了一下vue3说是要出一版无虚拟DOM的版本)
  19. 你提到了Vue3,说说它有哪些改进(使用上说了借鉴react的fragments实现多个根节点、compositionAPI、teleports、异步组件,底层优化上说了diff优化以及treeshaking)
  20. 你为什么选择vue,你觉得它有什么优势(上手难度小,优化好,说了一下它的设计思想,最后也补充了一下当时书院培养的就是这个方向,可能是因为国内大多数企业是用这个框架的)
  21. 学习过React吗,感觉怎么样(没有深入学习,只是简单了解,比起vue比较自由,在大项目中性能比vue要好)
  22. 平时是怎么进行学习的(看课了解大概,看文档以及书籍进行深入学习,举例了我最近在看的vue深入浅出)
  23. 最近有学习什么新知识吗(我说我有一颗思维导图做成的技能树,记录了不同模块的知识,我在学习新知识前会看整棵树是否平衡,如果不平衡说明我还有需要补充的知识,就会先进行查缺补漏,我发现我的算法相对有些薄弱(借机为自己后续算法题做不出来找台阶下),现在就是在查缺补漏的一个流程)
  24. 在什么阶段进行DOM操作(记不清是不是这么问了,我分两部分回答了,第一个是创建的时候,在mounted之后DOM才被渲染,可以正常获取。第二个是在运行过程中对DOM的改动会被推入到下一次事件循环中,所以要在nexttick中进行获取)
  25. vue双向绑定原理(八股)
  26. webpack的作用,说说你对他的理解(前端工程化工具,构建统一高效的开发环境...,后面又说了说loader和plugin对项目的作用,简单列举了几个,最后又说了说代码分割)
  27. 还用过其他工具吗(只用过配好的vite,深入学习过的只有webpack)
  28. 你提到了前端工程化,说说你对它的理解(这个问法没怎么见过,我就类比工厂,为我们做自动化处理,比如一些兼容性,压缩,打包之类的搬砖工作,解放程序员,提高生产力)
  29. 说说进程和线程的区别(前两天刚背的八股)
  30. 进程调度算法(只记得一个优先级,其他忘了)
  31. 进程通信的方式(这个真不会)
  32. 进程的死锁是什么,导致死锁的条件有什么(死锁有印象,但是条件记不清了,我记得有三个)
  33. 解除死锁的方式(打破导致死锁的条件,但是我不记得条件有哪些了)
  34. 内存的分类(说了堆内存和栈内存)
  35. 栈溢出是怎么造成的(我猜一个是函数递归调用退出条件有问题造成溢出,一个是内存泄露,不知道对不对)
  36. 分页分段说一说(真不记得了)
  37. 说说虚拟内存(拿一部分硬盘空间来当内存,印象是这样,不知道对不对)
  38. 说说TCP和UDP的区别(高频八股)
  39. 说一说HTTP2和HTTP3的新特性(2我说了说,3我不太清楚,就补充说3目前国内比较少见,2也比较少见,只知道B站那边好像用开了2,一般还是1.1)
  40. 说一说三大范式(具体内容不记得了,只记得是制定表的规范,就说了说我的数据库表是怎么制定的,把需要拆分的部分进行了拆分,而不是存在一张表上)
  41. 说说数据库索引(这个确实不太懂,猜测说是可以提高查表的效率)
  42. coding题,leetcode_61 旋转链表(做的时候没考虑到移动的k是会大于表的,只过了一部分案例,不过面试官说差不多了)
  43. 反问:现在十一月份了,咱们还有hc吗(部门里的老员工有一部分去搞鸿蒙了,就有hc空出来了),面完大概多久有消息(1-2天)

结束后洗个澡出来约二面了

⭐二面

  1. 自我介绍
  2. 看你项目中用到了pinia,说说pinia和vuex的区别(取消mutation,独立仓库,支持TS)
  3. 看你项目中用到了redis,说说redis和mysql的区别(键值对存储、分布式、SQL语句、事务、内存存储、应对高并发)
  4. 你在redis中存过什么数据类型(不太懂,只用它做过缓存,分别是登录和一个文章分页的缓存)
  5. vite用过吗(简单用过)
  6. vite和webpack的区别是什么呢(八股)
  7. vite项目怎么部署到线上(不太懂,是vite直接跑在线上?只回答我的项目是打包好丢在nginx上的)
  8. 部署过vite项目吗(没,我上面部署的项目是用vue2+webpack的)
  9. 你项目里图片压缩是怎么做的(转换成base64画在canvas上,利用它的api去输出)
  10. 这个压缩是用在什么地方呢?(上传到后端之前做一个压缩)
  11. 防抖节流的作用(常规八股了,顺便举了举懒加载用节流的例子,带出了下面的图片懒加载)
  12. 项目中的图片懒加载怎么做的(先加载20张,下拉后再加载20张)
  13. 还有另一种懒加载形式,了解过吗(虚拟列表)
  14. mutationObserver(听说过,不太了解)
  15. Intersection Observer(没了解过)
  16. 解释型语言和编译型语言(这个八股没有系统性的梳理过,说的有点乱,不过也算是答上来了)
  17. 说说面向对象
  18. 面向对象的三大特征(封装、继承、多态 没想到两年前背的我居然还记得,感谢大二的期末考试)
  19. 说说多态(今天刚复习的八股)
  20. JS如何模拟多态呢(和java搞混了,答了继承这一方面,通过继承在原型链上实现方法的遮蔽,下来想想不对劲)
  21. 你说的好像是继承,多态如何实现呢(我又圆了一下上面的,没答好)
  22. 面试官又引导了一下,问我js怎么实现函数重载(渡一的短视频讲过,说了一下思路)
  23. 并发和并行有什么区别(没了解过,我猜的是并发是同时发送大量的请求,而并行是多个进程或线程的并行执行)
  24. 说一下内存泄露和内存溢出(老八股了)
  25. 你在说内存溢出的时候说会有函数递归调用导致的溢出,那js对他有什么优化吗(红宝书上有一节讲过,尾递归的优化)
  26. 学过计算机硬件,说一下中断和异常(不太清楚,说歪了)
  27. web worker的作用(多线程)
  28. script标签中的defer和async(八股)
  29. 大文件断点续传是怎么做的(计算并记录切片的哈希值)
  30. 前端如何实现的文件分片(input接受文件,拿到文件指针,对它进行分片处理,要计算哈希值的话需要使用fileReader读取文件内容再进行哈希计算)
  31. 协商缓存和强制缓存说一下(八股)
  32. 协商缓存返回什么状态码(304)
  33. 强缓存和协商缓存的header都还记得吗(上面八股里提到过)
  34. 我不想让客户端有缓存,怎么做(cache-control设置no-store)
  35. 说说跨域(老八股了)
  36. 哪三个满足同源(协议域名端口)
  37. 怎么解决跨域(CORS JSONP 代理 BFF)
  38. 浏览器发请求时有个options请求,做什么的(跨域的预检请求)
  39. 什么时候会发这个options请求?(正常的接口请求应该都会有,没仔细观察过)
  40. JSONP的原理(前端预定义好方法,通过script标签发起请求,后端返回方法调用,并为其传参,其中参数就是数据)
  41. 平时如何学习
  42. 你如何理解vue和react(说了说它们的设计思想)
  43. nodejs用过吗,用的什么框架(express和koa都简单用过)
  44. 问了一个相关的东西,我没听过,也不知道在说什么,就过了
  45. 编程题
    1. 二分查找,但是要返回数组中的第一个出现的目标值,有点小插曲,不过ac了
    2. 重排链表,之前做过,用分割翻转再拼接的思路做的,最后递归反转有点问题没做出来,面试官问过思路后就说可以了

团子的进度属实是快,面完一天内就约下一面,后面三面和hr面都没涉及技术问题,坐等出结果,保佑保佑


更新 上周五面的,周三发现回到人才库,问了一下hr,说挂了,他说他没有权限查看,也不知道原因,可能是排序挂了吧,不想努力了,签保底了

#面经##美团##美团2024校招#
全部评论
你的好难
7 回复 分享
发布于 2023-11-26 23:59 吉林
是触发了天条吗这么多问题
4 回复 分享
发布于 2023-11-30 15:55 湖南
咋还有三面呀?三面是主管面么
1 回复 分享
发布于 2023-11-26 15:38 江苏
为什么都答得这么好了,还是不能够通过
1 回复 分享
发布于 02-28 18:24 上海
我的妈 怎么这么多问题 我问了40分钟 感觉不到10个题目
点赞 回复 分享
发布于 2023-11-27 15:29 陕西
哇!惊喜发现跟你的一面问题几乎一样!11-17号面的
点赞 回复 分享
发布于 2023-11-27 22:18 广东
感觉你好强,祝你oc!
点赞 回复 分享
发布于 2023-11-27 22:19 广东
怎么这么难啊我靠
点赞 回复 分享
发布于 2023-12-01 11:09 广东
到店就喜欢hr挂人
点赞 回复 分享
发布于 2023-12-04 16:22 上海
说实话 感觉 业务部门 想要你的……挂的原因 我猜排序或者突然没hc了 不是实力问题 运气太差了
点赞 回复 分享
发布于 2023-12-09 04:39 陕西
重排链表 是自己写个链表吗
点赞 回复 分享
发布于 01-08 15:08 广东
实习面试?难度这么大?
点赞 回复 分享
发布于 03-16 23:42 重庆

相关推荐

从可拖拽组件的设计开始讲起,我们需要设计组件的结构,每个组件都有一个JSON格式的数据结构来描述其基本信息,包括唯一标识、名称、属性和子组件。通过React.createElement()递归地将JSON信息渲染成组件树。这个方法的参数包括组件名称、属性对象和子组件。组件的属性存储在各自的配置文件中,每个物料的index.ts文件中定义了组件的setter、事件和方法,以便在渲染时传递给createReactElement。组件通信通过事件处理来实现:通过JSON结构来定义事件,当组件被选中时,可以选择触发其方法。使用Map来存储组件ID与实例的映射,以便在需要时进行方法调用。使用useImperativeHandle暴露组件的方法,通过ref可以在父组件中调用这些方法。组件选中与高亮,定义选中机制,在渲染时为每个组件添加一个唯一的key,通过事件监听获取被点击组件的ID,更新当前选中组件的状态。利用获取的组件ID,通过DOM操作来高亮被选中的组件。在组件被选中后,配置栏会动态渲染与该组件相关的表单,用户可以通过表单更新组件的属性。每个事件使用JSON存储,包括类型和配置。在预览模式下,将这些JSON格式的事件转换为可执行的函数。技术点1:撤销与重做针对面试可以分别准备两板,首先是全量的保存,后续你优化为快照管理:采用改进的快照机制,仅记录变更的组件ID和实例,而不是完整的组件树,避免冗余数据的产生。组件拖拽的拖拽实现:通过react-dnd等库实现组件的拖拽和放置,支持嵌套结构的拖放。也可以用原生dragapi去做关于编辑与预览模式模式切换:根据不同的模式(编辑/预览)使用不同的渲染器,分别控制事件触发和属性展示的行为。可以用本地存储去存预览的数据#编程# #前端# #前端入门# #前端项目# #前端面试#
点赞 评论 收藏
分享
评论
27
101
分享
牛客网
牛客企业服务