面试时候可以问的问题集锦
Posted tangjiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试时候可以问的问题集锦相关的知识,希望对你有一定的参考价值。
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,
【未完待续】
以上是关于面试时候可以问的问题集锦的主要内容,如果未能解决你的问题,请参考以下文章