网易雷火前端实习一面

2022年3月23日,总共40分钟

自我介绍

开始做题

实现像下面的函数。我用的函数柯里化,有点磕磕碰碰最后写出来了

sum(1)(2)(3)

问问题

1.项目为什么用原生的JavaScript实现?

2.Vue的数据绑定和双向数据驱动底层怎么实现?我怎么在项目里使用的?
3.Array.from将arguments转成数组,还可以使用什么方法?扩展运算符和Array.from都可以转成数组,有什么区别?
4.for ... of 怎么遍历对象?怎么让对象可以直接用这个方法遍历
5.event.target和event.currentTarget区别?绑定捕获阶段的事件,怎么实现?
6.async await在进行异常捕获的时候,怎么实现?在promise外层能用try-catch捕获吗?
try{
    
    new Promise((resolve,reject)=>{
        throw new Error("error")
})
}catch(e){
    console.log(e)
}
7.JS的事件循环,哪些是宏任务?视图渲染的机制?结合宏任务、微任务,视图渲染是在什么时机去做?页面渲染是宏任务能具体讲讲?(参考这篇文章,之前我也不清楚https://zhuanlan.zhihu.com/p/441288090
8.问了Vue的mixin和mixins?(不知道,很久之前看官方文档学的)还有computed和watch的区别和使用场景,也不太记得




#网易##实习##面经##春招##前端#
全部评论
老哥啥时候做的笔试呀
1 回复 分享
发布于 2022-03-29 09:19
兄弟一面过了吗
点赞 回复 分享
发布于 2022-04-02 09:21

相关推荐

从一些面经里面扒出来整理的框架其实感觉不是重点考察的点啊 但是简单的八股还是要背背 原理这些我感觉无所谓 因为我React原理背了一堆感觉也没什么用一、基础概念与原理1. Vue 的 MVVM 模式是什么?MVVM(Model-View-ViewModel)通过数据绑定实现视图与数据的自动同步。  - Model:数据层,负责业务逻辑。  - View:UI 层,展示数据。  - ViewModel:双向绑定桥梁,监听数据变化并更新视图。2. Vue2 与 Vue3 的核心区别  - 响应式系统:Vue2 使用 Object.defineProperty,Vue3 改用 Proxy,支持深层对象和数组监听。  - Composition API:Vue3 提供更灵活的代码组织方式,替代 Options API 的逻辑分散问题。  - 性能优化:Vue3 通过静态提升(Static Hoisting)和 Patch Flag 减少虚拟 DOM 对比开销。3. Vue 生命周期钩子函数及作用  - 创建阶段:beforeCreate(数据未初始化)、created(可访问数据,但 DOM 未挂载)。  - 挂载阶段:beforeMount(模板编译完成)、mounted(DOM 渲染完成,适合异步请求)。  - 更新阶段:beforeUpdate、updated(数据变化后触发)。  - 销毁阶段:beforeDestroy(清理定时器)、destroyed。二、核心机制与优化4. 响应式原理实现  - Vue2:通过 Object.defineProperty 递归劫持对象属性,结合发布-订阅模式收集依赖。  - Vue3:基于 Proxy 代理对象,支持动态属性添加和数组索引修改,减少初始化性能损耗。5. 虚拟 DOM 与 Diff 算法的作用  - 虚拟 DOM:JS 对象模拟真实 DOM,减少直接操作 DOM 的性能损耗。  - Diff 算法:同级对比新旧虚拟 DOM,通过 Key 标识复用节点,最小化更新范围。6. Computed 和 Watch 的区别  - Computed:依赖缓存,适合派生数据(如过滤列表),仅在依赖变化时重新计算。  - Watch:监听数据变化执行回调,支持异步操作,适用于数据变动后的复杂处理。三、组件与通信7. 组件通信方式  - 父子组件:props 传值,$emit 触发事件。  - 跨层级:provide/inject(依赖注入)、Vuex 全局状态管理。  - 兄弟组件:事件总线(Event Bus)或通过父组件中转。8. 动态组件与异步组件  - 动态组件:使用  动态切换组件。  - 异步组件:通过 defineAsyncComponent 或路由懒加载(() => import('./Component.vue'))优化首屏性能。9. 插槽(Slots)的应用场景  - 默认插槽: 接收父组件内容。  - 具名插槽: 指定插入位置。  - 作用域插槽:子组件通过 v-bind 传递数据给父组件14。四、路由与状态管理10. Vue Router 的导航守卫  - 全局守卫:beforeEach(路由跳转前鉴权)、afterEach(跳转后操作)。  - 路由独享守卫:beforeEnter。  - 组件内守卫:beforeRouteEnter(无法访问 this)、beforeRouteUpdate。11. Vuex 的核心概念  - State:存储全局状态。  - Mutations:同步修改状态(通过 commit 触发)。  - Actions:异步操作后提交 Mutations(通过 dispatch 触发)。  - Getters:计算派生状态。五、高频实战问题12. v-if 与 v-show 的区别  - v-if:条件渲染,销毁/重建 DOM,适用于切换频率低的场景。  - v-show:通过 CSS display 控制显示,适合频繁切换。13. v-for 为何需要 Key?Key 帮助 Vue 识别节点身份,优化 Diff 算法效率,避免渲染错误14. Vue 性能优化手段  - 使用 v-once 或 v-memo 缓存静态内容。  - 路由懒加载、组件异步加载。  - 避免深层响应式对象,合理使用 Object.freeze。六、原理类高频问题1. Vue 的响应式系统中,Object.defineProperty 和 Proxy 在实现上有何本质区别?Vue3 改用 Proxy 解决了哪些痛点?(提示:数组监听、动态属性、性能开销)2. 依赖收集(Dependency Collection)和派发更新(Trigger Updates)的具体流程是怎样的?请描述 Dep 和 Watcher 的协作关系。(提示:发布-订阅模式、getter/setter 触发时机)3. Vue 的模板编译过程经历了哪几个阶段?如何将模板字符串转换为渲染函数?(提示:解析器生成 AST → 优化器标记静态节点 → 代码生成器生成 render 函数)4. 虚拟 DOM 的 Diff 算法中,为什么要优先进行“同层比较”而不是跨层递归?Key 值在 Diff 过程中起到了什么作用?(提示:时间复杂度优化、节点复用策略)5. Vue 的异步更新队列(Async Update Queue)是如何工作的?为什么修改数据后立即访问 DOM 可能获取不到最新值?(提示:nextTick 实现原理、事件循环与微任务)6. Vue3 的静态提升(Static Hoisting)和 Block Tree 机制如何优化渲染性能?(提示:跳过静态节点比对、动态节点标记 Patch Flags)7. 计算属性(Computed)的缓存特性是如何实现的?与普通方法调用有何本质区别?(提示:脏检查机制、依赖追踪)8. Vue 组件实例化过程中,data 选项为什么要用函数返回对象,而不是直接写对象?(提示:避免多个实例共享同一数据引用)9. Vue 的事件系统是如何实现 v-on 的?事件修饰符(如 .native)底层做了哪些处理?(提示:原生事件与自定义事件的分发机制)10. Vue3 的 Composition API 如何解决逻辑复用问题?对比 Mixins 和 Hooks 的优缺点。(提示:命名冲突、代码组织、类型推导)
前端小圆:vue可能问的原理会比react多我主react的时候实习面试时候真感觉问的很少
点赞 评论 收藏
分享
Timeline:一面        2025-02-14  14: 00    当天 15: 30 通过二面        2025-02-17  11: 15    当天 15: 10 通过三面        2025-02-18  14: 00    当天 14: 50 通过hr面        2025-02-18  17: 00    当天通过oc            2025-02-19  10: 45呃啊啊啊啊啊啊啊,对比一面难度飙升二面主要过程:1. 自我介绍2. 首屏优化有哪些方法(tree-shaking  http2  懒加载  gzip  SSG ......),    看的是哪个指标(LCP),LCP具体是怎么计算的(完全没了解)3. 业务组件和基础组件的区别(??根本不知道),如何保证组件的稳定性(希腊奶,应该是指组件测试)4. 拷打 css: - 重绘重排(浏览器渲染原理,结合 visibility: hidden 和 display: none) - flex 垂直布局如何使得三个子盒子间隔 10px(不是 margin / space-between,叫我去了解一下,应该是 row-gap) - position: sticky(没用过),position 和包含块5. 拷打 vue: - vue2 和 vue3 有什么区别(setup,defineProperty 和 proxy) - vnode 和实际 dom 有什么区别,为什么要用 vnode(为了高效 diff 和跨平台支持包括 ssr),为什么不直接修改 dom(因为早期对 signal 理念实现不够彻底,vue3.6 的 vapor mode 正在改进,我的回答不一定对哈) - computed 的更新机制是怎么样的(脏值检测懒更新),使用时和 watch 有什么区别(问的就是依赖多的时候用 watch 指定需要的依赖)6. 拷打 js: - var let const window 以及多 script 标签(一定要注意 let 和 const 的变量不会挂载到 window 哇),var 的变量提升机制(先定义后赋值),变量未声明默认为 var - 手写 Promise.all(应该直接 return 一个 new Promise,我用了 Promise.withResolvers;还有打印的时候用 then,习惯了用 setTimeout 打印了,被狠狠地批评了) - 说说 async 和 await 的实现(是说源码),如果没有 async 的时候使用 await 会不会报错(旧版 node 的 commonjs 会,要用立即调用函数的方式使用,新的和 esmodule 默认支持) - Promise A+规范怎么定义一个 Promise(我只知道要 then 方法,叫我回去看)7. 算法题:二叉树中的最大路径和,返回其路径(力扣 124 改编,无负数,卡了很久都没完全写对,路径递归返回写错了极力狡辩)8. 反问: - 主要技术栈(vue3,node) - 工作时间(11点前上班,12点到2点休息,6点到7点晚饭,8 9点下班,包三餐) - 最近有碰到什么技术难点吗(听不懂我也忘了)
投递抖音信息等公司10个岗位
点赞 评论 收藏
分享
评论
4
33
分享

创作者周榜

更多
牛客网
牛客企业服务