深圳锐明技术前端开发笔试题

目录

1. JavaScript 计算浏览器的刷新频率

2. 同源策略是什么?如何解决或避免浏览器同源请求和并发限制?

3. 数组分堆

4. 将一个数组对象改为树状结构


1. JavaScript 计算浏览器的刷新频率

实现计算浏览器刷新频率的思路如下:

  1. 使用浏览器的重绘机制:利用 requestAnimationFrame 函数在每次浏览器重绘时执行回调。

  2. 帧计数:在回调函数中,每次调用时增加一个帧计数器,记录在特定时间内的渲染次数。

  3. 时间监测:设置一个1秒的时间窗口,监测自上次计数以来经过的时间。

  4. 输出与重置:当时间窗口结束时,输出当前的帧数,并重置计数器和时间,准备开始下一轮计数。

示例代码如下:

//获取当前高精度时间戳。
let lastTime = performance.now();
//用于计数在一秒内的帧数。
let frameCount = 0;
//当经过1秒时,输出当前的帧数并重置计数。
let fps = 0;function calculateFPS() {//浏览器每次重绘时调用指定的回调函数。const currentTime = performance.now();frameCount++;// 每秒计算一次 FPSif (currentTime - lastTime >= 1000) {fps = frameCount;console.log(`FPS: ${fps}`);frameCount = 0;lastTime = currentTime;}requestAnimationFrame(calculateFPS);
}requestAnimationFrame(calculateFPS);

代码解析:

  • performance.now():获取当前高精度时间戳。
  • requestAnimationFrame():浏览器每次重绘时调用指定的回调函数。
  • frameCount:用于计数在一秒内的帧数。
  • FPS计算:当经过1秒时,输出当前的帧数并重置计数。

2. 同源策略是什么?如何解决或避免浏览器同源请求和并发限制?

同源策略是浏览器的一种安全机制,旨在保护用户数据,防止恶意网站对其他网站的内容进行访问。具体来说,同源策略要求,只有在协议、域名和端口完全相同的情况下,网页才能互相访问资源。

如何解决或避免同源请求并发限制:

  1. CORS(跨源资源共享)

    • 通过在服务器端设置特定的HTTP头(如Access-Control-Allow-Origin),允许指定的源访问资源。
    • CORS 允许服务器安全地控制哪些源可以访问资源。
  2. JSONP(JSON with Padding)

    • 通过动态创建<script>标签来实现跨域请求,利用callback函数处理返回的数据。
    • 适用于GET请求,但不再推荐使用,因其存在安全隐患。
  3. 代理服务器

    • 通过设置一个同源的服务器作为代理,将请求转发到目标服务器,浏览器与代理服务器之间是同源的。
    • 这种方法可以有效地绕过同源限制。
  4. WebSocket

    • WebSocket协议不受同源策略的限制,允许跨域通信,适用于需要持续连接的场景。
  5. 使用服务端渲染

    • 将请求在服务器端处理,然后将结果返回给前端,这样可以避免浏览器的同源策略。

3. 数组分堆

将一个数组划分为3个数组,使其每个数组的和尽量相等,如数组[1,2,3,4],划分为[1,2],[3],[4]

function partitionIntoThree(nums) {const totalSum = nums.reduce((sum, num) => sum + num, 0);// 如果总和不能被3整除,直接返回空数组if (totalSum % 3 !== 0) {return [];}const target = totalSum / 3;const subsets = [[], [], []];let currentSum = [0, 0, 0];// 尝试将数组元素分配到三个子数组for (let num of nums) {// 将当前元素放入一个子数组中for (let i = 0; i < 3; i++) {if (currentSum[i] + num <= target) {subsets[i].push(num);currentSum[i] += num;break; // 放入后跳出循环}}}return subsets;
}// 示例
const nums = [1, 2, 3, 4];
const result = partitionIntoThree(nums);
console.log(result); // 输出可能的划分结果

4. 将一个数组对象改为树状结构

将一个一维数组转化为树状对象,如

arr = [{ id: 0, parent: null },{ id: 1, parent: 1 },{ id: 2, parent: 2 },
]

转换为:

{id: 0,parent: null,child: {id: 1,parent: 1,child: {id: 2,parent: 2,child: null}}
}

代码实现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI学习】Lilian Weng:Extrinsic Hallucinations in LLMs(LLM 的外在幻觉)

来自OpenAI 的 Lilian Weng的《Extrinsic Hallucinations in LLMs》 Date: July 7, 2024 | Estimated Reading Time: 30 min | Author: Lilian Weng 文章链接&#xff1a;https://lilianweng.github.io/posts/2024-07-07-hallucination/ 大概看了一下&#xff0c;这篇文章的核…

深度学习与应用:行人跟踪

**实验 深度学习与应用&#xff1a;行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力&#xff0c;了解如何在特定的场景和…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

vue循环渲染动态展示内容案例(“更多”按钮功能)

