Java后端面试模板(技术面)

1、自我介绍模板

面试官您好!我是来自桂林电子科技大学计算机学院的一名大三学生,我的名字叫阙煜海。

在大学期间,我主要自学了一些主流的Java技术栈,其中主要包括:Java主流的框架:Spring MVC Spring Boot

Spring Cloud Mybaits ,以及常用的数据库MySQL,缓存Redis和常用的消息中间件RabbitMQ,搜索引擎ElasticSearch,并了解一些常用的设计模式比如单例模式、工厂模式、代理模式、策略模式等和一些Docker容器技术、JVM的基本知识。并通过结合所学技术栈自主做了两个项目,其中一个项目是有关微服务的OJ判题系统,该项目的主要核心是用户通过提交代码给后端,后端通过⽤ Java Runtime的exec ⽅法编译和执⾏Java代码,然后并通过Process类进行获取结果,通过与题目的测试结果进行对比来判断用户代码的正确性。

第二个项目是许苑刷题阁,主要是用户通过高效的搜索引擎进行题目的检索,然后进行在线做题,该项目的主要核心要点是围绕性能优化,保证数据的一致性,以及高并发下如何保证系统的安全性和稳定性。

2、项目介绍

2.1、OJ判题系统

它主要包括8个模块:

  • 公共模块:用来存放公共使用的工具类等等

    • 实体类模块:数据库的实体,请求类和通用响应类等等。
  • 网关模块:负责统一处理前端的请求,然后根据对应的路由规则路由到对应的模块服务。

  • 判题模块

    • i.提交判题(结果是否正确与错误)
    • ii. 错误处理(内存溢出、安全性、超时)
    • iii. 自主实现 代码沙箱(安全沙箱)
    • iv.开放接口(提供一个独立的新服务
  • 题目模块

    • i. 创建题目(管理员)
    • ii.删除题目(管理员)
    • ii. 修改题目(管理员)
    • iv. 搜索题目(用户)
    • v.在线做题
    • v. 提交题目代码
  • 用户模块

    • i.注册
      ii. 登录
  • 代码沙箱(扩展可以用AI作为模块开发)

    代码沙箱模块和判题模块之间的关系

  • 判题模块:调用代码沙箱,把代码和输入交给代码沙箱去执行。

  • 代码沙箱:只负责接收代码和输入的测试用例,然后进行编译运行,返回编译的结果,不负责判断题目的正确与否,实现了与判题模块之间的解耦。(可以作为独立的项目,供给远程的用户进行调用)

技术亮点:

为⽀持多种代码沙箱创建,采⽤静态⼯⼚模式实现沙箱扩展,并通过策略模式封装不同的判题逻辑。

使⽤ Java Runtime的exec ⽅法编译和执⾏Java代码,通过Process类获取结果。

为确保宿主机安全,利⽤Docker Java库创建隔离的容器环境执⾏代码。

为减少判题与服务模块之间的耦合,通过使⽤Rabbitmq技术进⾏解耦。

为保证项⽬各模块独⽴运⾏,选⽤了Spring Cloud Alibaba来实现微服务划分,

为保护服务的同时简化客⼾端的调⽤,项⽬通过Spring Cloud Gateway聚合路由服务,。

2.2、许苑刷题阁

基础功能

  • 用户模块

    • 用户注册
    • 用户的登录
    • 【管理员】 - 增删改查
  • 题库模块

    • 查看题库列表
    • 查看题库详情
    • 【管理员】管理题库 - 增删改查
  • 题目模块

    • 题目搜索
    • 查看题目详情(进入刷题页面)
    • 【管理员】管理题目 - 增删改查(添加题目到所属题库,修改题目所属题库等)

高级功能

  • 题目批量管理
    • 【管理员】批量增删题目
  • 分词题目搜索
  • 用户刷题记录日历图
  • 自动缓存热门题目
  • 网站流量控制和熔断
  • 动态 IP 黑白名单过滤
  • 同端登录冲突检测
  • 分级题目反爬虫策略

详细了解地址:https://blog.csdn.net/a147775/article/details/144302349

相关推荐
我真的是大笨蛋11 分钟前
K8S-Pod(上)
java·云原生·容器·kubernetes
我是哪吒23 分钟前
分布式微服务系统架构第170集:Kafka消费者并发-多节点消费-可扩展性
后端·面试·github
纪元A梦35 分钟前
贪心算法应用:数字孪生同步问题详解
java·算法·贪心算法
Micrle_0071 小时前
java分布式场景怎么实现一个高效的 读-写锁
java·分布式
海上生明月丿1 小时前
微服务01
java·spring boot·微服务
coooliang2 小时前
【鸿蒙 NEXT】V1迁移V2状态管理
java·前端·harmonyos
Luke Ewin2 小时前
FunASR的Java实现Paraformer实时语音识别 | 一款无需联网的本地实时字幕软件
java·人工智能·语音识别·asr·funasr·paraformer·sensevoice
叫我阿柒啊2 小时前
从Java全栈到前端框架的全面实战:一次真实面试的深度解析
java·spring boot·缓存·微服务·消息队列·vue3·rest api
望未来无悔2 小时前
系统学习算法 专题十八 队列+宽搜
java·算法