当前位置: 首页 > news >正文

公司面试题总结(五)

25.谈一谈箭头函数与普通函数的区别,箭头函数主要解决什么问题?

箭头函数与普通函数的区别

语法简洁性:

箭头函数使用=>符号定义,省略了 function 关键字,使得语法更为紧凑。
对于单行函数体,可以进一步简化,省略花括号和 return 语句。

词法作用域内的 this:

主要区别:箭头函数不绑定自己的 this 值,它会捕获其所在上下文的 this 值作为
自己的 this,这解决了长期以来关于函数内部 this 指向不确定的问题。
在普通函数中,this 的值取决于函数如何被调用(例如,作为对象方法、构造函数
或者简单函数调用)。

没有自己的 arguments:

箭头函数没有自己的 arguments 对象,但可以通过扩展运算符...或其他方法间接访
问外部作用域的 arguments。
普通函数有自己的 arguments 对象来访问传入的参数。

不能作为构造函数:

箭头函数不能用作构造函数,即不能使用 new 关键字实例化。
普通函数可以作为构造函数创建新对象。

不能改变 this 的绑定:

使用 call、apply 或 bind 方法不能改变箭头函数内部的 this 指向。
普通函数的 this 可以通过这些方法动态改变。

箭头函数主要解决的问题:

明确的 this 绑定:

箭头函数最显著的优势在于它消除了 this 的不确定性,使得在回调函数、事件处理器等场景下,this 能保持预期的行为,避免了手动绑定 this 的繁琐。

代码简洁性:

它的简洁语法减少了代码量,提高了代码的可读性和维护性,特别是在使用高阶函数和函数式编程风格时更为明显。

减少作用域链查找:

由于箭头函数没有自己的 this、a rguments 等,这可能轻微提升执行效率,尤其是在大量嵌套函数调用时。

26.JS 数组和对象的遍历方式,以及几种方式的比较

数组的遍历方式:

for 循环

基本用法,适用于所有版本的 JavaScript。
可以获取索引和值。

forEach()

ECMAScript 5 引入的方法,直接在数组上操作,无需索引。
不支持 break,continue 语句。

for...of

ECMAScript 6 引入,迭代数组的元素值。
直观简洁,同样不支持 break,continue(除非配合 label)。

map()

生成新数组,原数组每个元素经过处理后的结果组成新数组返回。
侧重于转换数据。

filter()

创建一个包含通过测试的所有元素的新数组。
侧重于筛选数据。

对象的遍历方式:

for...in

遍历对象的所有可枚举属性(包括原型链上的)。
通常需要检查属性是否属于对象本身(hasOwnProperty)。
for(let key in obj) {
if(obj.hasOwnProperty(key)) {
console.log(key + ": " + obj[key]);
}
}

Object.keys()结合 for...of

获取对象自身可枚举属性的数组,然后遍历。
更安全,不涉及原型链。
for(let key of Object.keys(obj)) {
console.log(key + ": " + obj[key]);
}

Object.entries()结合 for...of

获取键值对数组,适合同时需要键和值的场景。
for(let [key, value] of Object.entries(obj)) {
console.log(key + ": " + value);
}

ES2022 的 for...in 改进

ES2022 引入了可选的 enumerable 标志,可以更精确地控制哪些属性可遍历。

比较:

性能:

基础的 for 循环通常性能最好,因为它是直接基于索引访问。
forEach()等方法由于涉及到函数调用,性能略低。不过,在大多数应用场景中,这
种差异微乎其微,可忽略。

可读性:

for...of、forEach()等现代遍历方法更易于阅读和理解,特别是对于不熟悉传统循环的新手。

功能

map()、filter()等方法不仅遍历,还能直接对数据进行转换或筛选,适合处理数据流。

兼容性:

for...of、Object.entries()等 ES6 及以上特性的方法需要考虑浏览器或环境的兼容性。

27.什么是跨域,如何解决跨域的问题,具体说说

