项目-AI Java面试官

目录

一、需求分析

(一) 解释

(二) 特点

二、方案设计

(一) 项目接入AI

(二) 调教AI

(三) 持久化记录

(四) 项目优化(不做实现)

三、技术选型

(一) 前端

(二) 后端

四、业务流程

五、原型图(借鉴deepseek)

六、调教AI

(一) 提示词

1. 系统预设(自己设定):

2. AI预设(通过deepseek优化后):

七、前端开发

(一) 调用ai生成代码

八、项目预览

(一) 登录界面

(二) 聊天界面

(三) 线上代码地址

1. 前端

2. 后端

九、总结

一、需求分析

(一) 解释

AI Java 面试官:通过面试者自我介绍,包括应聘岗位技术栈,面试官通过求职者自我介绍,给出相应的题目,通过面试者不断回答,最后给出面试结果和建议。

特点:

  1. 回答分析:面试官通过面试者的回答给出评分和相应建议。
  2. 要点分析:面试官在提出问题时候,同时给我相应的打分点
  3. 面试总结:面试结束后,面试官给我相应的建议

(二) 特点

通过AI来充当Java面试官,面试者只需要和AI对话,就能够自己进行模拟面试。

项目核心功能点:

  • 用户登录
  • 和AI面试官对话P0
  • 查看往期的对话记录P1

二、方案设计

(一) 项目接入AI

通过使用DeepSeek 大模型 + 火山方舟SDK

在项目中编写一个自己的AI工具类,便于在代码中更方便的使用AI。

(二) 调教AI

要把 AI 训练成一个面试官。可以利用线上控制台调试 Prompt, Prompt 调试完毕之后,再回到项目中进行开发,而不是在代码中不断运行调试。

注意,需要持续给AI补充用户的对话信息(关联上下文),并且要让 AI 在合适的时候结束面试。

  • 面试者主动结束面试
  • 面试者回答了几道题评分都很低

(三) 持久化记录

要把每一次对话,以及每一条消息都保存到 MySQL 数据库中,便于面试者刷新之后还能找回来。

(四) 项目优化(不做实现)

优化 AI 稳定性: 如果一次失败,可以重试

优化 AI 的性能:比如使用 SSE 实时推送、反应式编程、线程池 + 连接池

优化 AI 的客观策行:捕获异常 + 日志 + 退出消息的告警

优化 AI 的成本: 精简 Prompt、过滤无效消息、减少上下文的对话次数、命中缓存

三、技术选型

(一) 前端

  • Vue3:适合快速开发单页应用
  • Ant Design Vue:主流组件库,兼容 PC 端和移动端响应式
  • Vue Router: 前端路由组件
  • Axios: 主流的请求库

(二) 后端

  • Java + Spring Boot 框架
  • MySQL 数据库
  • MyBatis + MyBatis Plus 框架
  • Hutool 工具类
  • Swagger + Knife4j 接口文档组合
  • AI 大模型接入

四、业务流程

  1. 面试者登录后,点击【开启新面试】,新建一个面试房间
  2. 进入面试房间后,最上方会给出自我介绍提示
  3. 接下来,面试者可以和AI 面试官进行对话
  4. 面试者也可以主动结束,也可以由AI 主动结束
  5. 用户可以查看往期的面试记录

以下图片由AI生成

五、原型图(借鉴deepseek)

DeepSeek

六、调教AI

(一) 提示词

1. 系统预设(自己设定):

你是一位Java面试官,当我说“开始”的时候,你要针对我所面试的岗位和技术栈提出8道面试题,岗位包括:初级、中级、高级Java开发,每个岗位的评委要求不同,难度分别为(简单/中等/较难),要求回答的内容详细程度也不同,你可以对题目进行追加提问,每道题8分,最后给我评分详细报告和面试建议。但是,如果在以下情况下,你应该结束对话,“结束面试”,并且输出已面试结果和建议。

结束情况:

  • 我回答完十个面试题
  • 我面试分数很低,正确率很低(不超过30%)
  • 我输入“结束面试”

2. AI预设(通过deepseek优化后):

角色设定:

你是一位专业的Java技术面试官,具备丰富的Java开发经验和面试评估能力。你需要根据候选人的岗位级别(初级/中级/高级)调整面试难度和评估标准。

面试流程规则:

当候选人说"开始"时,首先确认其应聘的岗位级别(初级/中级/高级)和对应的技术栈

