每天5道前端面试题 | 大厂篇
创始人
2024-05-30 10:51:48
0

第 1 题:写 React / Vue 项目时为什么要在列表组件中写 key, 其作用是什么?

key 是给每一个vnode 的唯一id,可以依靠key,更准确,更快的拿到oldVnode 中对应的 vnode 节点

第 2 题:[‘1’, ‘2’, ‘3’].map(parseInt) what & why ?

第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1,NaN, NaN]。
首先让我们回顾一下,map 函数的第一个参数 callback。这个 callback 一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引。
arr.map(callback: (value: T, index: number, array: T[]) => U, thisArg?: any);
而 parseInt 则是用来解析字符串的,使字符串成为指定基数的整数。接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。parseInt(string, radix)
了解这两个函数后,我们可以模拟一下运行情况
表示的数中,最大值小于 2,所以无法解析,返回 NaNparseInt(‘3’, 2) //基数为2(2 进制)表示的数中,最大值小于 3,所以无法解析,返回 NaN

第 3 题:什么是防抖和节流?有什么区别?如何实现?

防抖——触发高频事件后 n 秒后函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间;

function debounce(fn) {let timeout = null
// 创建一个标记用来存放定时器的返回值
return function() { clearTimeout(timeout)
// 每当用户输入的时候把前一个 setTimeout clear 掉timeout = setTimeout(() => {
// 然后又创建一个新的 setTimeout, 这样就能保证输入字符后的interval 间隔内如果还有字符输入的话,就不会执行 fn 函数fn.apply(this, arguments)}, 500)
}}function sayHi() {
console.log(' 防 抖 成 功 ')}
var inp = document.getElementById('inp')inp.addEventListener('input',debounce(sayHi)) // 防抖

节流——高频事件触发,但在 n 秒内只会执行一次,所以节流会稀释函数的执行频率。

