前端面试题

这些都是血淋淋的教训希望大家引以为戒

1.em,rem,px的区别,为什么要设置这么多长度单位?

https://cloud.tencent.com/developer/article/1538359

https://segmentfault.com/a/1190000007526917

 

2.restful架构是什么?restful API 设计规范?

http://www.ruanyifeng.com/blog/2011/09/restful.html

http://www.ruanyifeng.com/blog/2014/05/restful_api.html

幂等:请求一次和多次返回结果一样

 

3.URL和URI的区别?

URI:uniform resource identifier 统一资源标识符

URL:uniform resource location 统一资源定位符

URL属于URI的子集,不同的表示方式,都可以唯一表示出指定资源

https://www.zhihu.com/question/21950864

 

4.JS中 [1]==[1] 和 [1] === [1] 分别返回什么结果?

结果都返回false,数组属于引用类型,比较时比较的是地址,地址不同所以返回false

类似于 let a = [1], b = [1], a == b // false,a,b的地址不同

JS中的引用类型:对象、数组、函数、symbol

值类型:数值、布尔值、null、undefined、boolean

 

6.简述vue生命周期

4个生命周期对应8个钩子函数

生命周期:

create: 数据绑定,获取data

mount: 初次渲染DOM

upldate: data更新,重复渲染DOM

destory: 销毁vue实例

钩子函数:

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

beforeDestory

destoryed

https://segmentfault.com/a/1190000011381906

 

7.例举几个vue常用指令

v-if,v-show,v-for,v-on,v-bind,v-model

v-if: 根据表达式的布尔值有条件地渲染元素

v-show: 根据表达式地布尔值来控制元素地显隐

v-for: 循环渲染数组结构地元素

注:

1.v-if和v-show的区别在于v-if表达式的布尔值为false时,元素不会渲染,而v-show持续渲染元素,在v-show的返回值为false时,隐藏此元素,相当于添加css语句display:none。因为dom结构的频繁更改会消耗性能,所以当遇到需要频繁控制元素的显示隐藏的业务代码中,优先使用v-show

2.当v-if和v-for同时使用时,优先执行v-for

v-on: 简写符号@,用于绑定事件,如绑定点击事件 @click="event"

v-bind: 简写符号:,绑定参数,参数是一个属性,表达式等 ,如绑定一张图片的资源路径

v-model: 表单控件绑定,如 此时在input对应输入框中输入内容,内容会同步更新到message属性中

https://cn.vuejs.org/v2/api/

 

8.简述vue中watch和computed的作用和区别

computed注重结果,watch监听过程

https://juejin.cn/post/6844903807592169486

 

9.vue路由是如何传参的?query和params传参的区别是什么?(vue-router的使用)

有声明式导航和编程式式导航,咱们常用编程式导航

(0)query方式的传递的参数会拼接到URL中

(1)query方式可用path或name指定跳转组件,params方式只能用name指定跳转组件

(2)params方式下,router的index.js配置文件中,目标路由接收参数形式要把参数名写上,path:'/target/:name/:old',给目标组件传递参数name和old,如果不这样做,页面刷新后参数将不再获取

https://router.vuejs.org/zh/guide/essentials/navigation.html

https://juejin.cn/post/6844903510719348749

 

11.vue自定义指令

头秃了,旧版本可以,现在的3.x、4.x无效,待定吧

 

12.css position相关

static、relative、absolute、fixed、sticky

https://www.ruanyifeng.com/blog/2019/11/css-position.html

不得不感叹阮一峰是真大神,它对知识理解的思维方式以及表达水平都值得学习

 

13.如何理解盒子模型?

https://segmentfault.com/a/1190000018732221

 

14.说说H5新特性?(大概率会追问canvas)

https://www.cnblogs.com/vicky1018/p/7705223.html

 

15.css动画transfrom、transition、animation

transform详解

transform:图形变形

transition、animation:动画

transition: 属性 时间 动画效果

animation 控制动画在进行到某一刻时的样式

 

16.vue组件间通讯

博客:https://juejin.cn/post/6844903887162310669#comment

练习代码:https://github.com/JonnyOu/vuetest20210318

 

17.JS基本数据类型

undefined、null、boolean、number、string、object、symbol

 

18.JS继承机制原型链

原型链相当于一种继承机制

JavaScript继承机制

原型、原型链一些关系图

 

19.JS如何阻止事件冒泡、默认事件

阻止事件冒泡:event.stopPropagation IE浏览器:event.cancelBubble

阻止默认事件:event.preventDefault

https://blog.csdn.net/weixin_40571331/article/details/115361470

 

20.闭包

理解:闭包是能够调用其他函数内部变量的函数

形式:定义在函数内部的函数

本质:连通函数内部和函数外部的桥梁

用处:一、实现外部调用函数内部变量;二、令变量的值始终保持在内存中;三、封装对象的私有属性和私有方法,闭包作为对象的公用方法

注意:闭包始终在全局变量中,不会被垃圾回收机制回收,所以不能滥用,否则可能会导致内存泄漏。解决方法是,在退出函数之前,将不使用的局部变量全部删除

https://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

最简单的闭包实现:

function f1() {   let n = 99;   function f2() {     console.log(n)   }   return f2 } var result = f1() result() // 外部调用函数内部的变量

 

21.函数声明和函数表达式

函数声明:function f() {}

函数表达式:let f = function() {}

在JavaScript解释器中,会对函数声明进行变量提升,意味着函数调用可以在函数声明之前

函数表达式不存在变量提升机制,函数调用只能放到函数表达式之后

 

22.cookie、local storage、session storage的区别

https://juejin.cn/post/6844903516826255373

 

23.css清除浮动的方案

在末尾添加dom元素div,style样式clear:both

在父元素使用overflow:hidden

使用伪元素after,给父元素添加新的class

https://segmentfault.com/a/1190000004865198

 

24.画一条0.5px的线

https://juejin.cn/post/6844903582370643975

posted @ 2021-04-01 20:55  JonnyOu1012  阅读(29)  评论(0编辑  收藏  举报