24秋招美团前端面经

美团一面(08.23)

  1. 说了一下实习的内容,简单介绍一下其中的两个需求
  2. 介绍一下控制并发数队列的实现原理,为什么要设计这个
  3. 介绍一下 es6 新增了哪些数据类型
  4. 介绍 Symbol 的作用,以及有哪些用途
  5. 你开发中有用到过 Symbol 吗?简单介绍一下
  6. 介绍浏览器的 EventLoop 的整个过程
  7. 知道有哪些宏任务与微任务吗?
  8. 来介绍网络七层模型有哪些?
  9. 跨域是什么
  10. 跨域的解决方法有哪些
  11. 介绍一下 jsonp 的原理
  12. CORS 解决跨域一般会设置哪几个请求头,并说说这些请求体的作用
  13. 如果设置 access-control-allow-origin: * 会有什么问题吗?
  14. 用过哪些包管理器
  15. 知道 npm 与 yarn 的有什么不同吗
  16. yarn 当初设计出来是为了解决 npm 的哪些问题?
  17. 那目前还存在哪些问题?
  18. 使用过 pnpm 吗?为什么使用它,它解决了什么问题?
  19. 说一说 vue3 与 vue2 的区别?
  20. 介绍一下 vue2 与 vue3 响应式原理的不同
  21. 写了一道简单的斐波那契数列,然后分析一下空间复杂度与时间复杂度
  22. 看你做过表格的封装,介绍一下?
  23. 如何解决长列表问题?
  24. 介绍一下虚拟滚动的原理
  25. 你会对高频事件有什么优化吗?
  26. 介绍一下防抖和节流
  27. 写一个简单的节流函数
  28. 我看你实习也面过我们,说说当初觉得自己有什么不足嘛
  29. 反问

----------------------------------------------------------------------------------------

更新:08.28 回到人才库

更新:08.29 状态回到笔试

更新:08.30 被北京的捞了

----------------------------------------------------------------------------------------

美团一面(金融平台)

  1. 介绍一下项目
  2. 关于实习项目问了一些问题
  3. 给了一个场景题,其实就是问单点登录的流程,前后端怎么处理的
  4. 问了js的同步和异步
  5. js有哪些异步的处理方式
  6. promise的相关用法
  7. 手写一个Promise.all
  8. 介绍一下普通函数和箭头函数的区别
  9. let和const的区别
  10. Promise的捕获错误的机制
  11. 怎么学前端的
  12. 反问
----------------------------------------------------------------------------------------
更新:9.4号下午四点面完,五点就把我挂了,没hc就别捞我,不符合也别捞了,都答出来了还把我挂了,真浪费大家时间
全部评论
同学可以投递一下满帮呀 https://www.nowcoder.com/feed/main/detail/a4df4a929a9148edb4a927e671a467e2?toCommentId=16770682
1 回复 分享
发布于 2023-08-25 10:43 江苏
请问面试的是哪个部门呢
点赞 回复 分享
发布于 2023-08-24 21:47 北京

相关推荐

