前端奇怪面试题总结

面试题总结
  1. 不修改下面的代码进行正常结构

这道题考的是迭代器和生成器的概念

let [a,b] = {a:1,b:2}

答案
对象缺少迭代器,需要手动加上

Object.prototype[Symbol.iterator] = function* (){// return Object.values(this)[Symbol.iterator]()return yeild* Object.values(this)
}
ler [a,b] = {a:1,b:2}
  1. 这行代码打印出什么?console.log(console.log.apply.call.call.call.apply((a) => a , [3,15]))

答案
apply 调用方式就是 函数.apply(参数1,[3,15])
所以转换后就是 (a => a).apply(3,15)
15

  1. 游离节点造成的内存泄漏问题总结

浏览器对最后一个获取焦点的input框是不会执行内存回收的!这个是个浏览器bug。如果我们最后一个表单节点是个富文本怎么办?
解决办法:就是动态创建一个获取焦点的input框

  1. 惰性函数

惰性函数说简单点就是对一开始只需要判断一次的方法并且里面有很复杂的逻辑进行确认话处理,减少浏览器的执行的时间

  let flag = falsefunction getTableList(){if(flag){getTableList = () => {return `我变成了第一个函数${flag}`}// 第一次调用console.log(getTableList())}else{getTableList = () => {return `我变成了第二个函数${flag}`}// 第一次调用console.log(getTableList())}}console.log( getTableList())

在这里插入图片描述

也可以用高阶函数返回一个函数,效果是一样的

  let flag = falsefunction getTableList(){if(flag){return () => {return `我变成了第一个函数${flag}`}}else{return  () => {return `我变成了第二个函数${flag}`}}}let getTable = getTableList()console.log( getTable())
  1. 写一个防抖函数并大致说出它的原理

防抖函数原理就是利用setTimeOut 实现一个函数多次调用的时候只执行最后一次函数,前面的函数利用clearTimeout(timer)取消执行

  function debounce(fn,duration = 300){// 判断传入的是一个函数表达式if(typeof fn != 'function'){throw new TypeError ('请传入函数')}//利用闭包的原理实现定时器的清空let timer = nullreturn function(...args){clearTimeout(timer)timer = setTimeout(() => {fn.apply(this,args)},duration)}}
  1. 输出下面表达式的值

这道题主要考的是类型转换

([][[]]+[])[+!![]]+([]+{})[+!![]+!!{}]

答案:
([][[]]+[]) => ‘undefined’ [+!![]] => 1 结合起来就是 n
([] ={}) => ‘[object Object]’ [+!![] + !!{}] => 2 结合起来就是b

  1. 不适用for循环之类的方法将一个数组求和

这道题主要考的是递归的用法

let arr = [1,2,3,4,5,6,7,8,9,10,11]function sum(arr){let i = 0;let sum = 0;function _fun(){if(i >= arr.length){return}sum += arr[i]i++_fun()}_fun()return sum}console.log(sum(arr))
// 第二种写法
let sum = 0;
function getSum (arr,index = 0){if(index >= arr.length){return}sum += arr[index]index ++getSum(arr,index)return sum
}

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

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

相关文章

SpringBootWeb创建

创建spring项目 创建SpringBoot工程定义请求处理类运行常见问题java: 无效的源发行版: XXjava: 无法访问org.springframework.web.bind.annotation.RequestMapping类文件具有错误的版本 61.0, 应为 52.0 创建SpringBoot工程 定义请求处理类 RestController public class HelloC…

数字主线与数字孪生

当今具有前瞻性的组织正在使用数字线程和数字孪生。然而,许多传统的数字主线平台并未针对公司的成功进行优化。基于产品生命周期管理 (PLM) 解决方案实施集成的数字孪生和数字线程策略是更好的选择。然后,组织可以以新的方式连接和使用信息来推动业务和创…

毕业设计uniapp+vue有机农产品商城系统 销售统计图 微信小程序

本人在网上找了一下这方面的数据发现农村中的信心普及率很是低农民们都不是怎么会用手机顶多就是打打电话发发短信,平时不太会上网更不会想到通过网络手段去卖出自己的劳作成果—农产品,这无疑大大浪费了农民的劳动成果和国家资源也大大打击了人们的生产…

Centos7配置NFS

环境描述 服务器IP为192.168.200.132客户机IP为192.168.200.143 服务器配置 首先安装软件包 [rootlocalhost ~]# yum install nfs-utils rpcbind //我这里已经安装完毕了建立共享目录 [rootlocalhost ~]# mkdir -p /data/share更改文件夹权限 chmod 777 /data/share编辑配置…

vsftp虚拟用户和ssl加密配置 —— 筑梦之路

为什么要用虚拟用户? 1.增强安全性:使用虚拟用户,可以避免直接使用系统账户进行 FTP 访问,通过使用虚拟用户,可以限制 FTP 用户的访问范围和权限,减少潜在的安全风险。 2.隔离用户和文件:虚拟用户可以被隔…

当Linux系统运行时间长了之后,会出现磁盘空间不足提示,需要及时进行清理

Linux系统(CentOS 7)的磁盘空间不足时,可以采取以下步骤进行清理: 查找并删除大文件: 使用du和find命令可以找到并删除大文件。例如,要查找/目录下大于100MB的文件,可以运行: find /…

docker如何关闭证书认证

目录 前言关闭Docker认证的步骤修改pom 前言 当docker认证证书过期了,项目又要马上上线怎么办?重新生成证书,时间来不及,这时最快的方法就是关闭证书认证。 关闭Docker认证的步骤 停止Docker服务 systemctl stop docker编辑Do…

Ts创建的详细过程及配置步骤(傻瓜式配置创建),最后效果展示

一:首先创建一个 空文件夹 二:使用编辑器打开,再创建一个src文件夹,然后按照以下步骤

VMware worksation 17 简易安装Centos8.2、Redhat8.2、Ubuntu16.04

系列文章目录 文章目录 系列文章目录前言一、VMware worksation 17 安装二、安装Centos8.2三、安装RHEL8.2四、安装Ubuntu16.04总结 前言 傻瓜式按照Linux系统,如果觉得简单,可以自定义设置,特别是配置一下磁盘空间大小,对以后排…

2023年上半年系统规划与管理师上午真题及答案解析

1.香农用概率来定量描述信息的公式如下,其中H(x)表示X的( ),Pi是( )出现第i种状态的( )。 A.信息熵 事件 概率 B.总熵 单位 概率 C.信息熵 单位 概率 D.总熵 单位 度量 2.信息传输模型中,( )负责信息的向外传播,( )负责…

数据结构--链表进阶面试题

在链表题目开始之前我们来复习一道数组元素的逆序问题&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 提示&#xff1a; 1 < nums.length < 10^5-2^31 < nums[i] < 2^31 - 10 < k < 10^5 思…

数论12-欧拉定理与费马小定理

点个关注吧谢谢&#xff01; 欧拉定理 设 m m m是正整数&#xff0c; r ∈ Z m r\in \mathbb{Z}_m r∈Zm​且 g c d ( r , m ) 1 gcd(r,m)1 gcd(r,m)1。那么&#xff1a; r ϕ ( m ) 1 ( m o d m ) r^{\phi(m)}1(mod~m) rϕ(m)1(mod m) 证&#xff1a;设 r 1 , r 2 , . . .…

java.io.EOFException异常的正确解决方法

本文将探讨java.io.EOFException异常及其正确的解决方法。EOFException是Java I/O操作中常见的异常之一&#xff0c;通常表示程序试图读取文件或数据流的末尾之外的内容。我们将从报错问题、报错原因和解决方案三个方面详细解析这一异常&#xff0c;并提供有效的处理方法。 文章…

wordpress子比主题给文章内容加上密码查看

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤1.引入库2.读入数据第三步:文章内添加代码前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,…

Linux的权限

什么是权限 权限是计算机系统中一个重要的安全机制&#xff0c;旨在控制和限制对资源的访问。设置权限的主要目的包括&#xff1a; 保护系统资源 权限控制可以保护关键系统文件、目录和配置不被未授权用户或程序修改或删除。这样可以防止系统被破坏或者出现故障。 保护用户…

Docker容器:Docker-Consul的容器服务更新与发现

目录 前言 一、什么是服务注册与发现 二、 Docker-Consul 概述 1、Consul 概念 2、Consul 提供的一些关键特性 3、Consul 的优缺点 4、传统模式与自动发现注册模式的区别 4.1 传统模式 4.2 自动发现注册模式 5、Consul 核心组件 5.1 Consul-Template组件 5.2 Consu…

为什么深度学习中减小泛化误差称为“正则化(Regularization)”

深度学习的一个重要方面是正则化&#xff08;Regularization&#xff09;&#xff0c;Ian Goodfellow在《Deep Learning 》称正则化&#xff08;Regularization&#xff09;就是减小泛化误差。那么&#xff0c;为什么减小泛化误差称为正则化呢&#xff1f; 首先看正则化——Re…

一款 NodeJS 版本管理工具 NVM (Windows)

一、简介 Node Version Manager&#xff08;NVM&#xff09;是一种用于管理多个 NodeJS 版本的工具。在日常工作中&#xff0c;我们可能同时在进行多个不同的项目开发&#xff0c;每个项目的需求不同&#xff0c;依赖与不同版本的NodeJS 运行环境。这种情况下&#xff0c;维护…

SAP PP学习笔记11 - PP中的MRP相关概念,参数,配置

上文讲了作业区的概念及配置。 SAP PP学习笔记08 - 作业区&#xff08;工作中心Work Center&#xff09;&#xff0c;作业区Customize-CSDN博客 SAP PP学习笔记09 - 作业区&#xff08;工作中心Work Center&#xff09;Customize2&#xff08;管理码&#xff0c;班次顺序&…

利用github pages建立Serverless个人博客

利用github pages建立Serverless个人博客 概述 使用github pages&#xff0c;可以在github上部署静态网站。利用这个功能&#xff0c;可以很方便地实现个人博客的发布托管。 比如我的个人博客&#xff1a;Buttering’s Blog 对应代码仓库&#xff1a;buttering/EasyBlog: 自…