前端面试四

一.Js执行的机制是什么样的

js是单线程语言,一次只能执行一个任务,所有的任务都需要排队,被称为事件循环机制。

所有任务可以分成两种,一种是同步任务,另一种是异步任务.同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。异步任务指的是,不进入主线程、而放入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行.任务队列又分为宏任务和微任务,同步任务执行之后,然后去执行所有的微任务,当所有微任务执行完毕之后。再次执行宏任务开始循环,直到执行完毕,然后再执行所有的微任务,就这样一直循环下去,就称为事件循环机制。

宏任务:整块代码 setTimeout setInterval UI交互事件 等等

微任务:Promise.then/cath/finally回调函数(平时常见的)

二。lodash的常见api?

lodash是一个一致性、模块化、高性能的 JavaScript 实用工具库。

_.cloneDeep 深拷贝

_.reject 根据条件去除某个元素。

三.平时都是用那些工具进行打包的?babel是什么?

WebPack是一个模块打包工具,你可以使用WebPack管理你的模块依赖,并编绎输出模块们所需的静态文件。它能够很好地管理、打包Web开发中所用到的 HTML Javascript CSS以及各种静态文件,让开发过程更加高效.对于不同类型的资源,webpack有对应的模块加载器,模块打包器会分析模块间的依赖关系,最后生成了优化且合并后的静态资源

babel可以帮助我们转换一些当前浏览器不支持的语法,它会把这些语法转换为低版本的语法以便浏览器识别

四.谈谈set,map是什么? 

set 是es6 提供的一种新的数据结构,它类似于数组,但是成员的值都是唯一的。

map 是es6 提供的一种新的数据结构,它类似于对象,也是键值对的集合,但是键的范围不仅限于字符串,各种类型的值都可以当做键.也就是说,Object 结构提供了字符串和值的对应,map 结构提供了值和值的对应,是一种更完善的 hash 结构实现。如果你需要键值对的数据结构,map 比 object更合适。

五。promise是什么,它的作用是什么?

Promise 是异步编程的一种解决方案.简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,可以从修改对象获取异步操作的消息,它解决了回调地狱的问题,也就是异步嵌套问题

六。get 和 post 请求有哪些区别?

1.数据传输模式:get 通过URL地址传输数据    post 通过请求体传输

2.数据安全:  get 数据暴露在URL中,可通过浏览历史记录、缓存等很容易查到数据信息

post 数据因为在请求主体内,所以有⼀定的安全性保证

3.数据类型: get 只允许 ASCII 字符   post 无限制

4.功能特性:   get 安全且幂等(这里的安全是指只读特性,就是使用这个方法不会引起服务器状态变化,幂等是指同一个请求方法执行多次和执行一次的效果是一样的)

post  非安全(会引起服务器端的变化)非幂等

八.BFC是什么?

BFC(块级格式化上下文),怎么触发BFC

1.根元素(html) 2.浮动的元素    3.绝对定位的元素(元素的position为absolute 或 fixed)

4.overflow 也会触发BFC

作用:  1.可以包含内部浮动的元素  2.可以清除浮动带来的影响   3.阻止外边距重叠   4.解决外边距塌陷。

BFC是值浏览器中创建了一个独立的渲染区域,该区域内所有元素的布局不会影响到区域外元素的布局,这个渲染区域只对块级元素起作用

九.Js的数据类型有哪些?

js的数据类型分为基本数据类型(string、number、boolean、null、undefined、symbol)和复杂数据类型(Array,function,Object)

基本数据类型的特点:直接存储在栈中的数据

复杂数据类型的特点:存储的对象在栈中引用,真实的数据存放在堆内存

不同的类型数据导致赋值变量时的不同:1.简单类型赋值,是生成相同的值,两个对象对应不同的地址  2. 复杂类型赋值,是将保存对象的内存地址赋值给另一个变量.也就是两个变量指向堆内存中同一个对象.

十.call、apply、bind三者的异同

共同点 : 都可以改变this指向; 不同点: call 和 apply 会调用函数. call 和 apply传递的参数不一样,call后面传入的是一个参数列表,apply使用数组传递,而bind不会调用函数, bind方法和call很相似,第一参数也是的this指向,后面传入的也是一个参数列表(但是这个参数列表可以分多次传入),改变this指向后不会立即执行,而是返回一个永久改变this指向的函数。

十一.SPA(单页面应用)的理解

所谓单页面Web应用 ,就是只有一个HTML的的应用程序,这种方法避免了页面之间切换会打断用户体验, 通常是为响应用户操作,动态加载适当的资源并添加到页面,页面也不会重新加载

优点1.用户体验好,内容的改变不需要重新加载整个页面

2.良好的前后端分离,分工更明确

3.具有桌面应用的即时性 网站的可移植性和可访问性

缺点 1.首屏加载慢  2. 不利于SEO

十二.作用域链的理解

作用域是一个对象可被调用的区域,而作用域链就是调用某个函数或属性时,先在当前作用域寻找,如果找不到的情况下去父级寻找,如果父级找不到继续向上级寻找,直到找到全局作用域为止,这个链式查找的过程,就是作用域链

十三。SPA首屏加载慢怎么解决?

首屏时间指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前需要的内容.1.减小入口文件体积常用的手段是路由懒加载,把不同路由对应的组件分割成不同的代码块,待路由被请求的时候会单独打包路由,加载速度大大增加

2.静态资源本地缓存  3.图片资源的压缩对页面上使用到的图标,可以使用在线字体图标,或者雪碧图,将众多小图标合并到同一张图上,用以减轻http请求的压力。  4.组件重复打包 5.使用SSR也就是服务端渲染,组件或页面通过服务器生成html字符串,再发送到浏览器

从头搭建一个服务端渲染是很复杂的,vue建议使用nuxt.js实现服务端渲染

十四.关于NextTick的理解

我们可以理解成,vue在更新dom时是异步执行的。当数据发生变化,vue将开启一个异步更新队列,等队列中所有数据变化完成之后,再统一进行更新,举一个例子,修改data中的message,这时候想获取页面dom最新的节点,却发现获取到的是旧值,这是因为message数据在发现变化的时候,vue并不会立刻去更新dom,而是将修改数据的操作放在了一个异步操作队列中,等待同一事件循环之后,进行dom的更新.

十五.对盒子模型的理解

标准盒子模型 : 遵循 W3C 标准的盒子模型,其内容部分不包括 padding border ,市面上大部分浏览器都默认按照标准盒子模型来渲染页面元素。

怪异盒子模型 : 也成称为IE盒子模型, 其内容部分包括 padding border 但不包括 margin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值