# 大厂面试题

  1. prototype和_ proto_ 的关系是什么

实例的 _ proto_ === 构造函数的prototype。 _ proto_ 是实例的私有属性指向他的原型对象prototype 该原型对象也有自己的原型对象,层层向上直到指向null。

  1. meta viewport原理

viewport 是指 web 页面上用户的可见区域,viewport 的大小是和设备相关的,这个属性一般与移动端适配有关。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

width=device-width 的意思是 屏幕宽度等于设备宽度。 initial-scale=1.0 是指初始化的时候缩放大小是1,也就是不缩放。 user-scalable=0 是指禁止用户进行缩放。

  1. 域名收敛是什么

域名收敛:就是将静态资源放在一个域名下。减少DNS解析的开销 域名发散:是将静态资源放在多个子域名下,就可以多线程下载,提高并行度,使客户端加载静态资源更加迅速。 浏览器有并发限制,是为了防止DDOS攻击。

  1. float和display:inline-block;的区别

float是浮动属性,让元素脱离当前文档流,呈环绕状排列。 而display为inline-block是将元素设为块级内联元素,块级内联元素能保持其块属性,比如高和宽、上下边距等。

  1. 前端优化策略列举

使用CDN加速资源加载,对代码进行打包压缩,对图片压缩,使用css精灵。 减少http加载次数,减少加载体积,设置好缓存。。

  1. 首屏、白屏时间如何计算

首屏时间是指用户打开网站开始,到浏览器首屏内容渲染完成的时间。对于用户体验来说,首屏时间是用户对一个网站的重要体验因素。通常一个网站,如果首屏时间在5秒以内是比较优秀的,10秒以内是可以接受的,10秒以上就不可容忍了。超过10秒的首屏时间用户会选择刷新页面或立刻离开。

方法:统计首屏内图片完成加载的时间。

白屏时间指的是浏览器开始显示内容的时间。因此我们只需要知道是浏览器开始显示内容的时间点,即页面白屏结束时间点即可获取到页面的白屏时间。

因此,我们通常认为浏览器开始渲染 <body> 标签或者解析完 <head> 标签的时刻就是页面白屏结束的时间点。

7.闭包

闭包就是能够访问其他函数内部变量的一个函数。

8.作用域链

作用域链和原型链很相似,这个变量在自己的作用域无法找到,就会去父级作用域找,直到找不到为止。

9.ajax如何实现、readyState五中状态的含义

let ajax = new XMLHttpRequest;

10.jsonp如何实现

jsonp就是利用script标签可以跨域的能力。这个需要后端配合,输出符合期望的数据格式。

<script src="http://localhost:3000/json?jsonpCallback=fuc"></script>
<script>
 function fuc(data){
  console.log(data);
 }
</script>
//return data: fuc({data: "what does the 'p' in jsonp stand for?"});

11.怎么处理跨域

后端配置好CORS 推荐 Nginx反向代理 jsonp

12.restful的method解释

get和post的区别 事件模型解释 编写一个元素拖拽的插件 编写一个contextmenu的插件 编写web端cookie的设置和获取方法 h5和原生android的优缺点 编写h5需要注意什么 xss和crsf的原理以及怎么预防 css优先级 如何实现点击radio的文字描述控制radio的状态(通过label实现) delegate如何实现