2023前端面试题及答案整理(JS面试题)

2023-11-18

ES6

let / const

全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?

ES6规定,var 命令和 function 命令声明的全局变量,依旧是顶层对象的属性,但 let、const、class命令声明的全局变量,不属于顶层对象的属性。只在一个块级作用域(Script)中,获取时不加 window/global 就好:

let aa = 1;
const bb = 2;

console.log(aa); // 1
console.log(bb); // 2

箭头函数

箭头函数与普通函数(function)的区别是什么?构造函数(function)可以使用 new 生成实例,那么箭头函数可以吗?为什么?

箭头函数是普通函数的简写,可以更优雅的定义一个函数,和普通函数相比,有以下几点差异:

1、函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象。

2、不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

3、不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。

4、不可以使用 new 命令,因为:

  • 没有自己的 this,无法调用 call,apply。
  • 没有 prototype 属性 ,而 new 命令在执行时需要将构造函数的 prototype 赋值给新的对象的 proto

new 过程大致是这样的:

function newFunc(father, ...rest) {
  var result = {};
  result.__proto__ = father.prototype;
  var result2 = father.apply(result, rest);
  if (
    (typeof result2 === 'object' || typeof result2 === 'function') &&
    result2 !== null
  ) {
    return result2;
  }
  return result;
}

题目来源:Daily-Interview-Question 第58题

Promise

10 个 Ajax 同时发起请求,全部返回展示结果,并且至多允许三次失败,说出设计思路

这个问题相信很多人会第一时间想到 Promise.all ,但是这个函数有一个局限在于如果失败一次就返回了,直接这样实现会有点问题,需要变通下。以下是两种实现思路

// 以下是不完整代码,着重于思路 非 Promise 写法
let successCount = 0
let errorCount = 0
let datas = []
ajax(url, (res) => {
     if (success) {
         success++
         if (success + errorCount === 10) {
             console.log(datas)
         } else {
             datas.push(res.data)
         }
     } else {
         errorCount++
         if (errorCount > 3) {
            // 失败次数大于3次就应该报错了
             throw Error('失败三次')
         }
     }
})
// Promise 写法
let errorCount = 0
let p = new Promise((resolve, reject) => {
    if (success) {
         resolve(res.data)
     } else {
         errorCount++
         if (errorCount > 3) {
            // 失败次数大于3次就应该报错了
            reject(error)
         } else {
             resolve(error)
         }
     }
})
Promise.all([p]).then(v => {
  console.log(v);
});

ES6中,promise能实现异步的原理是什么?我new一个promise,然后对这个promise实例使用typeof,结果是什么?promise实例接收的参数是一个函数,函数接收两个参数一个resolve,一个reject,为什么resolve后可以实现继续执行后续代码?(TODO)

待续…

面向对象相关

JS是一门面向对象的语言,说说面向对象语言的三大特征?

封装、继承、多态

说说你是如何理解JS中封装、继承这两个特点的?

封装指的是隐藏逻辑实现过程,只对外暴露属性和方法,使用者只需要知道如何使用即可,而不需要关心内部如何实现的,目的在于简化实现过程,做到多处复用提高开发效率,当需要维护的时候,业务逻辑和工具功能是分开的,降低迭代成本。

继承指的是建立一个对象与另一个对象之间的父子关系,使得子对象可以拥有父级对象的属性和方法。继承的目的在于实现功能共享,通过“借用”父对象的特性,从而避免重复写功能模块避免多余内存空间的占用

声明一个函数fn,对其使用typeof,结果返回什么?然后我给fn添加一个属性,请问会报错吗?为什么?

结果返回是 function 字符串。添加属性不会报错,因为在js中,函数并不是真正的函数, function 本身是一个 object 对象,而对象是可以添加属性和方法的,所以不会报错。

定义一个字符串,对这个字符串使用typeof,结果返回什么?既然返回结果是string,而属性和方法是对象才有的,那为什么会在我定义的字符串上可以使用split,join(),length等方法和属性?

字符串形式的 string 。

