刷题笔记
1.编写一个方法,该方法接收两个参数,分别为 k 和 一个无序的纯数字数组。该方法在执行后,会返回数组中第 k 大的数字。特别注意,如果数组中,有两位数值一样的数字,同数值数字排名并列。如 [3,1,3,2,5,4,5] 中,第 1 大的数字为 5,第2大的数字为 4,第5大的数字为 1。
解题思路:排序 (降序) 数组去重 校验数据
function getNum (k,arr){ // 降序 排序 let newArr = arr.sort((a,b)=> b -a) // 去重 let arr2 = new Set(newArr) // 将类数组转回数组 let arr3 = Array.from(arr2) console.log(arr3) [78, 67, 44, 34, 29, 4, 3, 2, 1] if (typeof arr3[k-1] !== 'undefined') { // 返回查找的数据 return arr3[k-1] } else { // 未查到数据排除错误 throw Error ("为找到对应数据") } } let arr = [1,3,4,2,67,34,78,44,29] let res = getNum(3,arr) console.log(res)2.__proto__ 和 prototype 之前有什么关系?
所有对象都有__proto__属性,函数这个特殊对象除了具有__proto__属性,还具有原型属性prototype,prototype对象默认有两个属性。constructor属性和__proto__属性。prototype属性可以给函数和对象添加可共享(继承)的方法,属性。而__proto__是查找某函数或对象的原型链的方式。constructor.这个属性包含了一个指针,指回原构造函数
3..call(), .apply() .bind() 的区别和作用?bind 方法如何来实现?
4.js中基础数据类型有哪几种?了解包装对象么?
5.如何判断this?箭头函数的this是什么?
6.如何中断ajax请求?
var native = new XMLHttpRequest(); native.open("GET","https://api.github.com/"); native.send(); native.onreadystatechange=function(){ console.log(native.status,'c') if(native.readyState==4&&native.status==200){ console.log(native.response,'a'); }else{ console.log(native.status,'b'); } } native.abort();补充说明:一.readyState
创建-初始化请求-发送请求-接收数据-解析数据-完成
1.Http请求的状态,当一个XMLhttpRequest初建时,这个属性是从0 开始,直到接受到完整的HTTP相应,这个值增加到4,5个状态中相应的名称。
0 ---- Uninitialized (未初始化) 初始化状态。XMLHttpReques对象已创建或已被abort()方法重置。
1 ---- Open (载入) open()方法已被调用,但是send()方法未调用,请求还未发送。
2 ---- Send (载入完成) Send()方法已调用,HTTP请求已发送到Web服务端,未接收到响应。
3 ---- Receiving (交互) 所有响应头部都已经接收到。响应体开始接收但未完成。
4 ---- Loaded (完成) HTTP 响应已经完全接收。
readyState 的值不会递减,除非当一个请求在处理过程中的时候调用了 abort() 或 open() 方法。每次这个属性的值增加的时候,都会触发 onreadystatechange 事件句柄。
readyState 的值不会递减,除非当一个请求在处理过程中的时候调用了 abort() 或 open() 方法。每次这个属性的值增加的时候,都会触发 onreadystatechange 事件句柄。
7.什么是同步?什么是异步?
同步任务是指 在主线程上排队执行的任务,只有当前一个任务执行完毕,才能继续执行下一个任务
异步任务是指 不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程。
8.什么是宏任务?什么是微任务?
宏任务一般是:包括整体代码script,setTimeout,setInterval、setImmediate
微任务:原生Promise(有些实现的promise将then方法放到了宏任务中)、process.nextTick、Object.observe(已废弃)、 MutationObserver 记住就行了9.vue 中组件间有哪些通信方式?
10.vue 中 v-show 和 v-if 的区别是什么?
11.keep-alive 组件有什么作用?
12.1.什么是回调?回调使用中存在什么问题?
13.Promise.allSettled 了解吗?动手实现一下 Promise.allSettled?
13.Promise.allSettled 了解吗?动手实现一下 Promise.allSettled?
14.有没有写过 Koa 中间件,说下中 间件原理,介绍下自己写过的中间件?
15.如何判断当前脚本运行在浏览器还是node环境中?
16.请描述一下 cookies sessionStorage和localstorage区别?
15.如何判断当前脚本运行在浏览器还是node环境中?
16.请描述一下 cookies sessionStorage和localstorage区别?
17. 说一下React Hooks在平时开发中需要注意的问题和原因?
18. React 的 setState 方法是异步还是同步?
18. React 的 setState 方法是异步还是同步?
19.浏览器为什么要阻止跨域请求? 如何解决跨域?每次跨域请求都需要 到达服务端吗?
20.Token 一般是存放在哪里? Token 放在 cookie 和放在 localStorage、sessionStorage 中 有什么不同?
3.WebSocket 是怎么实现点对点通信和广播通信的?
20.Token 一般是存放在哪里? Token 放在 cookie 和放在 localStorage、sessionStorage 中 有什么不同?
3.WebSocket 是怎么实现点对点通信和广播通信的?