commit 1707584a52f7a0368a9ab1513f6609ae280b2475 Author: st2411020202 Date: Wed Jan 7 15:16:31 2026 +0800 feat: 初始化AI面试助手项目基础结构 添加项目基础文件包括: - 主程序入口main.py - 依赖管理文件requirements.txt和pyproject.toml - 项目说明文档README.md - Git忽略规则文件.gitignore - 面试历史记录JSON示例文件 - 测试相关资源文件 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..56a8178 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.env +.venv/ +__pycache__/ +.DS_Store \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..326ce5e --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +姓名 学号 主要贡献 (具体分工) +张宇杰 2411020202 (组长) 文档撰写、测试与 Bug,PPT 制作 +汪兴莉 2411020212 前端界面设计、展演 +段秀易 2411020123 修复核心逻辑开发、Prompt 编写 + + +项目简介 & 运行指南 +## 简介 +AI面试官软件是依托大模型、多模态识别技术的招聘工具,核心是自动化完成面试全流程,帮求职者提前预估可能性问题和模拟面试环境 核心功能:按岗位自动出题+智能交互追问+多维度能力评估+生成面试报告。优势:成本低、标准化强,适配校招、社招初筛场景。 + +## 如何运行 +1. 安装依赖:`uv sync` +2. 配置 Key:复制 `.env.example` 为 `.env` 并填入 Key +3. 启动:`uv run streamlit run app.py` + + + +开发心得 (不少于 500 字) + + +在开发 AI 面试官受聘者端时,我们的核心思路始终围绕 **“极致简化流程、优化文字交互体验、贴合求职人群实际使用场景”** 展开。这段开发经历让我们深刻意识到,当剥离了复杂的音视频核验、防作弊监测等功能后,产品的竞争力反而更依赖于对用户需求的精准捕捉。 +项目启动之初,我们就明确了核心定位:这是一款面向校招初筛、中小企业批量面试的轻量化工具,目标用户是学生和基层岗位求职者,他们更需要的是 **“操作无门槛、作答无压力、流程不繁琐”** 的体验,而非严苛的风控机制。因此,我们果断砍掉了所有非必要功能,将产品核心流程压缩为 “链接接收 — 身份填写 — 试题作答 — 提交确认” 四步,从根源上降低用户的使用成本。 +在文字交互逻辑的打磨上,我们经历了从 “机械问答” 到 “智能贴合” 的迭代。早期版本中,系统完全按照预设题库顺序出题,不管候选人的回答内容如何,都只会按部就班抛出下一个问题,导致交互感极其生硬。比如候选人在回答 “个人优势” 时提到自己 “擅长数据分析,曾用 Excel 完成销售报表优化”,系统却依然会接着问 “你的职业规划是什么”,完全忽略了回答中的亮点信息。后来,我们接入了轻量级语义分析模型,让系统能够抓取回答中的核心关键词,并针对性调整追问方向。同样是上述场景,系统会自动追问 “你在优化销售报表的过程中,具体解决了什么问题?取得了哪些效果?”,让问答更具连贯性,也能帮助候选人更好地展现自身优势。同时,我们还设置了 **“自定义作答时长”** 功能,不同题型匹配不同的时间上限,主观题预留充足思考时间,客观题则适当缩短时长,避免用户因时间过紧或过松影响发挥。 +用户体验细节的优化,是这款产品的核心竞争力所在。我们调研发现,很多候选人在文字作答时,会有反复修改、临时补充的需求,因此专门开发了 **“实时自动草稿”功能,每输入一个字都会自动保存,即使意外关闭页面、网络中断,重新进入后也能完整恢复之前的作答内容,解决了用户 “辛苦写的内容丢失” 的痛点。针对不同岗位的差异化需求,我们设计了“题型定制模块”**,技术岗会增加代码填空、专业术语解释等题型,并配备代码格式输入框;职能岗则侧重情景分析、沟通协调类题目,让试题更贴合岗位需求。此外,我们还在页面设计上追求简洁明了,摒弃了花哨的界面元素,用清晰的字体、合理的留白降低视觉疲劳,同时在每一步操作前都配备简短的引导文案,比如 “点击下方输入框开始作答”“作答完成后点击提交按钮即可结束面试”,让新手也能快速上手。 +在兼容性适配方面,我们充分考虑到用户设备的多样性。纯文字交互的优势在于对设备性能要求低,因此我们不仅适配了电脑端的主流浏览器,还针对移动端做了专门优化,支持手机竖屏模式下的流畅操作,候选人无论是在宿舍、地铁还是家里,都能随时随地完成面试,无需受限于设备和场地。同时,我们还优化了页面加载速度,即使在网络信号较弱的环境下,也能快速加载试题,避免因加载卡顿影响面试进度。 +这款产品的开发过程,让我们深刻体会到 **“少即是多”** 的产品理念。当剥离了复杂的功能后,我们反而能更专注于用户的核心需求,通过优化交互逻辑、打磨细节体验,让产品真正服务于候选人,帮助他们在面试中充分展现自身能力,同时也为企业提供高效、轻量化的初筛工具。未来,我们还会根据用户反馈,进一步优化语义分析模型的精准度,拓展更多题型模板,让这款纯文字 AI 面试官软件的实用性更强。 + + + + + + + diff --git a/app.py b/app.py new file mode 100644 index 0000000..051ebcc --- /dev/null +++ b/app.py @@ -0,0 +1,2791 @@ +import streamlit as st +import random +import json +import os +from datetime import datetime + +# 设置页面配置 +st.set_page_config( + page_title="AI面试助手", + page_icon="🤖", + layout="wide", + initial_sidebar_state="expanded" +) + +# 添加自定义CSS样式 +st.markdown(""" + +""", unsafe_allow_html=True) + +# 公司类型和对应的岗位映射 +company_types = { + "科技互联网": ["Python开发", "前端开发", "后端开发", "UI/UX设计", "数据科学", "产品经理"], + "金融行业": ["财务", "销售", "产品经理"], + "传统企业": ["销售", "市场营销", "人力资源", "行政岗", "运营", "客服"], + "教育培训": ["销售", "人力资源", "运营"], + "医疗健康": ["销售", "市场营销", "运营"], + "制造业": ["销售", "人力资源", "行政岗"], + "咨询服务": ["销售", "市场营销", "产品经理", "人力资源"], + "电子商务": ["运营", "市场营销", "产品经理", "客服", "物流"], + "媒体娱乐": ["内容编辑", "市场营销", "运营", "产品经理", "设计"], + "房地产": ["销售", "市场营销", "行政岗", "客服"], + "交通运输": ["运营", "销售", "人力资源", "行政岗"], + "能源环保": ["技术岗", "销售", "市场营销", "运营"], + "农业食品": ["农业技术", "食品研发", "销售", "运营"], + "建筑工程": ["工程师", "项目经理", "销售", "行政岗"], + "法律法务": ["律师", "法务专员", "行政岗"], + "航空航天": ["工程师", "技术岗", "销售", "运营"], + "文化创意": ["创意设计", "内容编辑", "市场营销", "运营"], + "半导体芯片": ["芯片设计工程师", "工艺工程师", "测试工程师", "封装工程师"], + "生物医药": ["药物研发", "临床研究", "生物信息学", "医药销售"], + "新能源": ["光伏工程师", "电池研发", "风电工程师", "能源管理"], + "人工智能": ["机器学习工程师", "深度学习工程师", "自然语言处理", "计算机视觉"], + "量子计算": ["量子算法工程师", "量子硬件工程师", "量子软件工程师", "量子信息理论"] +} + +# 面试问题数据库(包含追问) +interview_questions = { + "芯片设计工程师": [ + { + "main_question": "请详细解释CMOS工艺中的闩锁效应(Latch-up),并说明如何在芯片设计中避免这种效应。", + "follow_ups": [ + "闩锁效应的物理机制是什么?它与哪些器件结构相关?", + "在深亚微米工艺中,闩锁效应有哪些新的特点?", + "除了传统的防护环,还有哪些先进的闩锁防护技术?" + ] + }, + { + "main_question": "请解释静态时序分析(STA)的基本原理和关键步骤,以及如何处理时序收敛问题。", + "follow_ups": [ + "什么是建立时间(setup time)和保持时间(hold time)?它们的物理意义是什么?", + "在低功耗设计中,如何平衡功耗和时序性能?", + "你熟悉哪些时序优化技术?请举例说明。" + ] + }, + { + "main_question": "请详细描述你对SoC设计流程的理解,包括从规格定义到芯片 tape-out的全过程。", + "follow_ups": [ + "在SoC设计中,如何管理复杂的IP集成问题?", + "芯片验证的主要方法有哪些?各有什么优缺点?", + "你了解哪些先进的SoC设计方法学?" + ] + }, + { + "main_question": "请解释FinFET工艺与传统平面MOSFET的主要区别,以及FinFET在性能和功耗方面的优势。", + "follow_ups": [ + "FinFET的阈值电压调节方法有哪些?", + "在FinFET工艺中,短沟道效应是如何被抑制的?", + "FinFET工艺对芯片设计有哪些挑战?" + ] + }, + { + "main_question": "请描述你对数字信号处理器(DSP)架构的理解,以及如何优化DSP算法的硬件实现。", + "follow_ups": [ + "定点DSP和浮点DSP有什么区别?各自的应用场景是什么?", + "如何平衡DSP的性能、功耗和面积?", + "你熟悉哪些先进的DSP架构?" + ] + } + ], + "工艺工程师": [ + { + "main_question": "请详细解释光刻工艺的基本原理和关键参数,以及先进光刻技术面临的挑战。", + "follow_ups": [ + "什么是分辨率增强技术(RET)?主要包括哪些方法?", + "EUV光刻与传统DUV光刻有什么本质区别?", + "如何解决光刻工艺中的套刻精度问题?" + ] + }, + { + "main_question": "请描述掺杂工艺的主要方法和原理,以及如何控制掺杂浓度和分布。", + "follow_ups": [ + "离子注入和扩散掺杂有什么区别?各自的优缺点是什么?", + "如何解决浅结掺杂中的沟道效应?", + "先进工艺中,掺杂工艺面临哪些挑战?" + ] + }, + { + "main_question": "请解释CMP(化学机械抛光)工艺的基本原理和关键参数,以及如何优化抛光结果。", + "follow_ups": [ + "CMP工艺中的平坦化机制是什么?", + "如何解决CMP工艺中的碟形效应和侵蚀问题?", + "先进工艺中,CMP工艺有哪些新的要求?" + ] + }, + { + "main_question": "请详细描述ALD(原子层沉积)工艺的基本原理和优势,以及它在先进工艺中的应用。", + "follow_ups": [ + "ALD与传统的PVD和CVD工艺有什么本质区别?", + "如何提高ALD工艺的沉积速率?", + "ALD工艺在高k金属栅和3D NAND中的应用有哪些?" + ] + }, + { + "main_question": "请解释先进封装工艺中的TSV(硅通孔)技术,以及它与传统封装技术的区别。", + "follow_ups": [ + "TSV工艺的主要步骤有哪些?各步骤的关键挑战是什么?", + "如何解决TSV工艺中的热应力和可靠性问题?", + "3D IC封装与传统2D封装相比,有哪些优势和挑战?" + ] + } + ], + "量子算法工程师": [ + { + "main_question": "请详细解释量子叠加和量子纠缠的基本原理,以及它们在量子算法中的应用。", + "follow_ups": [ + "量子叠加与经典概率叠加有什么本质区别?", + "如何通过Bell不等式验证量子纠缠的存在?", + "量子纠缠在量子通信和量子计算中有哪些具体应用?" + ] + }, + { + "main_question": "请描述Shor算法的基本原理和实现步骤,以及它对RSA加密系统的威胁。", + "follow_ups": [ + "Shor算法的时间复杂度是多少?它与经典因子分解算法相比有什么优势?", + "在实际的量子计算机上实现Shor算法面临哪些挑战?", + "如何抵抗基于Shor算法的量子攻击?" + ] + }, + { + "main_question": "请解释Grover搜索算法的基本原理和应用场景,以及它的时间复杂度。", + "follow_ups": [ + "Grover算法在非结构化搜索中的加速比是多少?", + "如何将Grover算法应用于数据库搜索和优化问题?", + "Grover算法的量子电路实现需要哪些量子门?" + ] + }, + { + "main_question": "请详细描述量子傅里叶变换(QFT)的基本原理和实现方法,以及它在量子算法中的重要性。", + "follow_ups": [ + "量子傅里叶变换与经典傅里叶变换相比有什么优势?", + "如何优化量子傅里叶变换的电路深度?", + "量子傅里叶变换在哪些量子算法中起到关键作用?" + ] + }, + { + "main_question": "请解释量子机器学习中的量子神经网络(QNN)的基本原理,以及它与经典神经网络的区别。", + "follow_ups": [ + "量子神经网络的参数空间有什么特点?", + "如何训练量子神经网络?有哪些挑战?", + "量子神经网络在哪些问题上可能超越经典神经网络?" + ] + } + ], + "机器学习工程师": [ + { + "main_question": "请详细解释深度学习中的反向传播算法,包括其数学原理和实现细节。", + "follow_ups": [ + "反向传播算法中的梯度消失和梯度爆炸问题是如何产生的?如何解决?", + "在深层网络中,如何优化反向传播的计算效率?", + "反向传播算法在递归神经网络(RNN)中的应用有什么特殊之处?" + ] + }, + { + "main_question": "请解释支持向量机(SVM)的基本原理,包括最大间隔分类器和核技巧。", + "follow_ups": [ + "SVM中的软间隔和硬间隔有什么区别?", + "如何选择SVM中的核函数?不同核函数的适用场景是什么?", + "SVM在处理大规模数据集时面临哪些挑战?如何解决?" + ] + }, + { + "main_question": "请详细描述决策树和随机森林的工作原理,以及如何防止过拟合。", + "follow_ups": [ + "决策树的分裂标准有哪些?各有什么优缺点?", + "随机森林如何通过集成学习提高模型性能?", + "梯度提升树(GBDT)与随机森林相比有什么不同?" + ] + }, + { + "main_question": "请解释深度学习中的注意力机制,以及它在Transformer模型中的应用。", + "follow_ups": [ + "注意力机制的数学原理是什么?它如何实现序列到序列的建模?", + "自注意力(Self-Attention)与传统的RNN和CNN相比有什么优势?", + "如何优化Transformer模型的计算效率和内存使用?" + ] + }, + { + "main_question": "请详细描述生成对抗网络(GAN)的基本原理和训练方法,以及如何评估GAN的性能。", + "follow_ups": [ + "GAN训练中的模式崩溃(Mode Collapse)问题是如何产生的?如何解决?", + "不同类型的GAN变体(如DCGAN、WGAN、StyleGAN)各有什么特点?", + "GAN在哪些领域有成功的应用?面临哪些挑战?" + ] + } + ], + "药物研发": [ + { + "main_question": "请详细解释基于结构的药物设计(SBDD)的基本原理和流程,以及它与传统药物发现方法的区别。", + "follow_ups": [ + "分子对接(Molecular Docking)的基本原理是什么?如何评估对接结果的准确性?", + "虚拟筛选(Virtual Screening)中如何处理假阳性和假阴性问题?", + "同源建模(Homology Modeling)在SBDD中的应用有什么局限性?" + ] + }, + { + "main_question": "请解释药物代谢动力学(ADMET)的基本概念和研究内容,以及它在药物研发中的重要性。", + "follow_ups": [ + "药物的吸收、分布、代谢、排泄和毒性各有哪些关键影响因素?", + "如何通过药物设计优化ADMET性质?", + "体外ADMET筛选与体内实验结果的相关性如何?" + ] + }, + { + "main_question": "请详细描述高通量筛选(HTS)技术的基本原理和应用,以及如何提高筛选效率和准确性。", + "follow_ups": [ + "HTS中如何设计和优化筛选模型?", + "如何处理HTS中的高假阳性率问题?", + "超高通量筛选(Ultra-HTS)与传统HTS相比有什么优势和挑战?" + ] + }, + { + "main_question": "请解释靶向药物设计的基本策略,以及如何选择合适的药物靶点。", + "follow_ups": [ + "如何验证药物靶点的有效性和安全性?", + "靶向药物设计中如何平衡选择性和亲和力?", + "蛋白-蛋白相互作用(PPI)作为药物靶点有哪些挑战?" + ] + }, + { + "main_question": "请详细描述抗体药物的研发流程,包括靶点选择、抗体筛选和人源化。", + "follow_ups": [ + "单克隆抗体与多克隆抗体相比有什么优势?", + "抗体人源化的主要方法有哪些?各有什么优缺点?", + "抗体药物偶联物(ADC)的设计原理是什么?如何优化其疗效和安全性?" + ] + } + ], + "光伏工程师": [ + { + "main_question": "请详细解释太阳能电池的基本工作原理,包括光伏效应和电池结构。", + "follow_ups": [ + "光伏效应与光电效应有什么区别?", + "太阳能电池的效率极限是多少?由什么因素决定?", + "如何通过材料和结构设计提高太阳能电池的效率?" + ] + }, + { + "main_question": "请解释晶体硅太阳能电池的制造工艺流程,以及各步骤的关键技术参数。", + "follow_ups": [ + "晶体硅太阳能电池的主要损失机制有哪些?如何最小化这些损失?", + "PERC(钝化发射极背面接触)电池的结构和工作原理是什么?", + "TOPCon和HJT等高效电池技术与传统电池相比有什么优势?" + ] + }, + { + "main_question": "请详细描述太阳能电池的特性参数,包括开路电压、短路电流、填充因子和转换效率。", + "follow_ups": [ + "这些参数之间有什么内在联系和制约关系?", + "如何通过测试和分析评估太阳能电池的性能?", + "温度和光照强度对太阳能电池性能有什么影响?" + ] + }, + { + "main_question": "请解释光伏组件的设计原理和制造工艺,以及如何提高组件的可靠性和寿命。", + "follow_ups": [ + "光伏组件的主要失效模式有哪些?如何预防?", + "封装材料对光伏组件性能和寿命有什么影响?", + "如何设计和优化光伏系统的功率输出?" + ] + }, + { + "main_question": "请详细描述薄膜太阳能电池(如CdTe、CIGS、OPV)的工作原理和特点,以及它们与晶体硅电池的区别。", + "follow_ups": [ + "不同类型薄膜太阳能电池的优缺点是什么?", + "薄膜太阳能电池的主要技术挑战有哪些?", + "柔性太阳能电池的应用前景和技术难点是什么?" + ] + } + ], + "农业技术": [ + { + "main_question": "请描述你对现代农业技术的理解,以及它在农业发展中的作用。", + "follow_ups": [ + "你熟悉哪些现代农业技术?它们各有什么优势?", + "如何将传统农业知识与现代技术相结合?", + "在实际工作中,你如何解决农业技术应用中的问题?" + ] + }, + { + "main_question": "什么是智慧农业?它包括哪些关键技术?", + "follow_ups": [ + "你了解哪些智慧农业的成功案例?", + "如何利用大数据和物联网技术优化农业生产?", + "智慧农业面临哪些挑战?如何应对?" + ] + }, + { + "main_question": "请解释你对农作物病虫害防治的理解和方法。", + "follow_ups": [ + "如何平衡病虫害防治和环境保护?", + "你熟悉哪些生物防治方法?", + "如何利用现代技术提高病虫害防治的效率?" + ] + }, + { + "main_question": "如何提高农产品的质量和安全性?", + "follow_ups": [ + "你了解哪些农产品质量标准?", + "如何建立农产品质量追溯体系?", + "在实际工作中,你如何确保农产品的安全?" + ] + }, + { + "main_question": "请分享一次你参与农业技术推广或应用的经历。", + "follow_ups": [ + "在推广过程中,你遇到了哪些挑战?如何克服的?", + "从这次经历中,你学到了什么?", + "如何评估农业技术推广的效果?" + ] + } + ], + "食品研发": [ + { + "main_question": "请描述你的食品研发流程是怎样的?", + "follow_ups": [ + "在研发过程中,你如何确保食品的安全性?", + "如何平衡食品的口感和营养价值?", + "你使用过哪些食品研发工具和技术?" + ] + }, + { + "main_question": "什么是食品添加剂?如何合理使用食品添加剂?", + "follow_ups": [ + "你了解哪些常见的食品添加剂?它们的作用是什么?", + "如何评估食品添加剂的安全性?", + "在研发过程中,你如何控制食品添加剂的使用量?" + ] + }, + { + "main_question": "请解释你对食品保质期的理解,以及如何延长食品保质期。", + "follow_ups": [ + "影响食品保质期的因素有哪些?", + "如何在不影响食品质量的前提下延长保质期?", + "你了解哪些食品保鲜技术?" + ] + }, + { + "main_question": "如何开发适合特定人群的食品产品?", + "follow_ups": [ + "你开发过哪些针对特定人群的食品产品?", + "如何了解特定人群的食品需求?", + "在开发过程中,你如何进行市场调研?" + ] + }, + { + "main_question": "请分享一次你成功研发的食品产品案例,包括研发目标、过程和结果。", + "follow_ups": [ + "在研发过程中,你遇到了哪些挑战?如何克服的?", + "如何评估新产品的市场潜力?", + "从这次经历中,你学到了什么?" + ] + } + ], + "工程师": [ + { + "main_question": "请描述你所熟悉的工程领域,以及你在该领域的专业技能。", + "follow_ups": [ + "你参与过哪些工程项目?担任什么角色?", + "你熟悉哪些工程软件和工具?", + "如何不断更新自己的工程知识和技能?" + ] + }, + { + "main_question": "什么是工程质量管理?如何确保工程项目的质量?", + "follow_ups": [ + "你了解哪些质量管理体系?", + "在实际项目中,你如何处理质量问题?", + "如何平衡工程质量和项目进度?" + ] + }, + { + "main_question": "请解释你对工程安全的理解,以及如何确保工程项目的安全。", + "follow_ups": [ + "你了解哪些工程安全标准和规范?", + "在实际项目中,你如何识别和防范安全风险?", + "如何提高团队的安全意识?" + ] + }, + { + "main_question": "如何进行工程项目的成本控制?", + "follow_ups": [ + "在实际项目中,你如何制定和执行成本预算?", + "如何应对项目中的成本超支问题?", + "如何在保证质量的前提下降低项目成本?" + ] + }, + { + "main_question": "请分享一次你解决工程技术问题的经历。", + "follow_ups": [ + "在解决问题过程中,你遇到了哪些挑战?如何克服的?", + "从这次经历中,你学到了什么?", + "如何预防类似问题的再次发生?" + ] + } + ], + "项目经理": [ + { + "main_question": "请描述你对项目管理的理解,以及项目管理的核心流程。", + "follow_ups": [ + "你熟悉哪些项目管理方法论?", + "如何制定项目计划和时间表?", + "如何监控项目进度和执行情况?" + ] + }, + { + "main_question": "什么是项目风险管理?如何识别和应对项目风险?", + "follow_ups": [ + "在实际项目中,你遇到过哪些主要风险?如何处理的?", + "如何制定项目风险应对计划?", + "如何评估项目风险的影响程度?" + ] + }, + { + "main_question": "请解释你对项目团队管理的理解,以及如何打造高效的项目团队。", + "follow_ups": [ + "如何分配项目任务和责任?", + "如何处理团队成员之间的冲突?", + "如何激励团队成员的工作积极性?" + ] + }, + { + "main_question": "如何与项目 stakeholders 有效沟通?", + "follow_ups": [ + "你如何识别项目的 stakeholders?", + "如何定期向 stakeholders 汇报项目进展?", + "如何处理 stakeholders 的变更请求?" + ] + }, + { + "main_question": "请分享一次你成功管理项目的经历,包括项目目标、挑战和成果。", + "follow_ups": [ + "在项目管理过程中,你遇到了哪些主要挑战?如何克服的?", + "如何评估项目的成功与否?", + "从这次经历中,你学到了什么项目管理经验?" + ] + } + ], + "律师": [ + { + "main_question": "请描述你所专注的法律领域,以及你在该领域的专业经验。", + "follow_ups": [ + "你处理过哪些类型的法律案件?", + "你熟悉哪些相关法律法规?", + "如何不断更新自己的法律知识?" + ] + }, + { + "main_question": "什么是法律风险?如何帮助企业识别和防范法律风险?", + "follow_ups": [ + "在实际工作中,你如何为企业提供法律风险评估?", + "如何制定法律风险防范策略?", + "如何向非法律专业人士解释法律风险?" + ] + }, + { + "main_question": "请解释你对合同管理的理解,以及如何审查和起草合同。", + "follow_ups": [ + "在合同审查中,你重点关注哪些条款?", + "如何识别合同中的法律风险?", + "如何处理合同纠纷?" + ] + }, + { + "main_question": "如何为客户提供有效的法律咨询和建议?", + "follow_ups": [ + "如何理解客户的法律需求?", + "如何平衡法律合规和客户利益?", + "如何向客户解释复杂的法律问题?" + ] + }, + { + "main_question": "请分享一次你成功处理法律案件的经历,包括案件背景、挑战和结果。", + "follow_ups": [ + "在处理案件过程中,你遇到了哪些主要挑战?如何克服的?", + "从这次经历中,你学到了什么?", + "如何评估法律案件的胜算?" + ] + } + ], + "法务专员": [ + { + "main_question": "请描述你对企业法务工作的理解,以及法务专员的主要职责。", + "follow_ups": [ + "如何协助企业建立和完善法律合规体系?", + "如何处理企业日常法律事务?", + "如何与外部律师和顾问合作?" + ] + }, + { + "main_question": "什么是法律合规?如何确保企业的法律合规?", + "follow_ups": [ + "你了解哪些行业的法律合规要求?", + "如何制定企业法律合规计划?", + "如何进行法律合规培训?" + ] + }, + { + "main_question": "请解释你对知识产权保护的理解,以及如何保护企业的知识产权。", + "follow_ups": [ + "你了解哪些知识产权类型?", + "如何识别和防范知识产权风险?", + "如何处理知识产权纠纷?" + ] + }, + { + "main_question": "如何协助企业处理劳动法律事务?", + "follow_ups": [ + "你了解哪些劳动法律法规?", + "如何制定和审查劳动合同?", + "如何处理劳动争议?" + ] + }, + { + "main_question": "请分享一次你协助企业解决法律问题的经历。", + "follow_ups": [ + "在解决问题过程中,你遇到了哪些挑战?如何克服的?", + "从这次经历中,你学到了什么?", + "如何预防类似问题的再次发生?" + ] + } + ], + "创意设计": [ + { + "main_question": "请描述你的创意设计流程是怎样的?", + "follow_ups": [ + "如何激发和收集创意灵感?", + "在设计过程中,你如何与团队协作?", + "你使用过哪些设计工具和软件?" + ] + }, + { + "main_question": "什么是品牌视觉识别系统?如何设计一个有效的品牌视觉识别系统?", + "follow_ups": [ + "你了解哪些成功的品牌视觉识别系统案例?", + "如何确保品牌视觉识别的一致性?", + "如何根据不同媒介调整品牌视觉设计?" + ] + }, + { + "main_question": "请解释你对用户体验设计的理解,以及如何在创意设计中考虑用户体验。", + "follow_ups": [ + "如何进行用户研究和分析?", + "如何将用户需求转化为设计方案?", + "如何测试和优化设计方案?" + ] + }, + { + "main_question": "如何平衡创意表达和商业需求?", + "follow_ups": [ + "在实际项目中,你如何理解和满足客户的商业需求?", + "如何在创意设计中体现品牌价值?", + "如何说服客户接受你的创意方案?" + ] + }, + { + "main_question": "请分享一次你成功完成的创意设计项目,包括项目目标、挑战和结果。", + "follow_ups": [ + "在项目过程中,你遇到了哪些挑战?如何克服的?", + "如何评估设计项目的成功与否?", + "从这次经历中,你学到了什么?" + ] + } + ], + "Python开发": [ + { + "main_question": "请详细解释Python中的GIL(全局解释器锁)的实现机制,以及它对多线程编程的深层影响。", + "follow_ups": [ + "GIL的存在对CPU密集型和I/O密集型任务的影响有何不同?请具体分析其原因。", + "在Python 3.2+中,GIL的实现有哪些改进?这些改进如何影响线程切换性能?", + "除了使用多进程,还有哪些技术可以绕过GIL的限制?请比较它们的优缺点。" + ] + }, + { + "main_question": "请深入分析Python中的内存管理机制,包括引用计数、垃圾回收和内存池。", + "follow_ups": [ + "Python的循环引用问题是如何产生的?垃圾回收器如何检测和处理循环引用?", + "Python的分代垃圾回收机制是如何工作的?各代的回收策略有什么不同?", + "如何在Python中优化内存使用?请结合具体场景说明。" + ] + }, + { + "main_question": "请详细解释Python中的装饰器(Decorator)的实现原理,以及如何实现带参数的装饰器和类装饰器。", + "follow_ups": [ + "装饰器的执行时机是什么时候?它如何影响被装饰函数的元数据?", + "如何实现一个装饰器,使其能够保留被装饰函数的文档字符串和函数名?", + "装饰器链的执行顺序是怎样的?请举例说明。" + ] + }, + { + "main_question": "请深入分析Python中的生成器(Generator)和协程(Coroutine)的工作原理,以及它们在异步编程中的应用。", + "follow_ups": [ + "生成器表达式和列表推导式在内存使用上有什么本质区别?请结合big O表示法分析。", + "Python 3.5+引入的async/await语法是如何基于生成器实现的?", + "如何使用asyncio库实现高效的异步I/O操作?请给出具体示例。" + ] + }, + { + "main_question": "请详细解释Python中的面向对象编程高级特性,包括元类(Metaclass)、描述符(Descriptor)和混入(Mixin)。", + "follow_ups": [ + "元类的作用是什么?如何使用元类控制类的创建过程?", + "描述符协议的三个方法(__get__, __set__, __delete__)是如何工作的?请实现一个自定义描述符。", + "Mixin模式在Python中的应用场景是什么?如何避免Mixin带来的方法名冲突问题?" + ] + } + ], + "产品经理": [ + { + "main_question": "请描述你如何进行产品需求分析和优先级排序?", + "follow_ups": [ + "如果用户需求与业务目标冲突,你会如何处理?", + "你使用过哪些需求管理工具?它们各有什么优缺点?", + "如何判断一个需求是否值得实现?" + ] + }, + { + "main_question": "什么是产品路线图?你如何制定一个有效的产品路线图?", + "follow_ups": [ + "产品路线图应该包含哪些关键元素?", + "如何与 stakeholders 沟通产品路线图?", + "当市场变化时,你如何调整产品路线图?" + ] + }, + { + "main_question": "请分享一次你解决产品冲突或挑战的经历。", + "follow_ups": [ + "在解决冲突过程中,你遇到了哪些阻力?如何克服的?", + "从这次经历中,你学到了什么?", + "如果类似的情况再次发生,你会采取不同的方法吗?" + ] + }, + { + "main_question": "如何进行用户研究?你常用的用户研究方法有哪些?", + "follow_ups": [ + "如何确定用户研究的样本量?", + "如何处理用户研究中相互矛盾的反馈?", + "你如何确保用户研究结果能够转化为实际的产品改进?" + ] + }, + { + "main_question": "请解释什么是MVP(最小可行产品),以及如何确定MVP的范围?", + "follow_ups": [ + "如何平衡MVP的功能完整性和发布速度?", + "MVP发布后,如何收集和分析用户反馈?", + "你能举例说明一个成功的MVP案例吗?" + ] + } + ], + "行政岗": [ + { + "main_question": "请描述你如何安排和协调会议或活动?", + "follow_ups": [ + "如何处理会议冲突?", + "在安排大型活动时,你会考虑哪些关键因素?", + "如何确保会议或活动的顺利进行?" + ] + }, + { + "main_question": "行政工作中经常需要处理突发情况,你能分享一次你的处理经验吗?", + "follow_ups": [ + "在处理突发情况时,你如何保持冷静?", + "从这次经历中,你学到了什么?", + "如何预防类似的突发情况再次发生?" + ] + }, + { + "main_question": "你如何管理办公室物资和设备的采购与维护?", + "follow_ups": [ + "如何控制采购成本?", + "如何建立和维护供应商关系?", + "如何确保物资和设备的合理使用?" + ] + }, + { + "main_question": "请解释你对保密工作的理解和如何确保信息安全?", + "follow_ups": [ + "如何处理机密文件?", + "如何防范信息泄露?", + "如果发现信息泄露,你会如何处理?" + ] + }, + { + "main_question": "你如何与不同部门的同事有效沟通和协作?", + "follow_ups": [ + "如何处理部门之间的冲突?", + "如何提高跨部门协作的效率?", + "如何建立良好的同事关系?" + ] + } + ], + "前端开发": [ + { + "main_question": "请解释什么是CSS盒模型?标准盒模型和IE盒模型有什么区别?", + "follow_ups": [ + "如何使用CSS重置盒模型?", + "box-sizing属性有哪些取值?分别有什么作用?", + "在实际项目中,你更倾向于使用哪种盒模型?为什么?" + ] + }, + { + "main_question": "什么是闭包?在JavaScript中闭包有哪些应用场景?", + "follow_ups": [ + "闭包会导致内存泄漏吗?如何避免?", + "你能写出一个使用闭包的实际例子吗?", + "闭包和立即执行函数表达式(IIFE)有什么关系?" + ] + }, + { + "main_question": "请描述前端性能优化的常用方法。", + "follow_ups": [ + "如何衡量前端性能?", + "在移动端,前端性能优化有哪些特别需要注意的地方?", + "你能举例说明一个你曾经优化过的前端性能问题吗?" + ] + }, + { + "main_question": "什么是跨域?如何解决跨域问题?", + "follow_ups": [ + "CORS和JSONP有什么区别?", + "如何在服务器端配置CORS?", + "在实际项目中,你更倾向于使用哪种跨域解决方案?为什么?" + ] + }, + { + "main_question": "请解释React中的虚拟DOM是什么,它如何提高性能?", + "follow_ups": [ + "虚拟DOM和真实DOM有什么区别?", + "React的diff算法是如何工作的?", + "除了React,还有哪些框架使用了虚拟DOM?" + ] + } + ], + "后端开发": [ + { + "main_question": "请解释什么是RESTful API?它的设计原则是什么?", + "follow_ups": [ + "RESTful API和GraphQL有什么区别?", + "如何设计一个好的RESTful API?", + "如何保护RESTful API的安全?" + ] + }, + { + "main_question": "什么是数据库索引?索引有什么优缺点?", + "follow_ups": [ + "如何选择合适的列建立索引?", + "索引的类型有哪些?分别适用于什么场景?", + "过多的索引会带来什么问题?" + ] + }, + { + "main_question": "请描述你对微服务架构的理解。", + "follow_ups": [ + "微服务架构和单体架构有什么区别?", + "微服务架构会带来哪些挑战?如何应对?", + "你使用过哪些微服务框架?它们各有什么优缺点?" + ] + }, + { + "main_question": "如何保证分布式系统的数据一致性?", + "follow_ups": [ + "CAP理论是什么?在实际项目中如何权衡?", + "你了解哪些分布式事务解决方案?", + "在实际项目中,你如何处理数据一致性问题?" + ] + }, + { + "main_question": "请解释什么是缓存穿透、缓存击穿和缓存雪崩?如何解决这些问题?", + "follow_ups": [ + "你使用过哪些缓存技术?它们各有什么优缺点?", + "如何设计一个高效的缓存策略?", + "在实际项目中,你遇到过哪些缓存相关的问题?如何解决的?" + ] + } + ], + "UI/UX设计": [ + { + "main_question": "请描述你的设计流程是怎样的?", + "follow_ups": [ + "你的设计流程是如何适应不同项目需求的?", + "在设计过程中,你如何与开发团队协作?", + "你使用过哪些设计工具?它们各有什么优缺点?" + ] + }, + { + "main_question": "什么是用户体验设计?如何衡量用户体验的好坏?", + "follow_ups": [ + "用户体验设计和用户界面设计有什么区别?", + "你使用过哪些用户体验评估方法?", + "如何在设计中平衡用户体验和业务目标?" + ] + }, + { + "main_question": "请分享一次你从用户反馈中改进设计的经历。", + "follow_ups": [ + "你如何收集和分析用户反馈?", + "在改进设计过程中,你遇到了哪些挑战?如何克服的?", + "从这次经历中,你学到了什么?" + ] + }, + { + "main_question": "如何设计一个响应式网站?需要考虑哪些因素?", + "follow_ups": [ + "响应式设计和自适应设计有什么区别?", + "如何测试响应式网站在不同设备上的表现?", + "在设计响应式网站时,你遇到过哪些挑战?如何解决的?" + ] + }, + { + "main_question": "请解释什么是设计系统?它有什么优势?", + "follow_ups": [ + "如何建立一个设计系统?", + "设计系统如何促进团队协作?", + "你了解哪些成功的设计系统案例?" + ] + } + ], + "数据科学": [ + { + "main_question": "请解释什么是机器学习?它与传统编程有什么区别?", + "follow_ups": [ + "你熟悉哪些机器学习算法?它们各自适用于什么场景?", + "如何评估机器学习模型的性能?", + "在实际项目中,你如何处理数据不平衡问题?" + ] + }, + { + "main_question": "什么是特征工程?为什么它在机器学习中如此重要?", + "follow_ups": [ + "你常用的特征选择方法有哪些?", + "如何处理缺失值和异常值?", + "在处理高维数据时,你会采用什么策略?" + ] + }, + { + "main_question": "请描述一个你参与过的数据分析项目,包括项目目标、使用的技术和最终结果。", + "follow_ups": [ + "在项目中,你遇到了哪些挑战?如何解决的?", + "你使用了哪些工具和库来完成这个项目?", + "从这个项目中,你学到了什么?" + ] + }, + { + "main_question": "什么是深度学习?它与传统机器学习有什么区别?", + "follow_ups": [ + "你熟悉哪些深度学习框架?它们各自的优缺点是什么?", + "如何处理深度学习中的过拟合问题?", + "在资源有限的情况下,你如何优化深度学习模型?" + ] + }, + { + "main_question": "请解释什么是大数据?如何处理和分析大数据?", + "follow_ups": [ + "你使用过哪些大数据处理工具?", + "在处理大数据时,你如何保证数据质量?", + "如何平衡数据处理的速度和准确性?" + ] + } + ], + "销售": [ + { + "main_question": "请分享一次你成功完成的高难度销售案例,包括客户背景、销售过程和最终结果。", + "follow_ups": [ + "在销售过程中,你遇到了哪些挑战?如何克服的?", + "你是如何识别客户需求并提供解决方案的?", + "从这次经历中,你学到了什么销售技巧?" + ] + }, + { + "main_question": "什么是销售漏斗?如何优化销售漏斗以提高转化率?", + "follow_ups": [ + "你如何定义销售漏斗的各个阶段?", + "在每个阶段,你会采取什么策略来推进销售进程?", + "如何衡量销售漏斗的有效性?" + ] + }, + { + "main_question": "当客户提出异议时,你会如何处理?请举例说明。", + "follow_ups": [ + "你常见的客户异议有哪些?", + "如何将客户异议转化为销售机会?", + "在处理异议时,你有什么特别的技巧?" + ] + }, + { + "main_question": "如何建立和维护长期的客户关系?", + "follow_ups": [ + "在客户关系维护中,你认为最重要的是什么?", + "如何识别客户的潜在需求并提供增值服务?", + "如何处理客户投诉和不满?" + ] + }, + { + "main_question": "请解释你对目标设定和时间管理的理解,以及它们在销售工作中的重要性。", + "follow_ups": [ + "你是如何设定销售目标的?", + "如何分解大目标为可执行的小目标?", + "在时间管理方面,你有什么技巧?" + ] + } + ], + "市场营销": [ + { + "main_question": "请解释什么是市场营销?它在企业发展中的作用是什么?", + "follow_ups": [ + "你如何理解现代市场营销与传统市场营销的区别?", + "市场营销策略应该如何与企业整体战略对齐?", + "如何衡量市场营销活动的ROI?" + ] + }, + { + "main_question": "什么是数字营销策略?它包括哪些关键组成部分?", + "follow_ups": [ + "你熟悉哪些数字营销渠道?它们各自的优缺点是什么?", + "如何制定一个有效的数字营销计划?", + "在数字营销中,如何利用数据分析来优化策略?" + ] + }, + { + "main_question": "请分享一次你参与策划的成功营销活动,包括活动目标、策略和结果。", + "follow_ups": [ + "在活动策划和执行过程中,你遇到了哪些挑战?如何克服的?", + "如何评估活动的成功与否?", + "从这次活动中,你学到了什么?" + ] + }, + { + "main_question": "什么是品牌建设?如何打造一个成功的品牌?", + "follow_ups": [ + "品牌建设包括哪些方面?", + "如何保持品牌的一致性和辨识度?", + "在品牌危机管理方面,你有什么经验?" + ] + }, + { + "main_question": "如何进行市场调研?市场调研的方法有哪些?", + "follow_ups": [ + "如何设计有效的市场调研问卷?", + "如何分析市场调研数据并提取有价值的洞察?", + "市场调研结果如何指导营销策略的制定?" + ] + } + ], + "财务": [ + { + "main_question": "请解释什么是财务报表?它包括哪些主要组成部分?", + "follow_ups": [ + "如何分析财务报表来评估企业的财务状况?", + "财务报表中的哪些指标对投资者最为重要?", + "如何识别财务报表中的异常情况?" + ] + }, + { + "main_question": "什么是预算管理?如何制定和执行有效的预算?", + "follow_ups": [ + "预算编制的流程是怎样的?", + "如何监控预算执行情况并进行调整?", + "在预算管理中,你遇到过哪些挑战?如何克服的?" + ] + }, + { + "main_question": "请解释什么是成本核算?它在企业管理中的作用是什么?", + "follow_ups": [ + "你熟悉哪些成本核算方法?它们各自适用于什么场景?", + "如何通过成本核算来优化企业的成本结构?", + "如何处理间接成本的分配问题?" + ] + }, + { + "main_question": "什么是内部控制?如何建立有效的内部控制体系?", + "follow_ups": [ + "内部控制的目标是什么?", + "如何评估内部控制的有效性?", + "在内部控制方面,你有什么经验或案例?" + ] + }, + { + "main_question": "请解释什么是税务筹划?它与逃税有什么区别?", + "follow_ups": [ + "税务筹划的基本原则是什么?", + "如何在合法合规的前提下进行税务筹划?", + "你熟悉哪些常见的税务筹划方法?" + ] + } + ], + "人力资源": [ + { + "main_question": "请解释什么是人力资源管理?它在企业发展中的作用是什么?", + "follow_ups": [ + "你如何理解现代人力资源管理与传统人事管理的区别?", + "人力资源管理的核心职能有哪些?", + "如何衡量人力资源管理的有效性?" + ] + }, + { + "main_question": "什么是招聘流程?如何设计和优化招聘流程以吸引优秀人才?", + "follow_ups": [ + "在招聘过程中,你如何评估候选人的能力和潜力?", + "如何提高招聘效率和质量?", + "在招聘难的情况下,你会采取什么策略?" + ] + }, + { + "main_question": "请分享一次你参与的员工培训与发展项目,包括项目目标、实施过程和结果。", + "follow_ups": [ + "如何评估培训的有效性?", + "如何设计针对不同层次员工的培训计划?", + "从这次项目中,你学到了什么?" + ] + }, + { + "main_question": "什么是绩效管理?如何建立有效的绩效管理体系?", + "follow_ups": [ + "绩效管理的流程是怎样的?", + "如何设定合理的绩效目标?", + "如何处理绩效不佳的员工?" + ] + }, + { + "main_question": "如何处理员工关系和劳动纠纷?请举例说明。", + "follow_ups": [ + "你如何预防劳动纠纷的发生?", + "在处理劳动纠纷时,你会遵循什么原则?", + "如何建立和谐的员工关系?" + ] + } + ], + "运营": [ + { + "main_question": "请解释什么是运营管理?它在企业发展中的作用是什么?", + "follow_ups": [ + "你如何理解不同行业的运营管理差异?", + "运营管理的核心指标有哪些?", + "如何衡量运营管理的有效性?" + ] + }, + { + "main_question": "什么是用户运营?如何提高用户活跃度和留存率?", + "follow_ups": [ + "用户运营的核心策略有哪些?", + "如何进行用户分层和精细化运营?", + "如何利用数据分析来优化用户运营策略?" + ] + }, + { + "main_question": "请分享一次你参与的运营项目,包括项目目标、实施过程和结果。", + "follow_ups": [ + "在项目实施过程中,你遇到了哪些挑战?如何克服的?", + "如何评估运营项目的成功与否?", + "从这次项目中,你学到了什么?" + ] + }, + { + "main_question": "什么是内容运营?如何创作和分发有价值的内容?", + "follow_ups": [ + "内容运营的策略是怎样的?", + "如何确定目标受众并定制内容?", + "如何衡量内容的效果?" + ] + }, + { + "main_question": "如何优化运营流程以提高效率?", + "follow_ups": [ + "你使用过哪些运营工具和系统?", + "如何识别运营流程中的瓶颈?", + "在流程优化方面,你有什么经验或技巧?" + ] + } + ], + "项目经理": [ + { + "main_question": "请解释什么是项目管理?它包括哪些核心流程?", + "follow_ups": [ + "你熟悉哪些项目管理方法论?它们各自适用于什么场景?", + "如何制定项目计划并跟踪执行情况?", + "如何处理项目变更和风险?" + ] + }, + { + "main_question": "请分享一次你成功管理的项目,包括项目目标、团队规模、遇到的挑战和最终结果。", + "follow_ups": [ + "在项目管理过程中,你是如何领导和激励团队的?", + "如何平衡项目的时间、成本和质量?", + "从这次项目中,你学到了什么?" + ] + }, + { + "main_question": "什么是项目风险管理?如何识别、评估和应对项目风险?", + "follow_ups": [ + "你常见的项目风险有哪些?", + "如何制定风险应对计划?", + "在风险发生时,你会如何处理?" + ] + }, + { + "main_question": "如何与项目相关方有效沟通和管理他们的期望?", + "follow_ups": [ + "项目相关方包括哪些人?", + "如何识别不同相关方的需求和关注点?", + "在沟通中,你有什么技巧或经验?" + ] + }, + { + "main_question": "请解释什么是敏捷项目管理?它与传统项目管理有什么区别?", + "follow_ups": [ + "你熟悉哪些敏捷方法?如Scrum、Kanban等。", + "如何在组织中推行敏捷实践?", + "敏捷项目管理的优缺点是什么?" + ] + } + ], + "客服": [ + { + "main_question": "请分享一次你处理过的复杂客户投诉案例,包括投诉内容、处理过程和最终结果。", + "follow_ups": [ + "在处理投诉过程中,你遇到了哪些挑战?如何克服的?", + "如何安抚情绪激动的客户?", + "从这次经历中,你学到了什么?" + ] + }, + { + "main_question": "什么是客户服务?如何提供优质的客户服务?", + "follow_ups": [ + "你如何理解客户服务的重要性?", + "优质客户服务的标准是什么?", + "如何在高压环境下保持良好的服务态度?" + ] + }, + { + "main_question": "如何处理客户的合理和不合理要求?", + "follow_ups": [ + "如何判断客户要求的合理性?", + "如何拒绝客户的不合理要求同时保持良好的客户关系?", + "在处理特殊客户时,你有什么技巧?" + ] + }, + { + "main_question": "什么是客户满意度?如何提高客户满意度?", + "follow_ups": [ + "如何测量客户满意度?", + "客户满意度与客户忠诚度有什么关系?", + "如何将客户反馈转化为服务改进的机会?" + ] + }, + { + "main_question": "如何在团队中协作以提供一致的客户服务体验?", + "follow_ups": [ + "在跨部门协作中,你如何确保客户问题得到及时解决?", + "如何与团队成员分享客户反馈和最佳实践?", + "如何处理团队内部的服务标准不一致问题?" + ] + } + ], + "物流": [ + { + "main_question": "请描述你对物流管理的理解,以及物流在企业运营中的作用。", + "follow_ups": [ + "物流管理的核心环节有哪些?", + "如何优化物流流程以提高效率?", + "在实际工作中,你遇到过哪些物流挑战?如何解决的?" + ] + }, + { + "main_question": "什么是供应链管理?它与物流管理有什么区别和联系?", + "follow_ups": [ + "供应链管理的目标是什么?", + "如何协调供应链各环节的工作?", + "你熟悉哪些供应链管理工具?" + ] + }, + { + "main_question": "如何处理物流过程中的突发情况,如延迟、损坏等?", + "follow_ups": [ + "你有哪些应对物流风险的策略?", + "如何与客户沟通物流异常情况?", + "如何预防类似问题的再次发生?" + ] + }, + { + "main_question": "请解释什么是库存管理?如何进行有效的库存控制?", + "follow_ups": [ + "库存管理的目标是什么?", + "如何平衡库存成本和客户服务水平?", + "你使用过哪些库存管理方法?" + ] + }, + { + "main_question": "如何利用技术手段提高物流管理效率?", + "follow_ups": [ + "你熟悉哪些物流管理系统?", + "如何应用大数据和物联网技术优化物流?", + "在物流数字化转型方面,你有什么经验?" + ] + } + ], + "内容编辑": [ + { + "main_question": "请描述你对内容编辑工作的理解,以及内容编辑在媒体行业中的作用。", + "follow_ups": [ + "内容编辑的核心职责有哪些?", + "如何判断内容的质量和价值?", + "你认为一个好的内容编辑应该具备哪些能力?" + ] + }, + { + "main_question": "如何进行内容策划和选题?请分享一次你成功的内容策划案例。", + "follow_ups": [ + "你如何确定目标受众和内容方向?", + "如何进行市场和竞品分析?", + "如何评估内容策划的效果?" + ] + }, + { + "main_question": "请解释什么是内容 SEO?如何优化内容以提高搜索引擎排名?", + "follow_ups": [ + "你熟悉哪些 SEO 工具和技术?", + "如何平衡 SEO 需求和内容质量?", + "你有哪些提高内容曝光度的策略?" + ] + }, + { + "main_question": "如何处理和编辑作者提交的内容?", + "follow_ups": [ + "你如何与作者有效沟通修改意见?", + "如何保持内容的一致性和风格统一?", + "你有哪些内容编辑的技巧和方法?" + ] + }, + { + "main_question": "如何应对内容创作的压力和 deadline?", + "follow_ups": [ + "你如何管理时间和优先级?", + "如何在压力下保持内容质量?", + "你有哪些提高工作效率的方法?" + ] + } + ], + "设计": [ + { + "main_question": "请描述你的设计理念和设计风格。", + "follow_ups": [ + "你的设计灵感来源是什么?", + "如何在设计中体现品牌调性?", + "你如何平衡美学和实用性?" + ] + }, + { + "main_question": "请分享一次你参与的设计项目,包括项目目标、设计过程和最终结果。", + "follow_ups": [ + "在设计过程中,你遇到了哪些挑战?如何克服的?", + "如何与团队成员和客户沟通设计方案?", + "如何根据反馈调整设计?" + ] + }, + { + "main_question": "你熟悉哪些设计工具和软件?请评价它们的优缺点。", + "follow_ups": [ + "你如何选择适合项目的设计工具?", + "你有哪些提高设计效率的技巧?", + "你如何保持对新工具和新技术的学习?" + ] + }, + { + "main_question": "请解释什么是用户体验设计?它在设计过程中的重要性是什么?", + "follow_ups": [ + "你如何进行用户研究和用户测试?", + "如何将用户反馈整合到设计中?", + "你有哪些提升用户体验的设计原则?" + ] + }, + { + "main_question": "如何应对设计需求的变化和压力?", + "follow_ups": [ + "你如何管理多个设计项目和 deadline?", + "如何在有限的资源下完成高质量的设计?", + "你如何处理设计被否定的情况?" + ] + } + ], + "技术岗": [ + { + "main_question": "请描述你的技术背景和专长领域。", + "follow_ups": [ + "你最擅长的技术栈是什么?", + "你如何保持技术能力的更新和提升?", + "你有哪些解决技术难题的经验?" + ] + }, + { + "main_question": "请分享一次你参与的技术项目,包括项目目标、技术挑战和最终结果。", + "follow_ups": [ + "你在项目中担任什么角色?", + "如何与团队成员协作解决技术问题?", + "从这次项目中,你学到了什么?" + ] + }, + { + "main_question": "如何进行技术方案设计和评估?", + "follow_ups": [ + "你如何权衡不同技术方案的优缺点?", + "如何考虑技术方案的可扩展性和可维护性?", + "你有哪些技术选型的原则?" + ] + }, + { + "main_question": "请解释什么是技术创新?如何在工作中推动技术创新?", + "follow_ups": [ + "你有哪些创新的技术解决方案?", + "如何平衡技术创新和项目进度?", + "你如何评估技术创新的价值?" + ] + }, + { + "main_question": "如何应对技术压力和挑战?", + "follow_ups": [ + "你如何管理技术债务?", + "如何在有限的时间内解决复杂的技术问题?", + "你有哪些提高技术团队效率的方法?" + ] + } + ] +} + +# 评分标准和建议 +scoring_criteria = { + "Python开发": { + "优秀": "回答全面准确,包含技术细节和实际应用场景", + "良好": "回答基本正确,有一定的技术理解", + "一般": "回答部分正确,但缺乏深度和细节", + "需要改进": "回答存在错误,需要加强基础知识学习", + "suggestions": { + "优秀": "继续保持技术深度,关注Python生态系统的最新发展", + "良好": "建议深入学习Python底层原理,如GIL、内存管理等", + "一般": "建议多做实际项目,积累编程经验", + "需要改进": "建议系统学习Python基础知识,从语法和数据结构开始" + } + }, + "产品经理": { + "优秀": "回答体现了系统性思维和丰富的实践经验", + "良好": "回答思路清晰,有一定的产品思维", + "一般": "回答基本合理,但缺乏深度和方法论", + "需要改进": "回答缺乏逻辑,需要加强产品管理知识学习", + "suggestions": { + "优秀": "继续保持系统性思维,关注用户体验和市场趋势", + "良好": "建议学习产品管理方法论,如敏捷开发、用户研究等", + "一般": "建议多参与实际产品项目,积累实战经验", + "需要改进": "建议系统学习产品管理基础知识,从需求分析开始" + } + }, + "行政岗": { + "优秀": "回答体现了良好的组织能力和问题解决能力", + "良好": "回答思路清晰,有一定的工作经验", + "一般": "回答基本合理,但缺乏具体案例", + "需要改进": "回答过于笼统,需要加强实际工作能力", + "suggestions": { + "优秀": "继续保持专业素养,关注办公自动化和效率提升", + "良好": "建议积累更多具体工作案例,提升问题解决能力", + "一般": "建议多参与实际行政工作,积累实战经验", + "需要改进": "建议系统学习行政工作流程和规范" + } + }, + "前端开发": { + "优秀": "回答技术细节准确,包含前端最佳实践和性能优化思路", + "良好": "回答基本正确,有一定的前端开发经验", + "一般": "回答部分正确,但缺乏对现代前端框架的理解", + "需要改进": "回答存在技术错误,需要加强前端基础知识学习", + "suggestions": { + "优秀": "继续关注前端技术发展,深入学习性能优化和架构设计", + "良好": "建议学习现代前端框架和工具,如React、Vue、Webpack等", + "一般": "建议多做前端项目,积累实战经验", + "需要改进": "建议系统学习前端基础知识,从HTML、CSS、JavaScript开始" + } + }, + "后端开发": { + "优秀": "回答技术架构清晰,包含系统设计和性能优化考虑", + "良好": "回答基本正确,有一定的后端开发经验", + "一般": "回答部分正确,但缺乏对分布式系统的理解", + "需要改进": "回答存在技术错误,需要加强后端基础知识学习", + "suggestions": { + "优秀": "继续深入学习分布式系统和微服务架构", + "良好": "建议学习系统设计和性能优化技术", + "一般": "建议多做后端项目,积累实战经验", + "需要改进": "建议系统学习后端基础知识,从数据库和网络开始" + } + }, + "UI/UX设计": { + "优秀": "回答体现了用户中心设计思维,包含具体的设计方法论", + "良好": "回答思路清晰,有一定的设计经验", + "一般": "回答基本合理,但缺乏对用户研究的理解", + "需要改进": "回答过于主观,需要加强设计理论和实践学习", + "suggestions": { + "优秀": "继续深入学习用户研究和交互设计原理", + "良好": "建议学习设计系统和原型工具使用", + "一般": "建议多参与实际设计项目,积累实战经验", + "需要改进": "建议系统学习设计基础知识,从色彩理论开始" + } + }, + "数据科学": { + "优秀": "回答技术细节准确,包含数据分析思路和模型选择依据", + "良好": "回答基本正确,有一定的数据分析能力", + "一般": "回答部分正确,但缺乏对算法原理的深入理解", + "需要改进": "回答存在技术错误,需要加强数据科学基础知识学习", + "suggestions": { + "优秀": "继续深入学习机器学习算法和大数据技术", + "良好": "建议学习数据可视化和特征工程技术", + "一般": "建议多参与数据分析项目,积累实战经验", + "需要改进": "建议系统学习数据科学基础知识,从统计学开始" + } + }, + "销售": { + "优秀": "回答体现了出色的销售技巧和客户洞察能力", + "良好": "回答思路清晰,有一定的销售经验", + "一般": "回答基本合理,但缺乏具体的销售策略和案例", + "需要改进": "回答过于理论化,需要加强实际销售技巧的学习", + "suggestions": { + "优秀": "继续深入学习客户关系管理和销售谈判技巧", + "良好": "建议学习销售漏斗管理和客户分类策略", + "一般": "建议多参与实际销售工作,积累实战经验", + "需要改进": "建议系统学习销售基础知识,从产品知识开始" + } + }, + "市场营销": { + "优秀": "回答体现了系统性的营销思维和创新策略", + "良好": "回答思路清晰,有一定的营销经验", + "一般": "回答基本合理,但缺乏对市场趋势的深入分析", + "需要改进": "回答过于传统,需要加强现代营销理念的学习", + "suggestions": { + "优秀": "继续深入学习数字营销和品牌建设策略", + "良好": "建议学习市场调研和营销策略制定", + "一般": "建议多参与实际营销项目,积累实战经验", + "需要改进": "建议系统学习营销基础知识,从4P理论开始" + } + }, + "财务": { + "优秀": "回答财务知识准确,包含财务分析和决策思路", + "良好": "回答基本正确,有一定的财务知识", + "一般": "回答部分正确,但缺乏对财务原理的深入理解", + "需要改进": "回答存在财务知识错误,需要加强财务基础知识学习", + "suggestions": { + "优秀": "继续深入学习财务分析和投资决策", + "良好": "建议学习财务报表分析和预算管理", + "一般": "建议多参与实际财务工作,积累实战经验", + "需要改进": "建议系统学习财务基础知识,从会计原理开始" + } + }, + "人力资源": { + "优秀": "回答体现了战略性人力资源管理思维和实践经验", + "良好": "回答思路清晰,有一定的人力资源管理经验", + "一般": "回答基本合理,但缺乏对人力资源体系的整体理解", + "需要改进": "回答过于事务性,需要加强人力资源管理理论学习", + "suggestions": { + "优秀": "继续深入学习人才发展和组织变革管理", + "良好": "建议学习绩效管理和薪酬体系设计", + "一般": "建议多参与实际人力资源项目,积累实战经验", + "需要改进": "建议系统学习人力资源基础知识,从招聘流程开始" + } + }, + "运营": { + "优秀": "回答体现了系统化的运营思维和数据驱动的决策能力", + "良好": "回答思路清晰,有一定的运营经验", + "一般": "回答基本合理,但缺乏对运营策略的深入分析", + "需要改进": "回答过于碎片化,需要加强运营体系化思维的培养", + "suggestions": { + "优秀": "继续深入学习增长黑客和用户运营策略", + "良好": "建议学习数据运营和内容运营技巧", + "一般": "建议多参与实际运营项目,积累实战经验", + "需要改进": "建议系统学习运营基础知识,从用户生命周期开始" + } + }, + "项目经理": { + "优秀": "回答体现了全面的项目管理能力和风险应对策略", + "良好": "回答思路清晰,有一定的项目管理经验", + "一般": "回答基本合理,但缺乏对项目管理体系的整体理解", + "需要改进": "回答过于片面,需要加强项目管理方法论的学习", + "suggestions": { + "优秀": "继续深入学习敏捷项目管理和风险管理", + "良好": "建议学习项目管理工具和沟通技巧", + "一般": "建议多参与实际项目管理,积累实战经验", + "需要改进": "建议系统学习项目管理基础知识,从PMBOK开始" + } + }, + "客服": { + "优秀": "回答体现了出色的客户服务意识和问题解决能力", + "良好": "回答思路清晰,有一定的客户服务经验", + "一般": "回答基本合理,但缺乏对客户心理的深入理解", + "需要改进": "回答过于机械,需要加强客户服务技巧的学习", + "suggestions": { + "优秀": "继续深入学习客户心理学和冲突管理技巧", + "良好": "建议学习服务标准化和客户满意度管理", + "一般": "建议多参与实际客服工作,积累实战经验", + "需要改进": "建议系统学习客服基础知识,从服务礼仪开始" + } + }, + "芯片设计工程师": { + "优秀": "回答技术细节准确,包含芯片设计原理和验证方法", + "良好": "回答基本正确,有一定的芯片设计经验", + "一般": "回答部分正确,但缺乏对先进工艺的理解", + "需要改进": "回答存在技术错误,需要加强芯片设计基础知识学习", + "suggestions": { + "优秀": "继续深入学习先进工艺和设计方法学", + "良好": "建议学习芯片验证技术和DFT方法", + "一般": "建议多参与芯片设计项目,积累实战经验", + "需要改进": "建议系统学习芯片设计基础知识,从数字电路开始" + } + }, + "芯片验证工程师": { + "优秀": "回答体现了深厚的验证理论基础和丰富的项目经验", + "良好": "回答基本正确,有一定的验证经验", + "一般": "回答部分正确,但缺乏对UVM等验证方法学的深入理解", + "需要改进": "回答存在技术错误,需要加强验证基础知识学习", + "suggestions": { + "优秀": "继续深入学习形式化验证和低功耗验证技术", + "良好": "建议学习UVM验证方法学和系统验证技术", + "一般": "建议多参与芯片验证项目,积累实战经验", + "需要改进": "建议系统学习验证基础知识,从逻辑仿真开始" + } + }, + "芯片工艺工程师": { + "优秀": "回答技术细节准确,包含半导体工艺原理和设备知识", + "良好": "回答基本正确,有一定的工艺经验", + "一般": "回答部分正确,但缺乏对先进工艺节点的理解", + "需要改进": "回答存在技术错误,需要加强工艺基础知识学习", + "suggestions": { + "优秀": "继续深入学习先进工艺技术和良率优化方法", + "良好": "建议学习工艺集成和设备维护知识", + "一般": "建议多参与工艺开发项目,积累实战经验", + "需要改进": "建议系统学习半导体工艺基础知识,从晶圆制造开始" + } + }, + "芯片封装工程师": { + "优秀": "回答技术细节准确,包含封装设计原理和可靠性分析", + "良好": "回答基本正确,有一定的封装经验", + "一般": "回答部分正确,但缺乏对先进封装技术的理解", + "需要改进": "回答存在技术错误,需要加强封装基础知识学习", + "suggestions": { + "优秀": "继续深入学习先进封装技术和热管理方法", + "良好": "建议学习封装可靠性分析和失效机制", + "一般": "建议多参与封装设计项目,积累实战经验", + "需要改进": "建议系统学习封装基础知识,从引线键合开始" + } + }, + "量子算法工程师": { + "优秀": "回答技术细节准确,包含量子计算原理和算法设计", + "良好": "回答基本正确,有一定的量子算法经验", + "一般": "回答部分正确,但缺乏对量子计算硬件的理解", + "需要改进": "回答存在技术错误,需要加强量子计算基础知识学习", + "suggestions": { + "优秀": "继续深入学习先进工艺和设计方法学", + "良好": "建议学习芯片验证技术和DFT方法", + "一般": "建议多参与芯片设计项目,积累实战经验", + "需要改进": "建议系统学习芯片设计基础知识,从数字电路开始" + } + }, + "量子硬件工程师": { + "优秀": "回答技术细节准确,包含量子比特设计和控制系统", + "良好": "回答基本正确,有一定的量子硬件经验", + "一般": "回答部分正确,但缺乏对量子纠错的理解", + "需要改进": "回答存在技术错误,需要加强量子硬件基础知识学习", + "suggestions": { + "优秀": "继续深入学习量子纠错和量子系统集成", + "良好": "建议学习量子比特操控和测量技术", + "一般": "建议多参与量子硬件项目,积累实战经验", + "需要改进": "建议系统学习量子硬件基础知识,从量子力学开始" + } + }, + "量子软件工程师": { + "优秀": "回答技术细节准确,包含量子编程语言和软件架构", + "良好": "回答基本正确,有一定的量子软件经验", + "一般": "回答部分正确,但缺乏对量子算法的深入理解", + "需要改进": "回答存在技术错误,需要加强量子软件基础知识学习", + "suggestions": { + "优秀": "继续深入学习量子编程范式和量子软件开发工具", + "良好": "建议学习量子算法和量子模拟器开发", + "一般": "建议多参与量子软件项目,积累实战经验", + "需要改进": "建议系统学习量子软件基础知识,从量子编程入门开始" + } + }, + "量子应用科学家": { + "优秀": "回答体现了深厚的量子力学基础和跨学科应用能力", + "良好": "回答基本正确,有一定的量子应用经验", + "一般": "回答部分正确,但缺乏对特定领域应用的深入理解", + "需要改进": "回答存在技术错误,需要加强量子应用基础知识学习", + "suggestions": { + "优秀": "继续深入学习量子技术在特定领域的应用", + "良好": "建议学习量子机器学习和量子化学等应用领域", + "一般": "建议多参与量子应用项目,积累实战经验", + "需要改进": "建议系统学习量子应用基础知识,从相关领域交叉知识开始" + } + }, + "算法工程师": { + "优秀": "回答技术细节准确,包含算法设计原理和复杂度分析", + "良好": "回答基本正确,有一定的算法经验", + "一般": "回答部分正确,但缺乏对高级算法的深入理解", + "需要改进": "回答存在技术错误,需要加强算法基础知识学习", + "suggestions": { + "优秀": "继续深入学习高级算法和数据结构", + "良好": "建议学习算法复杂度分析和优化技术", + "一般": "建议多参与算法项目,积累实战经验", + "需要改进": "建议系统学习算法基础知识,从排序算法开始" + } + }, + "机器学习工程师": { + "优秀": "回答技术细节准确,包含机器学习算法原理和工程实践", + "良好": "回答基本正确,有一定的机器学习经验", + "一般": "回答部分正确,但缺乏对深度学习的深入理解", + "需要改进": "回答存在技术错误,需要加强机器学习基础知识学习", + "suggestions": { + "优秀": "继续深入学习深度学习和强化学习技术", + "良好": "建议学习模型优化和部署技术", + "一般": "建议多参与机器学习项目,积累实战经验", + "需要改进": "建议系统学习机器学习基础知识,从线性回归开始" + } + }, + "AI研究科学家": { + "优秀": "回答体现了深厚的AI理论基础和创新能力", + "良好": "回答基本正确,有一定的AI研究经验", + "一般": "回答部分正确,但缺乏对前沿AI技术的深入理解", + "需要改进": "回答存在技术错误,需要加强AI基础知识学习", + "suggestions": { + "优秀": "继续深入研究前沿AI技术和理论", + "良好": "建议学习AI伦理和负责任AI开发", + "一般": "建议多参与AI研究项目,积累实战经验", + "需要改进": "建议系统学习AI基础知识,从机器学习基础开始" + } + }, + "AI产品经理": { + "优秀": "回答体现了对AI技术和产品管理的深入理解", + "良好": "回答基本正确,有一定的AI产品经验", + "一般": "回答部分正确,但缺乏对AI产品落地的深入理解", + "需要改进": "回答存在技术错误,需要加强AI产品基础知识学习", + "suggestions": { + "优秀": "继续深入学习AI技术发展趋势和产品创新", + "良好": "建议学习AI产品落地策略和用户体验设计", + "一般": "建议多参与AI产品项目,积累实战经验", + "需要改进": "建议系统学习AI产品基础知识,从AI技术入门开始" + } + }, + "细胞培养技术员": { + "优秀": "回答技术细节准确,包含细胞培养原理和操作规范", + "良好": "回答基本正确,有一定的细胞培养经验", + "一般": "回答部分正确,但缺乏对细胞生物学的深入理解", + "需要改进": "回答存在技术错误,需要加强细胞培养基础知识学习", + "suggestions": { + "优秀": "继续深入学习细胞生物学和培养技术", + "良好": "建议学习细胞分化和细胞系建立技术", + "一般": "建议多参与细胞培养实验,积累实战经验", + "需要改进": "建议系统学习细胞培养基础知识,从无菌操作开始" + } + }, + "分子生物学技术员": { + "优秀": "回答技术细节准确,包含分子生物学原理和实验技术", + "良好": "回答基本正确,有一定的分子生物学经验", + "一般": "回答部分正确,但缺乏对基因编辑等技术的深入理解", + "需要改进": "回答存在技术错误,需要加强分子生物学基础知识学习", + "suggestions": { + "优秀": "继续深入学习基因编辑和分子克隆技术", + "良好": "建议学习PCR和测序技术原理", + "一般": "建议多参与分子生物学实验,积累实战经验", + "需要改进": "建议系统学习分子生物学基础知识,从DNA结构开始" + } + }, + "药物研发科学家": { + "优秀": "回答体现了深厚的药物化学基础和研发经验", + "良好": "回答基本正确,有一定的药物研发经验", + "一般": "回答部分正确,但缺乏对药物筛选的深入理解", + "需要改进": "回答存在技术错误,需要加强药物研发基础知识学习", + "suggestions": { + "优秀": "继续深入学习药物设计和筛选技术", + "良好": "建议学习药物代谢和毒理学", + "一般": "建议多参与药物研发项目,积累实战经验", + "需要改进": "建议系统学习药物研发基础知识,从药物化学开始" + } + }, + "临床研究员": { + "优秀": "回答技术细节准确,包含临床试验原理和操作规范", + "良好": "回答基本正确,有一定的临床研究经验", + "一般": "回答部分正确,但缺乏对临床数据管理的深入理解", + "需要改进": "回答存在技术错误,需要加强临床研究基础知识学习", + "suggestions": { + "优秀": "继续深入学习临床试验设计和数据分析", + "良好": "建议学习GCP和临床数据管理规范", + "一般": "建议多参与临床试验项目,积累实战经验", + "需要改进": "建议系统学习临床研究基础知识,从临床试验设计开始" + } + }, + "电池研发工程师": { + "优秀": "回答技术细节准确,包含电池原理和材料科学", + "良好": "回答基本正确,有一定的电池研发经验", + "一般": "回答部分正确,但缺乏对电池性能优化的深入理解", + "需要改进": "回答存在技术错误,需要加强电池研发基础知识学习", + "suggestions": { + "优秀": "继续深入学习新型电池材料和结构设计", + "良好": "建议学习电池测试和性能评估技术", + "一般": "建议多参与电池研发项目,积累实战经验", + "需要改进": "建议系统学习电池基础知识,从电化学原理开始" + } + }, + "光伏工程师": { + "优秀": "回答技术细节准确,包含光伏原理和系统设计", + "良好": "回答基本正确,有一定的光伏经验", + "一般": "回答部分正确,但缺乏对高效光伏技术的深入理解", + "需要改进": "回答存在技术错误,需要加强光伏基础知识学习", + "suggestions": { + "优秀": "继续深入学习高效光伏技术和系统集成", + "良好": "建议学习光伏系统设计和并网技术", + "一般": "建议多参与光伏项目,积累实战经验", + "需要改进": "建议系统学习光伏基础知识,从半导体物理开始" + } + }, + "风能工程师": { + "优秀": "回答技术细节准确,包含风能原理和风机设计", + "良好": "回答基本正确,有一定的风能经验", + "一般": "回答部分正确,但缺乏对风电场规划的深入理解", + "需要改进": "回答存在技术错误,需要加强风能基础知识学习", + "suggestions": { + "优秀": "继续深入学习风机设计和风电场优化", + "良好": "建议学习风能资源评估和风电场规划", + "一般": "建议多参与风能项目,积累实战经验", + "需要改进": "建议系统学习风能基础知识,从空气动力学开始" + } + }, + "储能系统工程师": { + "优秀": "回答技术细节准确,包含储能原理和系统集成", + "良好": "回答基本正确,有一定的储能经验", + "一般": "回答部分正确,但缺乏对智能电网的深入理解", + "需要改进": "回答存在技术错误,需要加强储能基础知识学习", + "suggestions": { + "优秀": "继续深入学习智能电网和储能系统优化", + "良好": "建议学习储能系统控制和能量管理", + "一般": "建议多参与储能项目,积累实战经验", + "需要改进": "建议系统学习储能基础知识,从能量转换原理开始" + } + } +} + +# 多样化面试官角色模型 +interviewer_types = { + "严谨型": { + "description": "注重细节,问题逻辑性强,对技术准确性要求高", + "greeting": "您好,我是严谨型面试官,接下来的面试我会关注您回答的准确性和逻辑性。", + "follow_up_style": "针对技术细节深入追问", + "feedback_style": "直接指出问题,注重事实依据", + "answer_techniques": { + "核心策略": "回答要结构清晰,逻辑严密,注重细节和准确性", + "技巧1": "准备详细的技术细节和具体案例,避免模糊表述", + "技巧2": "回答问题时使用STAR法则(情境、任务、行动、结果)", + "技巧3": "对于不确定的问题,坦诚承认并说明如何获取相关信息", + "技巧4": "关注问题的每个部分,确保回答全面,不遗漏任何细节", + "技巧5": "展示严谨的思维过程,如分析问题的步骤和考虑因素" + } + }, + "亲和型": { + "description": "态度友好,善于引导,营造轻松的面试氛围", + "greeting": "您好,欢迎参加今天的面试,我是亲和型面试官,希望我们能有愉快的交流。", + "follow_up_style": "温和引导,鼓励候选人表达", + "feedback_style": "先肯定优点,再提出改进建议", + "answer_techniques": { + "核心策略": "保持开放友好的态度,积极互动,展示真实的自我", + "技巧1": "保持微笑,眼神交流,展现自信和亲和力", + "技巧2": "分享个人故事和经历,让回答更具人性化", + "技巧3": "主动提问,表现出对公司和职位的兴趣", + "技巧4": "表达团队合作精神和良好的沟通能力", + "技巧5": "展现学习能力和适应新环境的意愿" + } + }, + "压力型": { + "description": "提问节奏快,问题尖锐,测试候选人的抗压能力", + "greeting": "您好,我是压力型面试官,接下来的面试会有一些挑战性的问题,请做好准备。", + "follow_up_style": "连续追问,增加压力", + "feedback_style": "严格评估,直接指出不足", + "answer_techniques": { + "核心策略": "保持冷静,有条理地思考,展现抗压能力和解决问题的能力", + "技巧1": "深呼吸,保持语速平稳,避免因紧张而语无伦次", + "技巧2": "将复杂问题分解为小部分,逐步分析和回答", + "技巧3": "面对质疑时,保持专业态度,不辩解,而是提供解决方案", + "技巧4": "展示过去如何在压力下完成任务的案例", + "技巧5": "保持积极心态,将压力视为展示能力的机会" + } + }, + "技术型": { + "description": "专注技术能力,问题专业性强,注重实际解决问题的能力", + "greeting": "您好,我是技术型面试官,今天的面试将重点考察您的技术能力。", + "follow_up_style": "技术深度挖掘,注重解决方案", + "feedback_style": "技术角度评估,强调专业能力", + "answer_techniques": { + "核心策略": "展示扎实的技术基础,提供具体的技术解决方案", + "技巧1": "准备详细的技术项目案例,包括遇到的挑战和解决方案", + "技巧2": "使用技术术语准确表达,但避免过于晦涩难懂", + "技巧3": "展示对技术原理的深刻理解,而不仅仅是表面知识", + "技巧4": "讨论技术趋势和最新发展,展示持续学习的能力", + "技巧5": "分析问题时,展示系统化的思维和解决问题的方法论" + } + }, + "管理型": { + "description": "关注领导力和管理能力,问题偏向团队协作和项目管理", + "greeting": "您好,我是管理型面试官,今天的面试将重点考察您的领导力和管理能力。", + "follow_up_style": "关注决策过程和团队管理", + "feedback_style": "从管理角度评估,强调领导力", + "answer_techniques": { + "核心策略": "展示领导力、团队管理能力和战略思维", + "技巧1": "分享具体的团队管理案例,包括如何激励团队和解决冲突", + "技巧2": "强调结果导向,提供量化的成就和贡献", + "技巧3": "展示如何平衡业务需求和团队发展", + "技巧4": "讨论决策过程,包括如何收集信息、分析选项和做出决策", + "技巧5": "展示对业务整体的理解,而不仅仅是技术或专业领域" + } + } +} + +# 初始化会话状态 +if "selected_job" not in st.session_state: + st.session_state.selected_job = None +if "selected_company_type" not in st.session_state: + st.session_state.selected_company_type = None +if "interview_started" not in st.session_state: + st.session_state.interview_started = False +if "current_question" not in st.session_state: + st.session_state.current_question = None +if "current_question_index" not in st.session_state: + st.session_state.current_question_index = 0 +if "user_answers" not in st.session_state: + st.session_state.user_answers = [] +if "scores" not in st.session_state: + st.session_state.scores = [] +if "interview_completed" not in st.session_state: + st.session_state.interview_completed = False +if "history_loaded" not in st.session_state: + st.session_state.history_loaded = False +if "interview_history" not in st.session_state: + st.session_state.interview_history = [] +# 追问相关状态 +if "is_follow_up" not in st.session_state: + st.session_state.is_follow_up = False +if "current_follow_up_index" not in st.session_state: + st.session_state.current_follow_up_index = -1 +if "asked_follow_ups" not in st.session_state: + st.session_state.asked_follow_ups = [] +if "current_follow_up" not in st.session_state: + st.session_state.current_follow_up = None +# 多人面试相关状态 +if "interviewers" not in st.session_state: + st.session_state.interviewers = [] +if "current_interviewer" not in st.session_state: + st.session_state.current_interviewer = None +if "interviewer_questions" not in st.session_state: + st.session_state.interviewer_questions = {} +if "question_interviewers" not in st.session_state: + st.session_state.question_interviewers = [] # 记录每个问题的面试官 +if "selected_interviewers" not in st.session_state: + st.session_state.selected_interviewers = [] +if "interviewer_types" not in st.session_state: + st.session_state.interviewer_types = [] +# 面试回放相关状态 +if "answer_timestamps" not in st.session_state: + st.session_state.answer_timestamps = [] +if "answer_durations" not in st.session_state: + st.session_state.answer_durations = [] +if "answer_changes" not in st.session_state: + st.session_state.answer_changes = [] +if "viewing_replay" not in st.session_state: + st.session_state.viewing_replay = False +if "replay_index" not in st.session_state: + st.session_state.replay_index = 0 +# 面试者信息 +if "candidate_name" not in st.session_state: + st.session_state.candidate_name = "" +if "candidate_email" not in st.session_state: + st.session_state.candidate_email = "" +if "candidate_phone" not in st.session_state: + st.session_state.candidate_phone = "" +if "candidate_education" not in st.session_state: + st.session_state.candidate_education = "" +if "candidate_experience" not in st.session_state: + st.session_state.candidate_experience = "" +if "candidate_info_completed" not in st.session_state: + st.session_state.candidate_info_completed = False + +# 确保历史记录目录存在 +HISTORY_DIR = "interview_history" +if not os.path.exists(HISTORY_DIR): + os.makedirs(HISTORY_DIR) + +# 保存面试历史记录 +def save_interview_history(): + if st.session_state.interview_completed and st.session_state.user_answers: + interview_data = { + "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + "job_position": st.session_state.selected_job, + "questions": interview_questions[st.session_state.selected_job][:len(st.session_state.user_answers)], + "answers": st.session_state.user_answers, + "scores": st.session_state.scores, + "interviewers": st.session_state.interviewers, + "question_interviewers": st.session_state.question_interviewers, # 新增:记录每个问题的面试官 + "answer_timestamps": st.session_state.answer_timestamps, + "answer_durations": st.session_state.answer_durations, + "answer_changes": st.session_state.answer_changes + } + + # 生成文件名 + filename = f"{datetime.now().strftime('%Y%m%d_%H%M%S')}_{st.session_state.selected_job.replace(' ', '_')}.json" + filepath = os.path.join(HISTORY_DIR, filename) + + # 保存到文件 + with open(filepath, 'w', encoding='utf-8') as f: + json.dump(interview_data, f, ensure_ascii=False, indent=2) + + return filepath + return None + +# 加载面试历史记录 +def load_interview_history(): + history_files = [] + for file in os.listdir(HISTORY_DIR): + if file.endswith('.json'): + filepath = os.path.join(HISTORY_DIR, file) + try: + with open(filepath, 'r', encoding='utf-8') as f: + data = json.load(f) + history_files.append((data["timestamp"], file, data)) + except: + pass + + # 按时间倒序排序 + history_files.sort(reverse=True, key=lambda x: x[0]) + return history_files + +# 页面标题 +st.title("🤖 AI面试助手") +st.write("---") + +# 侧边栏:岗位选择 +with st.sidebar: + st.header("面试设置") + + # 公司类型选择 + company_options = list(company_types.keys()) + selected_company_type = st.selectbox( + "选择公司类型", + company_options, + index=0 if st.session_state.selected_company_type is None else company_options.index(st.session_state.selected_company_type) + ) + + # 保存选择到会话状态 + st.session_state.selected_company_type = selected_company_type + + st.write("\n") + + # 岗位选择下拉菜单(根据选择的公司类型动态显示) + job_options = company_types[selected_company_type] + selected_job = st.selectbox( + "选择面试岗位", + job_options, + index=0 if st.session_state.selected_job not in job_options else job_options.index(st.session_state.selected_job) + ) + + # 保存选择到会话状态 + st.session_state.selected_job = selected_job + + st.write("\n") + + # 面试官类型选择 + st.subheader("面试官类型") + st.write("请选择面试官类型(可多选):") + selected_interviewer_types = [] + for interviewer_type, info in interviewer_types.items(): + if st.checkbox(f"{interviewer_type} - {info['description']}", key=f"interviewer_{interviewer_type}"): + selected_interviewer_types.append(interviewer_type) + + # 保存选择的面试官类型 + st.session_state.selected_interviewers = selected_interviewer_types + + st.write("\n") + + # 开始面试按钮 + if st.button("开始面试", key="start_button"): + st.session_state.interview_started = True + st.session_state.current_question_index = 0 + st.session_state.user_answers = [] + st.session_state.scores = [] + st.session_state.interview_completed = False + # 重置追问相关状态 + st.session_state.is_follow_up = False + st.session_state.current_follow_up_index = -1 + st.session_state.asked_follow_ups = [] + st.session_state.current_follow_up = None + # 重置多人面试相关状态 + if selected_interviewer_types: + st.session_state.interviewers = selected_interviewer_types + else: + st.session_state.interviewers = ["技术面试官", "HR面试官", "业务面试官"] + st.session_state.current_interviewer = st.session_state.interviewers[0] + st.session_state.interviewer_questions = {} + st.session_state.question_interviewers = [] + # 重置面试回放相关状态 + st.session_state.answer_timestamps = [] + st.session_state.answer_durations = [] + st.session_state.answer_changes = [] + st.session_state.viewing_replay = False + st.session_state.replay_index = 0 + # 随机选择第一个问题 + st.session_state.current_question = interview_questions[selected_job][0] + + # 重置面试按钮 + if st.button("重置面试", key="reset_button"): + # 清除所有相关状态变量 + for key in list(st.session_state.keys()): + if key.startswith("start_time_") or key.startswith("answer_changes_") or key.startswith("prev_answer_"): + del st.session_state[key] + + st.session_state.interview_started = False + st.session_state.current_question = None + st.session_state.current_question_index = 0 + st.session_state.user_answers = [] + st.session_state.scores = [] + st.session_state.interview_completed = False + # 重置追问相关状态 + st.session_state.is_follow_up = False + st.session_state.current_follow_up_index = -1 + st.session_state.asked_follow_ups = [] + st.session_state.current_follow_up = None + # 重置多人面试相关状态 + st.session_state.interviewers = [] + st.session_state.current_interviewer = None + st.session_state.interviewer_questions = {} + st.session_state.question_interviewers = [] + # 重置面试回放相关状态 + st.session_state.answer_timestamps = [] + st.session_state.answer_durations = [] + st.session_state.answer_changes = [] + st.session_state.viewing_replay = False + st.session_state.replay_index = 0 + st.session_state.replay_index = 0 + st.rerun() + + st.write("\n" + "="*30) + + # 面试历史记录 + st.header("面试历史") + history_files = load_interview_history() + if history_files: + st.write("**历史面试记录:**") + for timestamp, filename, data in history_files[:5]: # 只显示最近5条 + with st.expander(f"{timestamp} - {data.get('job_position', '未知岗位')}"): + st.write(f"岗位:{data.get('job_position', '未知')}") + st.write(f"问题数量:{len(data.get('questions', []))}") + if st.button(f"查看回放", key=f"replay_{filename}"): + st.session_state.viewing_replay = True + st.session_state.replay_data = data + st.session_state.replay_index = 0 + st.rerun() + else: + st.write("暂无历史面试记录") + +# 主内容区域 +main_col, feedback_col = st.columns([3, 1]) + +with main_col: + # 查看历史记录详情 + if "viewing_history" in st.session_state and st.session_state.viewing_history: + st.header("历史面试记录") + st.write("---") + data = st.session_state.viewing_history + st.subheader("面试总结报告") + st.write(f"**面试时间:** {data['timestamp']}") + st.write(f"**面试岗位:** {data['job_position']}") + st.write(f"**回答问题数量:** {len(data['answers'])}") + + # 显示所有问题和回答 + for i, (question, answer, score) in enumerate(zip( + data['questions'], + data['answers'], + data['scores'] + )): + st.write(f"\n**问题 {i+1}:** {question}") + st.write(f"**您的回答:** {answer}") + st.write(f"**评分:** {score}") + + st.write("\n" + "="*50) + st.subheader("面试建议") + st.write("1. 建议您在回答技术问题时,尽量结合实际项目经验") + st.write("2. 回答问题时保持结构清晰,使用STAR法则(情境、任务、行动、结果)") + st.write("3. 针对薄弱环节进行针对性学习和练习") + st.write("4. 面试前充分了解目标岗位的职责和要求") + + if st.button("返回", key="back_from_history"): + del st.session_state.viewing_history + st.rerun() + + # 面试回放功能 + elif "viewing_replay" in st.session_state and st.session_state.viewing_replay: + st.header("面试回放") + st.write("---") + data = st.session_state.replay_data + replay_index = st.session_state.replay_index + + # 显示面试基本信息 + st.subheader("面试信息") + st.write(f"**面试时间:** {data.get('timestamp', '未知')}") + st.write(f"**面试岗位:** {data.get('job_position', '未知')}") + st.write(f"**面试官:** {', '.join(data.get('interviewers', ['未知']))}") + st.write(f"**问题总数:** {len(data.get('questions', []))}") + + st.write("\n" + "="*50) + + # 显示当前问题的回放 + if 0 <= replay_index < len(data.get('questions', [])): + st.subheader(f"问题 {replay_index + 1}") + + # 获取问题数据 + question = data['questions'][replay_index] + answer = data['answers'][replay_index] + score = data['scores'][replay_index] + + # 获取时间戳和时长数据 + timestamp = None + duration = None + changes = 0 + + if 'answer_timestamps' in data: + for ts in data['answer_timestamps']: + if ts.get('question_index') == replay_index: + timestamp = ts + break + + if 'answer_durations' in data and replay_index < len(data['answer_durations']): + duration = data['answer_durations'][replay_index] + + if 'answer_changes' in data: + for ac in data['answer_changes']: + if ac.get('question_index') == replay_index: + changes = ac.get('changes', 0) + break + + # 显示问题 + if isinstance(question, dict): + st.write(f"**问题内容:** {question.get('main_question', '未知')}") + else: + st.write(f"**问题内容:** {question}") + + # 显示面试官 + if 'question_interviewers' in data and replay_index < len(data['question_interviewers']): + st.write(f"**面试官:** {data['question_interviewers'][replay_index]}") + + # 显示回答 + st.write(f"**您的回答:** {answer}") + + # 显示评分 + st.write(f"**评分:** {score}") + + # 显示回放数据 + st.subheader("答题数据") + if timestamp: + st.write(f"**开始时间:** {timestamp.get('start_time', '未知')}") + st.write(f"**结束时间:** {timestamp.get('end_time', '未知')}") + + if duration: + minutes, seconds = divmod(duration, 60) + st.write(f"**答题时长:** {int(minutes)}分{int(seconds)}秒") + + st.write(f"**修改次数:** {changes}次") + + # 导航按钮 + col1, col2, col3 = st.columns([1, 1, 1]) + with col1: + if replay_index > 0: + if st.button("上一题", key="prev_question"): + st.session_state.replay_index -= 1 + st.rerun() + with col2: + if st.button("返回列表", key="back_to_list"): + st.session_state.viewing_replay = False + del st.session_state.replay_data + del st.session_state.replay_index + st.rerun() + with col3: + if replay_index < len(data['questions']) - 1: + if st.button("下一题", key="next_question"): + st.session_state.replay_index += 1 + st.rerun() + else: + st.write("回放完成!") + if st.button("返回列表", key="back_to_list_end"): + st.session_state.viewing_replay = False + del st.session_state.replay_data + del st.session_state.replay_index + + # 面试者信息收集 + elif not st.session_state.candidate_info_completed: + st.header("👤 面试者信息收集") + st.write("---") + st.write("请填写以下信息,以便我们为您提供更加个性化的面试体验:") + + with st.form("candidate_info_form"): + col1, col2 = st.columns(2) + + with col1: + candidate_name = st.text_input("姓名", value=st.session_state.candidate_name) + candidate_email = st.text_input("邮箱", value=st.session_state.candidate_email) + candidate_phone = st.text_input("电话", value=st.session_state.candidate_phone) + + with col2: + candidate_education = st.selectbox( + "最高学历", + ["高中", "大专", "本科", "硕士", "博士"], + index=["高中", "大专", "本科", "硕士", "博士"].index(st.session_state.candidate_education) if st.session_state.candidate_education else 2 + ) + candidate_experience = st.selectbox( + "工作经验", + ["应届毕业生", "1-3年", "3-5年", "5-10年", "10年以上"], + index=["应届毕业生", "1-3年", "3-5年", "5-10年", "10年以上"].index(st.session_state.candidate_experience) if st.session_state.candidate_experience else 0 + ) + + submitted = st.form_submit_button("提交信息") + + if submitted: + if not candidate_name: + st.error("请填写姓名") + elif not candidate_email: + st.error("请填写邮箱") + elif not candidate_phone: + st.error("请填写电话") + else: + st.session_state.candidate_name = candidate_name + st.session_state.candidate_email = candidate_email + st.session_state.candidate_phone = candidate_phone + st.session_state.candidate_education = candidate_education + st.session_state.candidate_experience = candidate_experience + st.session_state.candidate_info_completed = True + st.success("信息提交成功!") + st.rerun() + st.rerun() + + elif not st.session_state.interview_started: + # 高级亲和的欢迎封面页面 + st.markdown(""" + + """, unsafe_allow_html=True) + + # 欢迎封面 + st.markdown('
', unsafe_allow_html=True) + st.markdown('

