华信设计(Java开发)一面面经

简历中提到了基于SpringBoot的商城管理系统。

1、项目是大学的时候做的吗?自己做的还是老师带着做的?

是的,作为学期最后作业,独立完成,老师讲解了相关重点知识。

2、项目中最难的点是什么?(问很多)

1)图片上传至阿里云OSS对象存储中,提高了效率。
2)Service层中业务的相关处理。

3、如何对根据商品销售量进行排名(从mapper到前端的实现过程)

对商品销售量进行排名可以分为以下几个步骤:

  1. 在数据库中记录商品销售量,例如可以在商品表中添加一个 sales 字段来记录销售量。
  2. 在 SpringBoot 项目中编写 Mapper 接口,使用 SQL 语句从数据库中查询出销售量排名靠前的商品信息。例如可以编写一个方法,使用 ORDER BY 子句按照销售量从大到小排序,然后使用 LIMIT 子句限制查询结果数量,最后返回查询结果。具体示例代码如下:
public interface ProductMapper {
    @Select("SELECT * FROM product ORDER BY sales DESC LIMIT #{count}")
    List<Product> getTopSellingProducts(int count);
}
  1. 在 Service 层调用 Mapper 接口的方法,获取销售量排名靠前的商品信息。例如可以编写一个方法,调用 Mapper 接口的 getTopSellingProducts 方法来获取销售量排名靠前的前N个商品信息,最后返回查询结果。具体示例代码如下:
@Service
public class ProductService {
    @Autowired
    private ProductMapper productMapper;

    public List<Product> getTopSellingProducts(int count) {
        return productMapper.getTopSellingProducts(count);
    }
}
  1. 在 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;
    }
}
  1. 在前端页面中使用 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);
				});
			}
		}
	});
}
  1. 在前端页面中调用上述 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、期望薪资