当前位置: 首页 > news >正文

JD潜在前端二面高频题解析

京东前端二面的题目通常会涉及技术原理、项目经验、性能优化、安全等多个方面,以下是一些常见的面试题目及答案详解:

Vue相关

  • 虚拟DOM的优缺点
    • 优点:保证性能下限,比起粗暴的DOM操作性能要好很多;无需手动操作DOM,提高开发效率;可以进行更方便地跨平台操作,例如服务器渲染、weex开发等。
    • 缺点:在一些性能要求极高的应用中无法进行针对性的极致优化。
  • Vue中key的作用
    • v-if中使用key:通过使用key来唯一标识一个元素,使该元素不会被复用,用于标识一个独立的元素。
    • v-for中使用key:为每个列表项提供一个key值,以便Vue跟踪元素的身份,从而高效地实现复用,在diff操作中可以更准确、更快速。
  • Vue生命周期有哪些
    • beforeCreate:初始化界面前。
    • created:初始化界面后。
    • beforeMount:渲染DOM前。
    • mounted:渲染DOM后。
    • beforeDestroy:卸载组件前。
    • destroyed:卸载组件后。

前端性能优化相关

  • 如何设计京东秒杀页面前端架构,支撑100万用户同时抢购
    • 分析瓶颈:压测数据显示70%秒杀失败源于请求拥堵和页面卡顿。
    • 出方案:采用静态化+边缘计算架构,页面主体预渲染为静态HTML部署至边缘节点;倒计时与库存用WebSocket实时同步;前端实现排队队列,令牌桶算法控制请求频率。
    • 效果:支撑120万用户并发,响应时间稳定在300ms内,下单成功率98.5%。
  • 怎么优化京东APP购物车组件,兼顾性能与实时性
    • 数据层:采用本地优先策略,先写IndexedDB再异步同步服务端。
    • 渲染层:使用React.memo+useMemo缓存列表,20+商品自动启用虚拟列表。
    • 交互层:批量操作延迟提交,合并请求减少40%接口调用。
    • 效果:滑动帧率从40FPS提升到58FPS,用户操作时间缩短60%。

前端安全相关

  • 讲下常见web攻击:常见的web攻击有XSS(跨站脚本攻击)、CSRF(跨站请求伪造)、DOS(拒绝服务攻击)、SQL注入、点击劫持等。
  • 讲下CSRF以及如何预防:CSRF是攻击者利用用户已登录的身份,伪造用户的请求,向服务器发送恶意请求。预防措施包括在表单中添加随机的token、验证referer字段、使用HTTP-only的cookie等。

其他

  • 一个url从输入按下回车键,到页面展示出来,都经历了什么
    • 首先,DNS服务器会通过当前的网址去解析网址的IP。
    • 然后,浏览器会向web服务器发起一个tcp连接请求(三次握手)。
    • 三次握手结束后,客户端和服务器建立好连接,浏览器开始访问当前服务器下默认的index.html,并调用该访问的资源文件,展示对应的内容。
  • 实现发布-订阅模式
// 定义事件中心
class EventEmitter {constructor() {this.events = {};}// 订阅事件on(eventName, callback) {if (!this.events[eventName]) {this.events[eventName] = [];}this.events[eventName].push(callback);}// 发布事件emit(eventName,...args) {if (this.events[eventName]) {this.events[eventName].forEach(callback => callback(...args));}}// 取消订阅off(eventName, callback) {if (this.events[eventName]) {this.events[eventName] = this.events[eventName].filter(cb => cb!== callback);}}
}

京东前端二面的问题通常会深入一些,主要考察你的技术深度、解决问题的能力以及知识面的广度。下面我为你梳理了一些常见的二面题目和参考答案,希望能帮到你。

👨💻 一、面试流程与考察重点

京东前端二面通常会更加深入,面试官可能由技术骨干或项目负责人担任。考察重点包括:

  • 技术深度:对核心概念的理解是否透彻,如框架原理、浏览器机制、性能优化等。
  • 项目经验与解决问题的能力:如何解决实际开发中遇到的复杂问题,是否有性能优化、前端安全等方面的实践经验。
  • 代码能力:手写代码的逻辑清晰度、代码风格以及对算法和数据结构的理解。
  • 学习能力与潜力:是否持续关注前端新技术,有无总结和复盘的习惯。

