知识点标签

JavaScript面试题解析

JavaScript 相关面试题,覆盖语言机制、对象模型、this 和手写实现。

31 道题 1 个岗位 7 个公司

JavaScript相关面试题

节流函数如何实现?

这道题考察的不是背出一个节流函数片段,而是能否清楚说明高频事件限流的边界语义:节流与防抖的区别、时间戳方案和定时器方案的触发时机差异、是否支持首次立即执行与最后一次补偿执行,以及如何正确保留 this、参数、取消能力和返回值限制。

箭头函数和普通函数有什么区别?

箭头函数是 ES6 引入的一种更简洁的函数写法,但它不只是语法糖。它最大的特点是没有自己的 this、arguments、super 和 new.target,其中 this 会按词法作用域从外层函数或模块环境中捕获,因此特别适合回调、数组方法和需要保留外层 this 的场景;但它不能作为构造函数,也没有 prototype,不适合对象方法、原型方法、构造器、事件处理器中依赖动态 this 的场景。

vue2是怎么进行数组的方法重写的?

Vue2 对数组响应式的核心不是给每个下标都做 Object.defineProperty,而是创建一个继承自 Array.prototype 的 arrayMethods,重写 push、pop、shift、unshift、splice、sort、reverse 这 7 个会改变数组自身的方法。数组被 observe 时会挂上 __ob__,并把当前数组实例的原型指向 arrayMethods;调用被重写的方法后,Vue2 会先执行原生数组操作,再对新增元素 observeArray,最后通过 ob.dep.notify() 通知依赖更新。

说一下position的几个属性 css 有哪些单位?

这道题可以分成两部分回答:先讲 CSS 的 position 定位机制,包括 static、relative、absolute、fixed、sticky 的行为、参照物、是否脱离文档流以及对层叠关系的影响;再讲 CSS 单位体系,包括绝对单位、字体相关相对单位、视口单位、百分比以及时间、角度、分辨率等专用单位。核心不是背属性名,而是说明元素如何确定自己的位置、尺寸如何继承或换算,以及不同单位在响应式布局、可访问性和动画中的使用边界。

react18的事件系统相比于之前有什么变化?

React 18 的事件系统不是一次彻底重写,而是在 React 17 已经完成的 root 级事件委托基础上,进一步和自动批处理、事件优先级、并发渲染调度协同。回答时应先区分 17 和 18 的边界:委托位置从 document 迁移到 root 容器主要发生在 React 17,React 18 更重要的变化是让事件更新进入统一批处理模型,并根据事件优先级影响更新调度。

JavaScript 原型链的查找机制是什么?

JavaScript 原型链的查找机制,本质是对象属性访问时的一套逐级委托规则:先查对象自身属性,找不到再沿对象内部的 [[Prototype]] 指向继续查找,直到找到属性或到达 null 为止。面试中不仅要能说出查找顺序,还要区分 __proto__、构造函数的 prototype、实例对象之间的关系,并理解属性屏蔽、hasOwnProperty、in、class 语法糖这些高频追问点。

let、const 和 var 有什么区别?

这道题考察的不只是三种声明方式的表层语法,而是 JavaScript 变量绑定模型:作用域边界、提升行为、暂时性死区、重复声明、重新赋值、全局对象映射、循环闭包以及 const 对引用值的真实约束。面试中应从执行上下文和词法环境解释差异,再落到工程实践:默认使用 const,需要变更绑定时用 let,尽量避免 var。

JavaScript 数据类型有哪些?堆和栈在存储上有什么区别?

JavaScript 数据类型有哪些?堆和栈在存储上有什么区别?这道腾讯牛客题的关键是围绕“JavaScript 数据类型与堆栈存储”讲清概念、机制、取舍和边界。JavaScript 数据类型可以先分为原始类型和引用类型。原始类型包括 undefined、null、boolean、number、bigint、string、symbol;对象、数组、函数等属于引用类型。堆和栈的区别要从变量绑定和对象存储解释,而不是简单说某个类型绝对在栈上。