面试中提到的问题

163 阅读1分钟

-常见面试题

常见面试题

  • 实现一个任务队列,可以控制并发数、异步任务(promise async/await)

promise、async/await在任务队列中的执行顺序
深入核心,详解事件循环机制

  • / 实现一个安全值检测的方法,譬如lodash的get

场景:拿到一个数据data,我们期望的数据是如下 data = { people: { name: 'liyu', age: 18 }, info: { a: 1, b: 2 } } 但是这个数据来源不可靠,可能数据是空数组、空对象、字符串或者其它,这个时候我们调用 => data.people.name 就会出现异常报错 期望:实现一个方法能安全获取值,如果异常或者没有则返回默认值,如get(data, 'people.name', '哈哈')

  • 实现 sum(2,3) sum(2)(3) // 5
  • 对象转化成数组

例如:let obj = { 88: "四年级", 66: "二年级", 77: "三年级", };
转换成数组[{label:'四年级',value:'88'},{},{}]

  • forEach和for有什么区别
  1. forEarch是for的增强简化版,forEach每次循环会创建不同的循环变量,循环开始会创建一个变量,循环使用的是同一个变量。
  2. for可以使用break和continue终止循环,forEach不能终止。
  3. forEach适合集合对象的遍历操作。
  • 路由中router和route有什么区别
  1. router为VueRouter的实例,相当于一个全局的路由器对象,里面有很多属性和子对象,经常用的跳转链接就可以用this.$router.push,和router-link跳转一样。
  2. route相当于当前正在跳转的路由对象,可以从里面获取name,path,params,query等。
  • hish模式和history模式有什么区别
  1. hash 模式下,仅 hash 符号之前的内容会被包含在请求中。
  2. history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,如 www.abc.com/book/id 如果后端缺少对 /book/id 的路由处理,将返回 404 错误。Vue-Router 官网里如此描述:“不过这种模式要玩好,还需要后台配置支持,所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。”
  3. hash —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。比如这个 URL:www.abc.com/#/hello hash 的值为 #/hello。它的特点在于:hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。
  4. history —— 利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。(需要特定浏览器支持)这两个方法应用于浏览器的历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。只是当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求。
  • 宏任务和微任务
  1. 事件循环机制遵循两个原则,(1)先执行同步任务,再执行异步任务(2)先执行微任务,再执行宏任务。
  2. 立即执行的任务队列,这些都是属于同步任务,比如一个简单的函数;
    请求接口发送ajax,发送promise,或时间计时器等等,这些就是异步任务。
  3. 宏观任务主要包含:setTimeout、setInterval、script(整体代码)、I/O、UI 交互事件、setImmediate(Node.js 环境);
    微观任务主要包括:Promise、MutaionObserver、process.nextTick(Node.js 环境)。
  • CDN图解

阿里图片DNS技术,牛逼的大佬解答

  • http和https的区别

https是以安全为目标的http通道,在http基础上通过传输加密和身份认证保证了传输过程的安全性。https在http基础下加入SSL层,因此加密的详细内容就需要 SSL。

  • 服务端渲染

服务端渲染:凡是是从服务器返回的html页面,均算作是服务端渲染,包括php,jsp,nodejs。 腾讯大佬同构直出方案

  • 进程和线程
  1. 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。还存在资源开销、包含关系、内存分配、影响关系、执行过程等区别。同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源相互独立。
  • 进程之间如何通信
  1. 小白的我表示看不懂,[捂脸],码下来慢慢消化吧
  • 一些好的面试知识点帖子

合集1
腾讯前端面试篇
系统的面试知识梳理,写的很好,适合初中级
juejin.cn/post/684490…

  • setIntervel时间不精准解决办法

可以看这个帖子
利用setTimeOut递归调用

  • mixi 和父组件谁先打印created()里的东西

先打印混入里的 可以看这个帖子

  • 强制缓存和协商缓存

看这篇就够了

  • vue中为什么对象不能动态响应

js限制 defineObject

  • map 和 set 数据结构区别

Set是一种新的数据结构,类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。Set可以接受具有iterable接口的其他数据结构作为参数,进行初始化。
Map数据结构类似于对象,也是键值对的集合,但是对象的键只能是字符串,而Map的键可以是任意类型的值。

  • for in 和 for of

  • webpack打包原理 load babel

label介绍看这个帖子 loader介绍看这个帖子

  • 继承的知识点 单例模式
  • vue怎样注册全局组件
  • vue怎样使用插件
  • vue中哪些方法可以动态响应,什么原因
  • vue中对象存在不能动态响应的问题吗
  • 闭包在项目中的应用
  • promise中取消padding的方式
  • vuex
  • 除了this.$route.query还有什么方式获得页面传参