![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
常见面试题
weixin_41387874
这个作者很懒,什么都没留下…
展开
-
手写浅拷贝和深拷贝(深拷贝对象中包含函数的处理方法)
手写浅拷贝 function shallowCopy(obj) { let objNew = new Object(); for(let item in obj) { objNew[item] = obj[item]; } return objNew; } let obj = { name: "a", obj1: { age : 1 }, fn : function(){ let a = "1";原创 2021-09-16 12:15:23 · 393 阅读 · 0 评论 -
JavaScript的垃圾回收
JavaScript的垃圾回收 JavaScript的垃圾回收有2种。 标记清理 标记清理的策略 垃圾回收程序在运行的时候,会标记内存中所有变量,然后会为所有处于还在上下文中的变量和所有被还在上下文中的变量引用的变量的标记删除,然后会销毁剩下还带有标记的变量。 标记清理的方法(方法并不重要,重要的是策略) 维护2个列表,一个是在上下文中,一个不在上下文中。 引用计数 引用计数的策略(因为循环引用的问题,已经逐渐不常用了) 引用计数不是那么常用,引用计数会为变量设置它的引用值是1,然原创 2021-09-07 15:04:56 · 47 阅读 · 0 评论 -
CSS3基础 -- 弹性盒子模型
弹性盒子模型 弹性盒子作用 使用弹性盒子,我们可以轻松创建自适应浏览器窗口的流动布局和自适应字体大小的弹性布局。 弹性盒子特点 当我们对一个元素定义它的display属性是flex或inline-flex时,这个元素就会变成一个弹性盒子,会具有弹性盒子特点。 当子元素宽度之和小于父元素宽度时,所有子元素最终的宽度就是定义的宽度。 当子元素宽度之和大于父元素宽度时,子元素会按照比例来划分。 弹性布局的基本概念 flex容器和flex items 采用弹性布局的元素,称为flex容器。 flex容器.原创 2021-09-05 21:51:40 · 257 阅读 · 0 评论 -
CSS3基础 -- 多列布局
多列布局 多列布局作用 多列布局是CSS3实现的用来解决多列布局的布局方式。 多列布局常用的5个属性 column-count column-count用来指定多列布局的列数。 column-count属性的2种属性值 auto(默认值) 列数由column-width属性决定。 n(正整数) 自动划分为n列。 column-width column-width属性用来指定多列布局中每一列的宽度。 column-width属性的2种属性值 auto(默认值原创 2021-09-04 19:18:41 · 171 阅读 · 0 评论 -
JavaScript基础 -- 防抖和节流
防抖和节流 什么时候用到防抖和节流 当某一个事件的触发频率非常高,如,用户点击按钮、用户移动鼠标,为了节省浏览器资源,就需要对事件的执行做出限制。 防抖 防抖,就是在用户点击按钮、用户移动鼠标触发事件后,需要等待一段时间再执行事件函数,如果在等待的过程中,这个事件再次触发,那么重新计时等待。 <!DOCTYPE html> <html> <head> <meta charset = "utf-8"/>原创 2021-08-30 17:47:43 · 63 阅读 · 0 评论 -
从LeetCode 5. 最长回文子串分析动态规划
详细部分见我在力扣的题解原创 2021-08-14 21:09:50 · 50 阅读 · 0 评论 -
JavaScript实现5种排序算法及其稳定性(分治类算法时间复杂度分析)
快速排序简介 快速排序擅长于处理大数据集,当数据集较大时,我们一般使用快速排序。 快速排序也十分脆弱,经常会出现实际时间复杂度只有O(n^2)的情况。 快速排序的平均时间复杂度是O(n*logn)(n是数据集种数据个数)。 快速排序实际上是一种分治的排序算法,利用递归实现。 快速排序的过程 1.选择一个基准元素pivot 2.把数组中小于pivot的数据放到pivot左侧,大于pivot的数据放到pivot右侧。 3.递归的进行这个过程,直到数组为空。 首先我们给出问题,我们想要对以下数据进行排序原创 2021-08-06 20:51:25 · 629 阅读 · 1 评论 -
TCP连接过程和为什么需要三次握手
TCP三次握手为什么不能改成两次握手 我们假设客户端时A、服务器端是B。 TCP是一种虚拟的连接,必须需要双方都确认连接已经建立,TCP连接才算建立成功。 TCP的连接过程 当A和B之间需要建立TCP连接的时候,客户端A向服务器端B发出连接请求。 如果服务器端B收到了会对客户端A发出确认信息表示收到了请求。 客户端A在收到服务器端B的确认信息之后会对B再次发出确认表示握手结束,这时双方都确认连接已经建立。 一种特殊情况 在实际的网络中,我们时常会遇到丢包的情况,如果客户端A向服务器端B发送的连接请求在储原创 2021-04-23 00:11:38 · 197 阅读 · 0 评论 -
JavaScript中的闭包
闭包的定义 如果一个函数内部嵌套了其他函数,并且这个内部函数引用了外部函数的局部变量,那么这个内部函数和和对其外部变量的引用的组合叫做闭包(closure)。 闭包的定义显然很难理解,为了帮助理解,下面我们来看一段代码。 function parent() { var num = 100; function son() { alert(num); } return son; } var son1 = parent(); son原创 2021-04-22 13:49:59 · 41 阅读 · 0 评论 -
let、var、const的区别
写在之前 作用域: ES5中有全局作用域、函数作用域。 ES6加入了块作用域。 全局作用域:全局都可访问。 函数作用域:只能在函数内部访问。 只能在代码块里访问,代码块由 {} 括起来。 提出时间不同 var是由es5提出的。 let、const是由es6提出的。 const const声明的时候必须对其赋值。 const var1; //程序报错 const var2 = ""; const var3 = 1; const声明的是常量,不能对其值进行修改。 如果const声明的是O原创 2021-04-22 12:20:08 · 54 阅读 · 0 评论 -
bind、call、apply的区别
apply 、 call 、bind 三者都是用来改变函数的this对象的指向的; apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文; apply 、 call 、bind 三者都可以利用后续参数传参; bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用 。 ...原创 2021-04-11 22:06:28 · 37 阅读 · 0 评论 -
JS数组常用API
JS数组常用API 删除 pop()方法,用于删除数组的最后一个元素并返回该元素。 shift()方法,删除数组的第一个元素并返回该元素。 添加方法 push(argument)方法,添加argument到数组最后一位并返回新数组的长度。 unshift()方法,添加元素到数组第一个位置并返回新数组长度。 操作 concat()方法,用于连接两个数组 slice(start, end)方法,slice()方法用于复制数组的一部分到一个新数组,start和end表示数组的下标,包含s原创 2021-04-11 16:28:07 · 108 阅读 · 0 评论 -
JS的浅拷贝和深拷贝
预备知识 原始值和引用值的区别 原始值存储在变量访问的位置,引用值存储在堆内存中(变量访问的位置仅储存内存地址)。 浅拷贝和深拷贝 应用场景 浅拷贝和深拷贝只有对于引用值即复杂数据类型(Object类型、Array类型、Function类型)。 区别 设obj是已有一个复杂数据类型对象,obj1由obj浅拷贝而来,obj2由obj深拷贝而来。 如果改变obj1的内容,obj也会改变,即浅拷贝时复制的是内存地址。 如果改变obj2的内容,obj不会改变,即深拷贝时会开辟一个新内存空间。原创 2021-04-11 16:05:59 · 38 阅读 · 0 评论 -
类数组与数组的区别
类数组与数组的区别 相同点:都可用下标访问每个元素,都有length属性。 不同点:数组对象的类型是Array,类数组对象的类型是object,也就是说类数组原型是Object;类数组不具有数组所具有的方法,数组遍历可以用 for in和for循环,类数组只能用for循环遍历。 ...原创 2021-04-11 15:50:25 · 176 阅读 · 0 评论 -
JS判断数据类型
JS判断数据类型 typeof()函数 var b = 1; typeof(b) ##'Number' var a = [1,2,3] typeof(a) ##'Object' var null_1 = null; typeof(null_1) ##'Object' var fun = function(){}; typeof(fun) ##'function' typeof()函数可以测试出Number、string、undefined、Boolean、function 对于null类型、原创 2021-04-11 11:13:15 · 39 阅读 · 0 评论 -
JS的原始值与引用值类型及区别
JS的数据类型 首先需要注意的是JS是弱类型语言,它的类型是可变的。而JS为了节省内存空间而划分了不同的数据类型。 JS一共有五种简单数据类型,三种复杂数据类型。 JS的五种简单类型 Number数据类型 Number数据类型包含整数和浮点数,其中浮点数至少包含到小数点后一位。 NaN也属于Number类型。 1.对于NaN经过任何操作(加减乘除等)后结果均为NaN。typeof(NaN) ## NaN 2.NaN不等于NaN。NaN==NaN ##false string类型 字符串类型的数原创 2021-04-11 00:44:58 · 155 阅读 · 0 评论