news 2026/4/16 17:46:14

面试题 -- 用户中心项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试题 -- 用户中心项目
🌈个人主页: Hygge_Code
🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络
💫个人格言: “既然选择了远方,便不顾风雨兼程”

文章目录

  • 前言
  • 面试题
    • 请介绍你在项目中使用的 Spring Boot 框架的优势和适用场景
      • Spring Boot的优势
      • Spring Boot 的适用场景
    • 什么是 MyBatis-Plus ?它有什么作用?它和MyBatis有哪些区别?
    • 你是如何通过继承定制通用操作模版,从而提高开发效率
    • 你在项目中是如何自定义错误码的?
    • 介绍一下你部署项目的操作流程
    • 什么是代理和反向代理?二者有什么区别?

前言

本文是对第一次练手项目(用户中心项目)的部分面试题总结

面试题

请介绍你在项目中使用的 Spring Boot 框架的优势和适用场景

Spring Boot的优势

  1. 快速开发和简化配置:Spring Boot采用了约定大于配置的原则,减少了繁琐的配置,提供了自动配置和起步依赖,让开发人员能够更快速地搭建应用程序
  2. 内嵌Web容器:Spring Boot内置了常见的Web容器,如Tomcat、Jetty和Undertow,这意味着你可以将你的应用程序打包成一个独立的JAR文件,而无需外部的Web服务器
  3. 自动配置:Spring Boot根据项目的依赖自动配置应用程序的组件,大大减少了手动配置的工作,提高了开发效率
  4. 生态系统支持:Spring Boot整合了Spring框架的各个模块,如Spring MVC、Spring Data、Spring Security等,可以轻松构建全栈应用
  5. 监控和管理:Spring Boot提供了丰富的监控和管理功能,包括健康检查、性能指标、远程Shell等,有助于更好地管理和维护应用程序
  6. 适用于微服务架构:Spring Boot是构建微服务架构的理想选择,它可以轻松地构建独立的服务,而且与Spring Clud等微服务相关的工具集成得很好
  7. 大型社区支持:Spring Boot有一个庞大的开发者社区,提供了丰富的文档、教程和第三方库,便于开发人员解决问题和分享经验

Spring Boot 的适用场景

  1. web应用程序开发:Spring Boot适用于构建各种类型的Web应员工程序,包括单页应用、多页应用、RESTful API等
  2. 微服务框架:Spirng Boot可以用于构建微服务应用,每个微服务可以独立开发、部署和管理
  3. 批处理应用程序
  4. 云原生应用
  5. 企业级应用程序:Spring Boot提供了大量的企业级特性,如事务管理、安全性、缓存、消息队列等,适用于构建复杂的企业级应用

什么是 MyBatis-Plus ?它有什么作用?它和MyBatis有哪些区别?

MyBatis是一个班 ORM(对象关系映射)框架,它内部封装了JDBC,使用它后,开发者只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程,提高开发效率。

MyBatis-PlusMyBatis的增强版框架,它对MyBatis进行了二次封装,只做增强不做改变。通过提供一系列的API方法和代码生成器,使重复的CRUD操作更加简单,无需手动编写SQL语句,从而大幅提高开发效率

此外,还有其他有点,比如:

  1. 提供了条件构造器,可以通过编程构建复杂的查询条件,无需编写繁琐的SQL语句
  2. 提供了分页查询支持,无需手动编写分页逻辑
  3. 提供了一个代码生成器工具,可以根据数据库自动生成Java实体类、Mapper接口 和 XML映射文件,减少了手动编写的工作量

使用MyBatis-Plus前,需要自己编写 SQL Mapper映射文件和语句:

<!-- userMapper.xml --><mappernamespace="com.demo.dao.UserMapper"><selectid="getUserById"parameterType="java.lang.Integer"resultType="com.demo.entity.User">select * from t_user where id=#{id}</select></mapper>

使用MyBatis-Plus后,定义接口继承BaseMapper接口并调用
其中提供的现成方法即可:

public interface UserMapper extends BaseMapper<User>{ }

你是如何通过继承定制通用操作模版,从而提高开发效率

在开发项目过程中,我发现很多功能和代码是独立于具体的业务逻辑的,比如:

  1. 给每个请求的返回值增加code、message和data字段
  2. 在全局异常处理器中统一处理项目的异常,防止代码错误细节暴露在外,同时优化用户体验
  3. 跨域的处理、长整数丢失问题的解决等

