計(jì)算機(jī)程序設(shè)計(jì)員技能操作試題(職業(yè)資格高級(jí))_第1頁
計(jì)算機(jī)程序設(shè)計(jì)員技能操作試題(職業(yè)資格高級(jí))_第2頁
計(jì)算機(jī)程序設(shè)計(jì)員技能操作試題(職業(yè)資格高級(jí))_第3頁
計(jì)算機(jī)程序設(shè)計(jì)員技能操作試題(職業(yè)資格高級(jí))_第4頁
計(jì)算機(jī)程序設(shè)計(jì)員技能操作試題(職業(yè)資格高級(jí))_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

計(jì)算機(jī)程序設(shè)計(jì)員技能操作試題(職業(yè)資格高級(jí))一、項(xiàng)目背景與需求說明某教育科技公司擬開發(fā)一套在線考試系統(tǒng),核心目標(biāo)是支持大規(guī)模(單場考試最大并發(fā)1000人)、多類型(覆蓋單選題、多選題、判斷題、主觀題)、高安全性的在線考試場景。請(qǐng)根據(jù)以下具體需求,完成系統(tǒng)核心模塊的設(shè)計(jì)、編碼及測試工作。二、具體任務(wù)要求任務(wù)1:需求分析與系統(tǒng)架構(gòu)設(shè)計(jì)(20分)需求概述:系統(tǒng)需支持以下核心功能:1.用戶認(rèn)證與權(quán)限管理:用戶分為考生、教師、管理員三類;考生通過手機(jī)號(hào)+短信驗(yàn)證碼登錄,教師/管理員通過用戶名+密碼登錄(密碼需采用PBKDF2WithHmacSHA256算法加密存儲(chǔ));需實(shí)現(xiàn)角色權(quán)限控制(如考生僅能參與考試,教師可管理試題庫,管理員可管理用戶)。2.考試流程控制:支持固定時(shí)長考試(如60分鐘),包含倒計(jì)時(shí)提醒(剩余10分鐘、5分鐘彈窗提示)、超時(shí)自動(dòng)交卷;支持考試中斷后恢復(fù)(如考生因網(wǎng)絡(luò)問題退出,重新登錄可繼續(xù)答題,已答內(nèi)容需實(shí)時(shí)保存)。3.智能組卷:根據(jù)教師設(shè)定的組卷規(guī)則(知識(shí)點(diǎn)分布:Java基礎(chǔ)40%、數(shù)據(jù)庫30%、操作系統(tǒng)30%;難度分布:簡單30%、中等50%、困難20%;總題數(shù)100題),從試題庫(當(dāng)前約10萬道題)中快速生成個(gè)性化試卷(同一考生多次考試試題不重復(fù),不同考生試卷難度均衡)。4.實(shí)時(shí)答題與評(píng)分:支持單選題(每題2分)、多選題(少選得1分,錯(cuò)選0分,每題3分)、判斷題(每題1分)的自動(dòng)評(píng)分;主觀題(每題10分)需記錄考生答案,由教師后期人工評(píng)分;考生提交試卷后實(shí)時(shí)顯示客觀題得分,主觀題得分在教師評(píng)閱后同步。5.性能與安全要求:單場考試1000人并發(fā)時(shí),頁面響應(yīng)時(shí)間≤2秒;試題內(nèi)容傳輸需加密(HTTPS);防止SQL注入、XSS攻擊;數(shù)據(jù)庫需支持快速查詢(如組卷時(shí)篩選符合條件試題的時(shí)間≤500ms)。任務(wù)要求:-繪制系統(tǒng)邏輯架構(gòu)圖(需包含用戶層、應(yīng)用層、服務(wù)層、數(shù)據(jù)層),說明各層功能及關(guān)鍵組件(如應(yīng)用層需包含認(rèn)證服務(wù)、考試服務(wù)、組卷服務(wù);數(shù)據(jù)層需包含MySQL數(shù)據(jù)庫、Redis緩存)。-設(shè)計(jì)分布式會(huì)話管理方案(需考慮考生跨設(shè)備中斷后恢復(fù)場景),說明技術(shù)選型(如JWT+Redis)及實(shí)現(xiàn)邏輯(如會(huì)話過期時(shí)間設(shè)置為考試時(shí)長+30分鐘,Redis存儲(chǔ)用戶當(dāng)前考試狀態(tài))。-分析高并發(fā)場景下的性能瓶頸點(diǎn)(如數(shù)據(jù)庫連接池、組卷算法效率、緩存命中率),提出優(yōu)化策略(如使用連接池大小設(shè)置為CPU核心數(shù)×2,組卷算法采用預(yù)篩選+加權(quán)隨機(jī),Redis緩存高頻訪問試題)。任務(wù)2:數(shù)據(jù)庫設(shè)計(jì)(20分)數(shù)據(jù)需求:系統(tǒng)需存儲(chǔ)以下核心數(shù)據(jù):-用戶信息:手機(jī)號(hào)/用戶名、密碼(加密后)、角色(考生/教師/管理員)、注冊(cè)時(shí)間。-試題信息:試題ID(自增主鍵)、題型(單選/多選/判斷/主觀)、知識(shí)點(diǎn)(如Java基礎(chǔ))、難度(1-5級(jí),1為簡單)、題干、選項(xiàng)(多選題專有)、正確答案(主觀題無)、分值、創(chuàng)建人(教師ID)、創(chuàng)建時(shí)間。-考試記錄:考試ID(UUID)、考生ID、試卷ID(組卷生成的唯一標(biāo)識(shí))、開始時(shí)間、結(jié)束時(shí)間(自動(dòng)交卷時(shí)記錄)、客觀題得分、主觀題得分(初始為0)、是否提交(布爾值)。-答題明細(xì):答題ID(自增主鍵)、考試ID、試題ID、考生答案(主觀題答案為文本)、是否正確(客觀題專有)、得分(客觀題自動(dòng)計(jì)算,主觀題后期人工填寫)。任務(wù)要求:-設(shè)計(jì)E-R圖(需包含用戶、試題、考試記錄、答題明細(xì)四個(gè)實(shí)體及關(guān)系),說明實(shí)體間的關(guān)聯(lián)(如考生與考試記錄為一對(duì)多,考試記錄與答題明細(xì)為一對(duì)多)。-給出MySQL數(shù)據(jù)表結(jié)構(gòu)(需包含字段名、類型、約束、索引設(shè)計(jì)),示例如下:-`user_table`:user_id(BIGINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT)、phone(VARCHAR(11)UNIQUE)、username(VARCHAR(50)UNIQUE)、password_hash(CHAR(64))、salt(CHAR(16))、role(TINYINT)、reg_time(DATETIMEDEFAULTCURRENT_TIMESTAMP)。-`question_table`:question_id(BIGINTUNSIGNEDPRIMARYKEYAUTO_INCREMENT)、type(ENUM('SINGLE','MULTI','JUDGE','SUBJECTIVE'))、knowledge_point(VARCHAR(50))、difficulty(TINYINT)、content(TEXT)、options(JSON)、correct_answer(VARCHAR(100))、score(DECIMAL(5,2))、creator_id(BIGINTUNSIGNED)、create_time(DATETIMEDEFAULTCURRENT_TIMESTAMP);需為`knowledge_point`、`difficulty`、`type`字段添加聯(lián)合索引(加速組卷篩選)。-設(shè)計(jì)主觀題評(píng)分日志表(記錄教師評(píng)分操作),包含字段:log_id(自增主鍵)、exam_id(考試ID)、question_id(試題ID)、scorer_id(教師ID)、old_score(修改前得分)、new_score(修改后得分)、score_time(DATETIME)、remark(文本備注)。任務(wù)3:核心功能編碼實(shí)現(xiàn)(40分)開發(fā)環(huán)境與技術(shù)棧:-后端:Java17、SpringBoot3.2.0、MyBatis-Plus3.5.4、Redis7.0(lettuce客戶端)、RabbitMQ3.12(處理異步任務(wù))。-前端:Vue3、ElementPlus(僅需考慮接口設(shè)計(jì),無需編寫前端代碼)。任務(wù)要求:3.1用戶認(rèn)證模塊(8分)-實(shí)現(xiàn)考生登錄接口(POST/api/examinee/login),輸入為手機(jī)號(hào)、短信驗(yàn)證碼(需調(diào)用第三方短信接口驗(yàn)證,此處模擬:驗(yàn)證碼為6位數(shù)字,有效期5分鐘,Redis存儲(chǔ)格式:`sms:${phone}:code`);返回JWT令牌(有效期為考試時(shí)長+30分鐘,負(fù)載包含user_id、role)。-實(shí)現(xiàn)教師登錄接口(POST/api/teacher/login),輸入為用戶名、密碼(需驗(yàn)證密碼:`hash=PBKDF2(password,salt,65536,256)`,鹽值從數(shù)據(jù)庫獲取);登錄成功后生成會(huì)話(Redis存儲(chǔ)格式:`session:${user_id}`,值為JWT令牌,用于分布式會(huì)話校驗(yàn))。-設(shè)計(jì)權(quán)限攔截器(基于SpringAOP),攔截所有接口請(qǐng)求,校驗(yàn)JWT令牌有效性及用戶角色(如訪問`/api/exam/start`需考生角色,訪問`/api/question/manage`需教師角色)。3.2智能組卷模塊(12分)-實(shí)現(xiàn)組卷算法(核心類`PaperGenerator`),輸入為組卷規(guī)則(知識(shí)點(diǎn)比例、難度比例、總題數(shù)),輸出為試卷試題列表(`List<Long>`試題ID)。要求:-預(yù)篩選:根據(jù)知識(shí)點(diǎn)(Java基礎(chǔ)、數(shù)據(jù)庫、操作系統(tǒng))和難度(1-2為簡單,3為中等,4-5為困難)從`question_table`篩選候選試題(使用MyBatis-Plus的`QueryWrapper`,條件:`knowledge_pointIN('Java基礎(chǔ)','數(shù)據(jù)庫','操作系統(tǒng)')ANDdifficultyIN(1,2,3,4,5)`)。-按比例分配題數(shù):總題數(shù)100題,Java基礎(chǔ)占40題(40%),數(shù)據(jù)庫30題,操作系統(tǒng)30題;每類知識(shí)點(diǎn)中,簡單題占該知識(shí)點(diǎn)題數(shù)的30%(如Java基礎(chǔ)40題中,簡單題12題),中等50%(20題),困難20%(8題)。-隨機(jī)抽?。簩?duì)每類知識(shí)點(diǎn)+難度的候選試題,使用加權(quán)隨機(jī)算法(權(quán)重=試題被使用次數(shù)的倒數(shù),避免重復(fù)抽題;如某試題未被使用過,權(quán)重為1;被使用過1次,權(quán)重為0.5),抽取對(duì)應(yīng)題數(shù)。-防重復(fù):檢查考生歷史考試記錄(`exam_record`表中該考生的`paper_id`關(guān)聯(lián)的`question_id`),避免抽取已考過的試題。-編寫組卷接口(POST/api/paper/generate),輸入為教師ID、組卷規(guī)則(JSON格式),輸出為試卷ID(UUID)及試題列表(需包含題干、選項(xiàng)、分值)。3.3考試流程控制模塊(10分)-實(shí)現(xiàn)考試開始接口(POST/api/exam/start),輸入為考試ID(教師創(chuàng)建的考試場次ID),輸出為試卷內(nèi)容(試題列表),并啟動(dòng)倒計(jì)時(shí)任務(wù)(使用`ScheduledExecutorService`):-倒計(jì)時(shí)邏輯:考試時(shí)長60分鐘,每1分鐘檢查一次剩余時(shí)間;剩余10分鐘、5分鐘時(shí),通過WebSocket向考生推送提醒(需設(shè)計(jì)WebSocket連接管理,使用Spring的`@ServerEndpoint`)。-自動(dòng)交卷:倒計(jì)時(shí)結(jié)束時(shí),觸發(fā)`autoSubmit`方法,調(diào)用答題保存接口(保證事務(wù)性),并更新`exam_record`表的`is_submitted`為`true`。-實(shí)現(xiàn)答題保存接口(POST/api/exam/save-answer),輸入為考試ID、試題ID、考生答案(JSON格式),要求:-客觀題(單選、多選、判斷)實(shí)時(shí)計(jì)算得分(如單選題答案匹配`correct_answer`則得滿分,多選題需判斷考生答案是否為正確答案的子集:全對(duì)得3分,少選得1分,錯(cuò)選得0分)。-使用Redis緩存臨時(shí)答題數(shù)據(jù)(鍵:`exam:${exam_id}:${user_id}:answers`,值:JSON格式的答題明細(xì)),每30秒異步寫入數(shù)據(jù)庫(通過RabbitMQ發(fā)送`SAVE_ANSWER`消息,消費(fèi)者將緩存數(shù)據(jù)批量插入`answer_detail`表)。-處理并發(fā)沖突:當(dāng)同一考生同時(shí)在兩臺(tái)設(shè)備答題時(shí),后登錄的設(shè)備需踢掉前設(shè)備的WebSocket連接(通過Redis記錄當(dāng)前在線設(shè)備ID,新連接建立時(shí)校驗(yàn))。3.4評(píng)分與統(tǒng)計(jì)模塊(10分)-實(shí)現(xiàn)客觀題自動(dòng)評(píng)分接口(POST/api/exam/auto-score),輸入為考試ID,邏輯:-從`answer_detail`表查詢?cè)摽荚嚨目陀^題答題記錄,根據(jù)題型調(diào)用評(píng)分策略類(如`SingleChoiceScorer`、`MultiChoiceScorer`)計(jì)算得分。-更新`exam_record`表的`objective_score`字段(客觀題總分),并觸發(fā)事件通知考生(通過WebSocket推送“客觀題得分已生成”)。-實(shí)現(xiàn)主觀題人工評(píng)分接口(POST/api/exam/manual-score),輸入為考試ID、試題ID、教師ID、得分、備注,要求:-校驗(yàn)教師權(quán)限(僅該考試關(guān)聯(lián)的出題教師可評(píng)分)。-記錄評(píng)分日志到`score_log`表(需包含修改前后得分)。-若主觀題得分更新,重新計(jì)算考試總得分(`total_score=objective_score+subjective_score`),并更新`exam_record`表。任務(wù)4:測試用例設(shè)計(jì)與性能調(diào)優(yōu)(20分)4.1功能測試用例(10分)-設(shè)計(jì)至少8個(gè)測試用例,覆蓋以下場景:-考生登錄:使用錯(cuò)誤短信驗(yàn)證碼(預(yù)期返回401)、正常登錄(返回JWT令牌)。-組卷功能:知識(shí)點(diǎn)比例不滿足(如Java基礎(chǔ)候選試題僅30題,無法滿足40題需求),算法需自動(dòng)調(diào)整(從其他知識(shí)點(diǎn)補(bǔ)充,優(yōu)先選擇難度匹配的試題)。-考試中斷恢復(fù):考生答題10分鐘后關(guān)閉瀏覽器,重新登錄后檢查已答內(nèi)容是否恢復(fù)(Redis緩存數(shù)據(jù)是否存在,數(shù)據(jù)庫是否已異步保存)。-自動(dòng)交卷:考試剩余時(shí)間10秒時(shí),考生未提交,倒計(jì)時(shí)結(jié)束后檢查`exam_record`表的`is_submitted`是否為`true`,`answer_detail`表是否有完整答題記錄。-主觀題評(píng)分:教師重復(fù)評(píng)分同一試題(第二次評(píng)分日志需記錄修改前的舊得分)。4.2性能測試與調(diào)優(yōu)(10分)-使用JMeter模擬1000人并發(fā)進(jìn)入考試場景(線程數(shù)1000,循環(huán)1次,Ramp-Up時(shí)間30秒),監(jiān)控以下指標(biāo):-后端接口響應(yīng)時(shí)間(目標(biāo):平均≤2秒,95%分位≤3秒)。-MySQL數(shù)據(jù)庫QPS(目標(biāo):≤1000次/秒,避免鎖競爭)。-Redis內(nèi)存使用(目標(biāo):緩存命中率≥90%)。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論