华信设计(Java开发)一面面经
简历中提到了基于SpringBoot的商城管理系统。
1、项目是大学的时候做的吗?自己做的还是老师带着做的?
是的,作为学期最后作业,独立完成,老师讲解了相关重点知识。
2、项目中最难的点是什么?(问很多)
1)图片上传至阿里云OSS对象存储中,提高了效率。
2)Service层中业务的相关处理。
3、如何对根据商品销售量进行排名(从mapper到前端的实现过程)
对商品销售量进行排名可以分为以下几个步骤:
- 在数据库中记录商品销售量,例如可以在商品表中添加一个 sales 字段来记录销售量。
- 在 SpringBoot 项目中编写 Mapper 接口,使用 SQL 语句从数据库中查询出销售量排名靠前的商品信息。例如可以编写一个方法,使用 ORDER BY 子句按照销售量从大到小排序,然后使用 LIMIT 子句限制查询结果数量,最后返回查询结果。具体示例代码如下:
public interface ProductMapper {
@Select("SELECT * FROM product ORDER BY sales DESC LIMIT #{count}")
List<Product> getTopSellingProducts(int count);
}
- 在 Service 层调用 Mapper 接口的方法,获取销售量排名靠前的商品信息。例如可以编写一个方法,调用 Mapper 接口的 getTopSellingProducts 方法来获取销售量排名靠前的前N个商品信息,最后返回查询结果。具体示例代码如下:
@Service
public class ProductService {
@Autowired
private ProductMapper productMapper;
public List<Product> getTopSellingProducts(int count) {
return productMapper.getTopSellingProducts(count);
}
}
- 在 Controller 层编写请求处理方法,调用 Service 层的方法来获取销售量排名靠前的商品信息,最后将查询结果返回给前端页面。例如可以编写一个方法,使用 @GetMapping 注解处理 HTTP GET 请求,调用 Service 层的 getTopSellingProducts 方法来获取销售量排名靠前的前N个商品信息,最后将查询结果封装到一个 Map 中,返回给前端页面。具体示例代码如下:
@RestController
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping("/products/top-selling")
public Map<String, Object> getTopSellingProducts(@RequestParam(name = "count", defaultValue = "10") int count) {
List<Product> products = productService.getTopSellingProducts(count);
Map<String, Object> result = new HashMap<>();
result.put("success", true);
result.put("data", products);
return result;
}
}
- 在前端页面中使用 Ajax 技术向后端发送 HTTP 请求,获取销售量排名靠前的商品信息,并将查询结果展示在页面上。例如可以编写一个 JavaScript 函数,使用 jQuery 的 $.ajax 方法向 /products/top-selling 路径发送 HTTP GET 请求,获取销售量排名靠前的前N个商品信息,然后使用 jQuery 的 $.each 方法遍历查询结果,将每个商品的信息动态添加到页面上。具体示例代码如下:
function showTopSellingProducts(count) {
$.ajax({
url: '/products/top-selling',
data: {count: count},
success: function(response) {
if (response.success) {
var products = response.data;
$.each(products, function(index, product) {
var html = '<div class="product">' +
'<div class="product-name">' + product.name + '</div>
'<div class="product-sales">' + product.sales + '</div>' +'</div>';
$('#top-selling-products').append(html);
});
}
}
});
}
- 在前端页面中调用上述 JavaScript 函数,展示销售量排名靠前的商品信息。例如可以编写一个 HTML 页面,使用 jQuery 的
$(document).ready
方法在页面加载完成后调用上述 JavaScript 函数,展示销售量排名靠前的前N个商品信息。具体示例代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Top Selling Products</title>
</head>
<body>
<h1>Top Selling Products</h1>
<div id="top-selling-products"></div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
<script>
$(document).ready(function() {
showTopSellingProducts(10);
});
</script>
</body>
</html>
注意:以上示例代码仅供参考,实际实现过程可能因具体需求和技术栈不同而略有差异。
3、编写代码实现字符串拆分。
代码如下:
import java.util.*;
class test{
String static void main(Strng[] args){
String str = "aaaa,bbbb,cccc,dddd";
String[] res = str.split(",");
for(a:str){
System.out.println(a);
}
}
}
4、1-100随机整数。
代码如下:
import java.util.*;
class test{
String static void main(Strng[] args){
int res = (int)(Math.random()*100);
System.out.println(res);
}
}
5、项目中如何做事务?(如何设置事务的传播特性,在哪里设置?除了方法还能在哪里设置事务)
在项目中使用事务可以保证数据的一致性和完整性,一般在涉及到多个操作的时候需要使用事务。Spring Boot 提供了对事务的支持,可以通过 @Transactional 注解来声明一个方法需要运行在事务中,并指定事务的传播特性等。
参数:prorogation、Isolation
设置事务传播特性
事务传播特性指的是在嵌套事务中,一个事务如何与另外一个事务进行交互和协调。Spring Boot 支持多种事务传播特性,例如:propregation
Propagation.REQUIRED:如果当前存在事务,则加入该事务;如果不存在事务,则创建一个新的事务。
Propagation.REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果不存在事务,则以非事务方式继续运行。
Propagation.NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则挂起当前事务。
Propagation.NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
除了可以放在方法上还可以放在类上。
6、收集基础信息(奖学金,成绩排名,家庭状况等等)
7、期望薪资