java后端vue面试题
时间: 2025-01-04 10:32:00 浏览: 10
### 关于 Java 后端开发与 Vue 前端框架的相关面试问题
#### 面试问题 1: 如何实现 Vue.js 和 Java 后端之间的通信?
在现代 Web 应用程序中,Vue.js 可以通过 HTTP 请求与 Java 后端进行交互。通常使用 Axios 或 Fetch API 来发送 GET、POST 等请求。为了确保数据的安全性和一致性,在传输敏感信息时应采用 HTTPS 协议并考虑使用 JWT (JSON Web Token) 进行身份验证。
```javascript
// 使用Axios发起GET请求的例子
axios.get('/api/data', {
params: { id: '123' }
})
.then(function(response){
console.log(response.data);
});
```
[^1]
#### 面试问题 2: 解释一下什么是 CORS?为什么它会影响跨域请求?
CORS(Cross-Origin Resource Sharing)是一种安全特性,允许服务器指定哪些源可以访问其资源。当浏览器检测到来自不同域名的脚本尝试加载资源时会触发同源策略检查;如果目标站点未设置适当响应头,则该请求会被阻止。因此,在构建 RESTful API 服务时需配置好相应的 CORS 政策以便支持来自其他网站的应用调用接口。
#### 面试问题 3: 在前后端分离项目里怎么处理登录状态保持?
对于单页面应用(SPA),推荐的做法是在客户端保存 token 并将其附加到每次 AJAX 调用中的 Authorization 头部字段内传递给后端。而后端接收到此令牌之后再做进一步的身份认证工作。这种方式不仅简化了流程而且提高了系统的灵活性和安全性。
```bash
Authorization: Bearer <token>
```
#### 面试问题 4: 描述下 vue 中如何集成 rsa 加密算法并与 java 后端配合完成加解密操作?
要实现在前端利用 RSA 对用户输入的数据加密后再提交至后台存储或处理,可以在 Vue 组件内部引入第三方库 `jsencrypt` 实现公钥加密逻辑。而在 Java Spring Boot 控制器层接收参数前先对其进行私钥解密还原原始明文内容。
```javascript
import JSEncrypt from "jsencrypt";
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey); // 设置公钥
let encryptedData = encryptor.encrypt(plainText);
console.log(`Encrypted Data:${encryptedData}`);
```
[^2]
#### 面试问题 5: String 和 StringBuffer 的区别是什么?
String 表示不可变字符序列,一旦创建就不能更改;而 StringBuffer 则是可以改变长度以及内容的对象.String 类重写了 equals() 方法用来比较两个字符串是否相等(StringBuffer 没有),并且实现了 hashCode(),这使得它可以作为 HashMap 键值对中的 key 存储.
由于 String 不可变性特点决定了每当我们执行任何修改操作都会返回一个新的实例而不是原对象本身.相比之下,StringBuffer 更适合频繁变更场景下的字符串拼接任务因为后者提供了线程同步机制从而保证多线程环境下的安全性.
[^3]
阅读全文