首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
面试题专栏
undefined_AlvinLin
创建于2022-12-19
订阅专栏
前端面试题
等 1 人订阅
共56篇文章
创建于2022-12-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
遍历数组,for和forEach哪个快?(JS底层原理)
答案 for 更快 forEach 每次都要创建一个函数来调用,而for不会创建函数 函数需要独立的作用域,会有额外的开销 划重点 越“低级”的代码,性能往往越好 日常开发别只考虑性能,forEach
虚拟DOM(vdom)真的很快吗?
vdom Virtual DOM 虚拟DOM 用JS对象模拟DOM节点数据 由React最先推广使用 Vue React 等框架的价值 组件化 数据视图分离,数据驱动视图————这是核心!(更加关注业
浏览器和nodejs的事件循环有什么区别?
单线程和异步 JS是单线程的(无论在浏览器还是nodejs) 浏览器中JS执行和DOM渲染同一个线程 异步 宏任务和微任务 宏任务,如setTimeout setInterval 网络请求 微任务,如
JS内存泄漏如何检测?场景有哪些?
垃圾回收GC 什么是垃圾回收? 引用计数(之前) 标记清除(现代) 从js的根(window)遍历各个属性,看看能不能得到某个对象,如果得到,保留,得不到,则删除
JS:为什么0.1 + 0.2 !== 0.3
计算机使用二进制存储数据 整数转换二进制没有误差,如9转换成二进制是1001 而小数可能无法用二进制准确表达,如0.2转换为1.1001100... (不光JS,其他编程语言也一样) 扩展 可用第三方
用JS切换字母大小写
切换字母大小写 输入一个字符串,切换其中字母的大小写 如,输入字符串12aBc34,输出字符串12AbC34 常见思路 正则表达式 通过ASCII码判断 代码 正则 ASCII 功能测试 结果: 性能
算法:用JS实现数字千分位格式化
将数字千分位格式化,输出字符串 如输入数组12050100,输出字符串12,050,100 (注意:逆序判断) 常见思路 转换位数组,reverse,每3位拆分 使用正则表达式 使用字符串拆分 使用数
算法:JS获取1-10000之前所有的对称数(回文数)
对称数 求1-10000之前的所有对称数(回文) 例如:0,1,2,11,22,101,232,1221 思路1 - 使用数组反转、比较 数字转换为字符串,再转换为数组 数组revers,再join为
算法:用JS实现快速排序,并说明时间复杂度
固定算法,固定思路 找到中间位置 midValue 遍历数组,小于midValue放在left,否则放在right 继续递归。最后concat拼接,返回 细节 获取midValue的两种方式 使用sp
算法:获取字符串中连续最多的字符及次数
传统思路 嵌套循环,找出每个字符串的连续次数,并记录 看似时间复杂度是O(n^2) 但实际时间复杂度是多少?---O(n) 因为有跳步 嵌套循环思路代码: 结果: 双指针思路 O(n) 定义指针i和j
React Hooks 如何模拟组件生命周期?
模拟 componentDidMount 模拟 componentDidUpdate 模拟 componentWillUnmount 代码示例如下:
React高阶组件HOC
参数是组件,返回值也是组件的函数就是HOC。 举例说明即可: React.forwardRef ReactRedux 的 connect ReactRouter 的 withRouter 参考: ht
React 如何实现组件间通信?如何理解 Redux?
如何实现组件间通信 父子组件通信:props + 函数 爷孙组件通信:两层父子通信或者使用 Context.Provider 和 Context.Consumer 任意组件通信:其实就变成了状态管理了
React有哪些生命周期钩子函数?数据请求放在哪个钩子里?
挂载时调用 constructor,更新时不调用 更新时调用 shouldComponentUpdate 和 getSnapshotBeforeUpdate,挂载时不调用 should... 在 re
React 虚拟DOM的原理是什么?
1. 是什么 虚拟 DOM 就是虚拟节点(这句汉化很重要)。React 用 JS 对象来模拟 DOM 节点, 然后将其渲染成真实的 DOM 节点 2. 怎么做 第一步是模拟,用 JSX 语法写出来的
算法:将数组中的0移动到末尾
如输入[1,0,3,0,11,0] 输出 [1,3,11,0,0,0] 只移动0,其他顺序不变 必须在原数组进行操作 如果不限制“必须在原数组操作” 定义part1 part2 两个数组 遍历数组,非
算法:JS求斐波那契数列的第n值 + 连环问:青蛙跳台阶
斐波那契数列 用JS计算斐波那契数列的第n个值 注意时间复杂度 公式 f(0) = 0 f(1) = 1 f(n) = f(n - 1) + f(n - 2) 递归 递归 - 大量的重复计算 优化 不
算法:求一个二叉搜索树的第k小值
二叉树 是一棵树 每个节点,最多只能由2个子节点 树节点的数据结构 { value, left?, right?} 二叉树的遍历 前序遍历: root -> left -> right 中序遍历: l
算法:给一个数组,找出其中和为n的两个元素
有一个递增的数组[1,2,4,7,11,15] 和一个n=15 数组中有两个数,和是n。即4+11===15 写一个JS函数,找出这两个数 常规思路 嵌套循环,找到一个数,然后去遍历下一个数,求和,判
算法:用JS实现二分查找,并说明时间复杂度
思路: 递归 - 代码逻辑更加清晰 非递归 - 性能更好 时间复杂度O(logn) - 非常快 非递归实现: 递归实现 性能测试 划重点 凡有序,必二分 凡二分,时间复杂度必然包含O(logn)
下一页