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

相关推荐
今天背单词了吗9806 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
天天摸鱼的java工程师9 分钟前
使用 Spring Boot 整合高德地图实现路线规划功能
java·后端
东阳马生架构24 分钟前
订单初版—2.生单链路中的技术问题说明文档
java
咖啡啡不加糖39 分钟前
暴力破解漏洞与命令执行漏洞
java·后端·web安全
风象南42 分钟前
SpringBoot敏感配置项加密与解密实战
java·spring boot·后端
DKPT1 小时前
Java享元模式实现方式与应用场景分析
java·笔记·学习·设计模式·享元模式
Percep_gan1 小时前
idea的使用小技巧,个人向
java·ide·intellij-idea
缘来是庄1 小时前
设计模式之迭代器模式
java·设计模式·迭代器模式
Liudef061 小时前
基于HTML与Java的简易在线会议系统实现
java·前端·html
前端小巷子1 小时前
Web开发中的文件下载
前端·javascript·面试