为了避免每次开发时手动引入重复的依赖、或者编写重复的代码,我把这些重复的功能独立抽取为了一套自己的通用项目模板。
其中,我使用MyBatis Plus框架开发数据访问层,在自己开发Service业务操作代码时,继承了MyBatis Plus提供的通用IService接口,从而复用对数据库的基本增删改查操作代码,不用手动编写重复的操作,大幅提高了开发效率。

你在项目中是如何自定义错误码的?

通过自定义一个枚举类来集中定义错误码。
该枚举类提供code、message、description三个属性,并且提供一个默认的构造函数用于创建枚举。

其中,我对错误码的整型定义是有讲究的,参考真实的HTTP状态码将错误进行分类,并且将错误码的前3位前缀定义为和对应含义的状态码相同,比如HTTP状态码400表示客户端请求参数错误,那么我在定义一个客户端请求参数的错误码时,code为40000,示例代码为:

PARAMS_ERROR(40000,"请求参数错误","具体描述"),

这样不仅“见码知义”,同时5位数的错误码能够预留一定的扩展空间,保证拥有相同HTTP前缀的错误码可以定义100个

在抛出异常时,可以传入特定的错误码枚举值作为参数,并且将错误码枚举的message的description属性作为异常类的message,简化抛出异常的代码。

介绍一下你部署项目的操作流程

宝塔Linux原生部署为例:

  1. 购买云服务器
  2. 安装和初始化宝塔Linux面板
  3. 在宝塔面板中安装项目部署依赖软件,比如jdk、mysql、nginx、tomcat、Java项目管理器等
  4. 把本地的数据同步到宝塔安装的线上数据库
  5. 后端:使用Java项目管理器,添加ava项目,把本地mvn package命令打好的jar包上传到Liux服务器,配置启动参数和激活配置(prod),点击“启动"即可。
  6. 前端:上传本地打包好的dist网站静态文件目录到服务器,然后配置Ngix指向文件目录路径,即可访问前端静态文件。
  7. 在Nginx配置反向代理,请求服务器P(或域名时)+后端路径(/api)时,请求转发到服务器内的实际后端服务端口(比如localhost:8080)。
  8. 在服务器运营商提供的界面和宝塔面板界面中开启防火墙的80端口

什么是代理和反向代理?二者有什么区别?

二者服务的对象和目的不同

  • 正向代理是指有一个中间服务器代替客户端发送请求到目标服务器,目标服务器不知道客户端的存在,可以用于保护客户端的安全隐私、加速访问等。

  • 反向代理是指有一个中间服务器代替目标服务器去接受客户端的请求,客户端并不知道目标服务器的存在,可以用于负载均衡、保障服务器的安全性。


如果我的内容对你有帮助,请点赞评论收藏。创作不易,大家的支持就是我坚持下去的动力!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:42:37

Windows系统HEIC预览解决方案:企业级图片管理效率提升指南

Windows系统HEIC预览解决方案&#xff1a;企业级图片管理效率提升指南 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 企业环境中的HE…

作者头像 李华
网站建设 2026/4/16 0:25:00

Live Avatar硬件配置建议:4×24GB与5×80GB方案对比

Live Avatar硬件配置建议&#xff1a;424GB与580GB方案对比 1. Live Avatar模型简介 Live Avatar是由阿里联合高校开源的数字人生成模型&#xff0c;专注于高质量、低延迟的实时数字人视频生成。它融合了文本理解、语音驱动、图像生成与运动建模能力&#xff0c;支持从单张参…

作者头像 李华
网站建设 2026/4/16 11:05:17

内容创作者必备,用科哥镜像快速制作PPT透明插图

内容创作者必备&#xff0c;用科哥镜像快速制作PPT透明插图 做PPT时最让人头疼的不是排版&#xff0c;而是找一张“刚好合适”的配图——要高清、要主题契合、还要能无缝融入页面设计。更麻烦的是&#xff0c;网上下载的图片往往带着背景&#xff0c;硬塞进PPT里就像贴了一块补…

作者头像 李华
网站建设 2026/4/16 11:05:44

SAM 3 GPU部署优化:显存峰值降低52%,A10单卡支持1080P@24fps实时分割

SAM 3 GPU部署优化&#xff1a;显存峰值降低52%&#xff0c;A10单卡支持1080P24fps实时分割 1. SAM 3模型概述 SAM 3是Facebook推出的一个统一基础模型&#xff0c;专门用于图像和视频中的可提示分割任务。这个模型的最大特点是能够接受多种形式的提示输入&#xff0c;包括文…

作者头像 李华