🤖 AI面试助手

', unsafe_allow_html=True) + st.markdown('

专业、智能的面试模拟平台,助您轻松应对各类面试挑战

', unsafe_allow_html=True) + + # 核心功能 + st.markdown('
', unsafe_allow_html=True) + + # 功能1:智能面试模拟 + st.markdown(""" +
+
🎯
+
智能面试模拟
+
根据不同岗位和公司类型,提供个性化的面试问题和场景模拟
+
+ """, unsafe_allow_html=True) + + # 功能2:专业评分系统 + st.markdown(""" +
+
📊
+
专业评分系统
+
AI实时评估您的回答,提供详细的评分和针对性的改进建议
+
+ """, unsafe_allow_html=True) + + # 功能3:面试官类型应对 + st.markdown(""" +
+
👥
+
面试官类型应对
+
针对不同类型面试官的特点,提供专属的回答技巧和策略
+
+ """, unsafe_allow_html=True) + + # 功能4:面试报告分析 + st.markdown(""" +
+
📈
+
面试报告分析
+
生成详细的面试报告,帮助您了解优势和需要改进的地方
+
+ """, unsafe_allow_html=True) + + st.markdown('
', unsafe_allow_html=True) # 关闭features容器 + + # 行动号召 + st.markdown(""" +