所有的字符串都是大写字母开头的String对象的实例,当我们对字符串使用方法和属性时,其实字符串本身并没有对应的方法,这个时候,JavaScript会沿着原型链往上寻找,最终在对象 String 上找到了对应的方法和属性,而这个过程对于开发者是无感的,所以看上去像是调用了字符串本身的方法。

new 一个构造函数,如果函数返回 return {}return nullreturn 1return true 会发生什么情况?

如果函数返回一个对象,那么new 这个函数调用返回这个函数的返回对象,否则返回 new 创建的新对象

如果一个构造函数,bind了一个对象,用这个构造函数创建出的实例会继承这个对象的属性吗?为什么?

不会继承,因为根据 this 绑定四大规则,new 绑定的优先级高于 bind 显示绑定,通过 new 进行构造函数调用时,会创建一个新对象,这个新对象会代替 bind 的对象绑定,作为此函数的 this,并且在此函数没有返回对象的情况下,返回这个新建的对象

JS 垃圾回收机制

谈谈垃圾回收机制的方式及内存管理?

一、垃圾回收机制——GC

Javascript 具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存。

原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。

通常情况下有两种实现方式:

  • 标记清除
  • 引用计数

标记清除: js 中最常用的垃圾回收方式就是标记清除。

当变量进入环境时,例如,在函数中声明一个变量,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为“离开环境”。

引用计数的含义是跟踪记录每个值被引用的次数。

当声明了一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是 1。如果同一个值又被赋给另一个变量,则该值的引用次数加 1。相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值的引用次数减 1。当这个值的引用次数变成 0 时,则说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。这样,当垃圾回收器下次再运行时,它就会释放那些引用次数为 0 的值所占用的内存。

二、内存管理

  1. Javascript 引擎基础 GC 方案是

    (simple GC):mark and sweep(标记清除),即:

    1)遍历所有可访问的对象;

    2)回收已不可访问的对象。

  2. GC 的缺陷

    和其他语言一样,JavaScript 的 GC 策略也无法避免一个问题:GC 时,停止响应其他操作,这是为了安全考虑。而 Javascript 的 GC 在 100ms 甚至以上,对一般的应用还好,但对于 JS 游戏,动画对连贯性要求比较高的应用,就麻烦了。这就是新引擎需要优化的点:避免 GC 造成的长时间停止响应。

  3. GC 优化策略

    • 1)分代回收(Generation GC)

      这个和 Java 回收策略思想是一致的。目的是通过区分“临时”与“持久”对象;多回收“临时对象”区(young generation),少回收“持久对象”区(tenured generation),减少每次需遍历的对象,从而减少每次 GC 的耗时。

    • 2)增量 GC

      这个方案的思想很简单,就是“每次处理一点,下次再处理一点”,如此类推。

哪些操作会造成内存泄漏?

意外的全局变量引起的内存泄漏

function foo(arg) {
  bar = '全局变量'; // 没有声明变量 实际上是全局变量=>window.bar
}

原因:全局变量,不会被回收。

为什么不能泄漏到全局?平时不都会定义一些全局变量么:
全局变量根据定义无法被垃圾回收机制收集。需要特别注意用于临时存储和处理大量信息的全局变量。如果必须使用全局变量来存储数据,请确保将其指定为null或在完成后重新分配它。

解决:使用严格模式避免,函数内使用var定义,块内使用let、const。

闭包引起的内存泄漏

function bindEvent() {
  var obj = document.createElement("XXX");
  var unused = function () {
      console.log(obj,'闭包内引用obj obj不会被释放');
  };
  // obj = null;
}

原因:闭包可以维持函数内局部变量,使其得不到释放,造成内存泄漏。

解决:将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中,删除对dom的引用。例如上述案例,手动解除引用 obj = null

被遗忘的定时器和回调函数

var someResource = getData();
setInterval(function() {
    var node = document.getElementById('Node');
    if(node) {
        node.innerHTML = JSON.stringify(someResource));
        // 定时器也没有清除
    }
    // node、someResource 存储了大量数据 无法回收
}, 1000);

