前端面试题汇总

发布时间:2026/9/22 6:00:14

前端面试题汇总 一.Vue相关1.在vue中,echarts初始化放在哪个钩子在Vue中,ECharts的初始化通常放在mounted钩子中。因为在mounted钩子中,组件已经挂载到DOM上,你可以访问到模板中的DOM元素。2.为什么vue中的data不是个对象,而是个函数?data特别像一个闭包,闭包可以简单理解为:方法里面返回一个方法;闭包最重要的特性是实现对数据的私有和封装;data写成函数(闭包)的形式,相当于给每一个组件创建了一个私有数据空间,也就是说:A组件数据data只可以为A服务,B组件数据data只可以为B服务,各组件数据不会受影响;如果用对象,所有组件的就不能实现私有,只能共用,会造成数据污染的问题,最终导致数据错乱。3.vue事件绑定原理是什么?原生事件绑定是通过addEventListener绑定给真实元素的,组件事件绑定是通过Vue自定义的$on实现的,4.子组件如何修改父组件的值4.1 使用事件子组件可以通过触发事件的方式通知父组件进行数据的修改。父组件可以通过v-on指令监听子组件触发的事件,并在事件处理程序中修改相应的数据。4.2 使用.sync修饰符Vue还提供了.sync修饰符,用于简化子组件向父组件传递数据并修改父组件数据的操作。child-component :message.sync="message"/child-component5.vue的双向绑定原理链接:https://www.cnblogs.com/jiajia-hjj/p/15395815.html原理主要通过数据劫持和发布订阅模式实现的通过Object.defineProperty()来劫持各个属性的setter,getter,监听数据的变化在数据变动时发布消息给订阅者(watcher),订阅者触发响应的回调(update)更新视图6.什么是SPA单页应用单页应用(Single Page Application,简称 SPA)是一种 Web 应用程序架构,它通过动态重写当前页面,而不是加载整个新页面来与用户进行交互。这种技术主要依赖于 AJAX 和前端路由来实现页面的无刷新更新,从而提供更流畅和快速的用户体验。1.整个应用只有一个 HTML 页面。初次加载时,服务器返回这个页面,此后所有的页面内容切换和数据加载都通过 JavaScript 在客户端完成。2.通过前端路由(例如 Vue Router、React Router)管理不同的视图和状态,用户在浏览器地址栏中的 URL 变化不会触发整个页面的刷新,而是由 JavaScript 捕获并处理。3.利用 AJAX 技术(如 Fetch API 或 Axios)与后端服务器进行数据交换,获取数据后动态更新页面内容,而不需要重新加载页面。4.由于不需要重新加载整个页面,只需更新部分内容,用户体验更加流畅和快速。大部分渲染工作由客户端的 JavaScript 完成,减轻了服务器的负担。SPA的优缺点优点:1、用户体验好:页面切换流畅,无需整页刷新,类似于桌面应用的操作体验。2、减少服务器压力:由于大部分渲染和逻辑在客户端完成,服务器只需提供数据接口,减少了服务器的压力。3、前后端分离:更明确的前后端分离,前端负责页面显示和交互,后端负责数据处理和业务逻辑。更明确的前后端分离,前端负责页面显示和交互,后端负责数据处理和业务逻辑。缺点:1、首次加载时间长:由于初次加载需要下载所有必要的 HTML、CSS 和 JavaScript 文件,可能导致首次加载时间较长。2、SEO 问题:传统搜索引擎难以抓取动态内容,SEO 优化较困难。不过,这个问题可以通过服务器端渲染(SSR)或预渲染等技术来缓解。3、前端复杂度增加:需要处理复杂的前端路由和状态管理,增加了开发和维护的难度。7.vue数据响应式原理8.vuex中mutation和action的区别视图触发Action,Action再触发Mutation,Mutation:必须同步执行,专注于修改State,理论上是修改State的唯一途径;Action:可以异步,但不能直接操作State,里面可以写一些业务代码、异步请求。9.$nextTick实现原理nextTick,它可以在DOM更新完毕之后执行一个回调。当我们需要在dom更新完之后进行某些操作的时候,就会用到$nextTick,原理就是:vue用异步队列的方式来控制DOM更新和nextTick回调先后执行。Vue.js中的nextTick机制确保在DOM更新后执行回调函数。它主要处理在数据变更后,如何确保在DOM实际更新后执行某些操作的问题。以下是其工作原理的详细解释:DOM更新与异步处理: Vue.js 使用异步更新队列来处理DOM更新。当数据发生变化时,Vue不会立即重新渲染DOM,而是将这些变更缓冲起来,并在下一个事件循环“tick”中执行实际的DOM更新。1nextTick的实现: 当开发者调用this.$nextTick()或Vue.nextTick()时,它们实际上是在告诉Vue:“我在这里等待,直到所有的DOM更新完成后再继续执行我的回调函数。” 这通过维护一个回调函数队列实现,确保所有在同一“tick”内的回调都在DOM更新后执行。23回调函数的处理: 当Vue完成DOM的更新后,它会遍历并执行这个队列中的所有回调函数。这样,开发者可以确保他们的代码在DOM实际更新后执行,而不是在数据变更的那一刻。2与Promise的集成:nextTick()方法返回一个Promise对象,这使得开发者可以使用async/await语法来等待DOM更新完成,从而以更简洁的方式编写异步代码。13总体来说,nextTick是Vue.js中一个关键机制,它允许开发者在数据变更后安全地操作DOM,确保所有相关的DOM更新都已完成。10.watch和computer的原理,以及区别当需要在数据变化时执行异步或开销较大的操作时,使用watch最有用的。11.路由导航守卫导航守卫可以控制路由的访问权限。全局前置守卫的回调函数中接收 3 个形参,格式为:不允许跳转到后台主页:next(false)12.路由切换,前进,后退vue-router 提供了许多编程式导航的 API,其中最常用的导航 API 分别是:① this.$router.push(‘hash 地址’)跳转到指定 hash 地址,并增加一条历史记录② this.$router.replace(‘hash 地址’)跳转到指定的 hash 地址,并替换掉当前的历史记录③ this.$router.go(数值 n)实现导航历史前进、后退简化:在实际开发中,一般只会前进和后退一层页面。因此 vue-router 提供了如下两个便捷方法:① $router.back()在历史记录中,后退到上一个页面② $router.forward()在历史记录中,前进到下一个页面13.v-html会有什么问题14.less,sass15.vue中hash路由跟history路由区别Vue中的hash路由和history路由模式是指两种处理路由的方式。hash模式:URL中永远带有#符号,#后面的部分称为hash值。使用window.location.hash来读取或设置hash值,不会引起页面的重新加载。主要用于兼容旧版本的浏览器,因为一些老的浏览器不支持HTML5的history API。history模式:URL中看不到#符号。依赖HTML5 History API(pushState和replaceState方法)实现。需要服务器支持,否则用户直接访问非首页路由时会出现404错误。Vue Router中使用mode属性来设置路由模式:javascriptconst router = new VueRouter({ mode: 'history', // 或者 'hash' routes: [...] });在实际开发中,如果不需要为旧版本浏览器提供支持,或者你不介意URL中带有#符号,可以选择hash模式。如果想要更加现代的URL,并且确信你的服务器配置可以处理路由,可以选择history模式。16.简述vue中虚拟dom和diff算法在Vue中,虚拟DOM是一种抽象层面的表现,它使得Vue可以高效地更新DOM。虚拟DOM是由VNode表示的,是一个抽象的JavaScript对象,用以描述真实DOM的信息。当数据更新时,Vue会重新运行渲染函数,生成新的VNode树,然后Vue会用深度优先的递归比较新旧VNode树的差异,最终只应用必要的变更到真实DOM上,避免了对整个列表进行重新渲染。这个过程就是所谓的"Diff算法"。Vue通过Diff算法比较新旧两棵虚拟DOM树的差异,并只将"Item C"添加到真实的DOM中,这就是虚拟DOM和Diff算法的实际应用。vue虚拟dom和真实dom的区别Vue的虚拟DOM(Virtual DOM)是一种可以理解为在真实DOM之上的抽象层,它使得Vue可以高效地更新DOM。真实DOM:是由浏览器提供的一种抽象层,它使得我们可以用JavaScript操作文档结构。当我们直接操作真实DOM时,会引起浏览器的重绘和重排,性能开销较大。虚拟DOM:是用JavaScript对真实DOM的一种抽象。Vue通过新旧虚拟DOM的对比,找出实际变化的部分,然后只更新这部分,减少对真实DOM的操作,从而提高性能。17.vue 中的 provide 和 inject 用法provide和inject允许你在祖先组件和后代组件之间传递数据,而不需要通过props和events进行逐层传递。provide在祖先组件中定义要传递的数据,inject在后代组件中接收数据。18.vue中父子组件渲染的生命周期执行顺序,19.vue生命周期,在什么时候发请求,通常在create时发请求20.vuex有几部分,每部分的含义21.路由怎么传参,路由跳转有几种方式22.v-if和v-for比较v-for优先级比较高,注意我们不推荐在同一元素上使用v-if和v-for当它们处于同一节点,v-for的优先级比v-if更高,这意味着v-if将分别重复运行于每个v-for循环中。当你只想为部分项渲染节点时,这种优先级的机制会十分有用,如下:li v-for="todo in todos" v-if="!todo.isComplete" { { todo }} /li上面的代码将只渲染未完成的 todo。而如果你的目的是有条件地跳过循环的执行,那么可以将v-if置于外层元素 (或">template) 上。如:ul v-if="todos.length" li v-for="todo in todos" { { todo }} /li /ul p v-elseNo todos left!/p23.插槽1.我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即v-slot指令)。它取代了slot和slot-scope这两个目前已被废弃但未被移除且仍在文档中的 attribute。注意:v-slot只能添加在template上(只有一种例外情况,如下红色字体,)#独占默认插槽的缩写语法当被提供的内容只有默认插槽时,组件的标签才可以被当作插槽的模板来使用。这样我们就可以把v-slot直接用在组件上:current-user v-slot:default="slotProps" { { slotProps.user.firstName }} /current-user这种写法还可以更简单。就像假定未指明的内容对应默认插槽一样,不带参数的v-slot被假定对应默认插槽:current-user v-slot="slotProps" { { slotProps.user.firstName }} /current-user2.跟v-on和v-bind一样,v-slot也有缩写,即把参数之前的所有内容 (v-slot:) 替换为字符#。例如v-slot:header可以被重写为#header:current-user #header="{ user }" { { user.firstName }} /current-user24.uni-app25.组件传值在Vue.js中,组件通信是构建复杂应用的基础。Vue提供了多种方式来实现组件间的通信。以下是几种常见的组件通信方法:1. Props(父子组件通信)‌父组件向子组件传递数据‌:在子组件中,你可以通过props接收从父组件传递过来的数据。!-- 子组件 --template div{ { message }
延伸阅读

