![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
533_
这个作者很懒,什么都没留下…
展开
-
[js] 实现add函数,让add(a)(b)和add(a,b)两种调用结果相同
function add(a, b) { if (b === undefined) { return function(x) { return a + x } } return a + b}原创 2021-12-27 16:38:35 · 643 阅读 · 0 评论 -
[js] 获取传入getValue函数相应对象的key的value
// 请实现一个getValue函数,该函数可以从一个深层对象中获取到该对象上的值, 该函数接受两个参数, 一个是需要获取值的原始对象(originObj), 第二个参数是需要从深层对象中获取value使用的key的路径(keyPath)。let obj = { a: { b: { c: { d: 1 } } }}let obj = { a: { b原创 2021-12-22 21:14:08 · 1948 阅读 · 0 评论 -
[js] 查找两个数组中相同的项 filter
array1.filter(function(n) { return array2.indexOf(n) != -1});原创 2021-12-22 20:56:49 · 832 阅读 · 0 评论 -
[面试 ] js 前序中序 后序
前序遍历根节点=>左子树=>右子树遍历顺序为ABC代码:var preorderTraversal = function(root) { let res = []; // 遍历函数 function traversal(root) { if (root !== null) { // 访问根节点的值 res.push(root.val); if (root.left) {原创 2021-12-17 15:00:49 · 579 阅读 · 0 评论 -
[js] const常量不能更改和js的两种数据类型
js的两种数据类型:基本类型:string,number,boolean,null,undefined引用类型:Function,Array,Objectconst不能修改的是栈内存在的值和地址。对于const声明的原始数据类型,一旦声明变不能更改,但是对于引用数据类型,虽然不能重新赋值给某个新的引用类型变量。但是操作操作引用数据类型变量中的元素或者属性却是合法的。因为这些操作不会改变引用数据类型的地址。基本类型:操作和保存在变量的实际的值const不可修改声明的基本类型的值引用类型:保存在原创 2021-12-17 10:38:16 · 418 阅读 · 0 评论 -
[面试题] 选择排序
工作原理:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。var arr = [2, 1, 3, 6, 4, 7, 5]; for (var i = 0; i < arr.length - 1; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { var t原创 2021-12-16 10:40:18 · 400 阅读 · 0 评论 -
[面试] 冒泡排序
数组中有n个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过n-1(数组的 length - 1) 轮,就完成了所有数的排序。var arr = [3, 10, 6, 2];// 遍历数组for (var i = 0; i < arr.length - 1; i++) { // 这里要根据外层for循环的 i ,逐渐减少内层 for 循环的次数 for (var j = 0; j < arr.lengt原创 2021-12-16 10:32:26 · 225 阅读 · 0 评论 -
[pomise]
promise有三种状态两种模式;三种状态分别为pending(进行中)/fulfilled(成功的)/rejected(失败的);两种模式是从pending到fulfilled和pending到rejected。resolve让状态从pending变为fulfilledresolve让状态从pending变为rejectedthen方法接受两个参数,第一个参数是成功时的回调,在promise由“等待”态转换到“完成”态时调用,另一个是失败时的回调,在promise由“等待”态转换到“拒绝原创 2021-12-16 09:51:31 · 290 阅读 · 0 评论 -
[react] 虚拟DOM与DOM Diffing算法
例子时间在更新,但是Input中的数据没有丢,说明input没有更新,用的还是之前的真实DOM时间在更新,但是span里面的Input标签里的数据也没丢,diffing算法不是只对比一层,span标签里的标签也会进行对比,所以这个input数据也不丢,还是之前的真实DOM。面试题: react/vue中的key有什么作用?(key的内部原理是什么?)1. 虚拟DOM中key的作用:简单的说: key是虚拟DOM对象的标识, 在更新显示时key起着极其重要的作用。详细的说: 当状态原创 2021-12-03 14:00:32 · 108 阅读 · 0 评论 -
[js] 数组扁平化, join& split, toString & split , 扩展运算符, flat
join& splitconst arr = [11, [22, 33], [44, 55], 66];console.log(arr.join()) // '11,22,33,44,55,66'console.log(arr.join().split(',')) // ['11', '22', '33', '44', '55', '66']toString & splitconst arr = [11, [22, 33], [44, 55], 66];const f原创 2021-12-15 11:49:11 · 668 阅读 · 0 评论 -
[面试题] vue router传参的三种方式111111
vue router传参的三种方式原创 2021-12-07 14:21:32 · 271 阅读 · 0 评论 -
[面试] 将window的location的search字符串转换成一个对象
function formatSearch(se) { if (typeof se !== "undefined") { se = se.substr(1); //name=a&age=20 var arr = se.split("&"); //['name=a', 'age=20'] obj = {}, newarr = []; arr.forEach((item, index) => { ne原创 2021-12-06 09:03:50 · 538 阅读 · 0 评论 -
[面试题] Vue路由跳转的四种方式
1.router-link(声明式路由)<router-link :to="'/home'">Home</router-link><!-- 使用 name,path 都可以,建议使用 name --> <!-- 不带参数 --><router-link :to="{name:'home'}">Home</router-link> <router-link :to="{path:'/home'}">Home原创 2021-12-04 11:56:49 · 216 阅读 · 0 评论 -
[vue] 子组件与父组件生命周期发生的先后顺序
父子加载渲染过程:父beforeCreate->父created->父beforeMount->子beforeCreate->子created-> 子beforeMount->子mounted->父mounted组件更新过程:父beforeUpdate->子beforeUpdate->子updated- >父updated销毁过程:父beforeDestroy->子beforeDestroy- >子destroye原创 2021-12-03 21:37:30 · 311 阅读 · 0 评论 -
[vue] nextTick
nextTick的回调会在DOm异步渲染完毕后执行当数据更新了,在dom中渲染后,自动执行该函数,vue是异步渲染点击,向数组里添加一项的时候,vue不会马上渲染,会在下一个tick渲染,这时候如果尝试获取dom元素的属性时,得到的是上一轮的数据,想要获取准确的数据,需要用nextTick.nexttick的回调函数会在dom节点更新结束后执行同时增加3个,nextTick的回调只会执行一次批量进行异步渲染...原创 2021-12-03 20:26:40 · 308 阅读 · 0 评论 -
[面试] 前端浏览器路由模式 hash history
history模式点击按钮 pushState点击后退或者前进 window.onpopstate点击后退:点击前进:hash模式 window.onhashchange手动修改地址栏把地址栏改为#/把地址栏改为#/user注意页面不会刷新点击后退,前进点击按钮首次加载页面显示hash值面试:说下前端浏览器路由模式hash它可以通过a标签触发或编程式导航触发它通过window.onhashchange事件来监听地址栏中的变化原创 2021-12-03 18:00:40 · 422 阅读 · 0 评论 -
[面试题] 手写call、apply、bind
call const obj1 = { name:'张三', age:18, sex:'男', // 存储在对象obj1 中的函数 this指向默认是 对象obj1 // this.name , this.age , this.sex 调用的应该是 obj1 中的数据 fun:function(addr,phone){ console.log( this.name ); console.log( this...原创 2021-12-03 13:21:42 · 481 阅读 · 0 评论 -
浏览器回收机制111111111111
1原创 2021-12-02 09:33:03 · 167 阅读 · 0 评论 -
vuex面试题
https://mp.weixin.qq.com/s/askQxPHeKA-yyNAbwYYTvQhttps://blog.csdn.net/qq_51501183/article/details/120475841https://www.cnblogs.com/qwer123dsada/p/14803352.html原创 2021-12-02 09:09:22 · 218 阅读 · 0 评论 -
vm vh rem 移动端单位
11111111111111111原创 2021-12-01 14:14:02 · 91 阅读 · 0 评论 -
[面试] 跨域方法 1111111111
jsonp代理cors (后端配置)优缺点:get其他的:(2)通过修改document.domain来跨子域(3)使用window.name来进行跨域(4)使用HTML5中新引进的window.postMessage方法来跨域传送数据原创 2021-11-30 09:47:53 · 53 阅读 · 0 评论 -
[面试] Object.difineproperty和proxy有什么区别
1原创 2021-11-29 14:19:46 · 262 阅读 · 0 评论 -
[面试] 自定义指令的钩子函数
1原创 2021-11-29 14:58:33 · 110 阅读 · 0 评论 -
[面试] function普通函数和箭头函数的区别
1原创 2021-11-29 14:51:19 · 143 阅读 · 0 评论 -
[面试] for in 和for of区别
1原创 2021-11-29 14:20:21 · 113 阅读 · 0 评论 -
[面试] map和forEach有什么区别
1原创 2021-11-29 14:18:50 · 123 阅读 · 0 评论 -
[js] 面试 什么是BFC?垂直margin重叠是为什么?怎么解决这个问题?
BFC全称Block Formatting Context ,中文意思为块级格式上下文。通俗的来说:BFC是一个独立的布局环境,我们可以理解为一个箱子(实际上是看不见摸不着的),箱子内部的元素无论如何翻江倒海,都不会影响到外部。转换为BFC的理解则是:BFC中的元素的布局是不受外界的影响(我们往往利用这个特性来消除浮动元素对其非浮动的兄弟元素和其子元素带来的影响。比如清除浮动)并且在一个BFC中,块元素与行元素都会垂直的沿着其父元素的边框排列。如何触发 BFC浮动元素:float值除none以外的原创 2021-11-15 22:44:36 · 1326 阅读 · 0 评论 -
[css] 面试题 画一个三角形
.border { width: 0; height: 0; border: 50px solid; border-color: transparent transparent #d9534f;}<div class="border"></div>[css] CSS画一个三角形,CSS绘制空心三角形原创 2021-11-12 20:56:18 · 106 阅读 · 0 评论 -
[css] 面试 简单写 圣杯布局,双飞翼布局代码
圣杯布局原理:[css] 圣杯布局 双飞翼布局<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>圣杯布局</title> <style> html, body{ height: 100%; overflow: hidden; } .container{原创 2021-11-12 14:37:14 · 121 阅读 · 2 评论 -
[css] 圣杯布局 双飞翼布局
三栏式布局三栏布局,两边的盒子宽度固定,中间盒子自适应,“圣杯”和“双飞翼就是三栏式布局,它们实现的效果是一样的,差别在于其实现的思想。圣杯布局圣杯:父盒子包含三个子盒子(左,中,右)中间盒子的宽度设置为 width: 100%; 独占一行;使用负边距(均是 margin-left)把左右两边的盒子都拉上去和中间盒子同一行;.left {margin-left:-100%;} 把左边的盒子拉上去.right {margin-left:-右边盒子宽度px;} 把右边的盒子拉上去父盒子原创 2021-11-12 09:13:00 · 711 阅读 · 0 评论 -
[css] 解决问题---子元素设置margin-top,作用到父元素上
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Do.原创 2021-08-05 11:16:03 · 743 阅读 · 0 评论 -
[css] 如何实现div盒子水平垂直居中
html 代码<div class="parent"> <div class="child">DEMO</div></div>公共css样式.parent{ width:200px;height:300px; background:#ddd;} .child{ background:#666; color:#fff;}盒子宽高 + 父相子绝 + margin父相子绝,子盒子:top:50%,left:50%;然后设置左外边原创 2021-11-11 17:56:19 · 1078 阅读 · 0 评论 -
[js] 什么是同步,异步
同步同步,我的理解是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较强的程序,我们做的用户登录功能也是同步处理的,必须用户通过用户名和密码验证后才能进入系统的操作。当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端。这样的话客户端需要一直等待。用户使用起来会有不友好。同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步异步,是一种并行处理的方式,不必等待一个程序执行完,可以执行其它的任务。在原创 2021-11-11 17:54:50 · 397 阅读 · 0 评论 -
[js] js中new一个新对象发生了什么
new对象:function Person(name, age) { this.name = name; this.age = age; } var person = new Person("Alice", 23); new一个对象的四个过程:1、创建一个空对象var obj = new Object(); 2、设置原型链,将obj的__proto__成员指向了构造函数Person的prototypeobj.__proto__ = Person.prototype;原创 2021-11-11 16:02:27 · 379 阅读 · 0 评论 -
[js] instanceof和原型链
object instanceof constructor参数object要检测的对象.constructor某个构造函数描述instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。// 定义构造函数function C(){} // true,因为 Object.getPrototypeOf(o) === C.prototypeo instanceof C; instanceof 和原型链..原创 2021-11-03 08:24:28 · 137 阅读 · 0 评论 -
[html css js ] 面试题
1.父元素和子元素宽高不固定,如何实现水平垂直居中弹性盒模型父元素设置:display:flex; justify-content:center; align-items:center额外的骚操作:父元素设置弹性盒display:flex; 子元素可以设置margin: auto; 实现垂直水平居中定位属性(position)配合位移属性(transform)父元素设置:position:relative,子元素设置:position:absolute; top:50%; left:50%;原创 2021-10-27 08:49:38 · 93 阅读 · 0 评论