面试ssss

深拷贝和浅拷贝

深拷贝和浅拷贝是关于对象(包括数组)复制的两个概念。

浅拷贝在复制对象属性的时候,复制的是指针(引用),所以,修改目标对象的属性值会影响到原对象的对应属性值 obj。assign

深拷贝

这个函数使用递归的方式对对象进行深拷贝。对于每个属性,如果是基本类型或null,则直接复制;如果是数组,则创建一个新的数组,并递归深拷贝每个元素;如果是对象,则创建一个新的对象,并递归深拷贝每个属性。

function deepCopy(obj) {
  if (typeof obj !== 'object' || obj === null) {
    // 对于基本类型和null,直接返回
    return obj;
  }
​
  let copy;
  
  if (Array.isArray(obj)) {
    // 处理数组
    copy = [];
    for (let i = 0; i < obj.length; i++) {
      copy[i] = deepCopy(obj[i]);
    }
  } else {
    // 处理对象
    copy = {};
    for (let key in obj) {
      if (obj.hasOwnProperty(key)) {
        copy[key] = deepCopy(obj[key]);
      }
    }
  }
​
  return copy;
}

  1. 如何实现一个new

1 创建一个新的对象obj

2 将对象与构建函数通过原型链连接起来

3 将构建函数中的this绑定到新建的对象obj上

4 根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理
如果构造函数有返回值并且返回值是一个对象,则返回该对象;否则返回新对象实例

举个例子:

function Person(name, age){
    this.name = name;
    this.age = age;
}
const person1 = new Person('Tom', 20)
console.log(person1)  // Person {name: "Tom", age: 20}
t.sayName() // 'Tom'


手动实现一下
function mynew(Func, ...args) {
    // 1.创建一个新对象
    const obj = {}
    // 2.新对象原型指向构造函数原型对象
    obj.__proto__ = Func.prototype
    // 3.将构建函数的this指向新对象
    let result = Func.apply(obj, args)
    // 4.根据返回值判断
    return result instanceof Object ? result : obj
}
  1. 跨域是什么?怎么解决?isonp方式是如何做的

以下是使用 JSONP 的具体实现步骤:

  1. 客户端发送 JSONP 请求:在客户端(例如浏览器中的 JavaScript)中创建一个 <script> 标签,其中的 src 属性指向目标服务器的接口,并在 URL 中包含一个回调函数名作为参数。

function handleResponse(data) {
  // 处理响应数据
}
​
const script = document.createElement('script');
script.src = 'https://api.example.com/data?callback=handleResponse';
document.head.appendChild(script);
  1. 服务器返回响应:服务器接收到请求后,将数据包装在回调函数中返回给客户端。回调函数名由客户端指定,它会作为参数出现在响应中。例如,服务器响应如下:

handleResponse({ message: 'Hello, JSONP!' });
  1. 客户端处理响应:由于服务器返回的是一个包裹在回调函数中的 JavaScript 代码,浏览器会将该代码当作脚本执行,从而触发客户端事先定义的回调函数。通过在客户端定义一个与服务器返回的回调函数名相同的函数,可以在回调函数中处理服务器返回的数据。

javascript

function handleResponse(data) {
  // 处理响应数据
  console.log(data.message); // 输出:Hello, JSONP!
}

需要注意的是,JSONP 的使用有一些限制和安全风险:

  • JSONP 只支持 GET 请求,不支持其他 HTTP 方法。

  • 由于 JSONP 是通过动态创建 <script> 标签来实现的,因此无法像使用 XMLHttpRequest 或 Fetch API 那样获取完整的响应对象,例如状态码、响应头等。

  • JSONP 要求服务器能够返回一个包装在回调函数中的 JavaScript 代码,这可能会导致安全问题,因为服务器端的代码可以被注入到客户端页面中。

  1. 事件循环说说,宏任务和微任务有哪些

事件循环(Event Loop)是 JavaScript 中处理异步操作的机制。它负责管理任务队列(Task Queue)中的任务,并按照特定的执行顺序将它们执行。

宏任务:setTimeout setInterval Ajax DOM事件 微任务:Promise

