当前位置:首页 » 《我的小黑屋》 » 正文

2021-09-19_李先生V8的博客

16 人参与  2021年12月23日 14:16  分类 : 《我的小黑屋》  评论

点击全文阅读


前端常见面试题总结

HTML相关问题

1.H5新特性有哪些?

答:1.新增语义化标签。

2.新增媒体元素。

3.新增用于绘画的Canvas元素。

4.新增本地存储方式。

5.新增webworker、websocket

6.新增表单控件。

2.如何理解HTML语义化?

答:1.代码可读性,更加能让人读懂。

2.更加能让搜索引擎读懂(SEO)。

3.如何理解块级元素、内联元素?

答:块级元素,独占一行。内联元素,不是独占一行。

CSS相关问题

1.盒模型宽度的计算?

答: offsetWidth = (内容宽度 + 内边距 + 边框) ,没有外边距。如果设置box-sizeing: border-box,宽度等于border-box。

2.margin重叠问题?

答:margin-top和margin-bottom会发生重叠问题,空p标签也会发生重叠。

3.margin负值问题?

答:margin-top和margin-left 负值,元素向上、向左移动。

margin-bottom负值,元素自身不改变,下面元素向上移动。

margin-right负值,元素自身不改变,右边元素向左移动。

4.BFC的理解与应用?

答:一块独立渲染的区域,内部元素的渲染不会影响外部边界的元素。

在清除浮动会用到。

5.圣杯布局和双飞翼布局?

答:1.都是使用float布局。

2.两侧都是使用margin的的负值,使得和中间的内容横向重叠。

3.防止两侧被覆盖,一个使用padding,一个使用margin。

6.手写清除浮动?

.clearfix:after { content:"";display:table;clear:both; }

7.flex布局-画三个骰子。

答:

.container {
  /* 设置flex */
  display: flex; 
  /* 设置两端对齐 */
  justify-content: space-between;
}

.item {
  /* 骰子样式 */
}

.item:nth-child(2) {
   /* 第二项居中对齐 */
  align-self: center;
}

.item:nth-child(3) {
  /* 第三项末端对齐 */
  align-self: flex-end;
}

8.absolute 和 relative 定位?

答:relative 定位相对自身定位。

absolute相对最近一层定位元素定位。

9.垂直居中对齐的实现方式?

答:1.inlint 元素:inlint-height的值等于height值。

absolute元素:top:50% + margin-top 50%

absolute元素:transform(-50%,-50%)

absolute元素:top、left、right、bottom 都等于0,margin:auto;

10.水平居中对齐实现方式?

答:inlint 元素:text-align:center;

block元素:margin: auto;

absolute元素:left: 50%,margin-left负值。

11.line-height 如何继承?

答:1.写具体数值,如30px,则直接继承该数值。

2.写比例,如1,1.5,则直接继承该比例。

3.写百分比,如200%,则先算出百分比的值再继承。

12.CSS常用的单位。

答:px,绝对长度值,最常用。

em,相对长度值,相对于父元素,不常用。

rem,相对长度值,相对于根元素,移动端响应式用到比较多。

vw和vh,相对长度值,相对于视口宽高比例,移动端响应式用到比较多。

浏览器相关问题

1.在浏览器输入URL之后发生了什么?

答:1.输入网址

2.缓存解析

3.域名解析,解析到对应的ip地址

4.浏览器向服务器发送tcp连接,与浏览器建立tcp三次握手。

5.握手成功之后,浏览器向服务端发送http请求,请求数据包。

6.服务器处理接收到的请求,将数据返回给浏览器。

7.浏览器接收到http响应。

8.读取页面内容,浏览器渲染,解析html代码。

9.生成dom树,解析css样式,js交互。

10.客户端与服务端交互。

11.ajax请求。

2.什么是回流与重绘?

答:1.回流,当浏览器发现页面某个部分发生了点变化,影响到布局,需要倒过重新渲染,这个过程叫做回流。

2.重绘,当改变DOM元素的背景颜色边框颜色,不会影响周围或者内部布局的属性时,有一部分要重画,这一个过程叫做重绘。

