这是两个月前去面试的面试题,回来后就整理成word文档了,现在做个笔记。
(以下答案是通过百度、看资料、问别人、加上自己的经验整理的,仅供参考)
1.HTML新增特性有哪些?有哪些好用的功能?
语义化标签:header、footer、section、article、aside、nav
新增功能元素:video元素,audio元素,mark元素,time元素
2.浮动元素怎样居中,如果在浮动元素上绑定事件要考虑哪些因素?
在浮动元素的外层再套一个盒子,使用margin居中。
对于多个浮动元素,也是在浮动元素外层套个div,需要注意的是,浮动元素外层嵌套的div宽度应该设置为浮动元素的宽度之和。
需考虑浮动有没有清除。
3.iframe有哪些缺点?
(1) 页面调试麻烦,出现多个滚动条;
(2) 浏览器的后退按钮失效;
(3) 过多会增加服务器的http请求;
(4) 小型的移动设备无法完全显示框架;
(5) 产生多个页面,不易管理;
(6) 不容易打印;
(7) 代码复杂,无法被一些搜索引擎解读。
4.CSS3的动画,有哪些属性?
Transition:属性有:transition-property
transition-duration
transition-timing-function
transition-delay
Animation:属性有:animation-name
animation-duration
animation-timing-function
animation-delay
animation-iteration-count
animation-direction
animation-play-state
animation-fill-mode
5.CSS隐藏的方式有哪些?
(1) display:none;
(2) visibility:hidden;
(3) overflow:hidden;
(4) opacity:0;
6.flex布局的兼容性怎样处理?
(这个百度一下很容易找到,这里就不多说了。参考链接:https://blog.csdn.net/web_note/article/details/73527865)
7.构造函数和普通函数的区别(new的指向和作用)?
调用方式不同
原因:构造函数毕竟也是函数,不存在定义构造函数的特殊语法。任何函数,只要通过new操作符来调用,那它就可以作为构造函数,而任何函数如果不通过new操作符来调用,那它跟普通函数也不会有什么两样
a)new 做了几件事
1.创建一个函数
2.将构造函数的作用域赋给新的对象(因此this就指向这个新对象)
3.执行构造函数中的代码
4.返回新的对象
b)运算符instanceof
如何判断某个实例是否是根据某个构造函数创建的
c)对象的属性 constructor
对象属性 constructor属性(构造函数属性),最初是用来标示对象类型的
8.怎样知道一个数组中的重复字符串有多少个?
(这题暂时没有找答案,先记录下来)
9.如何在数组的指定位置插入字符串?
splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。(该方法会改变原始数组)
参数:index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
Howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX:可选。向数组添加的新项目。
例:let arr = ['a','c','d','e','f'];
arr.splice(1,0,'b');
console.log(arr);//['a','b','c','d','e','f']
10.js的原型链?
基本思路:利用原型让一个引用类型继承另一个引用类型的属性和方法。
每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针(constructor),而实例对象都包含一个指向原型对象的内部指针(__proto__),如果让原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针(__proto__),另一个原型也包含着一个指向另一个构造函数的指针(constructor)。
11.js三大流程控制语句是什么?
顺序控制:
分支控制:单分支(if)、双分支(if...else)、多分支(if...else if...else 、switch)
循环控制:for 、while 、do...while
12.怎样实现继承?
①原型链继承:将父类的实例作为子类的原型
②构造继承:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)
③实例继承:为父类实例添加新特性,作为子类实例返回。
④拷贝继承:不推荐使用,效率较低,内存占用高(因为要拷贝父类的属性)
⑤组合继承:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用。
⑥寄生组合继承:通过寄生方式,砍掉父类的实例属性,这样,在调用两次父类的构造的时候,就不会初始化两次实例方法/属性,避免了组合继承的缺点。
13.“==”和“===”有什么区别?
“==”判断值是否相等
“===”判断值和类型是否完全相等
14.js的数据类型有哪些?null和undefined有什么区别?
数据类型有两种:分为基本数据类型和引用数据类型
基本数据类型:Number、String、Boolean、Null、Undefined
引用数据类型:Object、Array、Function、Data
Null类型只有一个值,即null,null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
Undefined类型只有一个值,即undefined,当声明的变量还未初始化时,变量的默认值为undefined。
15.jQuery绑定事件的方式有哪些?
Bind、 On、 live、 delegate →均支持未来添加新元素的事件设置
↓ ↓ ↓ ↓ 对应解绑事件
Unbind Off die undelegate
↓ ↓ ↓ ↓
所有版本 jQ1.7+ 1.9- 1.4.2+
↓
只针对已存在的元素进行事件的设置
16.http协议?http和https有什么区别?状态码有哪些?
HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。
HTTP的请求方式有GET和POST
HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
状态码:200 请求处理成功
302 临时重定向
400 请求报文中存在语法错误
403 请求访问的资源被拒绝
408 客户端请求超时
500 服务器端在执行请求时发生了错误
503 服务器暂时处于超负载或正在进行停机维护
504 网关超时,代理服务器等待应用服务器响应时的超时
17.v-if和v-show有什么区别?
v-if: 真正的条件渲染,确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
V-show: 通过css的display:block和display:none来控制显示隐藏,元素一直存在
18.Vue路由怎么传值?
① 用name传递参数
② 通过
Vue-router利用url传递参数
这题可参照我另外一篇文章:https://blog.csdn.net/qq_36373873/article/details/81541826
19.Vue导航钩子函数?
答:导航钩子有:a/全局钩子和组件内独享的钩子。b/beforeRouteEnter、afterEnter、beforeRouterUpdate、beforeRouteLeave
参数:有to(去的那个路由)、from(离开的路由)、next(一定要用这个函数才能去到下一个路由,如果不用就拦截)最常用就这几种。
20.Vue父子组件之间是如何通信的?
答:父组件到子组件通讯:通过props传递数据,通过$on传递父组件方法
子组件到父组件通讯:通过$emit传递父组件数据,子组件添加refs属性获取。
21.Vue的生命周期?
beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeDestroy、destroyed.
22.从输入网址到页面浏览器发生了什么?
参照这个链接:https://www.cnblogs.com/kongxy/p/4615226.html
23.MVVM是什么?
一个model+view+viewModel框架,数据模型model,viewModel连接两个
参照这个链接:https://www.cnblogs.com/iammackong/articles/3312565.html
24.Vue插槽
参照这个链接:https://blog.csdn.net/kingov/article/details/78293384