当我们在网页浏览时&#xff0c;常常会有以下情况&#xff1a;要展示的内容太多&#xff0c;但展示空间有限&#xff0c;比如我们要在页面的一部分空间中展示较多的内容放不下&#xff0c;通常会有两种解决方式&#xff1a;分页&#xff0c;“更多”按钮。 今天我们的案例用于…

自建数据库VS云数据库:从《中国数据库前世今生》看未来数据管理的抉择

自建数据库VS云数据库&#xff1a;从《中国数据库前世今生》看未来数据管理的抉择 在数字化时代的滚滚洪流中&#xff0c;数据库作为核心数据管理工具&#xff0c;始终扮演着至关重要的角色。最近观看了纪录片《中国数据库前世今生》&#xff0c;让我对数据库技术的发展有了更…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…

甘蔗茎节检测系统源码分享

甘蔗茎节检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 &#xff08;SCA&#xff09; 工具&#xff0c;可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 &#xff08;CPE&#xff09; 标识符来实现此目的。如果找到&#xff0c;它…

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的&#xff08;从哪个页面跳转过来的&#xff09; 浏览器中&#xff0c;直接输入 URL/点击收藏夹打开的网页&#xff0c;此时是没有 referer。当你在 sogou 页面进行搜索时&#xff0c;新进入的网页就会有 referer 有一个非常典型的用…

绝了,自从用了它,我每天能多摸鱼2小时!

大家好&#xff0c;我是可乐。 俗话说的好&#xff1a;“摸鱼一时爽&#xff0c;一直摸鱼一直爽”。 作为一个程序员&#xff0c;是否有过调试代码熬到深夜&#xff1f;是否有过找不到解决方案而挠秃头顶&#xff1f; 但现在你即将要解放了&#xff0c;用了这款工具——秘塔…

PicoQuant公司的PicoHarp 300停产公告

尊敬的用户&#xff0c;您们好&#xff01; 今天&#xff0c;我们完成了PicoHarp 300最后一份订单&#xff0c;这也是自第一台PicoHarp 300号售出20年后的最后一份订单。 PicoHarp 300作为市场上第一款USB-TCSPC设备&#xff0c;PicoHarp 300已售出约1600台&#xff0c;为Pic…

SpringCloudEureka简介

背景 SpringCloudEureka是基于NetfliEureka做了二次封装&#xff0c;负责微服务架构的服务治理功能。 SpringCloud通过为Eureka增加SpringBoot风格的自动化配置&#xff0c;只需要简单的引入依赖和注解配置&#xff0c;就能让SpringBoot构建的微服务应用轻松和Eureka服务治理体…

安卓13去掉下拉菜单的Dump SysUI 堆的选项 android13删除Dump SysUI 堆

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析3.1 位置13.2 位置24.代码修改5.编译6.彩蛋1.前言 客户需要去掉下拉菜单里面的Dump SysUI 堆图标,不让使用这个功能。 2.问题分析 android的下拉菜单在systemui里面,这里我们只需要定位到对应的添加代…

找到你的工具!5款免费可视化报表工具对比分析

选择合适的可视化工具对于分析和展示数据至关重要&#xff0c;以下是五款免费的可视化工具&#xff0c;它们各具特色&#xff0c;能够适应各种需求。本文将介绍每款工具的优势与不足&#xff0c;帮助你找到最合适的解决方案。 1. 山海鲸可视化 介绍&#xff1a;山海鲸可视化是…

【Linux】当前进展

驱动层日志添加了下文件目录&#xff0c;函数&#xff0c;代码行的打印&#xff08;这里要小心&#xff0c;驱动目录源代码打印日志里边添进程号可能有问题&#xff0c;因为在驱动初始化的时候&#xff0c;内核还没有创建进程&#xff0c;不过猜测可以先不打印进程相关信息&…

计算机网络34——Windows内存管理

1、计算机体系结构 2、内存管理 分为连续分配管理和非连续分配管理 在块内存在的未使用空间叫内部碎片&#xff0c;在块外存在的未使用空间叫外部碎片 固定分区分配可能出现内部碎片&#xff0c;动态分区分配可能出现外部碎片 3、逻辑地址和实际地址的互相转换 4、缺页中断 …

算法.图论-并查集

文章目录 1. 并查集介绍2. 并查集的实现2.1 实现逻辑2.2 isSameSet方法2.3 union方法(小挂大优化)2.4 find方法(路径压缩优化) 3. 并查集模板4. 并查集习题4.1 情侣牵手4.2 相似字符串组 1. 并查集介绍 定义&#xff1a; 并查集是一种树型的数据结构&#xff0c;用于处理一些不…

SentencePiece进行文本分类

SentencePieces 前言 Step1:故事 SentencePiece 是一个无监督的文本分词器和 detokenizer(还原回去的&#xff1f;)主要用于词汇表大小是预定的文本生成系统中它拓展了原始句子的训练&#xff0c;实现子词单元如 BPE 和 unigram language model技术亮点 纯数据驱动&#xff…