原因:当不需要 setInterval 或者 setTimeout 时,定时器没有被clear,定时器的回调函数以及内部依赖的变量都不能被回收,造成内存泄漏。

解决:在定时器完成工作的时候,手动清除定时器

没有清理 DOM 元素引用

var refA = document.getElementById('refA');
document.body.removeChild(refA); // dom删除了
console.log(refA, "refA");  // 但是还存在引用能console出整个div 没有被回收
refA = null;
console.log(refA, "refA");  // 解除引用

原因: 保留了DOM节点的引用,导致GC没有回收

解决:refA = null

IE9以下浏览器环境导致的循环引用

var element = document.getElementById('something');
var myObject = new Object();
myObject.element = element; // element属性指向dom
element.someThing = myObject; // someThing回指myObject 出现循环引用(两个对象一直互相包含 一直存在计数)。

原因:IE9以下 BOM 和 DOM 对象使用 C++ 以 COM 对象的形式实现的。COM 的垃圾收集机制采用的是引用计数策略,这种机制在出现循环引用的时候永远都释放不掉内存。

解决:不使用它们的时候,手动切断链接:myObject.element = null; element.someThing = null;

闭包

能讲下 JavaScript 的闭包么?

一个函数包含了另一个函数或另一个对象,里面这个对象或函数都可以使用外部函数的变量或参数,此时就形成了闭包。

你平常怎么用闭包的?

匿名自执行函数避免全局污染(模块化开发)

创建了一个匿名立即执行函数,由于外部无法引用它内部的变量,因此在函数执行完后会立刻释放资源,不污染全局对象。

const msg = (function () {
  const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
  const today = new Date()
  const msg = 'Today is ' + days[today.getDay()] + ', ' + today.getDate()
  return {
    getMsg() {
      return msg
    }
  }
}())

console.log(msg.getMsg())

缓存数据

有时候我们需要获取一个处理过程很耗时的对象,并且往往会把这个复杂的处理过程封装成一个方法。但每次需要用到它时都需要调用它从而花费很长时间,那么我们就需要将计算出来的值存储起来,当调用这个函数的时候,首先在缓存中查找,如果找不到,则进行计算,然后更新缓存并返回值,如果找到了,直接返回查找到的值即可。闭包就可以做到这一点,因为它不会释放外部的引用,从而函数内部的值可以得以保留。

var CachedSearchBox = (function () {
  var cache = {},
    count = [];
  return {
    attachSearchBox: function (dsid) {
      if (dsid in cache) { //如果结果在缓存中
        return cache[dsid]; //直接返回缓存中的对象
      }
      var fsb = new uikit.webctrl.SearchBox(dsid); //新建
      cache[dsid] = fsb; //更新缓存
      if (count.length > 100) { //保正缓存的大小<=100
        delete cache[count.shift()];
      }
      return fsb;
    },
    clearSearchBox: function (dsid) {
      if (dsid in cache) {
        cache[dsid].clearSelection();
      }
    }
  };
})();

拿到正确的值

for(var i = 0; i < 10; i++) {
  setTimeout(function(){
    console.log(i) //10个10
  }, 1000)
}

解决方案:for循环中声明10个自执行函数,保存当时的值到内部

for (var i = 0; i < 10; i++) {
  (function(j) {
    setTimeout(() => {
      console.log(j)
    }, 1000);
  })(i)
}

高级排他

场景:一个ul li列表,鼠标移入时高亮当前li标签,移除之前li标签的高亮状态。

常规写法:两层for循环,外层遍历li标签,给每个li添加 onmouseover 事件;里层for循环用来在高亮当前li标签之前,移除所有li标签高亮状态。

闭包写法:定义一个preIndex变量存储上次高亮li标签的索引,for循环内部使用立即执行函数+闭包保存index索引,这样就使li标签与index索引一一对应,然后在onmouseover事件触发后,根据preIndex找到之前高亮标签并移除高亮状态,并设置当前标签高亮,最后将preIndex设置为当前高亮标签的index索引。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
  * { margin: 0; padding: 0; list-style: none; }
  ul li { width: 100%; height: 20px; margin-bottom: 5px; background-color: grey; }
  li.active { background-color: yellow; }
  </style>
