当面试官问你“前端如何渲染海量数据”的时候他在想什么?

当面试官问你:**“前端如何渲染海量数据”**的时候,他在想什么?

你可能会觉得他在想peach,毕竟这种问题在实际业务中出现的频率低到陨石撞地球,但是,他还是想问你

暴力渲染也不是不可以,就是用户体验不太好,甚至浏览器可能会崩溃。

既然如此,海量数据,后端就是不给分页,那就前端做个分页呗。

比如一页10条,可以用setTimeout渲染完10条再渲染10条,也可以优化一下,用requestAnimation使其丝滑。

你自信满满给出答案,然后面试官又问:“还有吗?”

你内心已然掀桌,但却依旧面带微笑地回答:

如果不一次性加载,还可以使用无限滚动列表,当滚动条滚动到底部的时候再加载下一页,同时,理论上可以考虑用碎片化文档DocumentFragment来减少回流,虽然在实际测试中DocumentFragment不一定比直接appendChild更快。

你看着面试官薄唇微启,似欲言语,赶忙接着道:

还可以用虚拟列表,根据滚动高度计算当前Y轴的偏移量,只渲染当前这一屏。

面试官沉默几秒,抬头看了你一眼,说:

回去等通知吧。

你心里想,也许这又是一次KPI面试吧。


好了,正文开始~

大家好!!我又双叒叕来划水了🏊(突然社交牛逼起来)

国庆七天小长假,我的行程安排得满满的:

当然,吃吃喝喝也要安排上,什么尝遍八大菜系的外卖啦,深夜的炸鸡烤串大排档啦,每天一个窜稀小技巧不在话下。

偶尔我也会云游一下朋友圈,欣赏祖国的大好山河,然后心安理得地继续在空调底下吃瓜看剧。

要说国庆做的最多的事,那当然还是睡觉。

众所周知,我平时都是这样的:

睡完了七天小长假,我是这样的:

不知道有没有人和我一样,越睡越困越睡越困越睡。。

这就是全部了吗?当然不是!除了吃饭睡觉玩手机,我还水了一篇文章。

没错,就是你现在看到这篇😉

最后,祝大家开工大吉!工作顺利!


往期文章

硬核!手撕源码第一弹: UpdateNotifier

前端转后端是一种怎样的体验

当程序员遇到会写代码的产品经理…

手摸手写个webpack plugin

手摸手写个webpack loader

这锅我背了…

ES2021新特性

用魔法打败魔法:前端代码规范化

手摸手教你搭个脚手架

手摸手教你搭建npm私有库

requestAnimationFrame

面试官到我遇到过的前端技术难题时,我可以分享一个我曾经遇到的题和解决办法。 一个挑战性的题是在前端项目中遇到了性能题,特别是在处理大量数据时。这会导致页面加载缓慢、卡顿或者无响应。为了解决这个题,我采取了以下几个步骤: 1. 代码审查:首先,我仔细检查了前端代码,特别是与数据处理相关的部分。我寻找潜在的性能题,例如重复的计算、冗余的代码、不必要的循环等。通过优化代码,可以提高性能。 2. 数据分批加载:如果页面上需要加载大量数据,我会考虑将数据分批加载。这样可以避免一次性加载大量数据导致页面卡顿。可以通过分页、滚动加载等方式实现。 3. 数据缓存:对于一些频繁使用的数据,我会考虑将其缓存起来,以减少后续的请求和计算。可以使用浏览器的本地存储(localStorage、sessionStorage)或者内存缓存(例如使用缓存库如Redis)来实现数据缓存。 4. 懒加载和按需加载:对于一些不是立即需要展示的内容,我会使用懒加载或按需加载的方式来延迟加载。这样可以减少初始加载的资源量,提高页面的响应速度。 5. 图片优化:如果页面中包含大量图片,我会对图片进行优化,包括使用适当的图片格式、压缩图片大小、延迟加载等。这样可以减少页面的加载时间和带宽消耗。 以上是我在解决性能题时采取的一些常用方法和策略。当然,在实际项目中,具体的解决方案可能会因情况而异。重要的是能够识别题、分析原因,并采取合适的优化策略来提升前端性能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值