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

相关推荐
qq_5432485218 分钟前
redis的哨兵模式和Redis cluster
java·开发语言
异常君26 分钟前
TCP TIME_WAIT 状态:原理、问题与优化方案
java·linux·tcp/ip
清风~徐~来34 分钟前
【Redis】set 类型
java·数据库·redis
全栈凯哥1 小时前
JSCH使用SFTP详细教程
java
残*影1 小时前
Spring 中如何开启事务?
java·后端·spring
于冬恋1 小时前
Web后端快速入门(Maven)
java·maven
天天摸鱼的java工程师2 小时前
CTO新项目直接上MySQL 8.0,老系统仍是5.7
java·后端·mysql
bxlj_jcj2 小时前
解锁Java多级缓存:性能飞升的秘密武器
java·缓存·面试·架构
未来并未来2 小时前
Redis 缓存问题及其解决方案
java·redis·缓存
工呈士2 小时前
React 性能监控与错误上报
前端·react.js·面试