🔍 二、核心题目详解

下面是一些京东前端二面中可能出现的经典问题及其解答思路:

1. CSS 与页面布局
  • Flex布局详细介绍
    Flex布局是CSS3中的弹性盒子模型,用于方便地实现响应式布局和各种对齐方式。主要概念包括主轴交叉轴。容器属性如 flex-direction(主轴方向)、justify-content(主轴对齐)、align-items(交叉轴对齐)、align-content(多行对齐);子项属性如 flex-grow(放大比例)、flex-shrink(收缩比例)、flex-basis(初始大小)、order(排序)。
  • 实现div水平垂直居中的多种方法
    • 使用 Flexbox:给父容器设置 display: flex; justify-content: center; align-items: center;
    • 使用 Grid:给父容器设置 display: grid; place-items: center;
    • 使用 绝对定位和变换:子元素设置 position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
    • 使用 绝对定位和负margin:需知道子元素宽高,子元素设置 position: absolute; top: 50%; left: 50%; margin-top: -height/2; margin-left: -width/2;
  • Less/Sass等CSS预处理器的了解
    它们提供了变量、嵌套、混合(Mixin)、函数等功能,能提升CSS的维护性和开发效率。例如,变量用于定义主题色,嵌套反映层级关系,Mixin用于复用样式片段。
2. JavaScript 核心概念
  • 深拷贝与浅拷贝的区别及实现
    浅拷贝只复制对象的第一层属性,深层属性仍是引用。Object.assign() 和扩展运算符 ... 是常见的浅拷贝方法。深拷贝会复制所有层级,创建完全独立的对象。常用方法有:JSON.parse(JSON.stringify(obj))(有局限性,如不能处理函数、循环引用)、递归实现深拷贝函数、使用 lodash.cloneDeep

  • 防抖(Debounce)和节流(Throttle)的概念、应用场景及实现

    • 防抖:连续触发事件时,只在最后执行一次。例如搜索框输入联想、窗口 resize。
    function debounce(func, wait) {let timeout;return function() {const context = this, args = arguments;clearTimeout(timeout);timeout = setTimeout(() => func.apply(context, args), wait);};
    }
    
    • 节流:连续触发事件时,每隔一段时间执行一次。例如滚动加载、按钮频繁点击。
    function throttle(func, wait) {let previous = 0;return function() {const now = Date.now();if (now - previous > wait) {func.apply(this, arguments);previous = now;}};
    }
    
  • call, apply, bind 的区别与实现思路

    • 三者都用于改变函数执行时的 this 指向。
    • callapply 会立即调用函数,call 接收参数列表,apply 接收参数数组。
    • bind 返回一个绑定了 this 和部分参数的新函数,不会立即执行。
    • 手写 bind 大致思路:返回一个函数,在函数内部通过 applycall 执行原函数,并考虑 new 操作符的情况。
