2020web前端面试题总结

h5新增的标签有哪些?为什么要加强语义化?

行内元素,块级元素有内些?有什么不同?

行内(内联)元素:< em >,< input >, < a >, < big >

块级元素:< div >,< p >,< h >, < ul >

不同:块级元素会独立成行,会有padding,margin等属性,

第一行 !docctype是做什么用的?

定义该页面渲染模式,分为严格模式和混杂模式

HTML页面加载完成后,会触发那个事件?onready还是onload

onready在dom元素结构完成就会执行,onload会在图片等资源完全加载完之后才执行;onready有多少执行多少,onload只会执行最后一个

addEventListener能否多次给DOM对象添加监听事件?

可以

attachEvent能否删除对象的监听事件?

不可以,删除的话用detachEvent

new Date()获取的是哪里的时间?

PC本地的时间

part CSS

两个子盒子分别放到父盒子的最左和最右,怎么做? *2

position定位:将父子元素同时使用属性absolute,子元素添加距左右边框距离;

弹性盒子:将父盒子定义属性display: flex;justify-content: space-between;

css3的新特性

弹性盒子,2d 3d动画 等

子盒子在父盒子中水平居中有哪几种方法?

弹性盒子:父盒子display:flex; justify-content:center;

position:子盒子margin:auto;

子盒子的定位,如何上下居中?

弹性盒子:父盒子display:flex; align-items:center;

父盒子中的子盒子浮动会有什么后果?

子盒子浮动,父盒子的高度为0,父盒子高度塌陷

定位有哪几个属性?()

static, relative, fixed, absolute, sticky(最后这个有好多面试官都不知道…)

注意它们的不同,fixed和absolute会脱离文档流

行内块元素和行内元素的区别?

行内块元素就是将块元素以行的形式展示出来,同时保留了块元素可以设置的css属性

两个行内块元素同行显示时,会出现3px空白间隙,为什么?如何解决?

这个造成原因是浏览器会把两个块元素中间的换行符解析出来,暴力解决的话就是两个div卸载同一行

为什么要清除浮动?怎么清除浮动?

clear:both

:after{ display:table; comtent: ‘’; clear:both }

part JS

闭包是什么及优缺点?举例。用let怎么实现?

闭包就是当外部函数返回,内部函数还可以继续访问外部函数的属性和方法的函数。缺点:内存泄漏。

前后端传递 **‘get’’post’**的区别?

get为从服务器获取数据,post为向服务器上传数据;get会将传输数据暴露在url中,安全性略低,post则不会,但二者安全性又是同一等级;get有缓存,post无缓存;get可传递数据量小,post传递数据量大,没有限制。

js的基本数据类型有哪些?(注意es6的symbol)

string,number,bool,null,undefined,symbol(独一无二的值,ES6),

null和undefined区别:undefined是声明完变量没有对其进行初始化值;null是表示空值,对其做typeof ,得到的是object,是一个特殊的对象

现在有几种存储方式?(cookie,localStorage,sessionStorage)分别又有什么不同?

Cookies会发送到服务端,其他的只会在客户端;localStorage可以长久保存整个网站的数据,sessionStorage在关闭网站之后会删除数据;存储大小不同,sessionStorage最大;存储数量不同

cookie中的session的了解

一个存储在客户端,一个存储在服务端

如何判断数据类型?

基本数据类型用typeOf,引用类型用instanceOf

JS的执行机制是什么?

单线程处理

绑定DOM元素的事件有哪几种方法?

DOM元素里直接绑定 oncilck=“function”;

在JS代码里写: element.click = function(){}

绑定事件监听函数: addEventListener

数组的常用遍历方法有哪些?(for;ES6新增)

for, for…in…, for…of foreach, map, every, some, filter,

JS的三大事件是什么?

鼠标事件, 键盘事件, HTML事件

this的指向是什么?如何改变指向?

1.箭头函数 2.that 3.apply,call,bind 4.new

深拷贝和浅拷贝有什么区别?如何实现深拷贝?

数组常用的操作方法?splice和slice的区别

一个是在原数组进行操作,一个是对原数组进行拷贝进行操作;push()和pop(),shift()和unshift(),splice(),fill(),filter(),includes(),indexOf(),reverse(),some()

事件委托是什么?

for…in…和for…of…的区别

for…in…遍历的是键名,也就是索引;for…of…可以遍历键值

两个div需要设置层级关系,需要哪些属性

z-index

eval元素能不能解释为由js源码组成的字符串呢?能不能用断点调试?会不会引起安全问题可以的

,不能,会有安全问题,xss攻击

js里,两个整数进行除法,结果是整数还是小数?

可用parseInt和Math.round变为整数

offsetWidth,clientWidth代表什么?

可见区域的宽度,高度

继承是怎么实现的?用prototype是怎么实现的?

原型链继承,借用构造函数继承,组合继承,原型式继承,寄生式继承,寄生组合式继承

JS的垃圾回收机制,用JS时怎么调bug的?

