前端面试题积累(2020-09-17 杭州)

146 阅读5分钟

只有题目版本

  1. 说一下JavaScript基本数据类型
  2. 说下js放在html不同位置的区别
  3. html在浏览器中的存储方式是什么
  4. 说说不同浏览器内核的区别
  5. html5和html4的区别是什么
  6. 浏览器中 从输入地址到最终页面被渲染完成 发生了什么
  7. 说说display:none 和 visibility:hidden 的区别
  8. 如何快速修改访问的域名对应的IP
  9. HTTP状态码300、400、500的区别是什么?HTTP状态码502和504的区别是什么?
  10. GET和POST的区别是什么
  11. 如何判断两个对象类型相同?instansof 和 typeof 的区别是什么
  12. use strict的作用是什么
  13. 什么是闭包
  14. es6多了哪些规范
  15. 说一下Vue的生命周期函数执行顺序是什么
  16. 如何解决跨域问题,jsonp为什么能解决跨域问题
  17. 我们的网站中突然出现了莫名其妙的广告,可能是什么原因造成的
  18. js中的原型链是怎么样的

我自己总结的版本

HR筛选时问的

1、说一下JavaScript基本数据类型

Number、String 、Boolean 、null、undefined
Object 是 JavaScript 中所有对象的父对象
数据封装类对象:Object、Array、Boolean、Number 和 String
其他对象:Function、arguments、Math、Date、RegExp、Error
新类型:Symbol

2、说下js放在html不同位置的区别

浏览器解析html是自上而下的,这个特性决定了放在<head>中的js代码会在页面渲染前就加载,放在<body>中或后的js代码会在页面渲染中或渲染完成加载。

3、html在浏览器中的存储方式是什么

这道题没有听懂在问什么,就当是在问storage了

  1. 本地存储localStorage: 永久存储,用不失效。
  2. 本地存储sessionStorage:功能上和localStorage相同,特点是网页关闭后即失效,在不同的标签页中不共享。
  3. cookie可以设置有效期的本地存储,在有效期前不会失效。

4、说说不同浏览器内核的区别

5、html5和html4的区别是什么


中午面试的一家公司问的

1、浏览器中 从输入地址到最终页面被渲染完成 发生了什么

  1. DNS域名解析,将域名解析为IP地址;
  2. 通过 tcp 协议与服务器握手,建立连接;
  3. 浏览器向服务器发送请求;
  4. 服务器响应,若状态码为200,浏览器接受返回到HTML并开始渲染;
  5. 浏览器遍历HTML节点生成dom树;
  6. 浏览器解析 css dom树并应用它们;
  7. js根据渲染树计算各个节点的位置;

2、说说display:none 和 visibility:hidden 的区别

display:none; 会隐藏对应元素,在文档布局中不再分配空间,它各边的元素会合拢,就当它不存在。
visible:hidden; 会隐藏对应元素,但是在文档流中仍然保留原来的空间。

3、如何快速修改访问的域名对应的IP

修改本地host文件

4、HTTP状态码300、400、500的区别是什么?HTTP状态码502和504的区别是什么?

300

5、GET和POST的区别是什么

GET在浏览器回退是是无害的,而POST会再次提交请求
GET产生的URL地址可以用作书签,而POST不能
GET请求会被浏览器主动缓存,而POST不会
GET请求只能进行URL编码,而POST支持多种编码方式
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
GET请求在URL中传送的参数是有长度限制的,而POST没有
GET只接受ASCII字符,而POST没有限制
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
GET参数通过URL传递,POST放在Request Body中。

6、如何判断相等

==:非严格相等 console.log(0===false) // false
===:严格相等 console.log(0==false) // true
Object.is:和===类似,但是对NaN和-0,+0做了特殊处理。 详细内容可以查看MDN文档:JavaScript 中的相等性判断

7、instansof 和 typeof 的区别是什么

二者都是用来判断值是什么类型,typeof 对数组[]和对象{}返回值都为Object,无法区分数组和对象,但是instanceof可以区分。

8、use strict的作用是什么

消除代码运行的不安全之处,保证代码运行的安全。
提高编译器的效率,增加运行速度
为未来新版本的JavaScript做好铺垫

9、什么是闭包

闭包值得是一个函数可以访问另一个函数中的变量。常见的构造方法,是在一个函数内部定义另外一个函数。内部函数可以引用外层的变量;外层变量不会被垃圾回收机制回收。
注意:闭包的原理是作用域链,所以闭包访问的上级作用域中的变量是个对象,其值为其运算结束后的最后一个值。
优点:避免全局变量污染。缺点:容易造成内存泄漏。

10、es6多了哪些规范

11、说一下Vue的生命周期函数执行顺序是什么

new Vue() -> beforeCreate -> created -> beforeMount -> mounted ->beforeUpdate -> updated -> beforeDestroy ->distroyed

12、如何解决跨域问题,jsonp为什么能解决跨域问题

  1. 使用jsonp
  2. 使用ifame
  3. window.name、window.postMessage
  4. 服务器设置Access-Control-Allow-Origin

jsonp虽然也是get请求,但是没有调用XMLHttpRequest方法,所以不会执行跨域检查,JSONP本质是欺骗浏览器,规避调用XMLHttpRequest

13、我们的网站中突然出现了莫名其妙的广告,可能是什么原因造成的

14、js中的原型链是怎么样的

每个实例对象都有一个私有属性,称之为__proto__,指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象(__proto__),层层向上,直到一个对象的原型对象为null。根据定义,null没有原型,并作为这个原型链中的最后一个环节。