</head>
<body>
  <ul>
    <li class="active"></li>
    <li></li>
    <li></li>
  </ul>
  <script>
    window.onload = function() {
      let list = document.querySelectorAll('li')
      // 记录移动前选中li的对应索引
      let preActiveIndex = 0
      for (let i = 0; i < list.length; i++) {
        (function(j) {
          const li = list[i]
          li.onmouseover = function() {
            // 清除
            list[preActiveIndex].className = ''
            // 设置
            this.className = 'active'
            // 赋值
            preActiveIndex = j
          }
        })(i)
      }
    }
  // 常规写法
  // window.onload = function() {
  //   let list = document.querySelectorAll('li')
  //   for (let i = 0; i < list.length; i++) {
  //     const li = list[i]
  //     li.onmouseover = function() {
  //       for (let j = 0; j < list.length; j++) {
  //         list[j].className = ''
  //       }
  //       this.className = 'active'
  //     }
  //   }
  // }
  </script>
</body>
</html>

闭包会产生哪些问题?

闭包会使函数中的变量不能及时释放,造成内存消耗过大,从而导致网页的性能问题。不过目前浏览器引擎都基于 V8,而 V8 引擎有个 gc 回收机制,不用太过担心变量不会被回收。

Event Loop

setTimeout、Promise、Async/Await 的区别

这题主要是考察这三者在事件循环中的区别,事件循环中分为宏任务队列和微任务队列。
其中setTimeout的回调函数放到宏任务队列里,等到执行栈清空以后执行;
promise.then里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行;async函数表示函数里面可能会有异步方法,await后面跟一个表达式,async方法执行时,遇到await会立即执行表达式,然后把表达式后面的代码放到微任务队列里,让出执行栈让同步代码先执行。

你知道 Event Loop (事件循环)的机制吗?

事件循环机制从整体上告诉了我们 JavaScript 代码的执行顺序Event Loop即事件循环,是指浏览器或Node的一种解决javaScript单线程运行时不会阻塞的一种机制,也就是我们经常使用异步的原理。

先执行宏任务队列,然后执行微任务队列,然后开始下一轮事件循环,继续先执行宏任务队列,再执行微任务队列。

  • 宏任务:script/setTimeout/setInterval/setImmediate/ I/O / UI Rendering
  • 微任务:process.nextTick()/Promise

上诉的 setTimeout 和 setInterval 等都是任务源,真正进入任务队列的是他们分发的任务。

优先级

  • setTimeout = setInterval 一个队列
  • setTimeout > setImmediate
  • process.nextTick > Promise
for (const macroTask of macroTaskQueue) {  
  handleMacroTask();    
  for (const microTask of microTaskQueue) {    
   handleMicroTask(microTask);  
  }
}

概念性问题

观察者模式与发布订阅模式有什么区别

可以把观察者模式想象成顾客与微商的关系。顾客关注了微商的商品,微商就会记住顾客,每当微商有新产品时,就会直接私聊来通知所有关注了自己的顾客。这里的顾客就相当于观察者,微商就是被观察者。

而发布订阅模式可以看做是顾客通过「商城平台」关注了商家的商品,商家一旦上新就通过「商城平台」向关注了自己的顾客群发消息,这里的顾客就是订阅者,「商城平台」就是事件总线,商家就是发布者。

通过上面两个例子就能看出,观察者模式的模型跟发布/订阅者模型里,差距就差在有没有一个中央的事件总线。如果有这个事件总线,我们就可以认为是个发布订阅模型。如果没有,那么就可以认为是个观察者模型。因为其实它们都实现了一个关键的功能:发布事件-订阅事件并触发事件。

讲一下面向对象的三大特征?

封装继承和多态

什么是重写,什么是重载?

重写就是子类覆盖掉父类的方法
重载就是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

更多面试问答