3.什么是浏览器缓存?

答:1.浏览器缓存即http缓存,将数据缓存保存在浏览器。

2.服务端通过设置http请求头来设置缓存策略,将资源缓存到本地浏览器。

HTTP协议

1.你http讲到了TCP协议,你能讲一下TCP三次握手吗?

JS相关问题

1.JS数据类型有那些?

答:分两种类型:

基础类型:string、bumber、boolean、null、undefind、symbol、bigInt

引用类型:object、array、function、Date

2.什么是防抖?什么是节流?

答:相同点都需要设置一个回调函数,和周期时间。

区别在于:节流:频繁触发函数只会定时执行一次,类似于技能冷却。

防抖:在于频繁触发函数都会重新设置定时器,定时器结束完执行一次。

3.this的概念?如何改变this。

答: this就是一个函数的内部对象。我们通常使用bind、apply、call 方法来改变this指向。

4.你知道事件循环中有两种任务吗?分别讲讲

答:宏任务和微任务。

宏任务:整体代码块、setInterval、setTimeout、异步请求。

微任务:new Promise().then、MutationOvserver。

5.为什么有事件循环?

答:因为JavaScript是单线程的,同一时间只能做一件事。而JavaScript中又存在异步http请求,定时器,事件触发,我们如何知道异步请求什么时候执行完?这时候我们就需要浏览器的帮助了,浏览器是多线程的,可以把这些异步或者事件触发,定时器回调放到一个任务队列中,等待JavaScript的调用,JavaScript循环的从任务队列中调用,这个过程就叫做事件循环。

6.为什么要有微任务?只有宏任务可以吗?

答:宏任务秉行着先进先出的概念,但是如果有一些优先级更高的任务时候,我们就需要用到微任务。

7.var 、let 、const有什么区别?

答:1.声明和赋值:var 和let可以允许先声明后赋值;const不允许,它声明变量时必须同时初始化变量。

2.修改变量:var和let允许修改变量的值和类型;const不允许,如果const是引用类型。这是时候不能更改变量的引用,但是可以修改对象内部的属性。

3.变量声明提升:var会声明提升,相当于在函数顶部声明了变量,const和let不会。

4.重复声明:var可以重复声明,const和let不会。

5.声明作用域:var是函数作用域后者全局作用域,const和let是块级作用域。

6.全局声明:var如果在全局作用域中声明的变量会成为window对象的属性;let和const不会。

8.什么函数作用域、块级作用域、全局作用域,词法作用域?

答:作用域是指,可以访问变量,函数,对象的集合。

函数作用域:只能在函数体访问,函数体外不可访问。

块级作用域:是指一个代码段,之外是不可见的。(就是一对大括号{...}包裹的一段代码)

全局作用域:是指script标签之中单独的js代码都是全局作用域。

词法作用域:是指在定义他们的作用域之中运行,而不是调用方法的作用域运行。

Vue.js 基础问题

1.v-if 和v-show区别?

答:v-if 控制DOM节点加载和销毁。
v-show 控制DOM的样式显示还是隐藏。

2.什么情况下使用v-if 和v-show?

答:一次性渲染DOM或者不频繁切换显示隐藏使用v-if,
频繁切换显示隐藏DOM使用v-show,性能更加好。

3.如何遍历对象?

答:Vue中,数组和对象都可以用v-for进行遍历。

4.Key的重要性?

答:key 的作用是为了在 diff 算法执行时更快的找到对应的DOM节点,优化diff算法渲染次数,提升渲染性能。如果使用index没有意义。

5.v-for 和 v-if能不能一起使用?

答:不建议一起使用,v-for 的运算优先级高于v-if,渲染出来每一条数据都进行v-if 进行判断,影响性能,建议在v-for 的父级进行判断。

6.双向绑定v-model实现原理?

答:input元素的value 值绑定this.name 变量。然后input事件会赋值this.name = $event.target.value ,data更新之后触发渲染。

7.对MVVM的理解。

答:分别对应三者,Model 、View 、ViewModel。

Model:代表数据模型,数据和业务逻辑都在Model层定义。