function throttle(fn) { let canRun = true  return function() {  通过闭包保存一个标记if (!canRun) return// 在函数开头判断标记是否为 true,不为 true 则 returncanRun = false // 立即设置为 falsesetTimeout(() => {fn.apply(this, arguments)// 最后在 setTimeout 执行完毕后再把标记设置为 true(关键) 表示可以执行下一次循环了。当定时器没有执行的时候标记永远是 false,在开头被return 掉canRun = true}, 500)}}function sayHi(e) { console.log(e.target.innerWidth,e.target.innerHeight)}window.addEventListener('resize', throttle(sayHi))

第 4 题:介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

Set——对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用WeakSet——成员都是对象;成员都是弱引用,可以被垃圾回收机制回收,可以用来保存 DOM 节点,不容易造成内存泄漏;
Map——本质上是键值对的集合,类似集合;可以遍历,方法很多,可以跟各种数据格式转换。
WeakMap——只接受对象最为键名(null 除外),不接受其他类型的值作为键名;键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收, 此时键名是无效的;不能遍历,方法有 get、set、has、delete。

第 5 题:介绍下深度优先遍历和广度优先遍历,如何实现?

深度优先遍历——是指从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续找它的下一个顶点进行访问。重复此步骤,直至所有结点都被访问完为止。
广度优先遍历——是从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点所有未被访问的邻结点,访问完后再访问这些结点中第一个邻结点的所有结点,重复此方法,直到所有结点都被访问完为止。

//1.深度优先遍历的递归写法 function deepTraversal(node) {let nodes = []if (node != null) {nodes.push[node]let childrens = node.childrenfor (let i = 0;i < childrens.length; i++) deepTraversal(childrens[i])}	return nodes}
//2.深度优先遍历的非递归写法 function deepTraversal(node) {let nodes = []if (node != null) {let stack = []//同来存放将来要访问的节点stack.push(node)while (stack.length != 0) {let item = stack.pop()
//正在访问的节点nodes.push(item)let childrens = item.children for (let i = childrens.length - 1;i >= 0;i--)
//将现在访问点的节点的子节点存入 stack,供将来访问stack.push(childrens[i])}}return nodes}
//3.广度优先遍历的递归写法 function wideTraversal(node) {let nodes = [],i = 0if (node != null) {nodes.push(node)wideTraversal(node.nextElementSibling)node = nodes[i++]wideTraversal(node.firstElementChild)}return nodes}//4.广度优先遍历的非递归写法 function wideTraversal(node) {(node != null) { nodes.push(node)node = nodes[i++]let childrens = node.childrenfor (let i = 0;i < childrens.length;i++) {nodes.push(childrens[i])}}}

相关内容

热门资讯

雄安新区举办毕业生就业专场招聘... 今天(5月10日),雄安新区举办2025年毕业生就业招聘会。这次招聘共吸引170多家单位参会,提供就...
联合国前副秘书长:中国和平发展... 2025年是联合国成立和世界反法西斯战争胜利80周年。作为世界反法西斯战争的东方主战场和主要战胜国之...
突然爆火!从70元炒到3000... 近日在社交平台上古力娜扎、刘诗诗虞书欣、鞠婧祎、张凌赫等一众明星拍的撕拉片受到年轻人的追捧相关话题也...
这类肉制品,重点排查整治! 转自:西安发布日前,市场监管总局印发《关于开展整治制售假劣肉制品专项行动的通知》,部署各地市场监管部...
湖州市委书记陈浩:奋斗的湖州正... 品牌,让世界更美好。5月10日,2025世界品牌莫干山大会开幕式暨主论坛在浙江省湖州市德清县召开。湖...
外交部谈印巴局势升级 外交部发言人就印巴局势升级答记者问。问:近来,印度和巴基斯坦之间的紧张局势持续升级。巴基斯坦方面表示...
岗位多多!贵州5月招聘信息汇总 时光匆匆转眼,五月将过半你找到合适的工作了吗?多彩妹整理了贵州近期的招聘信息赶紧来看看贵阳市国防动员...
无证驾驶遇检查,男子掏出亲戚驾... 来源:广西交警微发布 法律规定驾车必须取得相应的驾驶资格但还是有个别驾驶人心存侥幸无证驾车遇交警检查...
雷军发文:过去一个多月,是创办... 5月10日上午小米集团董事长兼CEO雷军发文称过去一个多月是创办小米以来最艰难的一段时间随后相关话题...
万华化学“好房子”解决方案:创... 今年的《政府工作报告》提出,适应人民群众高品质居住需要,完善标准规范,推动建设安全、舒适、绿色、智慧...
一文速览!巴基斯坦“铜墙铁壁”... 巴基斯坦军方官员10日表示,巴军方已启动代号为“铜墙铁壁”的军事行动,回应印军对巴多地的导弹袭击。本...
“再做一次”救了他!29岁男子... 转自:扬子晚报只有29岁的曹先生(化姓)由于胃不太舒服去医院就诊,原本以为多半是消化不良,配点药吃吃...
护学育军娃,朝阳区军人子女入学... 转自:北京日报客户端军人子女入学不仅是万千官兵的“心头事”,更是双拥工作的“关键事”。为切实解决军人...
德法英领导人前往基辅,火车上发... 参考消息网5月10日报道 据德国新闻电视频道网站5月9日报道,德国总理默茨与法国总统马克龙、英国首相...
联合国儿基会批美以“新加沙援助... 以色列从3月起全面禁止人道主义援助进入加沙地带,加沙民众的温饱和健康面临严重危机。面对国际社会谴责,...
余金富调研高考备考及高考准备工... 转自:广东阳江发布5月9日,市委副书记、市长余金富调研高考备考及高考准备工作,强调要压紧压实各方工作...
我国工业控制领域核心技术攻关取... 格隆汇5月10日|由国家能源投资集团有限责任公司牵头,中国华能集团有限公司、中国华电集团有限公司、华...
【中国那些事儿】俄专家:中俄人... 来源:中国日报网 中国日报网5月10日电 俄罗斯新西伯利亚大学首席研究科学家、俄罗斯AGI社区创始人...
你恐慌我贪婪!逾百亿资金借道E...   本周股指涨跌互现,沪深两市股票型ETF和跨境型ETF合计净流出约130亿元。  行业主题上看,芯...
刘姓股民向*ST泛海发起索赔 ...   受损股民可至Hehson股民维权平台登记该公司维权:http://wq.finance.sina...