算法大数相加,为什么会有这个限制?
最大安全整数:±9,007,199,254,740,991(即 ±(2^53 - 1))
9007199254740992 + 1 === 9007199254740992; // true(精度丢失)
0.1 + 0.2 === 0.30000000000000004; // true(小数计算误差)
9007199254740992 + 1 === 9007199254740992; // true(精度丢失)
0.1 + 0.2 === 0.30000000000000004; // true(小数计算误差)
限制的根本原因:IEEE 754 标准
JavaScript 的 Number 类型使用 64 位双精度浮点数存储,结构如下
组成部分 | 位数 | 作用 | 范围/限制 |
---|---|---|---|
符号位 | 1 bit | 标识正负(0正/1负) | - |
指数位 | 11 bit | 决定数值范围 | -1022 ~ 1023(偏移量1023) |
尾数位 | 52 bit | 存储有效数字(决定精度) | 最大表示 1.111...1(52个1) |
关键限制:
- 整数精度:尾数仅 52 位,因此能精确表示的整数上限为 2^53 - 1(安全整数)。
- 小数精度:部分十进制小数无法用有限位二进制表示(如 0.1),存储时被迫舍入。
- 数值范围: 最大值:≈1.7977e+308(Number.MAX_VALUE) 最小值:≈5e-324(Number.MIN_VALUE)
模块化了解吗,es和cmj,treeshaking是怎么做的
webpack自己写了什么插件
- 字体压缩
- 图片压缩
webpack热更新是怎么监听文件的变化
webpack热更新是怎么让文件能在浏览器上跑的
sourceMap是怎么找到对应的文件行列的
Source Map 通过 mappings 的分层结构与 VLQ 编码,将编译后代码的行列位置映射回原始文件。其设计兼顾效率(相对偏移、变长编码)与精度(行列级映射),是前端调试复杂构建代码的核心基础设施。实际应用中,只需配置构建工具(如 Webpack)生成 Source Map,浏览器会自动完成映射。
instanceOf是怎么判断类型的
浏览器自定义的请求头有哪些限制
自定义响应头名称:
- 由大小写字母、短划线和数字组成。
- 长度为1~100个字符。 建议X-开头,如 X-User-Id
js实现三行省略,怎么判断那三个点在哪个字后面
小程序flex布局,三个元素不想其中一个被压缩
通过设置flex-shrink: 0配合合理的flex-basis值,你可以精确控制小程序中哪个元素在空间不足时不被压缩。建议同时设置flex-grow: 0来防止该元素不必要的扩大。这种方案确保了页面的布局稳定性和用户体验的一致性。
AI相关,flow?
不同程序之间样式表现不太一样怎么办
小程序DPR是什么
DPR(Device Pixel Ratio,设备像素比) 是核心适配概念,用于解决不同设备屏幕显示精度差异的问题。 DPR表示 物理像素(设备实际像素点数量)与逻辑像素(CSS/设备独立像素)的比值,计算公式为: DPR = 物理像素 / 逻辑像素 例如:
iPhone 6 的物理分辨率为 750×1334,逻辑分辨率为 375×667,其 DPR 为 2。 若某设备 DPR=3,则 1 个逻辑像素对应 3×3 个物理像素点。
为何小程序需关注 DPR?
- 显示清晰度:高 DPR 设备(如 Retina 屏)需更高分辨率图片,否则图片会模糊。
- 布局适配:忽略 DPR 可能导致元素错位、尺寸偏差(如 1px 边框在高 DPR 设备变粗)。
- 性能优化:根据 DPR 动态加载适配图片,减少带宽消耗。
小程序中如何适配 DPR?
- 使用 rpx 单位: 小程序特有自适应单位,1rpx = 屏幕宽度 / 750。以 iPhone6(逻辑宽度 375px,DPR=2)为例,1rpx = 0.5px 逻辑像素,最终渲染为 1 物理像素,完美解决多端适配。
- 图片多倍图方案: 为不同 DPR 设备提供对应分辨率的图片(如 @2x、@3x),通过 CSS 媒体查询或小程序内置机制加载。
- 避免硬编码尺寸: 使用 flex 布局、百分比或 rpx 替代 px,确保元素随屏幕自适应。
DPR 是连接物理设备与开发逻辑的核心桥梁。理解 DPR 并善用 rpx 单位,可高效实现小程序“一次开发,多端适配”的目标,避免显示失真与性能浪费
项目里用代码规范了吗,eslint是怎么检测代码错误的
ESLint 检测代码错误的核心原理是通过 静态代码分析,结合 抽象语法树(AST) 和 可配置规则 实现。 通过 AST 解析 + 规则匹配,ESLint 在不执行代码的前提下,实现了对代码风格、潜在错误的精准静态分析。
- ESLint 首先使用解析器(如默认的 Espree 或自定义的 @babel/eslint-parser、@typescript-eslint/parser)将源代码解析为 AST。 AST 是代码结构的树状表示,每个节点对应代码中的语法元素(如变量声明、函数调用等),并包含位置信息(行号、列号)
- ESLint 根据配置文件(如 .eslintrc.js)中的规则集合,深度优先遍历 AST。每条规则是一个独立的插件,通过 访问者模式(Visitor Pattern) 监听特定类型的节点。当节点匹配规则条件时,触发错误或警告
小程序瀑布流怎么实现,如果计算过程中,你们是怎么展示
npm命令是怎么知道有这些命令的
脚手架原理,npm原理 当你运行npm run命令时,会发生什么npm 常用命令是如何执行的