https://download.csdn.net/download/suli77/87425350

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023前端面试题及答案整理(JS面试题) 的相关文章

  • 声明为对象文字与函数的剔除视图模型之间的区别

    在knockout js中 我看到视图模型声明为 var viewModel firstname ko observable Bob ko applyBindings viewModel or var viewModel function
  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • 如何恢复文本框数据

    我有一个小小的要求 我们已经恢复了之前清除的文本框数据 下面是我的 HTML 代码 table tr td td tr table
  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • jQuery:查找具有特定自定义属性的元素

    我只想找到具有特定自定义属性值的元素 例如 我想找一个div其具有属性data divNumber 6 var number 6 var myDiv data divNumber number 我尝试使用http api jquery co
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • .points 不透明度/大小在三个.js 内

    我回来回答有关 points 的第二个问题 这次想知道如何将不透明度从 0 更改为 1 然后又回到距发射器的特定像素距离内 var particleCount 14 particles new THREE Geometry pMateria
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • 可以禁用幻灯片的触摸模拟但不能禁用滚动条(危险的滑动器)吗?

    我的页面上有一个危险的滑动器 它成功地模拟了幻灯片和随附滚动条上的触摸事件 允许单击鼠标并移动以向左或向右滑动幻灯片 这很好 但我现在在滑动器内的幻灯片上调用了可拖动 这意味着我需要停止此触摸模拟 拖动幻灯片并同时移动它们会引起混乱 但仅限
  • 如何在React中动态分配属性?

    这是一个有两个参数的函数 我要创建的标签的名称 具有以下属性的对象 Using React 我创建一个组件并将该元素渲染到 DOM 问题是我想向元素添加属性 但它不允许循环在元素内设置属性 var Element function elem
  • Angular JS - 使服务可以从控制器和视图全局访问

    假设我们有以下服务 myApp factory FooService function 然后 从控制器中 我会说 myApp controller FooCtrl scope FooService function scope FooSer
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • 如何将MathJax公式转换为img

    Mathjax 现在在我的项目中运行良好 但有一个问题 有没有办法将MathJax的公式 纯html和css 转换成img文件 我可以保存 MathJax 可以配置为生成 SVG 看http docs mathjax org en late
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • jQuery Mobile + Admob:轮换?

    我使用 jQuery Mobile 框架创建了一个移动应用程序 所有页面都在index php中加载 使用 div 在每个页面的页脚中 我添加了Admob代码 div div div
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse

随机推荐

  • python多进程原理及其实现

    文章目录 1 进程的基本概念 2 父进程和子进程 2 1 父子进程如何区分 2 2 子进程如何回收 3 Python进程模块 3 1 fork 3 2 Process进程 3 3 进程池POOL 多个进程 4 进程间通信方式 5 多进程实现
  • SOLOv2 学习笔记

    博客原文 https blog csdn net weixin 44270815 article details 105283301 模型下载教程 https blog csdn net weixin 44270815 article de
  • Win64安装cx_Oracle过程

    学习python过程中 因需要连接oracle数据库 所以要安装cx Oracle 我的电脑是WIN64 python是2 7版本 本地oracle client是32位的 安装过cx Oracle 5 2 1 11g win amd64
  • js实现word转化为html

  • windows8.1 vs2015 dlib库cpu 版本编译以及应用 library is 90, caller expects 80

    近期由于要做一个关于人脸计数的项目 因此对dlib库进行了编译和使用 其中遇到了不少问题 下面请听我一一道来 第一步 从dlib官网下载dlib源码 链接地址 https github com davisking dlib 第二步 采用cm
  • PrimeTime中的DMSA

    第一次尝试使用PT的DMSA 步骤存在太多的弯弯绕绕了 这里记录一下 一 什么是DMSA 在PT中 我们将一种operating mode 如FUNC DFT等 和一种operating condition 如WC WCZ AVS等 的组合
  • SQLDEVELOPER启动警告 - 无法安装某些模块: oracle.jewt_core - org.netbeans.InvalidException: Netigso

    https bbs csdn net topics 390721236 page 1 SQL Developer第一次启动后没问题 但是第二次启动后就报错 根据如下步骤可以解决 1 Go to C Users USERNAME AppDat
  • C#操作MongoDB,看我这一篇就够了!

    一 准备工作 工欲善其事必先利其器 首先呢咱们得下载好C 程序里面可以驱动mongodb的组件 走起官网 C 操作mongodb组件下载 菜鸟教程也上一上 mongodb菜鸟教程 dll下载下来之后有这几个 都引用上 不要省 哈哈 个人还是
  • 算法学习(四)查找问题

    一 查找问题通常有2类 1 查找有无 元素a是否存在 set 集合 2 查找对应关系 键值对应 元素a出现了几次 map 字典 leetcode349 两个数组的交集 给定两个数组 编写一个函数来计算它们的交集 输出结果中的每个元素一定是唯
  • 11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

    矩阵 向量是对数的拓展 一个向量表示一组数 矩阵是对向量的拓展 一个矩阵表示一组向量 1 2
  • win10+pytorch(gpu)下载安装中踩的坑,下载安装全流程

    整个下载安装的流程如下 1 查看自己的电脑显卡是否支持gpu 具体查看方式可以参考我的这一篇文章 CUDA cuDNN下载安装 配备GPU环境 九九19496的博客 CSDN博客 但先不要下载cuda和cudnn 2 确定自己想要的pyto
  • TCP流式服务的粘包问题及解决方法

    TCP流式服务的粘包问题 有可能将两次send的内容合并在一起被接受端收到 解决方法 发送定长包 包层加入 r n标记 FTP协议就是这么做的 但这种方案存在的问题就是 如果数据正文存在同样的字符 就会被误判为消息的边界 包头加上包体长度
  • requery与ajax,总结一下query中ajax的几种方法

    1 a中比需抖接朋功要朋插jax ajax type POST 提交数据的类型 POST GET url testLogin aspx 提交的网址 提交的数据 data Name sanmao Password sanmaoword 返回数
  • 职高计算机班主任工作计划,教学工作计划:高职班主任工作计划

    作为高职院校各专业的班主任 面临着教学理念和班级管理双重压力 高职班主任工作计划不仅要从学生学习上进行合理计划 更要从学生思想教育上进行计划 以下是小编整理的高职班主任工作计划 欢迎大家参阅 高职班主任工作计划 装潢专业 经过一年半的锻炼与
  • java对list集合进行分页

    1 计算页数 List
  • CAN总线之错误检测以及错误状态简介

    CAN总线之错误检测以及错误状态简介 1 CAN错误检测特点简介 1 1错误检测机制 2 错误 2 1错误状态的种类 本文参考瑞萨的 CAN总线入门 周立功的 现场总线CANopen设计与应用 1 CAN错误检测特点简介 错误检测是CAN的
  • java发邮件

    1 设置邮箱smtp服务 获取第三方授权码 mailHost smtp 163 com mailFrom xxx 163 com mailUser xxx mailPassword xxxpassword 主题 StringBuffer s
  • 本土化的ChromeOS-系统推荐

    系统推荐 今天推荐一个本土化的ChromeOS 可以安装安卓软件和Play商店的软件 不需要拥有谷歌账号即可使用 只需要创建fydeOS的账号就可以了 相比起其它的第三方ChromeOS操作系统 它开放的东西更多 官方也有适配一些第三方设备
  • STM32速成笔记—Flash闪存

    文章目录 一 Flash简介 二 STM32F1的Flash 三 Flash操作步骤 四 程序设计 4 1 读取数据 4 2 写入数据 不检查 4 3 写入数据 检查 五 注意事项 一 Flash简介 快闪存储器 flash memory
  • 2023前端面试题及答案整理(JS面试题)

    ES6 let const 全局作用域中 用 const 和 let 声明的变量不在 window 上 那到底在哪里 如何去获取 ES6规定 var 命令和 function 命令声明的全局变量 依旧是顶层对象的属性 但 let const