当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/79350.html

相关文章:

  • Linux——进程控制模拟shell
  • scala的泛型类
  • Python爬虫之Selenium的应用
  • 计算机组成原理复习
  • 【金融贷后】贷后运营精细化管理
  • axios的get和post请求,关于携带参数相关的讲解一下
  • [软件工程]十.可靠性工程(reliable engineering)
  • android studio 读写文件操作(应用场景二)
  • 代码随想录-算法训练营day41(动态规划04:01背包,01背包滚动数组,分割等和子集)
  • 信奥常考点:二叉树的构建(已知中序和 前序或后序 的情况下)
  • 网络原理之 TCP 协议
  • pubmed关键词搜索技能1:待更新
  • No APK Signature Scheme v2 signature in package
  • T C P
  • 删除asmlib磁盘导致磁盘组故障恢复---惜分飞
  • HBU深度学习实验14.5-循环神经网络(1.5)
  • 2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛—— C 题:竞赛论文的辅助自动评阅
  • 基于RISC-V的HSM方案
  • ruoyi-nbcio为安全起见actuator为仅暴露health端点
  • Spark实训
  • C++中参数传递方式介绍
  • 【AIGC半月报】AIGC大模型启元:2024.12(上)
  • 西门子 SINAMICS G120 变频器借助 ProfiNet 转 EtherCAT 实现与汇川 H5U 通讯实例
  • 【开发文档】资源汇总,持续更新中......
  • dd破坏asm磁盘头恢复---惜分飞
  • MFEM源码分析:代数库