// 将面试题内容.json的Markdown格式转换为组件需要的结构化数据 import interviewQuestionsData from '../data/interviewQuestions.json'; // 解析Markdown格式的面试题内容 export const parseInterviewQuestions = (content) => { if (!content) return []; const questions = []; const lines = content.split('\n').filter(line => line.trim()); let currentQuestion = null; let currentAnswer = ''; let collectingAnswer = false; let questionIndex = 0; for (let i = 0; i < lines.length; i++) { const line = lines[i].trim(); // 跳过标题行 if (line.startsWith('#')) { continue; } // 匹配问题(数字开头) if (/^\d+\.\s/.test(line)) { // 保存上一个问题 if (currentQuestion && currentAnswer) { questions.push({ id: `q${questionIndex}`, question: currentQuestion, answer: currentAnswer.trim() }); questionIndex++; } // 开始新问题 currentQuestion = line.replace(/^\d+\.\s/, '').trim(); currentAnswer = ''; collectingAnswer = false; } // 匹配答案标记 else if (line.includes('答案:') || line.includes('示例回答:') || line.includes('参考答案:')) { collectingAnswer = true; // 提取答案内容(可能在同一行) const answerMatch = line.match(/(?:答案:|示例回答:|参考答案:)(.*)/); if (answerMatch && answerMatch[1]) { currentAnswer = answerMatch[1].trim(); } } // 收集答案内容 else if (collectingAnswer && line) { // 如果是新的段落或列表项,添加换行 if (currentAnswer && !line.startsWith('-') && !line.startsWith('•')) { currentAnswer += ' '; } currentAnswer += line; } } // 保存最后一个问题 if (currentQuestion && currentAnswer) { questions.push({ id: `q${questionIndex}`, question: currentQuestion, answer: currentAnswer.trim() }); } return questions; }; // 创建岗位群到面试题的映射 export const createInterviewQuestionsMap = () => { const map = {}; interviewQuestionsData.forEach(item => { const groupName = item['岗位群名称']; const questions = parseInterviewQuestions(item['面试题内容']); // 只保留前10个问题(避免内容过多) map[groupName] = questions.slice(0, 10); }); return map; }; // 导出映射 export const interviewQuestionsMap = createInterviewQuestionsMap(); // 根据岗位群名称获取格式化的面试题 export const getFormattedQuestions = (groupName) => { return interviewQuestionsMap[groupName] || []; };