更多相关文章

2026/9/19 23:51:50

C语言编程规范设置 (vscode设置)

1.打开vscode设置后 2. 搜索format 3. 把以下选项打上对勾 Editor: Format On Paste Editor: Format On Save Editor: Format On Type4.C_Cpp:这一选项选择以下 Clang_format_fallback Style并输入以下内容{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, …

2026/9/21 17:24:04

伦理量子信息学中伦理相干性三判据深入研究报告

伦理量子信息学中伦理相干性三判据深入研究报告 作者:方见华 单位:世毫九实验室 摘要 伦理相干性三判据是伦理量子信息学(Ethical Quantum Information Theory, EQIT) 的核心充要条件,由世毫九实验室(SHard…

2026/9/20 4:31:25

如何构建食品香精企业配方管理系统?配方管理核心是什么?

你还在苦苦为一个配方在烦恼............ 对于花费大量时间做一个配方,到最后发现同事已经做过 对于原料价格频繁波动,如何实时准确地计算配方成本? 对于成千上万个excel表格存储的配方,如何快速得到想要的那一个? 对于一个配方…

2026/9/22 6:00:09

Overruled源码拆解:搞定这道高频面试题

Overruled源码拆解:搞定这道高频面试题 刚学完 Python 或 Java 基础语法,是不是觉得特别爽?但一让你搭个项目,或者去面试问个底层逻辑,瞬间就懵了。这种“代码会写,项目不会搭”的尴尬,在求职中太常见了。今天咱们不聊虚的,直…

2026/9/22 6:00:09

394源码剖析:环境配置不卡壳的最佳实践

394源码剖析:环境配置不卡壳的最佳实践 配置环境就卡半天?别急,这往往是没看懂底层逻辑。今天咱们直接拆 394 核心源码,看看那些 最佳实践 是怎么从代码里长出来的。 入口定位:从命令行到核心类 很多开发者觉得 394…

2026/9/22 6:00:09

3个维度一文搞懂液体计算:别再只会抄代码了

3个维度一文搞懂液体计算:别再只会抄代码了 刚学完流体动力学公式,对着屏幕上的Navier-Stokes方程发呆?你会背公式,会推导出速度场,但一遇到实际项目——比如模拟管道里的湍流、或者计算阀门前后的压力损失——就彻底懵了。这就是典型的“…

2026/9/22 6:00:09

摩托诺拉性能优化:面试被问懵?3个核心考点拆解

摩托诺拉性能优化:面试被问懵?3个核心考点拆解 面试被问原理答不上来,这种挫败感谁懂? 上周陪一个朋友模拟面试,他卡在“摩托诺拉”这个概念上,支支吾吾半天,面试官直接摇头。…

2026/9/22 5:55:08

幼儿园监控app开发避坑指南:一文搞懂5大报错

幼儿园监控app开发避坑指南:一文搞懂5大报错 盯着满屏红色的 StackTrace,咖啡都喝不动了?别急,这堆天书一样的报错信息,其实都在跟你喊救命。搞了十年后端和移动端,我见过太多新手在 幼儿园监控app…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/22 0:04:49

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点 官方文档几百页翻到头还是懵?面试问到 输电线路在线监测 的数据链路时,脑子一片空白?别慌,这种 高频面试题 我整理了10年,专门治各种“文档太长抓不住重点”的毛病。…

2026/9/22 0:04:49

中介房源管理系统重构避坑:3个关键步骤搞定API变更

中介房源管理系统重构避坑:3个关键步骤搞定API变更 版本升级后 API 全变了,这种痛只有真做过的人懂。 很多团队在接手老旧房产项目时,最崩溃的不是代码烂,而是底层框架升级后,原本熟悉的接口调用方式彻底失效。 这份 保姆级教程…

2026/9/22 0:04:49

3个坑点带你一文搞懂55gg小游戏源码

3个坑点带你一文搞懂55gg小游戏源码 盯着控制台满屏的红色报错,看着那一长串 StackTrace ,是不是脑子瞬间宕机?别急,这种时候最忌讳的就是盲目改代码。很多刚入行的前端同学,面对 55gg 小游戏这类轻量级 H5…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码