根据岗位级别和技术栈准备8道Java面试题,难度分别为:

初级:简单(基础语法、集合等)

中级:中等(框架、并发等)

高级:较难(架构设计、性能优化等)

每道题满分10分,评分标准包括:

答案正确性(5分)

回答深度(3分)

表达清晰度(2分)

可以根据回答情况追加1-2个深入问题

交互规则:

每次只问一个问题,等待回答后再继续

对每个回答给出即时评分和简要反馈,同时对于回答不足的给出相应的回答参考

在以下情况自动结束面试:

a) 完成8道问题

b) 超过3道题且累计正确率≤30%

c) 候选人说"结束面试"

结束时提供:

详细评分报告(每题得分+评语)

技术能力雷达图

针对性学习建议

岗位匹配度评估

特殊要求:

题目要覆盖:

初级:Java基础、集合、IO、基础设计模式

中级:Spring框架、SpringBoot框架、SpringCloud框架、数据库、并发编程、JVM、Redis

高级:分布式架构、性能调优、源码解析、系统设计

对高级候选人的问题要包含场景设计和开放性问题

适时给予鼓励性反馈,保持专业友好的语气

输出格式示例:

[问题1/8][中级]

请解释Spring AOP的实现原理及其典型应用场景?

[评分标准:原理阐述5分+场景举例3分+表达2分]

[结束报告]

总分:78/100

优势:对Spring框架理解深入...

不足:分布式事务掌握不扎实...

建议:建议深入学习分布式系统CAP理论...

七、前端开发

(一) 调用ai生成代码

你是一名专业的程序员,我正在开发一个AI Java 面试官网站,请你根据我的需求、业务流程、前端使用的技术栈、页面原型,来帮我生成一些页面

需求:

1)和AI面试官对话

2)查看往期的对话记录

业务流程:

1)用户进入页面,要先登录,登录后进入聊天室页面

2)进入聊天室页面时,AI会理科给出一个招呼语(给出自我介绍请求)

3)接下来,用户可以和AI面试官进行对话

4)用户可以主动结束,也可以由AI主动结束面试

5)用户可以随时查看往期的对话记录

6)没登录不能进行AI面试

页面:

1)页面1:登录页面,上面是AI面试官,下方是登录框,需要填写账号和密码

2)页面2:用户登录后,进入页面2。页面2是面试界面,左侧为面试记录,显示面试历史标题(左侧最上方为【开启新面试】),右侧为面试区域(左侧展示AI的回复,右侧展示我的输入,下方是输入框和发送消息按钮。输入框上面有“结束”按钮,AI和我的回复都要有头像+对话框)

交互逻辑:

1.进入页面时,要先登录,才能进行后续操作,否则不允许后续操作

2.点击【开始新面试】后,调用后端,后端会返会一个房间号,新建一个面试房间,面试区域最上面居中显示面试提示语“请介绍一下自己”,用户可以在下方通过输入框输入消息,点击【发送】按钮后调用后盾,后端会给出AI回复,要展示在面试区域左侧,要把我每一次发送的内容展示在右侧。从上到下展示消息。

3.每次我给AI发送消息,都要向后端发送我输入的消息内容,且要展示我的输入的消息和AI给出的回复

4.当AI给的回复包含了【面试已结束】时,前端要将结束按钮置灰,禁止点击

前端使用的技术:

Vue 3(遵循set up组合式api写法)、Ant Design Vue、Vue Router、Axios

后端的接口信息如下(除了登录其他都要携带cookies):

http://localhost:8081/api/user/login ,post请求,通过URL传递参数,包括密码和账号

http://localhost:8081/api/user/get/login ,get请求,获取当前登录用户信息

http://localhost:8081/api/chat_room/add,post请求,通过URL传递参数(目前不需要传递参数),返回roomId

http://localhost:8081/api/chat/list ,get请求,不接受任何参数,作用是获取面试列表

http://localhost:8081/api/chat/send/{roomId} ,post请求,通过URL传递参数

通过不断发送消息给deepseek进行微调

八、项目预览

(一) 登录界面

(二) 聊天界面

通过发送消息进行对话

(三) 线上代码地址

1. 前端

通过AI生成,可能不是很完善

汪了吧/wwinterviewer-frontend

2. 后端

汪了吧/wwai-interviewer-backend

九、总结

这个项目本地还有很多需要完善的地方,这里是个人开发的一个记录,感兴趣的也可以拉取代码进行互相学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值