事件循环的执行顺序如下:

事件循环的执行顺序是先执行同步任务,然后处理微任务队列,再执行异步任务,接着处理宏任务队列,最后再次处理微任务队列,然后进入下一个循环。微任务具有高优先级,会在下一个宏任务之前执行,这意味着微任务队列中的任务会在下一个宏任务执行之前完成。

事件循环的基本流程如下:

  1. 执行同步任务: 从调用栈中取出一个同步任务执行,直到调用栈为空或遇到异步任务。

  2. 执行微任务(Microtasks): 在同步任务执行完毕后,会检查微任务队列(也称为 Promise 队列)。如果存在微任务,事件循环会依次执行微任务直到微任务队列为空。微任务通常包括 Promise 的回调函数、MutationObserverprocess.nextTick 等。

  3. 执行宏任务(Macrotasks): 如果微任务队列为空,事件循环会从宏任务队列中选择一个任务执行。宏任务包括定时器回调函数(setTimeoutsetInterval)、事件回调函数(如用户交互事件、网络请求、文件读写等)等。

  4. 更新渲染(Update rendering): 如果浏览器需要重绘或重新布局页面,会执行相应的渲染操作。

  5. 重复步骤: 重复以上步骤,不断处理任务直到所有任务完成。

需要注意的是,微任务优先级高于宏任务,即在执行微任务队列之前不会执行下一个宏任务。这意味着微任务可以在同一次事件循环中立即执行,而宏任务需要等待下一次事件循环。

  1. this指向问题

// 全局上下文
console.log(this); // 输出全局对象 (window 或 global)

// 函数调用
function sayHello() {
  console.log(this);
}

sayHello(); // 输出全局对象 (window 或 global)

const obj = {
  name: 'John',
  greet: function() {
    console.log(this.name);
  }
};

obj.greet(); // 输出 "John"

function Person(name) {
  this.name = name;
  this.greet = function() {
    console.log('Hello, ' + this.name);
  };
}

const person1 = new Person('Alice');
person1.greet(); // 输出 "Hello, Alice"

const greet = person1.greet;
greet(); // 输出 "Hello, undefined" (非严格模式下),或抛出错误 (严格模式下)

const arrowFunc = () => {
  console.log(this);
};

arrowFunc(); // 输出全局对象 (window 或 global)

在 JavaScript 中,this 关键字用于引用当前执行上下文中的对象。它的值取决于函数被调用的方式和上下文。

  1. 全局上下文:
    当在全局作用域中使用 this 时,它将指向全局对象(浏览器环境中为 window 对象,Node.js 环境中为 global 对象)。

  2. 函数调用:
    在函数内部,this 的指向取决于函数的调用方式:

    • 作为函数调用时,this 指向全局对象(非严格模式下),或者是 undefined(严格模式下)。
    • 作为对象方法调用时,this 指向调用该方法的对象。
    • 作为构造函数调用时,this 指向新创建的对象实例。
    • 使用 call()apply()bind() 方法显式地指定 this 的值。
  3. 箭头函数:
    箭头函数的 this 在定义时就被绑定,它的指向始终是定义时所在的上下文,而不是运行时的调用方式。

  1. 箭头函数和普通函数的区别

  • this 的绑定:

    • 普通函数:每个函数都有自己的 this 值,它在运行时根据调用方式进行绑定。在普通函数内部,this 的值取决于函数是如何被调用的。
    • 箭头函数:箭头函数没有自己的 this 值,而是继承其父作用域的 this 值。箭头函数内部的 this 始终指向定义时所在的上下文的 this 值。
  • arguments 对象:

    • 普通函数:普通函数内部可以访问到特殊的 arguments 对象,该对象包含了函数被调用时传递的参数列表。
    • 箭头函数:箭头函数没有自己的 arguments 对象。如果需要访问参数,可以使用剩余参数语法 ...args 或者使用普通函数来获取 arguments 对象。
  • 构造函数:

    • 普通函数:普通函数可以用作构造函数,通过 new 关键字创建实例对象。
    • 箭头函数:箭头函数不能用作构造函数,无法通过 new 关键字创建实例对象。
  1. 异步任务分为哪些