找出不在使用的变量,释放内存,然后周期性的实施这一操作。方法有两种:标记清除和引用计数。标记清除:变量进入环境的时候标记为进入环境,离开的时候标记为离开环境。引用计数:跟踪记录每个标记被引用的次数;问题:循环引用

part ES6

ES6里面const,let,var的区别

const是定义一个常量,定义后值无法改变,不存在变量声明提升,有暂时性死区;

let是定义局部变量,定义块级作用域的变量,不存在变量声明提升,有暂时性死区;

var是定义变量,存变量声明提升;

ES6有哪些新特性?

let,const;字符串,数组,对象的方法补充;箭头函数;Promise;Proxy等

const定义的对象能否改变?

可以

let和var在全局定义的时候有什么区别?

var在全局对象windows中可以找到,而let不行

ES6里面Promise的两个参数分别是什么?

resolved和rejected,分别为状态变为fulfilled和rejected的回调函数

Vue

Vue的生命周期有哪些?他们各有什么不同?

beforecreate(),在该阶段,vue实例刚被初始化,只存在一些默认的钩子函数和方法,此时 data和methods都没有被初始化;created(),此时data和methods已经被初始化,如果要调用data中的数据或methods中的方法,最早可以在created中调用;beforemounte(),此时页面在内存中已被加载完成,及虚拟DOM树,但还未加挂载得到页面上,页面仍是旧的;mounted(),此时vue实例完成里初始化阶段,进入运行阶段;beforeupdate(),此时,数据已经发生修改,但是页面上的数据还未修改,内存中的数据和页面的数据费保持同步;updated(),两者保持同步;beforedestore(),销毁前夕,数据和方法仍可用;destored()

v-if 和 v-show 之间的区别是什么?

v-if是条件渲染,根据值决定是否渲染;v-show是条件展示,都会进行渲染,根据值决定是否展示出;v-if具有较高的切换渲染消耗,v-show具有较高的初始渲染消耗

Vue里面父子组件怎么传值?兄弟组件是怎么传值的?

父->子:用v-bind引用子组件的时候进行绑定,在 子组件上用props属性进行定义;

子->父:用v-on,emit进行收发;

v-for中key值的作用是什么?对使用的影响,没有key时会出现什么情况?

vuex代码怎么写?

computed和watch的区别是什么?应用场景有哪些?

computed是计算属性,当计算属性所依赖的属性发生变化是,会重新进行计算,计算完成后进行缓存,如果没有改变,再次加载时调用的是缓存中的值;watch是监听数据,没有缓存,再次加载页面后会重新调用函数

数据请求在生命周期的那个阶段?

如果是第一次加载,就在created,如果在页面加载完成之后就用mounted

Vue实现双向绑定的原理是什么?

什么情况下会用created,mounted?

箭头函数和一般函数的区别?(

箭头函数没有this,也没有arguments,不能做构造函数

vue组件中的data为什么是函数形式?

函数形式返回的是新对象,不会出现多个组件引用同一个对象,避免修改数据带来的连锁反应

vue中this从那个生命周期可以开始被调用?

vue-cli如何使用json数据模拟?

Vue中插槽有什么作用?

app怎么适配?

vue router的钩子函数有哪些?那个是可以全局使用的钩子

jQuery和Vue的区别是什么?

router和route的区别是什么?

Vue中Vuex和Axios的使用

Vue的源码看过吗?怎么实现数据劫持?

没看过…数据劫持使用Object.defineProperty()方法,该方法可以为对象新增一个属性,或是修改对象的属性,然后返回该对象。可通过该方法内的get()和set()属性进行数据的监听。

part 综合

怎么实现跨域? (1.jsonp 2.代理 3.php header写允许跨域)jsonp的原理是什么?

前端常用的性能优化有哪些?

从输入URL到页面加载完成,中间发生了什么?

如何查看一个网站所使用的的技术?(打开开发者工具)

react核心是什么?

怎么实现文本不自动换行?超出部分显示省略号

HTTP 和HTTPS分别是什么?区别

css动画特性可以用js实现,为什么还要用css实现?(css渲染动画不占用js主线程)

Ajax请求数据重新处理和拦截器

git的使用及常用git的代码

npm中warn了解吗?

用过哪些基础框架?

jQuery中绑定事件on和bind的区别

打开页面,加载较慢,如何缩短时长

http请求头content-type是干什么的?

HTTP常见的状态码有哪几种?JS和DOM操作浏览器兼容的注意事项有哪些?

Web开发常见的安全性漏洞是哪些?

单页面应用的优缺点

同源策略

这个也非常重要,通常会和跨域一起问

part 算法

如何给数据去重?

遇事不决两个for…;

懒得动脑子就用ES6的Set(),不过一般面试官都问这个问题了,就不让你用这个方法;

使用对象属性的唯一性,新建一个对象,让原数组的value变成该对象的key,给key任意赋值(别来null和undefined),遍历完数组后,遍历一遍对象的key就是结果。

你可能感兴趣的:(面试题)