刷题笔记

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 事件句柄。

7.什么是同步?什么是异步?
同步任务是指 在主线程上排队执行的任务,只有当前一个任务执行完毕,才能继续执行下一个任务
异步任务是指 不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程。

8.什么是宏任务?什么是微任务?
宏任务一般是:包括整体代码scriptsetTimeoutsetIntervalsetImmediate
微任务:原生Promise(有些实现的promisethen方法放到了宏任务中)process.nextTickObject.observe(已废弃) MutationObserver 记住就行了
9.vue 中组件间有哪些通信方式?
10.vue 中 v-show 和 v-if 的区别是什么?
11.keep-alive 组件有什么作用?
12.1.什么是回调?回调使用中存在什么问题?
13.Promise.allSettled 了解吗?动手实现一下 Promise.allSettled?
14.有没有写过 Koa 中间件,说下中 间件原理,介绍下自己写过的中间件?
15.如何判断当前脚本运行在浏览器还是node环境中?
16.请描述一下 cookies sessionStorage和localstorage区别?
17. 说一下React Hooks在平时开发中需要注意的问题和原因?
18. React 的 setState 方法是异步还是同步?
19.浏览器为什么要阻止跨域请求? 如何解决跨域?每次跨域请求都需要 到达服务端吗?
20.Token 一般是存放在哪里? Token 放在 cookie 和放在 localStorage、sessionStorage 中 有什么不同?
3.WebSocket 是怎么实现点对点通信和广播通信的?



全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务