+ 准备好提升您的面试技巧了吗?在左侧选择面试岗位,开始您的专业面试之旅! +

+ """, unsafe_allow_html=True) + + st.markdown('
', unsafe_allow_html=True) # 关闭welcome容器 + + # 面试流程说明 + with st.container(): + st.markdown('
', unsafe_allow_html=True) + st.subheader("🎯 面试流程") + st.write("1. **选择公司类型** - 根据您的目标公司行业进行选择") + st.write("2. **选择面试岗位** - 选择您要应聘的具体职位") + st.write("3. **选择面试官类型** - 选择您希望面对的面试官风格") + st.write("4. **点击开始面试** - 进入模拟面试环节") + st.write("5. **AI提问,您输入回答** - 真实模拟面试场景") + st.write("6. **AI评估并给出建议** - 获得专业的反馈和改进方向") + st.write("7. **完成所有问题后生成面试报告** - 全面了解您的面试表现") + st.markdown('
', unsafe_allow_html=True) + + elif st.session_state.interview_completed: + st.header("面试完成!") + st.write("---") + + # 使用卡片布局 + with st.container(): + st.markdown('
', unsafe_allow_html=True) + st.subheader("面试总结报告") + st.write(f"**公司类型:** {st.session_state.selected_company_type}") + st.write(f"**面试岗位:** {st.session_state.selected_job}") + st.write(f"**回答问题数量:** {len(st.session_state.user_answers)}") + + # 显示所有问题和回答 + for i, (question, answer, score) in enumerate(zip( + interview_questions[st.session_state.selected_job][:len(st.session_state.user_answers)], + st.session_state.user_answers, + st.session_state.scores + )): + st.write(f"\n**问题 {i+1}:** {question['main_question']}") + st.write(f"**您的回答:** {answer}") + st.write(f"**评分:** {score}") + + st.write("\n" + "="*50) + st.subheader("面试建议") + + # 获取岗位对应的评分标准和建议 + job_position = st.session_state.selected_job + if job_position in scoring_criteria: + st.write("**针对您的面试表现,我们为您提供以下建议:**") + # 分析评分分布,找出主要的评分等级 + score_counts = {} + for score in st.session_state.scores: + if score in score_counts: + score_counts[score] += 1 + else: + score_counts[score] = 1 + + # 找出最常见的评分等级 + most_common_score = max(score_counts, key=score_counts.get) + + # 显示对应评分等级的建议 + if "suggestions" in scoring_criteria[job_position] and most_common_score in scoring_criteria[job_position]["suggestions"]: + suggestion = scoring_criteria[job_position]["suggestions"][most_common_score] + st.write(f"**基于您的整体表现({most_common_score}),我们建议:**") + st.write(f"- {suggestion}") + + # 显示每个问题的具体建议 + st.write("\n**针对每个问题的建议:**") + for i, (question, answer, score) in enumerate(zip( + interview_questions[st.session_state.selected_job][:len(st.session_state.user_answers)], + st.session_state.user_answers, + st.session_state.scores + )): + if "suggestions" in scoring_criteria[job_position] and score in scoring_criteria[job_position]["suggestions"]: + question_suggestion = scoring_criteria[job_position]["suggestions"][score] + st.write(f"**问题 {i+1}({score}):** {question_suggestion}") + else: + # 如果没有找到对应岗位的建议,显示通用建议 + st.write("1. 建议您在回答技术问题时,尽量结合实际项目经验") + st.write("2. 回答问题时保持结构清晰,使用STAR法则(情境、任务、行动、结果)") + st.write("3. 针对薄弱环节进行针对性学习和练习") + st.write("4. 面试前充分了解目标岗位的职责和要求") + + # 保存面试历史记录 + saved_file = save_interview_history() + if saved_file: + st.success(f"面试记录已保存到:{saved_file}") + st.markdown('
', unsafe_allow_html=True) + + else: + st.header(f"{st.session_state.selected_job}岗位面试") + st.write("---") + + # 使用卡片布局 + with st.container(): + st.markdown('
', unsafe_allow_html=True) + # 显示当前面试官 + st.subheader(f"当前面试官:{st.session_state.current_interviewer}") + + # 显示面试官类型信息 + if st.session_state.current_interviewer in interviewer_types: + interviewer_info = interviewer_types[st.session_state.current_interviewer] + st.write(f"**面试官类型:** {interviewer_info['description']}") + st.write(f"**问候语:** {interviewer_info['greeting']}") + + # 显示当前问题 + st.subheader("当前问题") + if st.session_state.is_follow_up: + st.write(f"**追问:** {st.session_state.current_follow_up}") + else: + st.write(st.session_state.current_question["main_question"]) + + # 开始答题时间(当问题加载时记录) + if f"start_time_{st.session_state.current_question_index}" not in st.session_state: + st.session_state[f"start_time_{st.session_state.current_question_index}"] = datetime.now() + + # 用户回答输入 + st.subheader("您的回答") + user_answer = st.text_area( + "请输入您的回答", + height=200, + key=f"answer_{st.session_state.current_question_index}" + ) + + # 记录回答修改次数 + if f"answer_changes_{st.session_state.current_question_index}" not in st.session_state: + st.session_state[f"answer_changes_{st.session_state.current_question_index}"] = 0 + + # 检测回答修改 + if f"prev_answer_{st.session_state.current_question_index}" in st.session_state: + if st.session_state[f"prev_answer_{st.session_state.current_question_index}"] != user_answer: + st.session_state[f"answer_changes_{st.session_state.current_question_index}"] += 1 + + # 保存当前回答以便下次比较 + st.session_state[f"prev_answer_{st.session_state.current_question_index}"] = user_answer + + # 提交回答按钮 + if st.button("提交回答", key=f"submit_{st.session_state.current_question_index}"): + if user_answer.strip(): + # 计算答题时长 + start_time = st.session_state[f"start_time_{st.session_state.current_question_index}"] + end_time = datetime.now() + duration = (end_time - start_time).total_seconds() + + # 保存用户回答 + st.session_state.user_answers.append(user_answer) + + # 记录当前问题的面试官 + st.session_state.question_interviewers.append(st.session_state.current_interviewer) + + # 保存答题时间戳和时长 + st.session_state.answer_timestamps.append({ + "question_index": st.session_state.current_question_index, + "start_time": start_time.strftime("%H:%M:%S"), + "end_time": end_time.strftime("%H:%M:%S") + }) + st.session_state.answer_durations.append(duration) + + # 保存回答修改记录 + st.session_state.answer_changes.append({ + "question_index": st.session_state.current_question_index, + "changes": st.session_state[f"answer_changes_{st.session_state.current_question_index}"] + }) + + # 改进的评分算法 + # 根据回答长度和关键词进行更合理的评分 + answer_length = len(user_answer.strip()) + score_weights = { + "优秀": 0.2, + "良好": 0.5, + "一般": 0.25, + "需要改进": 0.05 + } + + # 根据回答长度调整评分权重 + if answer_length < 50: + score_weights["需要改进"] = 0.5 + score_weights["一般"] = 0.3 + score_weights["良好"] = 0.15 + score_weights["优秀"] = 0.05 + elif answer_length < 150: + score_weights["需要改进"] = 0.2 + score_weights["一般"] = 0.4 + score_weights["良好"] = 0.3 + score_weights["优秀"] = 0.1 + else: + score_weights["需要改进"] = 0.05 + score_weights["一般"] = 0.2 + score_weights["良好"] = 0.4 + score_weights["优秀"] = 0.35 + + # 生成评分 + score_options = list(score_weights.keys()) + weights = list(score_weights.values()) + score = random.choices(score_options, weights=weights, k=1)[0] + st.session_state.scores.append(score) + + # 检查是否还有下一个问题或追问 + if not st.session_state.is_follow_up: + # 有50%的概率触发追问 + if random.random() < 0.5 and len(st.session_state.current_question["follow_ups"]) > 0: + # 选择一个未问过的追问 + available_follow_ups = [f for f in st.session_state.current_question["follow_ups"] + if f not in st.session_state.asked_follow_ups] + if available_follow_ups: + # 随机选择一个追问 + selected_follow_up = random.choice(available_follow_ups) + st.session_state.asked_follow_ups.append(selected_follow_up) + st.session_state.current_follow_up = selected_follow_up + st.session_state.is_follow_up = True + st.rerun() + + # 如果没有触发追问或没有可用的追问,则进入下一个主问题 + next_question_index = st.session_state.current_question_index + 1 + if next_question_index < len(interview_questions[st.session_state.selected_job]): + st.session_state.current_question_index = next_question_index + st.session_state.current_question = interview_questions[st.session_state.selected_job][next_question_index] + st.session_state.is_follow_up = False + st.session_state.current_follow_up_index = -1 + st.session_state.asked_follow_ups = [] + # 切换面试官 + current_interviewer_index = st.session_state.interviewers.index(st.session_state.current_interviewer) + next_interviewer_index = (current_interviewer_index + 1) % len(st.session_state.interviewers) + st.session_state.current_interviewer = st.session_state.interviewers[next_interviewer_index] + st.rerun() + else: + # 面试完成 + st.session_state.interview_completed = True + st.rerun() + else: + # 追问回答后,回到主问题流程 + st.session_state.is_follow_up = False + st.session_state.current_follow_up_index = -1 + # 继续处理主问题流程 + next_question_index = st.session_state.current_question_index + 1 + if next_question_index < len(interview_questions[st.session_state.selected_job]): + st.session_state.current_question_index = next_question_index + st.session_state.current_question = interview_questions[st.session_state.selected_job][next_question_index] + st.session_state.asked_follow_ups = [] + st.rerun() + else: + # 面试完成 + st.session_state.interview_completed = True + st.rerun() + else: + st.warning("请输入您的回答后再提交") + st.markdown('
', unsafe_allow_html=True) + +with feedback_col: + if st.session_state.interview_started and not st.session_state.interview_completed: + st.header("AI反馈") + if st.session_state.user_answers: + # 显示上一个问题的反馈 + last_question_index = st.session_state.current_question_index - 1 + if last_question_index >= 0: + st.write(f"**问题 {last_question_index + 1} 反馈:**") + st.write(f"评分:{st.session_state.scores[last_question_index]}") + st.write(f"建议:{scoring_criteria[st.session_state.selected_job][st.session_state.scores[last_question_index]]}") + else: + st.write("请回答当前问题,AI将为您提供反馈。") + + elif st.session_state.interview_completed: + st.header("最终评估") + # 计算平均评分 + if st.session_state.scores: + score_counts = {score: st.session_state.scores.count(score) for score in set(st.session_state.scores)} + st.write("**评分分布:**") + for score, count in score_counts.items(): + st.write(f"{score}:{count}次") + +# 页脚 +st.write("\n" + "---") +st.write("© 2024 AI面试助手 - 模拟真实面试场景,提升您的面试技巧") diff --git a/interview_history/20260107_134418_财务.json b/interview_history/20260107_134418_财务.json new file mode 100644 index 0000000..f0c5f4f --- /dev/null +++ b/interview_history/20260107_134418_财务.json @@ -0,0 +1,178 @@ +{ + "timestamp": "2026-01-07 13:44:18", + "job_position": "财务", + "questions": [ + { + "main_question": "请解释什么是财务报表?它包括哪些主要组成部分?", + "follow_ups": [ + "如何分析财务报表来评估企业的财务状况?", + "财务报表中的哪些指标对投资者最为重要?", + "如何识别财务报表中的异常情况?" + ] + }, + { + "main_question": "什么是预算管理?如何制定和执行有效的预算?", + "follow_ups": [ + "预算编制的流程是怎样的?", + "如何监控预算执行情况并进行调整?", + "在预算管理中,你遇到过哪些挑战?如何克服的?" + ] + }, + { + "main_question": "请解释什么是成本核算?它在企业管理中的作用是什么?", + "follow_ups": [ + "你熟悉哪些成本核算方法?它们各自适用于什么场景?", + "如何通过成本核算来优化企业的成本结构?", + "如何处理间接成本的分配问题?" + ] + }, + { + "main_question": "什么是内部控制?如何建立有效的内部控制体系?", + "follow_ups": [ + "内部控制的目标是什么?", + "如何评估内部控制的有效性?", + "在内部控制方面,你有什么经验或案例?" + ] + }, + { + "main_question": "请解释什么是税务筹划?它与逃税有什么区别?", + "follow_ups": [ + "税务筹划的基本原则是什么?", + "如何在合法合规的前提下进行税务筹划?", + "你熟悉哪些常见的税务筹划方法?" + ] + } + ], + "answers": [ + "“财务报表其实就是企业把一段时间的财务情况、经营成果这些信息,用规范的表格和文字整理出来的书面文件,不管是投资者看企业值不值得投,还是管理者做决策,都得靠它来了解情况。

主要分这么几块:第一是资产负债表,看的是某一个时间点,企业有多少资产、欠了多少债、股东有多少权益,核心就是资产等于负债加所有者权益;第二是利润表,能看出企业一段时间内赚了多少钱,收入减去费用就是利润,直接反映盈利能力;第三是现金流量表,记录企业现金的进和出,分经营、投资、筹资三种活动的现金流,能看出来企业的钱够不够用、周转怎么样;第四是所有者权益变动表,就是股东的权益在这段时间里怎么变的,比如股本有没有增加、利润有没有分配;最后还有报表附注,把报表里没说清楚的地方补充说明,比如用了什么会计政策、有没有重大事项,让报表内容更明白。”\n未选择文件", + "g", + "s", + "s", + "2", + "s", + "ss", + "s", + "ss" + ], + "scores": [ + "优秀", + "一般", + "需要改进", + "优秀", + "良好", + "需要改进", + "需要改进", + "需要改进", + "良好" + ], + "interviewers": [ + "亲和型" + ], + "question_interviewers": [ + "亲和型", + "亲和型", + "亲和型", + "亲和型", + "亲和型", + "亲和型", + "亲和型", + "亲和型", + "亲和型" + ], + "answer_timestamps": [ + { + "question_index": 0, + "start_time": "13:43:28", + "end_time": "13:43:51" + }, + { + "question_index": 0, + "start_time": "13:43:28", + "end_time": "13:44:01" + }, + { + "question_index": 1, + "start_time": "13:44:01", + "end_time": "13:44:05" + }, + { + "question_index": 1, + "start_time": "13:44:01", + "end_time": "13:44:08" + }, + { + "question_index": 2, + "start_time": "13:44:08", + "end_time": "13:44:11" + }, + { + "question_index": 3, + "start_time": "13:44:11", + "end_time": "13:44:12" + }, + { + "question_index": 3, + "start_time": "13:44:11", + "end_time": "13:44:14" + }, + { + "question_index": 4, + "start_time": "13:44:14", + "end_time": "13:44:16" + }, + { + "question_index": 4, + "start_time": "13:44:14", + "end_time": "13:44:18" + } + ], + "answer_durations": [ + 22.783279, + 32.717393, + 3.377678, + 6.967708, + 2.291164, + 1.733, + 3.619194, + 1.685353, + 3.33111 + ], + "answer_changes": [ + { + "question_index": 0, + "changes": 1 + }, + { + "question_index": 0, + "changes": 2 + }, + { + "question_index": 1, + "changes": 1 + }, + { + "question_index": 1, + "changes": 1 + }, + { + "question_index": 2, + "changes": 1 + }, + { + "question_index": 3, + "changes": 1 + }, + { + "question_index": 3, + "changes": 2 + }, + { + "question_index": 4, + "changes": 1 + }, + { + "question_index": 4, + "changes": 2 + } + ] +} \ No newline at end of file diff --git a/interview_history/20260107_140424_Python开发.json b/interview_history/20260107_140424_Python开发.json new file mode 100644 index 0000000..7b2f33a --- /dev/null +++ b/interview_history/20260107_140424_Python开发.json @@ -0,0 +1,152 @@ +{ + "timestamp": "2026-01-07 14:04:24", + "job_position": "Python开发", + "questions": [ + { + "main_question": "请详细解释Python中的GIL(全局解释器锁)的实现机制,以及它对多线程编程的深层影响。", + "follow_ups": [ + "GIL的存在对CPU密集型和I/O密集型任务的影响有何不同?请具体分析其原因。", + "在Python 3.2+中,GIL的实现有哪些改进?这些改进如何影响线程切换性能?", + "除了使用多进程,还有哪些技术可以绕过GIL的限制?请比较它们的优缺点。" + ] + }, + { + "main_question": "请深入分析Python中的内存管理机制,包括引用计数、垃圾回收和内存池。", + "follow_ups": [ + "Python的循环引用问题是如何产生的?垃圾回收器如何检测和处理循环引用?", + "Python的分代垃圾回收机制是如何工作的?各代的回收策略有什么不同?", + "如何在Python中优化内存使用?请结合具体场景说明。" + ] + }, + { + "main_question": "请详细解释Python中的装饰器(Decorator)的实现原理,以及如何实现带参数的装饰器和类装饰器。", + "follow_ups": [ + "装饰器的执行时机是什么时候?它如何影响被装饰函数的元数据?", + "如何实现一个装饰器,使其能够保留被装饰函数的文档字符串和函数名?", + "装饰器链的执行顺序是怎样的?请举例说明。" + ] + }, + { + "main_question": "请深入分析Python中的生成器(Generator)和协程(Coroutine)的工作原理,以及它们在异步编程中的应用。", + "follow_ups": [ + "生成器表达式和列表推导式在内存使用上有什么本质区别?请结合big O表示法分析。", + "Python 3.5+引入的async/await语法是如何基于生成器实现的?", + "如何使用asyncio库实现高效的异步I/O操作?请给出具体示例。" + ] + }, + { + "main_question": "请详细解释Python中的面向对象编程高级特性,包括元类(Metaclass)、描述符(Descriptor)和混入(Mixin)。", + "follow_ups": [ + "元类的作用是什么?如何使用元类控制类的创建过程?", + "描述符协议的三个方法(__get__, __set__, __delete__)是如何工作的?请实现一个自定义描述符。", + "Mixin模式在Python中的应用场景是什么?如何避免Mixin带来的方法名冲突问题?" + ] + } + ], + "answers": [ + "j", + "j", + "1", + "1", + "1", + "1", + "1" + ], + "scores": [ + "一般", + "需要改进", + "一般", + "良好", + "需要改进", + "需要改进", + "需要改进" + ], + "interviewers": [ + "严谨型" + ], + "question_interviewers": [ + "严谨型", + "严谨型", + "严谨型", + "严谨型", + "严谨型", + "严谨型", + "严谨型" + ], + "answer_timestamps": [ + { + "question_index": 0, + "start_time": "14:04:04", + "end_time": "14:04:09" + }, + { + "question_index": 0, + "start_time": "14:04:04", + "end_time": "14:04:12" + }, + { + "question_index": 1, + "start_time": "14:04:12", + "end_time": "14:04:16" + }, + { + "question_index": 2, + "start_time": "14:04:16", + "end_time": "14:04:19" + }, + { + "question_index": 3, + "start_time": "14:04:19", + "end_time": "14:04:21" + }, + { + "question_index": 3, + "start_time": "14:04:19", + "end_time": "14:04:22" + }, + { + "question_index": 4, + "start_time": "14:04:22", + "end_time": "14:04:24" + } + ], + "answer_durations": [ + 5.135361, + 7.764845, + 4.06968, + 3.048585, + 1.221883, + 2.614996, + 1.84018 + ], + "answer_changes": [ + { + "question_index": 0, + "changes": 1 + }, + { + "question_index": 0, + "changes": 1 + }, + { + "question_index": 1, + "changes": 1 + }, + { + "question_index": 2, + "changes": 1 + }, + { + "question_index": 3, + "changes": 1 + }, + { + "question_index": 3, + "changes": 1 + }, + { + "question_index": 4, + "changes": 1 + } + ] +} \ No newline at end of file diff --git a/interview_history/20260107_140624_财务.json b/interview_history/20260107_140624_财务.json new file mode 100644 index 0000000..567d79d --- /dev/null +++ b/interview_history/20260107_140624_财务.json @@ -0,0 +1,165 @@ +{ + "timestamp": "2026-01-07 14:06:24", + "job_position": "财务", + "questions": [ + { + "main_question": "请解释什么是财务报表?它包括哪些主要组成部分?", + "follow_ups": [ + "如何分析财务报表来评估企业的财务状况?", + "财务报表中的哪些指标对投资者最为重要?", + "如何识别财务报表中的异常情况?" + ] + }, + { + "main_question": "什么是预算管理?如何制定和执行有效的预算?", + "follow_ups": [ + "预算编制的流程是怎样的?", + "如何监控预算执行情况并进行调整?", + "在预算管理中,你遇到过哪些挑战?如何克服的?" + ] + }, + { + "main_question": "请解释什么是成本核算?它在企业管理中的作用是什么?", + "follow_ups": [ + "你熟悉哪些成本核算方法?它们各自适用于什么场景?", + "如何通过成本核算来优化企业的成本结构?", + "如何处理间接成本的分配问题?" + ] + }, + { + "main_question": "什么是内部控制?如何建立有效的内部控制体系?", + "follow_ups": [ + "内部控制的目标是什么?", + "如何评估内部控制的有效性?", + "在内部控制方面,你有什么经验或案例?" + ] + }, + { + "main_question": "请解释什么是税务筹划?它与逃税有什么区别?", + "follow_ups": [ + "税务筹划的基本原则是什么?", + "如何在合法合规的前提下进行税务筹划?", + "你熟悉哪些常见的税务筹划方法?" + ] + } + ], + "answers": [ + "b\n", + "j", + "j", + "e", + "e", + "j", + "j", + "fg" + ], + "scores": [ + "良好", + "需要改进", + "需要改进", + "需要改进", + "需要改进", + "一般", + "需要改进", + "一般" + ], + "interviewers": [ + "压力型" + ], + "question_interviewers": [ + "压力型", + "压力型", + "压力型", + "压力型", + "压力型", + "压力型", + "压力型", + "压力型" + ], + "answer_timestamps": [ + { + "question_index": 0, + "start_time": "14:05:52", + "end_time": "14:06:01" + }, + { + "question_index": 1, + "start_time": "14:06:01", + "end_time": "14:06:07" + }, + { + "question_index": 1, + "start_time": "14:06:01", + "end_time": "14:06:13" + }, + { + "question_index": 2, + "start_time": "14:06:13", + "end_time": "14:06:16" + }, + { + "question_index": 2, + "start_time": "14:06:13", + "end_time": "14:06:18" + }, + { + "question_index": 3, + "start_time": "14:06:18", + "end_time": "14:06:21" + }, + { + "question_index": 3, + "start_time": "14:06:18", + "end_time": "14:06:22" + }, + { + "question_index": 4, + "start_time": "14:06:22", + "end_time": "14:06:24" + } + ], + "answer_durations": [ + 9.308703, + 5.804389, + 12.445434, + 2.173485, + 4.579575, + 2.529053, + 4.259709, + 1.818269 + ], + "answer_changes": [ + { + "question_index": 0, + "changes": 1 + }, + { + "question_index": 1, + "changes": 1 + }, + { + "question_index": 1, + "changes": 1 + }, + { + "question_index": 2, + "changes": 1 + }, + { + "question_index": 2, + "changes": 1 + }, + { + "question_index": 3, + "changes": 1 + }, + { + "question_index": 3, + "changes": 1 + }, + { + "question_index": 4, + "changes": 1 + } + ] +} \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..6b6dc15 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,9 @@ +[project] +name = "ai-interview-assistant" +version = "0.1.0" +description = "AI面试助手 - 模拟真实面试场景的智能面试工具" +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + "streamlit>=1.30.0" +] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..db2182f --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +streamlit>=1.30.0 diff --git a/selectimagetestpanel b/selectimagetestpanel new file mode 100644 index 0000000..e1043db Binary files /dev/null and b/selectimagetestpanel differ diff --git a/selectimagetestpanel.manifest b/selectimagetestpanel.manifest new file mode 100644 index 0000000..edf643b --- /dev/null +++ b/selectimagetestpanel.manifest @@ -0,0 +1,60 @@ +5ManifestFileVersion: 0 +CRC: 4228611898 +Hashes: + AssetFileHash: + serializedVersion: 2 + Hash: 0ddb102c671160339018710d962a6f2c + TypeTreeHash: + serializedVersion: 2 + Hash: 530c8b09e9603add61ff67b9c2ec48b4 +HashAppended: 0 +ClassTypes: +- Class: 1 + Script: {instanceID: 0} +- Class: 21 + Script: {instanceID: 0} +- Class: 28 + Script: {instanceID: 0} +- Class: 48 + Script: {instanceID: 0} +- Class: 83 + Script: {instanceID: 0} +- Class: 114 + Script: {fileID: 11500000, guid: 479ca151e3dd64142b7805bfdd2ae249, type: 3} +- Class: 114 + Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: -2095666955, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} +- Class: 114 + Script: {fileID: 11500000, guid: b327fb5a45599394785a02280293fd2f, type: 3} +- Class: 114 + Script: {fileID: 11500000, guid: edebb32c302401743a76bd15723eea42, type: 3} +- Class: 114 + Script: {fileID: 11500000, guid: 1c87ac6cba904654d9177bfba7d10319, type: 3} +- Class: 114 + Script: {fileID: 11500000, guid: 6e6d577c3c5996f4bb5536a797af6510, type: 3} +- Class: 115 + Script: {instanceID: 0} +- Class: 128 + Script: {instanceID: 0} +- Class: 213 + Script: {instanceID: 0} +- Class: 222 + Script: {instanceID: 0} +- Class: 224 + Script: {instanceID: 0} +Assets: +- Assets/Art/Prefab/Test/SelectImageTestPanel.prefab +Dependencies: +- /Users/bkdevops/yxs/YXS_Client_2019/pc_qqgame_release/Assets/StreamingAssets/AssetBundles/Windows/aap_gen_share +- /Users/bkdevops/yxs/YXS_Client_2019/pc_qqgame_release/Assets/StreamingAssets/AssetBundles/Windows/font/normal +- /Users/bkdevops/yxs/YXS_Client_2019/pc_qqgame_release/Assets/StreamingAssets/AssetBundles/Windows/upgrade_common/sounds +- /Users/bkdevops/yxs/YXS_Client_2019/pc_qqgame_release/Assets/StreamingAssets/AssetBundles/Windows/upgrade_common/textures