View:代表UI视图,负责数据的展示。

ViewModel:就是界面(View)对应的数据,因为数据库结构往往不能直接跟界面控件一一对应的,所以需要定义一个数据对象专门对应View上控件,而ViewModel的作用就是吧model对象封装成可以显示和接收输入的界面上的数据。

8.computed有什么特点?

答:缓存,data不变不会重新计算。提高性能。

9.computed 和watch有什么区别?

答: computed 是一个计算属性,根据依赖的数据计算新的结果,并且设置有缓存。

watch 更像一个data里面数据的监听回调,当依赖的data的属性值变动时触发回调。

Vue.js 组件问题

1.props和$emit 作用?

答: 父子组件通讯方式之一。props用于父组件传递参数给子组件。$emit用于子组件内调用父组件方法。

2.什么是自定义事件?

答:Vue实例对象 $on自定义事件,引入同样Vue实例对象 $emit 触发自定义事件,只要不直是父子组件,都可以直接互相调用。

3.Vue生命周期(单个组件)

答:三个阶段。

挂载阶段:beforeCreate => created => beforeMount => mounted

更新阶段:beforeUpdate => updated

销毁阶段:beforeDestroy => destroyed

4.Vue生命周期( 父子组件)

答:也是三个阶段,

挂载阶段:父beforeCreate => 父created =>子beforeCreate =>子created => 子beforeMount => 子mounted => 父beforeMount => 父mounted

更新阶段:父beforeUpdate => 子beforeUpdate => 子updated => 父updated

销毁阶段:父beforeDestroy => 子beforeDestroy => 子destroyed => 父destroyed

Vue高级特性

1.$nextTick有什么作用?

答:Vue是异步渲染的,在data改变之后不会立即渲染DOM,而$nextTick的作用就是在DOM渲染完成之后触发,以便拿到最新的DOM节点。

2.Vue如何异步加载组件?

答:使用import()函数,异步加载,按需加载大组件。

3.什么时候使用keep-alive?

答:是缓存组件用的,需要频繁切换,不要重复渲染的组件。

4.mixin的作用是什么?

答: 抽离多个组件中共同的业务逻辑,方便复用。

5.mixin 有什么问题?

答: 1.变量名来源不明确,不方便阅读。

2.多个mixin可能造成命名冲突。

3.mixin 和组件可能出现多对多的关系,复杂度较高。

6.React 和 Vue 区别?

答:相同点:都是数据驱动视图。

不同点:当数据改变时,React是以组为根目录,默认全部渲染。Vue是自动找到引用组件重新渲染。

7.你是如何优化Vue项目的?

答:编码阶段:1.尽量减少data中的数据,data中的数据都会增加getter和setter,会对应的数据监听。

2.图片懒加载。

3.key保证唯一。

4.长列表滚动到可视区域动态加载。

5.防抖、节流。

6.异步组件,路由懒加载。

7.第三方模块按需引入。

打包阶段:1.第三方模块,cdn引入。

2.压缩代码。

3.配置url-loader,图片转base64,减少http请求。

4.多线程打包配置happypack。

5.图片压缩。

6.代码分割。

8.Vue.use 有什么作用?

答:Vue.use 是用来使用插件的,插件本质就是一个install 方法,install方法内部实现的了什么逻辑就由插件自身的业务实现了。

Webpack相关问题

1.plugin和loader区别?

答:loader是使webpack拥有解析非js文件的一个能力

plugin 可以扩展webpack的功能,使得webpack更加灵活,可以在构建的过程中通过Webpack的API改变输出内容。

Axios 相关问题

1.Axios 的原理是什么?

答: 1.首先axios可以在浏览器环境和node环境使用的。

2.浏览器是用通过XMLHttpRequests实现axios,node是通过内置http模块实现axios。

3.都是通过promise 对象对结果进行处理。

2.Axios 取消请求原理是什么?

答:Axios是通过CancelToken方法取消请求的,原生是通过XMLHttpRequest 对象的abort方法进行取消的。


点击全文阅读


本文链接:http://zhangshiyu.com/post/32024.html

元素  作用  组件  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1