跨域本质是浏览器基于同源策略的一种安全手段
同源策略 (Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能
协议相同(protocol)、主机相同(host)、端口相同(port)
非同源请求,也就是协议、端口、主机其中一项不相同的时候,这时候就会产生跨域

使用代理服务器(Proxy Server)

在开发环境中,可以配置一个代理服务器来转发 API 请求,从而绕过浏览器的同
源策略。这种方法通常使用 webpack-dev-server 或 Vite 的内置代理功能。
Vue CLI 项目 vue.config.js 文件中进行配置:

 对于 Vite 项目 vite.config.js 文件中进行配置:

设置 CORS(跨来源资源共享)

CORS 是一种 W3C 规范,定义了一种浏览器和服务器交互的方式来确定是否允
许跨源请求。这需要在服务器端进行配置。
服务器端需要设置响应头来允许来自不同源的请求。例如,在 Node.js 的 Express
框架中,可以使用 cors 中间件来设置 CORS。

JSONP

原理是利用<script>标签没有跨域限制的特点
通过动态插入<script>标签来加载其他域的 JavaScript 资源。
JSONP 只支持 GET 请求,并且存在安全风险(如 XSS 攻击)。

反向代理服务器(如 Nginx)

在 Nginx 中配置代理转发,并将 CORS 响应头添加到代理的响应中。

28.说说你对单点登录的理解,如何实现单点登录?

单点登录 Single Sign On,简称 SSO

多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统
SSO 需要一个独立的认证中心 passport,子系统登录均得通过 passport,子系统不参与
登录
当一个系统成功登录以后,passport 将会颁发一个令牌给各个子系统,子系统可以拿着
令牌会获取各自的受保护资源,为了减少频繁认证,各个子系统在被 passport 授权以
后,会建立一个局部会话,在一定时间内可以无需再次向 passport 发起认证

如何实现

同域名下的单点登录

cookie 的 domain 属性设置为当前域的父域,
父域的 cookie 会被子域所共享。
path 属性为根路径

不同域名下的单点登录(一)

如果是不同域的情况下,Cookie 是不共享的用户统一
在认证中心进行登录,登录成功后,认证中心记录用户的登录状态,并将 token 写
入 Cookie(Cookie 是认证中心的,应用系统访问不到)
应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,
那么就将页面跳转至认证中心
由于这个操作会将认证中心的 Cookie 自动带过去,因此,认证中心能够根
据 Cookie 知道用户是否已经登录过了
如果认证中心发现用户尚未登录,则返回登录页面,等待用户登录
如果发现用户已经登录过了,就不会让用户再次登录了,而是会跳转回目标 URL,
并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统
应用系统拿到 Token 之后,还需要向认证中心确认下 Token 的合法性,
此种实现方式相对复杂,支持跨域,扩展性好,是单点登录的标准做法

不同域名下的单点登录(二)

将 Session ID/Token 保存到浏览器的 LocalStorage 中,让前端在每次向后端发送
请求时,主动将 LocalStorage 的数据传递给服务端
这些都是由前端来控制的,后端需要做的仅仅是在用户登录成功后,将 Session ID
(或 Token)放在响应体中传递给前端

30.谈谈你对 webpack 的看法

webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具
静态模块指的是开发阶段
可以被 webpack 直接引用的资源(可以直接被获取打包进 bundle.js 的资源)
当 webpack 处理应用程序时,会在内部构建一个依赖图
依赖图对应映射到项目所需的每个模块(不再局限 js 文件),并生成一个或多个 bundle
webpack 的能力:
编译代码能力(es6 es5) ,提高效率,解决浏览器兼容问题
模块整合能力 ,提高性能,可维护性,解决浏览器频繁请求文件的问题 万物皆可模块能力 ,项目维护性增强,支持不同种类的前端模块类型,统一的模块化方
案,所有资源文件的加载都可以通过代码控制。

相关文章:

公司面试题总结(五)

25.谈一谈箭头函数与普通函数的区别&#xff0c;箭头函数主要解决什么问题&#xff1f; 箭头函数与普通函数的区别&#xff1a; ⚫ 语法简洁性&#xff1a; ◼ 箭头函数使用>符号定义&#xff0c;省略了 function 关键字&#xff0c;使得语法更为紧凑。 ◼ 对于单行函…...

Flutter笔记:关于WebView插件的用法(上)

Flutter笔记 关于WebView插件的用法&#xff08;上&#xff09; - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:htt…...

计算机毕业设计Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop Hive

课题研究的意义&#xff0c;国内外研究现状、水平和发展趋势 研究意义21世纪是一个信息爆炸的时代&#xff0c;人们在日常生活中可接触到的信息量非常之巨大。推荐系统逐步发展&#xff0c;其中又以个性化推荐系统最为瞩目。个性化推荐系统的核心在于个性化推荐算法&#xff0c…...

phpcms仿蚁乐购淘宝客网站模板

phpcms仿蚁乐购网站模板&#xff0c;淘宝客行业模板免费下载&#xff0c;该模板网站很容易吸引访客点击&#xff0c;提升ip流量和pv是非常有利的。本套模板采用现在非常流行的全屏自适应布局设计&#xff0c;且栏目列表以简洁&#xff0c;非常时尚大气。页面根据分辨率大小而自…...

leetcode695 岛屿的最大面积

题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&#xff09;包围着。 岛屿的面积是岛上值…...

小程序无法调用服务端问题排查

1、问题描述 突然有一天线上的小程序不能登录&#xff0c;经查小程序无法调用。经查无法小程序页面无法调用后台服务。 2、排查过程 由于无法登录小程序发布服务器&#xff0c;无法测试小程序前端服务器到服务端网络&#xff0c;并且小程序无法看到日志。所以就得从服务端和网…...

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…...

kunpeng的aarch64架构cpu、openeuler系统、昇腾服务器适配文档转换功能(doc转docx、ppt转pptx)

一、安装flatpak sudo yum install flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo二、安装libreoffice flatpak install flathub org.libreoffice.LibreOffice三、使用 对于使用 flatpak 安装的 LibreOffice,不需要手…...

unity 打包PC安装包中常见文件的功能

目录 前言 一、打包好的文件 二、常用文件 1.文件夹XXX_Data 2.文件夹MonoBleedingEdge 3.文件夹XXX_Data内部 三、文件的应用 1.如果你替换了一个图片 2.如果你新增了或减少了图片和资源 3.场景中有变动 4.resources代码加载的资源改了 5.如果你代码替换了 四、作…...

【Ardiuno】实验使用ESP32单片机实现高级web服务器暂时动态图表功能(图文)

接下来&#xff0c;我们继续实验示例代码中的Wifi“高级web服务器”&#xff0c;配置相关的无线密码后&#xff0c;开始实验 #include <WiFi.h> #include <WiFiClient.h> #include <WebServer.h> #include <ESPmDNS.h>const char *ssid "XIAOFE…...

深入浅出服务网格(Service Mesh):现代微服务架构的护航者

什么是服务网格&#xff1f; 服务网格是一种专用于处理微服务间通信的基础设施层&#xff0c;通常以轻量级代理&#xff08;sidecar&#xff09;的形式部署在每个服务实例旁边。它主要负责以下几项任务&#xff1a; 服务发现&#xff1a;自动检测和注册服务实例&#xff0c;使…...

node调试

vscode安装插件&#xff1a;JavaScript Debugger (Nightly) 点击后生成一个launch.json文件 打断点&#xff0c;并发送一个请求来执行代码到断点处 按右上的向下箭头&#xff0c;进入源码&#xff0c;进行查看&#xff0c;左边查看变量等值...

docker拉取镜像失败超时的解决方法,docker配置国内镜像源

更换国内源 创建或修改 /etc/docker/daemon.json 文件 安装docker后一般只有 /etc/docker 这个目录 下面并没有 daemon.json 文件 我们直接创建 &#xff1a; vim /etc/docker/daemon.json {"registry-mirrors" : ["https://registry.docker-cn.com"…...

建造气膜结构体育馆需要注意的事项—轻空间

气膜结构体育馆以其快速建造、低成本、灵活性高等优势&#xff0c;越来越受到各类运动场所的青睐。气膜结构利用空气压力支撑膜材&#xff0c;从而形成自持结构&#xff0c;无需传统的钢筋混凝土框架。这类建筑适用于各种气候条件&#xff0c;且可根据需要快速搭建和拆卸。然而…...

使用脚手架创建vue2项目(关闭eslint语法检查 、运行项目时自动打开网址、src文件夹简写方法)

使用脚手架创建vue2项目会默认安装的插件&#xff08;eslint) 这个插件是检查语法的。 假设我们在main.js中定义了一个变量&#xff0c;没有使用 eslint 就会检测出错误 &#xff08;事实是我们并没有写错而是eslint 给我们判断是错的&#xff0c;所以这样会很麻烦&#xff…...

谷粒商城实战(036 k8s集群学习2-集群的安装)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第343p-第p345的内容 k8s 集群安装 kubectl --》命令行操作 要进入服务器 而且对一些不懂代码的产品经理和运维人员不太友好 所以我们使用可视化…...

复旦微FMQL20SM全国产ARM+FPGA核心板,替代xilinx ZYNQ7020系列

FMQL20SM核心板一款全国产工业核心板。基于复旦微FMQL20S400M四核ARM Cortex-A7&#xff08;PS端&#xff09; FPGA可编程逻辑资源&#xff08;PL端&#xff09;异构多核SoC处理器设计的全国产工业核心板&#xff0c;PS端主频高达1GHz。 核心板简介 FMQL20SM核心板是一款全国…...

NPM常见问题

文章目录 NPM常见问题1. 使用淘宝源安装包出错2. listen EADDRINUSE 服务端口被占用报错3. npm start 启动后过一会崩溃结束&#xff1a;内存溢出4. npm install的时候使用特定的源安装5. npm安装指定版本、最新版本6. npm ERR! cb() never called! 解决7. Unable to authentic…...

二开版视频CMS完整运营源码/新版漂亮APP手机模板/集成员分销功能等

一个二开的影视CMS&#xff0c;直接上传源码至网站根目录&#xff0c;访问网站域名即可安装。 测试环境&#xff1a;Nginx 1.20.1—MySQL 5.6.50–PHP-7.2&#xff08;安装拓展/fileinfo&#xff09; 上传源码&#xff0c;访问域名直接安装 后台地址&#xff1a;域名/MDadmi…...

JavaScript的数组排序

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

从Log4j和Fastjson RCE漏洞认识jndi注入

文章目录 前言JNDI注入基础介绍靶场搭建漏洞验证注入工具 log4j RCE漏洞分析漏洞靶场检测工具补丁绕过 Fastjson RCE漏洞分析漏洞靶场检测工具补丁绕过 总结 前言 接着前文的学习《Java反序列化漏洞与URLDNS利用链分析》&#xff0c;想了解为什么 Fastjson 反序列化漏洞的利用…...

7-25 数字三角形问题

7-25 数字三角形问题 分数 10 全屏浏览 作者 夏仁强 单位 贵州工程应用技术学院 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法&#xff0c;计算出从三角形的顶至底的一条路径&#xff0c;使该路径经过的数字总和最大。 对于给定的由n行数字组成的数字三角…...

【Kafka专栏 08】ZooKeeper的Watch机制:不就是个“小喇叭”吗?

作者名称&#xff1a;夏之以寒 作者简介&#xff1a;专注于Java和大数据领域&#xff0c;致力于探索技术的边界&#xff0c;分享前沿的实践和洞见 文章专栏&#xff1a;夏之以寒-kafka专栏 专栏介绍&#xff1a;本专栏旨在以浅显易懂的方式介绍Kafka的基本概念、核心组件和使用…...

三极管的厄利效应(early effect)

詹姆斯M厄利(James M. Early)发现的现象&#xff0c;厄利效应&#xff08;英语&#xff1a;Early effect&#xff09;&#xff0c;又译厄尔利效应&#xff0c;也称基区宽度调制效应&#xff0c;是指当双极性晶体管&#xff08;BJT&#xff09;的集电极&#xff0d;射极电压VCE改…...

Maven: 编码GBK的不可映射字符不能编译

使用mvn compile命令&#xff0c;出现错误: 编码GBK的不可映射字符不能编译。这是因为代码或注释中存在中文引起的&#xff0c;一般在ide中会自动处理编译时的字符集&#xff0c;就不会碰到这个错误。这个错误是在生成代码后&#xff0c;其中自动加上了中 文注释&#xff0c;手…...

《web应用技术》第十一次课后作业

1、验证过滤器进行权限验证的原理。 Filter过滤器&#xff1a;javaweb三大组件(Servlet,Filter,Listener)之一&#xff1b;过滤器可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊功能&#xff1b;过滤器一般完成一些通用操作&#xff0c;比如登录校验等。 执行对应的…...

flutter中实现首行缩进两端对齐

刚开始进行搜索&#xff0c;发现很多都是让在每段开始的时候采用空格进行填充&#xff0c;但是采用这种形式之后&#xff0c;不知道为何首行直接溢出了&#xff0c;最后采用下面方法进行实现的。 RichText(text: TextSpan(children: [WidgetSpan(child: Container(width: 20, …...

Vitis HLS 学习笔记--Vitis Accelerated Libraries介绍

目录 1. 简介 2. 库的文件结构 3. 分类介绍 3.1 blas 3.2 codec 3.3 data_analytics 3.4 data_compression 3.5 data_mover 3.6 database 3.7 dsp 3.8 graph 3.9 hpc 3.10 motor_control 3.11 quantitative_finance 3.12 security 3.13 solver 3.14 utils 3…...

Vue3-滑动到最右验证功能

1、思路 1、在登录页面需要启动向右滑块验证 2、效果图 3、文章地址&#xff1a;滑动验证码的实现-vue-simple-verify 2、成分分析 1、由三块构成&#xff0c;分别是底部条、拖动条、拖动移动部分 2、底部条&#xff1a;整体容器&#xff0c;包括背景、边框和文字&#xf…...

深入理解MyBatis XML配置文件

MyBatis是一款优秀的持久层框架&#xff0c;简化了数据库操作的复杂性&#xff0c;提高了开发效率。在MyBatis中&#xff0c;XML配置文件扮演了重要角色&#xff0c;用于配置数据源、事务管理、SQL映射等内容。本文将详细介绍MyBatis的XML配置文件&#xff0c;帮助读者更好地理…...

内蒙古做网站公司/谷歌搜索引擎优化

感谢博主&#xff1a;喜上编程 原文链接&#xff1a;https://blog.csdn.net/qq_41854180/article/details/113832989 警告&#xff1a;erlang-21.3.8.6-1.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY 错误&#xff1a;依赖检测失败&#xff1a; libcry…...

wordpress dedecms discuz/推广公司运营模式

mv功能说明&#xff1a;移动或剪切文件或目录&#xff0c;也可以改名语法&#xff1a;mv [-fiu] source destinationmv [options] source1 source2 source3... directory参数&#xff1a;-f &#xff1a;force强制的意思&#xff0c;若目标文件已经存在&#xff0c;不会询问而直…...

简易静态网站制作流程图/黄冈地区免费网站推广平台

Top NSD SERVICES DAY06 案例1&#xff1a;rsync基本用法 案例2&#xff1a;rsyncSSH同步 案例3&#xff1a;使用inotifywait工具 案例4&#xff1a;配置Web镜像同步 案例5&#xff1a;搭建mariadb数据库系统 案例6&#xff1a;配置一个数据库 案例7&#xff1a;使用数据…...

宝鸡做网站线上支付功能/网络营销模式下品牌推广途径

就直接用bs的警告框啦~&#xff0c;Duang~ 功能 可以设置message和type&#xff0c;type就是bs内置的几种颜色 默认提示3秒框自动关闭&#xff0c;或者点击x号关闭 代码 模板 <div class"alert alert-{{type || info}}" ng-show"message"> <butt…...

人大网站建设成就/合肥网站排名

打开IIS6&#xff0c;右击属性&#xff0c;居然没有发现ASP.NET的配置选项&#xff0c;虽然好久没搞这个了&#xff0c;但是印象中绝对是有一个ASP.NET选项卡的。我很奇怪&#xff0c;我以为是.net framework 2.0没安装&#xff0c;下载下来安装&#xff0c;提示已经安装了&…...

怎么查开发商剩余房源/哪里有seo排名优化

我们演示了一个非常贴近实战的案例&#xff0c;这里回顾下该案例的结构&#xff0c;如下图所示&#xff1a; 该案例所演示的就是我们日常使用微服务架构开发时&#xff0c;服务间最普遍的通信场景。在Spring Cloud微服务体系中&#xff0c;服务间可以通过FeginRibbon组合的方式…...