前端面试题(第一天)
1.定位有哪些?分别相对于谁定位?
fixed(固定定位):脱离文档流,相对于浏览器窗口进行定位
relative(相对定位):不脱离文档流,相对于其在原位置定位
absolute(绝对定位):脱离文档流,相对于最近的非static的父元素进行定位
static(静态定位):不脱离文档流,默认值
sticky(粘性定位):不脱离文档流,生成粘性定位的元素,位置根据正常文档流定位
2.如何解决跨域问题?
JSONP
JSONP的原理:动态创建script标签,通过script标签引入js文件,等到js文件载入成功后会执行url参数中指定的函数,并把我们需要的json数据作为参数传入。
由于同源策略,xmlHttpRequest只允许请求当前源的资源,为了实现跨域,就需要script标签实现跨域请求,然后在服务端JSON数据并执行回调函数,就解决了跨域的数据请求。
3.xml和json的区别
(1)数据体积方面
JSON相比于xml,数据体积小,所以传输速度快。
(2)数据交互方面
JSON和JS交互更加方便,更容易解析处理。
(3)数据描述方面
JSON描述性比XML差,不便于书写理解。
4.说说TCP传输的三次握手和四次挥手策略
这个过程使用了TCP标志:SYN和ACK
三次握手
第一次:客户端向服务端发送一个携带SYN标志的数据。
第二次:服务端接收到携带SYN标志的数据后,向客户端返回一个SYN标志或ACK标志的数据,表示接受数据成功。
第三次:客户端向服务端发送ACK标志的数据,表示“握手”结束。
通俗的讲:
A:你好,我给你发了一封邮件
B:我收到了
A:好的,我知道了。
四次挥手
第一次:主动关闭方给被动关闭方发送一个FIN,告诉对方我要关闭数据传送了。
第二次:被动关闭方接收到FIN之后,给主动方发送一个ACK,确认收到。
第三次:被动方发送给主动方一个FIN,告诉对方我也关闭数据传输了。
第四次:主动方收到FIN,发送一个ACK给被动方,“挥手”结束。
通俗的讲:
A:我们店要打烊了。
B:我知道了,但是我还不能走,等我吃完饭。
B:我吃完了,我要走了。
A:好的,慢走不送。
5.TCP和UDP的区别
TCP(Transmission Control Protocol,传输控制协议),是基于连接的传输协议,也就是说,传输数据之前要与对方建立起可靠的连接。
UDP(User Data Protocol,用户数据报协议)与TCP相对应的协议,是基于非连接的传输协议,不需要与对方建立连接就可以传输数据。
UDP场景:传输的数据量少,对可靠性要求不高
6.说说你对作用域链的理解
先解释什么是作用域:是一块独立的区域,不让变量暴露出去。作用域的最大用处就是隔离变量,不同作用域里的同名变量不会冲突。
作用域链:访问变量的时候,会先在自己的作用域内查找变量,若找不到,则向上(父类)查找,直到访问到window对象终止查找。查找变量形成的链条就叫做作用域链。
7.创建AJAX的过程
AJAX:对网页局部内容进行重新加载。
AJAX请求分为四步:
(1)创建xmlHttpRequest异步对象
(2)设置请求方式和请求地址
(3)send发送请求
(4)接受返回的数据
8.渐进增强和优雅降级
渐进增强:构建网页的时候考虑最低兼容版本的浏览器,保证基本功能,之后再针对高级浏览器进行交互、功能上的优化,达到更好的用户体验。
优雅降级:刚开始构建网页就搭建完整的功能,之后再针对低版本浏览器进行兼容。