宏任务和微任务

  1. 垂直居中的方式

​

1 使用Flexbox布局:。这种方法适用于父元素和子元素都是块级元素的情况,这将使容器内的所有子元素都垂直和水平居中。

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}

2 使用绝对定位和transform属性, left: 50%; top: 50%会使子元素的左上角在父元素的中心位置;

.parent {
  position: relative;
}
​
.child {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

3 使用绝对定位和margin属性

.parent {
  position: relative;
}
​
.child {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
}

​

  1. 怎么理解回流和重绘

回流(Reflow)和重绘(Repaint)是浏览器渲染过程中的两个重要概念

回流是跟据元素的样式和结构,确定其在页面上位置的过程,当元素的大小和位置发生变化时,就回触发回流,

  • 添加或删除可见的DOM元素
  • 元素的位置发生变化
  • 元素的尺寸发生变化(包括外边距、内边框、边框大小、高度和宽度等)
  • 内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代
  • 页面一开始渲染的时候(这避免不了)
  • 浏览器的窗口尺寸变化(因为回流是根据视口的大小来计算元素的位置和大小的)

重绘,确定位置之后,跟据其样式,将元素绘制到屏幕上的过程。

  • 颜色的修改

  • 文本方向的修改

  • 阴影的修改

避免,

  • 尽量减少对样式的频繁修改,最好一次性修改多个样式,或者使用 CSS 类进行批量修改。
  • 避免频繁访问布局信息(如 offsetTop、offsetWidth 等),因为这会导致强制回流。
  • 使用 CSS3 的 transform 属性来进行复杂的动画效果,它可以在不引起回流的情况下改变元素的视觉呈现。
  • 使用分离布局和样式的原则,避免样式改变引起布局的变化。
  • 合理使用 CSS 布局技术,如 Flexbox 和 Grid,它们可以更高效地处理元素布局
  • 如果想设定元素的样式,通过改变元素的 class 类名 (尽可能在 DOM 树的最里层)
  1. 元素显示和隐藏的方法有哪些

  • CSS 的 display 属性

    • 显示元素:element.style.display = 'block';element.style.display = '';
    • 隐藏元素:element.style.display = 'none';
  • CSS 的 visibility 属性

    • 显示元素:element.style.visibility = 'visible';
    • 隐藏元素:element.style.visibility = 'hidden'
  1. vue的双向数据绑定的原理

  1. 数据劫持(Data Observation):
    Vue 使用了一种称为「数据劫持」的技术来追踪数据的变化。它通过使用 Object.defineProperty() 方法,将数据对象的属性转换为 getter 和 setter。当访问或修改属性时,Vue 能够捕获到这些操作,并触发相应的更新。

  2. 监听器(Watcher):
    在 Vue 中,每个数据属性都有一个对应的监听器对象。监听器会订阅数据的变化,并根据变化触发相应的更新操作。当数据发生变化时,监听器会通知相关的视图进行更新。

  3. 模板编译(Template Compilation):
    Vue 的模板编译过程会解析模板中的指令(如 v-model),并生成对应的更新函数。这些更新函数能够在数据发生变化时,更新视图的内容。

  4. 视图更新:
    当数据发生变化时,监听器会收到通知,并触发视图的更新操作。这样,当用户在视图中修改数据时,数据会自动更新,反之亦然。

  1. 虚拟dom的理解

虚拟 DOM 的优势在于它能够提供一种高效的方式来管理和更新界面,减少直接操作真实 DOM 的成本。通过比较虚拟 DOM 树的差异,可以最小化对真实 DOM 的操作,提高性能和用户体验。

  1. 如何清除浮动

伪元素

可以使用伪元素在浮动元素的父元素中插入一个额外的元素,并设置其样式为 clear: both;

<div class="clearfix">
  <div class="float-left">浮动元素1</div>
  <div class="float-left">浮动元素2</div>
</div>

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

overflow:hidden

  1. BFC

BFC(块级格式化上下文)是一种页面渲染的 CSS 布局概念。它是一种独立的渲染区域,其中的元素按照一定规则进行布局和渲染

BFC 主要用于解决以下问题:

  1. 清除浮动(Clear Float):当父元素包含浮动元素时,父元素的高度会塌陷,导致无法正确包裹浮动元素。通过创建一个 BFC,可以使父元素包含浮动元素的布局正常显示,不再塌陷。

例子:

<div class="parent">
  <div class="float-left">Float Left</div>
  <div class="float-right">Float Right</div>
</div>
​
.parent {
  overflow: hidden;
}
​
通过设置 overflow: hidden;,.parent 元素成为一个 BFC,它会包裹内部的浮动元素,防止元素的高度塌陷。
  1. 阻止边距重叠(Margin Collapse):在普通流中,相邻的两个元素的上下边距可能会发生重叠。但是,位于不同的 BFC 中的元素的边距不会重叠,这可以用于控制边距的表现。

  2. 自适应两栏布局:通过创建两个相邻的 BFC 容器,可以实现一种自适应的两栏布局,其中一个容器可以固定宽度,另一个容器会自动填充剩余空间。

  3. 避免浮动元素覆盖文字:当文字环绕在浮动元素周围时,文字可能会被浮动元素覆盖。通过创建一个 BFC 容器来包裹文字,可以避免文字被浮动元素覆盖。

如何设置一个bfc , 一般用overflow:hidden 和flex盒子

.bfc-container {
  overflow: hidden;
}
​
.bfc-container {
  display: inline-block;
}
​
.flex-container {
  display: flex;
}
​
  1. CSS如何画一个三角形

.triangle {
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 10px solid #000;
}


响应式布局

详解

响应式布局是一种设计和开发网页的方法,使网页能够适应不同的设备和屏幕尺寸,提供更好的用户体验。它通过使用媒体查询(Media Queries)和弹性布局(Flexbox)等技术,根据设备的特性和视口(Viewport)大小来自动调整和重新排列页面的元素和内容。

响应式布局的目标是使网页在各种设备上都能呈现良好的布局和可用性,无论是在桌面电脑、笔记本电脑、平板电脑还是手机等移动设备上。

以下是一个简单的响应式布局的示例,假设我们有一个包含导航栏和内容区域的网页布局:

html

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    /* 基础样式 */
    body {
      margin: 0;
      padding: 0;
      font-family: Arial, sans-serif;
    }
    /* 导航栏样式 */
    .navbar {
      background-color: #333;
      color: #fff;
      padding: 10px;
    }
    /* 内容区域样式 */
    .content {
      padding: 20px;
    }
    /* 媒体查询 */
    @media (max-width: 768px) {
      /* 在小屏幕上调整布局 */
      .navbar {
        text-align: center;
      }
    }
  </style>
</head>
<body>
  <div class="navbar">导航栏</div>
  <div class="content">
    <h1>响应式布局示例</h1>
    <p>这是页面的内容。</p>
  </div>
</body>
</html>

在上述示例中,我们使用了媒体查询来针对小屏幕设备(最大宽度为768px)调整导航栏的样式。在小屏幕上,导航栏的文本居中显示,以适应较小的视口。

通过设置 <meta> 标签中的 viewport 属性,我们告诉浏览器对页面进行响应式布局。width=device-width 表示将视口宽度设置为设备的宽度,initial-scale=1.0 表示初始缩放级别为 1.0。

当在不同的设备上打开上述示例页面时,可以看到导航栏在桌面和小屏幕设备上有不同的布局效果,以适应不同的屏幕尺寸。

这只是一个简单的示例,实际的响应式布局可能涉及更复杂的调整和适配,包括使用媒体查询和弹性布局来改变元素的大小、位置和显示方式,以适应不同的设备和屏幕布局

  1. git svn

  2. webpack

  3. 内存泄露是什么,怎么导致的

  4. promise介绍

  5. 图片懒加载和预加载

  6. 数组去重的方法?至少说出2种

  7. 前端性能优化问题

  8. 前端缓存

  9. https和http的区别,http缓存有哪些,为什么要减少http的请求,https为什么比http更安全

  10. 了解axios的原理吗?怎么实现的

  11. Vue的导航守卫有哪一些? 你的登录拦截怎么实现的?

  12. keep-alive是什么?有哪几个生命周期阶段?

  13. 判断一个变量是否是数组,有哪些办法? 判断一个变量是否是对象,有哪些办法?

  14. 数组去重

  15. mixins有几个生命周期阶段?

  16. 弹性布局,一行两列,一列固定宽,如何实现?

  17. Flex:1 包含哪三种属性

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

互联网大厂ssp面经,数据结构part2

1. 什么是堆和优先队列&#xff1f;它们的特点和应用场景是什么&#xff1f; a. 堆是一种特殊的树形数据结构&#xff0c;具有以下特点&#xff1a;i. 堆是一个完全二叉树&#xff0c;即除了最后一层外&#xff0c;其他层都是满的&#xff0c;并且最后一层的节点都靠左对齐。i…

深入探索MySQL:成本模型解析与查询性能优化

码到三十五 &#xff1a; 个人主页 在数据库管理系统中&#xff0c;查询优化器是一个至关重要的组件&#xff0c;它负责将用户提交的SQL查询转换为高效的执行计划。在MySQL中&#xff0c;查询优化器使用了一个称为“成本模型”的机制来评估不同执行计划的优劣&#xff0c;并选择…

一般神经网络的微分与网络参数的初始化

(文章的主要内容来自电科的顾亦奇老师的 Mathematical Foundation of Deep Learning, 有部分个人理解) 一般深度神经网络的微分 上周讨论的前向和反向传播算法可以推广到任意深度神经网络的微分。 对于一般的网络来说&#xff0c;可能无法逐层分割&#xff0c;但仍然可以用流…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(三)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 4 - 6节&#xff09; P5《04.快速入门》 本节来实现一个 HelloWorld 效果&#xff1a; 1、打开编辑器&#xff0c;选择新建项目&…

洁盟超声波清洗机怎么样?希亦好用还是洁盟?超声波清洗机推荐

是不是还有很多朋友在选超声波清洗机方面还是觉得是越贵的就越好用&#xff01;或者说是不是还有很多小伙伴是不知道怎么选超声波清洗机&#xff1f;盲目跟风选超声波清洗机后才会知道真的很容易话冤枉钱&#xff0c;也并不是越贵的超声波清洗机就是越好的&#xff0c;在选超声…

Pandas 模块-操纵数据(11)-二元运算--超级add、sub、mul、div、mod、pow等等

目录 1. DataFrame.add 1.1 DataFrame.add 语法结构 1.2 DataFrame.add 参数说明 1.3 DataFrame.add 用法示例 1.3.1 正常的使用 1.3.2 需要注意类型相符合 2. DataFrame.sub 2.1 DataFrame.sub 语法结构 2.2 DataFrame.sub 参数说明 2.3 DataFrame.sub 用法示例 3.…

MySQL中什么情况下会出现索引失效?如何排查索引失效?

目录 1-引言&#xff1a;什么是MySQL的索引失效&#xff1f;(What、Why)1-1 索引失效定义1-2 为什么排查索引失效 2- 索引失效的原因及排查&#xff08;How&#xff09;2-1 索引失效的情况① 索引列参与计算② 对索引列进行函数操作③ 查询中使用了 OR 两边有范围查询 > 或 …

2.7设计模式——Proxy 代理模式(结构型)

意图 为其它对象提供一种代理以控制这个对象的访问。 结构 Proxy保存一个引用使得代理可以访问实体&#xff1b;提供一个与Subject的接口相同的接口&#xff0c;使代理可以用来替代实体&#xff1b;控制实体的存取&#xff0c;并可能负责创建和删除它&#xff1b;其他功能依赖…

项目分享|基于ELF 1开发板的MQTT远程温湿度监测系统

今天非常荣幸向各位小伙伴详细展示一个由共创社成员完成的MQTT远程温湿度监控系统项目。该项目借助ELF 1开发板作为核心技术支撑&#xff0c;成功实现了对各类环境空间中温湿度数据的实时、远程、稳定监测。该系统不仅集成了先进的数据采集模块&#xff0c;用于精确感知现场环境…

uniapp问题归类

最近使用uniapp中&#xff0c;遇到了一些问题&#xff0c;这边mark下。 1. 启动页变形 设置启动页的时候发现在部分android手机上启动页被拉伸了&#xff0c;最后看了下官方建议使用9.png图 生成9.png地址&#xff0c;推荐图片大小为1080x2340 uniapp推荐官方地址传送门 我…

JAVA实现easyExcel动态生成excel

添加pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency><!--工具类--> <dependency><groupId>cn.hutool</groupId><…

在Mac M1笔记本上跑大语言模型llama3的4个步骤?(install、pull、run、ask)

要点 Ollama一个功能强大的本地大语言模型LLM运行工具&#xff0c;支持很多模型&#xff0c;并且操作极其简单快速回忆步骤&#xff1a; 下载ollama工具&#xff1a;https://ollama.com/download 下载模型&#xff1a;ollama pull llama3 #根据libs列表直接指定名字 运行模型…

安卓studio插件开发(一)本地搭建工程

下载idea 社区版本 建立IDE Plugin工程 点击create就行&#xff0c;新建立的工程长这样 比较重要的文件 build.gradle&#xff1a;配置工程的参数 plugin.xml&#xff1a;设置插件的Action位置 build.gradle.kts内容如下&#xff1a; plugins {id("java")id(&quo…

常用的时间序列分析方法总结和代码示例

时间序列是最流行的数据类型之一。视频&#xff0c;图像&#xff0c;像素&#xff0c;信号&#xff0c;任何有时间成分的东西都可以转化为时间序列。 在本文中将在分析时间序列时使用的常见的处理方法。这些方法可以帮助你获得有关数据本身的见解&#xff0c;为建模做好准备并…

网站建设价格多少合理

网站建设价格多少合理&#xff0c;是很多企业和个人在寻找网站建设服务时&#xff0c;最为关心的问题之一。在选择好的网站建设服务商前&#xff0c;了解合理的网站建设价格&#xff0c;对于选择合适的网站建设服务商具有重要的参考作用。下面我们就来讨论一下&#xff0c;网站…

vue+element 树形结构 改成懒加载模式(原理element有),这里只做个人理解笔记

1 找到属性标签添加 lazy 和 :load"loadNode" 这两个属性 2 引入树形接口,并和后端约定好传值,(拿我的举例 第一次获取全部父级默认第一次传参数:{ parentId : 0},可获取全部父级 第二次通过点击的子级把子级id传进去,这一步就用到了:load"loadNode&quo…

区块链技术与应用学习笔记(10-11节)——北大肖臻课程

目录 10.分岔 ①什么是分叉&#xff1f; ②导致分叉的原因&#xff1f; ③在比特币新共识规则发布会会导致什么分叉&#xff1f; 什么是硬分叉&#xff1f; 硬分叉例子&#xff1f; 什么是软分叉&#xff1f; 软分叉和硬分叉区别&#xff1f; 软分叉实例 11.问答 转…

在no branch上commmit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录&#xff0c;这里的第二条提交&#xff08;fbd3ea8&#xff09;就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8&#xff0c;恢复到上次提交的状态&#xff0c;并且为其创建个分支backup&#xff0c;此时…

ES6要点

ES6/ES7内容解析 一、变量/赋值1、变量2、解构赋值 二、函数1、箭头函数2、默认参数3、参数展开&#xff08;剩余参数&#xff0c;数组展开&#xff09; 三、数组/JSON1、 数组2、JSON 四、字符串1、字符串模版2、字符串方法 五、面向对象1、类2、bind()3、箭头函数的this 六、…

【Python特征工程系列】递归特征消除法分析特征重要性-SVC模型为例(案例+源码)

这是我的第268篇原创文章。 一、引言 递归特征消除&#xff08;RFE&#xff09;是一种高效的特征选择方法&#xff0c;它通过递归减少特征的数量来找出模型最重要的特征。本文基于支持向量机分类器作为选择器的基模型&#xff0c;采用递归消除法进行特征筛选。 二、实现过程 2…
最新文章