3. Vue.js 框架深度
  • Vue 生命周期详解及异步请求在哪一步发起
    Vue 2生命周期包含 beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDestroy, destroyed 等。异步请求通常在 createdmounted 中发起。推荐在 created 中,因为此时数据观测已完成,可更快获取数据减少加载时间,且适用于服务端渲染(SSR)。
  • Vue 2 与 Vue 3 的主要区别
    • 响应式系统:Vue 2 使用 Object.defineProperty,Vue 3 使用 ProxyProxy 能直接监听对象和数组的变化,无需深度遍历,性能更好且支持更多数据结构。
    • Composition API:Vue 3 引入 setup 函数和组合式API,逻辑复用和组织更灵活。
    • 生命周期:Vue 3 将 beforeDestroydestroyed 更名为 beforeUnmountunmounted
    • 多根节点片段:Vue 3 组件支持多个根节点。
    • 性能优化:Vue 3 在打包体积、虚拟DOM等方面进行了优化。
  • Computed 和 Watch 的区别与运用场景
    • Computed:是计算属性,基于依赖的响应式数据进行缓存,只有依赖变化才会重新计算。适合进行数值计算或依赖其他数据的操作。
    • Watch:是侦听器,观察特定数据的变化并执行副作用操作(如异步操作、复杂逻辑)。无缓存性
    • 运用场景:需要依赖其他数据得到结果时用 computed;需要在数据变化时执行异步或开销较大的操作时用 watch
  • Vuex 的核心概念及为什么使用 Vuex
    Vuex 是 Vue 的状态管理库,用于管理应用的所有组件的共享状态。核心概念:
    • State:存储应用状态的数据源。
    • Getters:基于 state 派生出一些状态,类似计算属性。
    • Mutations同步修改 state 的唯一途径。
    • Actions:提交 mutation,可包含异步操作。
    • Modules:将 store 分割成模块,便于管理大型应用。
      使用Vuex的原因:当多个组件需要共享状态,尤其是跨组件通信变得复杂时,Vuex 提供了集中式的状态管理,使得状态变化更可预测和调试。
  • 虚拟DOM (Virtual DOM) 与 Diff 算法
    • 虚拟DOM:是用 JavaScript 对象描述真实 DOM 的轻量级对象。优点:保证性能下限(比直接操作 DOM 快)、无需手动操作 DOM、跨平台(如 SSR)。缺点:无法进行极致优化(相比手动操作最高效的 DOM)。
    • Diff 算法:Vue 通过 Diff 算法对比新旧虚拟 DOM,高效更新真实 DOM。Vue 的 Diff 算法是同层级比较,时间复杂度优化到 O(n)。它使用四种命中查找策略(旧前新前、旧后新后、旧前新后、旧后新前)来尽可能复用节点。
  • v-ifv-show 的区别
    • v-if:是“真正”的条件渲染,元素会被销毁和重建。它是惰性的,初始为假则什么都不做。切换开销高。
    • v-show:只是切换 CSS 的 display 属性,元素始终被渲染并保留在 DOM 中。初始渲染开销高。
    • 运用场景v-if 适用于运行时条件很少改变的场景;v-show 适用于需要非常频繁切换的场景。
4. 前端工程化与性能优化
  • Webpack 的了解及常用优化手段
    Webpack 是静态模块打包器。常见优化:
    • 代码分割 (Code Splitting):利用 SplitChunksPlugin 分离公共代码和第三方库,动态导入按需加载。
    • Tree Shaking:移除 JavaScript 上下文中的未引用代码,依赖 ES6 模块语法。
    • 压缩代码:使用 TerserWebpackPlugin 压缩 JS,CssMinimizerWebpackPlugin 压缩 CSS。
    • 缓存:配置 cache 选项持久化缓存,提升构建速度。
    • Bundle 分析:使用 webpack-bundle-analyzer 分析包内容,针对性优化。
  • 前端性能优化的常见手段
    • 网络层面:减少 HTTP 请求(合并文件、雪碧图)、开启 Gzip 压缩、使用 HTTP/2、利用浏览器缓存(强缓存、协商缓存)、CDN 加速、图片优化(压缩、懒加载)。
    • 渲染层面:减少 DOM 操作、避免重排和重绘、使用 CSS3 动画代替 JavaScript 动画、使用 requestAnimationFrame、防抖和节流。
    • JS 与 CSS:CSS 放在 <head>,JS 放在 <body> 底部或使用 defer/async、减少重绘回流。
  • 前端安全:XSS 与 CSRF
    • XSS (跨站脚本攻击):攻击者向网站注入恶意脚本,在用户浏览器执行。防御:对用户输入进行转义(如 HtmlEncode)、使用 CSP(内容安全策略)、设置 HttpOnly Cookie。
    • CSRF (跨站请求伪造):攻击者诱导用户进入第三方网站,利用用户尚未失效的登录状态向被攻击网站发起恶意请求。防御:使用 Token(如 Anti-CSRF Token)、验证 Referer 字段、设置 SameSite Cookie(Strict 或 Lax)。

💡 三、面试准备建议

  1. 深入理解原理:面试官喜欢追问“为什么”,不能满足于会用,要理解背后的机制,比如 Virtual DOM 的 diff 算法具体策略。
  2. 梳理项目经验:准备一两个你深度参与的项目,清晰描述项目背景、你负责的内容、遇到的挑战(如性能问题、复杂业务逻辑)、解决问题的具体方案和思考过程、最终的成果和数据(如果有)。这是展示你解决问题能力和实战经验的关键。
  3. 持续学习与复盘:面试官可能会考察你的学习能力和热情。聊聊你近期关注的前端新技术(如 Vue 3 的 Composition API, Vite, 微前端等),或者平时如何学习(看源码、博客、技术社区),以及是否有总结复盘的习惯。
  4. 手写代码能力:保持刷题手感,重点关注数组操作、字符串处理、DOM操作、常见算法(如排序、查找)以及闭包、原型链等JS基础的代码实现。

