前端面试题整理及答案
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);
三.通信篇
1、ajax如何处理跨域
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 答: 首先回答这个问题,先知道什么是跨域,跨域问题来源于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
将来的自己,会感谢现在不放弃的自己!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现