面试时候可以问的问题集锦

1,javascript中new一个实例时候有哪几步,或者发生了什么?
答:第一步,创建一个空对象,将对象的__proto__属性指向构造函数的prototype对象;第二步:改变this指向;第三步:返回该对象。

2,什么是javascript的事件循环?

答:javascript是单线程的,需要一个任务队列来管理任务事件,同步任务在主线程执行,异步任务一般是放在任务队列中等待执行,只有主线程的同步任务执行完毕后,才会去执行任务队列里面的任务,这个操作是重复去读取直到所有任务队列中事件读取执行完毕。

3,观察者模式和发布-订阅者模式的区别?

答:观察者模式的主体目标和观察者之间存在耦合的,即目标主体一直保持对观察者的记录,而发布-订阅者模式是通过中介者进行事件的管理的,发布者和订阅者互相不知道对方的存在,大多情况观察者模式是同步的,而发布-订阅者使用的是消息队列模式,处理异步事件。

4,项目中是如何处理跨域问题的?

答:跨域问题来源于浏览器的同源策略限制(协议+域名+端口号),跨域就是请求其他域的资料,浏览器会拦截请求,其实是拦截返回,如何跨域请求呢?方法JSONP,其实就是利用script标签的src可以请求第三方的js脚本,只不过请求时候带个callback参数给服务器,告诉服务器我要在自己的页面执行哪个函数,服务器把返回数据放在callback的参数中,当异步加载js脚本时候,执行了之前写好的callback参数。JSONP请求只至支持GET请求。
还有就是让后台改Access-Control-Allow-Origin参数为你请求的url,或者*,表示允许所有其他域访问你的服务器,这种在开发阶段是可以,使用的是CORS跨域策略,对于非简单请求会有一个Options的预检查机制。

再就是前端配置Nginx反向代理了,这个比较常见,或者node搭建个反向代理,其实就是location的替代,使用/api替代了后台的请求url,在本地就看起来不存在跨域了。

5,JS的基本类型保存在哪里?引用类型保存在哪里?

答:基本类型保存在栈(stack)内存中,引用类型保存在堆(heap)内存中。

6,form表单的提交有没有跨域问题存在?为什么?

答:不存在跨域,我觉着根本原因是:表单提交不是从脚本发起的,而且form提交是发请求,而不是获取数据,此时浏览器觉着不存在安全问题,跨域问题应该是浏览器拦截了响应而已,请求是成功的。

一般浏览器会限制从脚本发起的跨域HTTP请求,而form表单提交不是脚本发起的,浏览器认为是安全的。可以从这方面回答。

7,js闭包的用处有哪些?

答:(1)封装变量,将不需要暴漏在全局的变量封装成私有变量。(2)for循环的变量封闭在闭包环境中,不被外界环境改变。(3)补充。。。。。

8,移动端1px的适配问题是怎么回事?怎么解决的?

答:移动端1px问题是由于retina视网膜屏幕的像素比不是1造成的,像素比是1的设备,1个css像素就是一个物理像素,一般iphone手机的像素比会大于1,一般是2或者3,那么1px对象就是2或者3个物理像素了,看起来会变粗,解决方案就是在meta标签里面设置scale系数,手淘的那个flexible.js就是那个原理,因为实际是可以获取像素比系数,从而算出meta里面的scale系数的。

9,弹性盒子模型有几条轴线?介绍几个弹性盒子的属性

 答:弹性盒子模型:display:flex。有两条轴线,主轴即水平轴线,交叉轴即垂直轴。属性有:flex-direction,决定主轴方向的属性。flex-wrap,一条轴线排不下如何换行的属性。flex-flow:方向+换行。justify-content:主轴对齐方式。align-items,交叉轴对齐方式。align-content,多根轴线对齐方式。

10,css实现垂直居中问题?

答:水平居中,margin:0 auto。垂直方向居中方法:(方法1)将div定位:position:relative,top:50%,再加上自身Y轴的偏移量,transform:translateY(-50%)。

(方法二)利用弹性盒子布局,设置父元素display:flex,align-items:center;[该属性定义交叉轴即垂直方向的对齐方式],justify-concent:center;【该属性定义主轴即水平轴的对齐方式】,就可以了。

11,介绍css3的定位:position属性的值分哪几种,各有什么区别?

【未完待续】

原文地址:https://www.cnblogs.com/tangjiao/p/10037330.html