⚠️ 四、面试注意事项

  • 诚实很重要:会的就说,不会的可以坦诚承认,并表达愿意学习的积极态度。切忌不懂装懂。
  • 沟通与表达:回答问题时思路清晰,有条理。可以先思考几秒钟,组织一下语言再回答。
  • 主动引导:在介绍项目或回答问题时,可以适当引导到你熟悉的领域,展示你的长处。
  • 准备问题:面试最后通常可以提问,准备一些有深度的问题,例如团队的技术栈、业务挑战、未来的技术规划等,体现你的思考和对公司的兴趣。

以下是一些京东前端二面可能会问到的更多面试题目:

  • 技术原理类
    • V8垃圾回收在购物车场景的优化:请按“机制-问题-优化”三步回答。参考答案为,机制是V8分代回收中,购物车数据长期驻留会进入老生代(Mark-Sweep算法);问题是大促50+商品时,老生代回收会导致100ms+阻塞,引发下单超时;优化方法是用WeakMap存储非核心数据+对象池复用组件,内存占用从800MB降至350MB,回收阻塞压缩至15ms。
    • 浏览器解析渲染页面的过程:浏览器首先会进行DNS解析,获取服务器的IP地址,然后建立TCP连接,发送HTTP请求获取页面资源。接着浏览器开始解析HTML文件,构建DOM树,同时解析CSS文件,构建CSSOM树。当DOM树和CSSOM树构建完成后,会将它们合并成渲染树,然后进行布局计算,确定元素在页面中的位置和大小,最后进行绘制,将页面显示在屏幕上。
    • 说下HTTP和HTTPS的区别:HTTP是超文本传输协议,明文传输数据,安全性较低,端口号通常为80;HTTPS是安全超文本传输协议,对数据进行加密传输,安全性高,端口号通常为443。HTTPS需要申请SSL/TLS证书,增加了一定的成本和复杂度,但能有效防止数据被窃取和篡改。
  • 项目经验类
    • 你在项目中是如何保证前端代码的可维护性和可扩展性的:可以从代码结构设计、组件化开发、遵循编码规范、使用版本控制系统等方面进行回答。例如,采用模块化的方式组织代码,将功能独立的部分封装成组件,方便复用和维护;制定统一的编码规范,确保团队成员的代码风格一致;使用Git等版本控制系统,方便跟踪代码的变更和回滚。
    • 在你之前的项目中,有没有遇到过性能瓶颈?是如何解决的:可以结合具体项目案例,说明遇到的性能问题是什么,比如页面加载速度慢、动画卡顿等,然后阐述采取的优化措施,如优化图片大小、减少HTTP请求、使用缓存、优化JS代码等,以及最终达到的效果。
    • 讲讲你在项目中是如何与后端开发人员协作的:可以提到在项目开始前,共同参与需求讨论和接口设计,明确数据交互的格式和规则;在开发过程中,通过接口文档进行沟通,及时反馈接口问题和数据处理情况;在测试阶段,与后端人员一起排查问题,解决数据不一致等问题。
  • 性能优化类
    • 电商场景前端缓存一致性问题如何解决:可以采用“三级缓存+主动失效”策略。内存缓存存当前会话商品数据(有效期5分钟),本地缓存用IndexedDB存最近浏览商品(上限100条),服务端缓存配合京东CDN的stale-while-revalidate策略,失效机制通过WebSocket订阅价格变动,618模拟测试缓存命中率92%。
    • 如何优化前端页面的首屏加载时间:可以从优化网络请求、减少资源大小、提前加载关键资源、优化渲染过程等方面回答。比如,压缩CSS、JS和图片文件;使用懒加载技术,延迟加载非关键资源;对首屏需要展示的内容进行预渲染;合理设置缓存策略,减少重复请求等。
  • 安全类
    • XSS攻击和SQL注入原理,如何防范:XSS攻击原理是攻击者在网页中注入恶意脚本,当用户访问该网页时,脚本会在用户浏览器中执行,从而窃取用户信息或进行其他恶意操作。防范措施包括对用户输入进行严格过滤和转义,避免直接将用户输入插入到HTML中;使用HttpOnly属性的Cookie,防止Cookie被脚本窃取。SQL注入攻击原理是攻击者通过在输入框中输入恶意的SQL语句,篡改SQL查询语句,从而获取或修改数据库中的数据。防范措施包括使用参数化查询,将用户输入与SQL语句分离;对用户输入进行严格的合法性检查,限制输入的字符类型和长度等。

