前端面试题整理及答案

es6 

 

通信/编程/原理篇

 

一. 原理篇

1. 对 SPA 单页面应用的理解,优缺点是什么?

SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。?旦??加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。

优点:

1)用户体验好、快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染;

2)SPA 相对对服务器压力小;

3)前后端职责分离,架构清晰,前端进行交互逻辑,后端负责数据处理;

缺点:

1)首屏(初次)加载慢:为实现单页面 Web 应用功能及显示效果,需要在加载资源的时候将JavaScript、CSS 统一加载,部分页面按需加载;

2)不利于 SEO:由于所有的内容都在一个页面中动态替换显示,所以在 SEO 上其有着天然的弱势。

二.算法与编程篇

1. 写一个倒计时函数

前端面试题整理及答案
let n = 10; // 全局变量
let time = setInterval(() => {
setTimeout(() => {
console.log(‘倒计时------‘, n);
n--;
if (n < 0) {
console.log(‘倒计时------时间到‘);
clearInterval(time); // 删除时间 setInterval,每隔一段时间执行一次
}
})
}, 1000);
View Code

三.通信篇

1、ajax如何处理跨域

 

答:  首先回答这个问题,先知道什么是跨域,跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。

查看浏览器开发者工具Console报错:

Failed to load http://a.a.com:8080/A/FromServlet?userName=123: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://b.b.com:8080‘ is therefore not allowed access.

http://www.abc.com/a/b 调用 http://www.def.com/a/b (跨域:域名不一致)
http://www.abc.com:8080/a/b 调用 http://www.abc.com:8081/d/c (跨域:端口不一致)

http://www.abc.com/a/b 调用 https://www.abc.com/d/c (跨域:协议不同)

  跨域的几种解决方案:

1、响应头添加Header允许访问

2、jsonp 只支持get请求不支持post请求
3、httpClient内部转发
4、使用接口网关——nginx、springcloud zuul   (自己公司也是如此解决,大多互联网公司都是用此方案)

 

 

 

参考文章链接如下:

https://blog.csdn.net/itcats_cn/article/details/82318092 跨域

https://www.jianshu.com/p/3507b078fe03

https://www.cnblogs.com/liandudu/p/14276948.html

前端面试题整理及答案

上一篇:Daily Coding Problem: Problem #949


下一篇:传智的光辉岁月-C#基础篇八构造函数和面向对象思想