03-20 19:09
已编辑
门头沟学院 前端工程师
面试公司:杭州某小厂面试岗位:前端这两天陆续面了两家公司,这两家公司的语气都比第一家柔和很多,难道第一家给我压力上太大了?不,肯定我是太菜了,我是菜XTUT第二份视频,第三份线下,总体答得不错,在这里继续总结答得不太好的。老样子,题目来源于公司,答案来源于ai,反思来源于自己。面试问题:【技术】1、问题:Vue 中的常见生命周期有哪些?父子组件中,他们的加载顺序和生命周期的一个关系?一般request数据获取是放在create周期还是mount周期?为什么?答案:    Vue 中的常见生命周期包括以下几个阶段:    创建阶段 :        beforeCreate :在实例初始化之后、数据观测 (data observer) 和 event/events 事件回调的初始化之前被调用。此时,data 和 methods 还未被初始化,无法访问到 data 中的数据和 methods 中的方法。        created :在实例创建完成后被调用,此时 data 和 methods 已经被初始化,可以访问到 data 中的数据和 methods 中的方法,但此时页面的 DOM 还未生成。    挂载阶段 :        beforeMount :在挂载开始之前被调用,相关的 render 函数首次被调用,但 DOM 还未真正渲染到页面上。        mounted :在实例挂载到 DOM 后被调用,此时 DOM 已经渲染完成,可以操作 DOM 元素。    更新阶段 :        beforeUpdate :在数据更新时被调用,此时数据已经更新,但 DOM 还未更新。        updated :在 DOM 更新完成后被调用。    卸载阶段 :        beforeUnmount :在实例卸载之前被调用。        unmounted :在实例卸载完成后被调用。    父子组件的加载顺序是:先加载父组件,再加载子组件。这是因为子组件的挂载依赖于父组件的挂载。在父组件的挂载过程中,会解析子组件的标签,并创建子组件的实例,然后触发子组件的生命周期。    父子组件生命周期的关系是:父组件的生命周期钩子会在子组件的相应钩子之前触发。例如,父组件的 beforeMount 钩子会在子组件的 beforeMount 钩子之前触发,父组件的 mounted 钩子会在子组件的 mounted 钩子之后触发。    一般数据获取建议放在 created 周期。因为在 created 周期中,data 和 methods 已经被初始化,可以发起网络请求获取数据,并将数据存储到 data 中。而如果放在 mount 周期,虽然也可以获取数据,但此时 DOM 已经渲染完成,如果数据获取失败或者耗时较长,可能会导致页面显示不完整或者出现加载中的空白状态。放在 created 周期可以利用 Vue 的响应式系统,在数据更新时自动更新 DOM。反思:Vue生命周期就回答了create和mount相关,甚至冒出了个“delete”,回去听录音都给自己整无语了。数据获取答对了,但是对面面试官确实没问理由,要问绝对就开猜了,还好还好。2、问题:大多数前端框架循环都用到了key,这个作用是什么?底层原理是什么?答案:    在前端框架中,key 的作用是帮助框架高效地识别和更新 DOM 元素,特别是在列表渲染时。    当使用 key 时,框架会将 key 的值作为标识符,用于区分不同的元素。在列表渲染时,如果数据发生变化,框架会通过 key 来判断哪些元素是新增的、哪些是删除的、哪些是更新的。如果两个元素的 key 相同,框架会认为这两个元素是同一个元素,只是属性发生了变化,从而进行局部更新;如果 key 不同,框架会认为是新的元素,需要重新创建 DOM。    底层原理与 Diff 算法相关。Diff 算法是用来比较两组数据的差异的算法。在前端框架中,Diff 算法主要用于比较虚拟 DOM 树的差异,以决定如何更新真实的 DOM 树。当列表渲染时,框架会为每个元素生成一个虚拟 DOM 节点,并将 key 作为虚拟 DOM 节点的属性。在 Diff 过程中,框架会通过 key 来快速定位和比较两个虚拟 DOM 树中的节点,从而找到需要更新的部分。如果没有 key,框架只能通过元素的索引来进行比较,这在列表中元素的顺序发生变化时会导致错误的更新。反思:答出了提高渲染速率和鉴别元素创建。至于比较关键的术语“局部更新”“DOM重建”确实没粘边。估计大厂会问到diff算法,提前学习下。虚拟DOM也去复习复习。3、问题:防抖和节流的定义与应用场景?实现的方式?答案:    防抖和节流是两种常用的优化高频触发事件的技巧。防抖(Debounce) :    定义 :在事件被触发后,在一定时间内如果没有再次触发该事件,就执行一次回调函数。如果在规定时间内事件再次被触发,则重新计时。    应用场景 :        搜索框的自动补全:在用户输入时,如果每次输入都发送请求,会导致频繁的网络请求。使用防抖可以在用户停止输入一定时间后,再发送请求,减少网络请求的次数。        窗口大小改变:在窗口大小改变时,如果频繁触发回调函数,会导致性能问题。使用防抖可以在窗口大小停止改变一定时间后,再执行回调函数。    实现方式 :        使用 setTimeout 函数来实现。在事件触发时,设置一个定时器,在定时器的回调函数中执行目标函数。如果在定时器执行之前,事件再次被触发,则清除定时器并重新设置。节流(Throttle) :    定义 :在一定时间内,只允许回调函数执行一次。如果在规定时间内事件多次被触发,只在最后一次触发时执行回调函数。    应用场景 :        滚动事件:在滚动页面时,如果频繁触发回调函数,会导致性能问题。使用节流可以在滚动一定距离后,再执行回调函数。        鼠标移动事件:在鼠标移动时,如果频繁触发回调函数,会导致性能问题。使用节流可以在鼠标移动一定距离后,再执行回调函数。    实现方式 :        使用 setTimeout 函数和变量标记来实现。在事件触发时,检查是否已经设置定时器。如果已经设置,则不再设置;如果没有设置,则设置定时器,并在定时器的回调函数中执行目标函数。        使用 Date 对象来记录时间。在事件触发时,获取当前时间,如果距离上一次执行回调函数的时间小于规定时间,则不执行;如果大于规定时间,则执行回调函数。反思:之前其实已经理解了相关概念,但是让自己描述确实还是描述不清楚,吱吱呜呜的,以后准备这种面试应该看着题目自己说一遍。除此之外,小厂不会考察实现,大厂应该会考察手撕,应该找时间重现。4、问题:axios, fetch, ajax 的区别?答案:    技术基础 :axios 是基于 promise 的 HTTP 库,fetch 是浏览器原生支持的 Fetch API,ajax 是基于 XMLHttpRequest 对象的。    语法 :axios 和 fetch 的语法相对简洁,ajax 的语法相对复杂。    支持浏览器 :axios 和 fetch 不支持 IE 浏览器,ajax 支持 IE 浏览器。    错误处理 :axios 提供了统一的错误处理方式,fetch 的错误处理比较复杂,ajax 的错误处理需要手动处理。    功能 :axios 支持拦截器和自动转换数据,fetch 和 ajax 不支持。反思:其实对这块并没特别注重,感觉这边一般是封装死的,不过姑且作为知识补充。【HR】1、问题:你觉得你的项目给你带来哪些成长?答案:略反思:此处当时答得有点偏,甚至说到了什么审美提高乱七八糟的,其实应该是回答团队合作能力提高,独立开发技巧和工程化能力等等。这个回答点应该注意一下,了解对方回答的用意。总结:本次面试围绕Vue技术栈、前端基础及架构方向展开,结合面试中的表现与自我反思,总结如下:一、技术能力方面Vue生命周期与优化实践:基础生命周期能准确列举,但对父子组件执行顺序及代码实现逻辑理解不够深刻,尤其是父组件mounted执行在子组件之后的实际应用场景未能举出实例。数据获取放在created阶段的理由虽然正确,但未主动结合响应式系统原理进行展开,暴露出知识点间的联结不足。需系统梳理父子组件通信与生命周期联动机制。核心概念深度不足:对key的Diff算法原理、虚拟DOM运作机制等底层知识表述不够精准。虽然能说明key的复用优化功能,但缺乏专业术语的运用。后续需重点研读Diff算法源码解析,建立虚拟DOM更新机制的体系化认知。逻辑表达能力待提升:防抖节流虽能区分概念,但在应用场景举例时存在表述冗余。建议通过实践手写实现以巩固记忆。前沿技术视野扩展:微前端概念停留在特点罗列层面,对qiankun框架的实现原理、沙箱隔离等核心技术点认知空白。需结合官方文档搭建demo项目,深入理解模块加载、样式隔离等具体解决方案。二、综合素质方面HR环节未能精准匹配技术成长与岗位需求,体现出对面试问题核心诉求的洞察不足。未来需建立结构化回答框架,将项目经验与技术能力、团队协作、工程化思维等职业素养紧密结合。总结表明,除巩固基础外,需投入精力深入框架底层原理,提升技术表述的专业性与系统性,同时持续追踪微前端、性能优化等前沿技术方向,构建完整的知识图谱。#我的面试日记# #软件开发笔面经# #面试常问题系列#
点赞 评论 收藏
分享
评论
9
65
分享

创作者周榜

更多
牛客网
牛客企业服务