文章转载自:

http://KP2atlAV.qqhfc.cn
http://9nq7X53X.qqhfc.cn
http://TsgfvpTt.qqhfc.cn
http://KIdI7rAO.qqhfc.cn
http://04DfpNDT.qqhfc.cn
http://modgxerl.qqhfc.cn
http://Diol1qi6.qqhfc.cn
http://mpSE2JVV.qqhfc.cn
http://6GjouQE6.qqhfc.cn
http://QNoZF5W3.qqhfc.cn
http://51EPxWLW.qqhfc.cn
http://MdH1Hy0A.qqhfc.cn
http://oGrzm9g3.qqhfc.cn
http://n4MZCBMH.qqhfc.cn
http://RBrn9z3N.qqhfc.cn
http://g6z6cp4n.qqhfc.cn
http://v2c5Tgfx.qqhfc.cn
http://Bvl93iem.qqhfc.cn
http://QhEHoHa9.qqhfc.cn
http://c5fry8YM.qqhfc.cn
http://O6hnSAP4.qqhfc.cn
http://lM6EzCsS.qqhfc.cn
http://OQPPjyOc.qqhfc.cn
http://ZwnkJs0L.qqhfc.cn
http://aOoWvKcx.qqhfc.cn
http://RVYgikLf.qqhfc.cn
http://AMvL1NmO.qqhfc.cn
http://V0K5CElz.qqhfc.cn
http://SKNdurvE.qqhfc.cn
http://iT8cmQL5.qqhfc.cn
http://www.dtcms.com/a/362581.html

相关文章:

  • mysql5.6+分页时使用 limit+order by 会出现数据重复问题
  • 蓝桥杯算法之基础知识(5)
  • 基于Spark的新冠肺炎疫情实时监控系统_django+spider
  • 数据结构与算法个人学习代码笔记包含leetcode,海贼oj,蓝桥杯,ACM
  • 华为Fit4:腕间助手,守护你的健康,带你开启智慧生活
  • 【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
  • 2025最新“Java 面试八股文 + 各大厂的面试真题”限时开源
  • 美团 LongCat 开源大模型60 亿参数 MoE 架构,赋能开发者加速 AI 应用落地
  • 本地搭建并使用 Redmine 详细教程
  • CICD 持续集成与持续交付
  • SGLang推理引擎--高效的开源部署方案
  • 【第四章:大模型(LLM)】09.最强开源大模型:Llama3 原理介绍与实现-(6)Llama2 Llama3代码实现
  • Wifi开发上层学习1:实现一个wifi搜索以及打开的app
  • 零依赖每月工作计划备忘录:高效管理你的每一天
  • Qt 创建的C++ 桌面程序 学习笔记1
  • Elasticsearch创建索引分片和副本大小建议
  • iOS XML 处理利器:CNXMLParser 与 CNXMLDocument 深度解析
  • iOS15如何绕过MDM锁?详细图文教程教你搞定
  • 数据结构:基数排序 (Radix Sort)
  • uni-app iOS 性能监控与调试全流程:多工具协作的实战案例
  • Qt中QSettings的键值使用QDataStream进行存储
  • 【Vue2 ✨】Vue2 入门之旅(七):事件处理
  • 从spring MVC角度理解HTTP协议及Request-Response模式
  • 自学嵌入式第三十二天:网络编程-UDP
  • 基于单片机醉酒驾驶检测系统/酒精检测/防疲劳驾驶设计
  • Angular事件处理全攻略:从基础到进阶的完整指南
  • GEO 应用实践研讨会:探索行业新路径,激发企业新活力
  • IoT Power软件 -- 每次开启强制升级解决方法
  • DVWA靶场通关笔记-DOM型XSS(Impossible级别)
  • CentOS7.6