晚上不到九点的时候突然接到阿里的电话面试,慌张。这几天阿里的电话面试由于个人原因一直没接到,没想到晚上还会突然打来,连自我介绍都没准备好,简单的说了两句,声音都有点打颤,怂了怂了。
一面下来感觉自己凉凉,有一些问题没有答上来,答上来的问题有的回答也很表面。还是积累经验吧,总结了hr小哥哥问的一些问题,供大家参考。
1.自我介绍
2.什么时候学习前端的?
3.通过什么途径学习的前端,除了看《JavaScript高级程序设计》还看过什么书籍?
4.在自己所做过的项目中承担了什么角色,主要做了什么?
5.css中的选择器?常用的伪类选择器?选择器的权重问题?
6.选择器怎么选中奇数项?怎样选中第一个元素?
7.html5中新增加的语义元素?
8.栅格布局?
9.介绍一下标准盒模型
10.介绍一下flex布局
11.解释一下闭包
12.this的指向问题?
13.介绍一下Ajax
由于浏览器的同源策略(限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制),凡是发送请求url的协议、域名和端口号三者之间任意一个与当前页面地址不同即为跨域。
同源策略限制的两大危险场景:针对接口的请求;针对Dom的查询。
存在跨域的情况:
网络协议不同,如http协议访问https协议;
端口不同,如80端口访问8080端口;
域名不同,如qianduanblog.com访问baidu.com;
子域名不同,如abc.qianduanblog.com访问def.qianduanblog.cim;
域名和域名对应ip,如www.a.com访问20.205.28.90.
14.解决跨域问题的技术?
1.CORS
http://www.ruanyifeng.com/blog/2016/04/cors.html
CORS是一个W3C标准,全称跨域资源共享(Cross-origin resource sharing)。它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
包括两种请求:简单请求和非简单请求。
只要满足以下两大条件,就属于简单请求:
请求方法是以下三种方法之一:HEAD、GET、POST
HTTP的头信息不超出以下几种字段:Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type(只限于三个值:application/x-www-form-urlencoded、multipart/form-data、text/plain)
凡是不能同时满足上面两个条件,就属于非简单请求。
非简单请求:
会发出一次预检测请求,返回码是204,预检测通过才会发出真正的请求,这才会返回200,这里通过前端发请求的时候增加一个额外的headers来触发非简单请求。
2.JSONP
详情参考这个链接吧。
https://blog.csdn.net/hansexploration/article/details/80314948
3.proxy代理
定义和方法:用于将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前端。即请求的时候还是用前端的域名
实现方法:通过nginx代理。
注意:如果代理的是https协议的请求,那么你的proxy首先需要信任该证书或者忽略证书检查,否则你的请求无法成功。
15.jsonp的实现原理?
16.还有什么要问我的?