關鍵詞:JavaWeb開發(fā);SpringBoot;結(jié)構(gòu)化面試;一體化系統(tǒng)
0 引言
結(jié)構(gòu)化面試是根據(jù)招聘崗位需求,通過特定的測評內(nèi)容、測評標準、測評程序,由特定的面試小組與應聘人員進行面對面交流的一種人才測評過程。通過結(jié)構(gòu)化面試,考官能全面評價應聘人員的綜合能力,包括社會現(xiàn)象分析能力、組織協(xié)調(diào)能力、綜合分析能力等。與傳統(tǒng)面試形式相比,結(jié)構(gòu)化面試的內(nèi)容、評分標準及程序均按統(tǒng)一的規(guī)定進行[1]。自2006年起,我國在事業(yè)單位招聘考試中確立了“凡進必考”的招聘原則[2]。結(jié)構(gòu)化面試長期以來作為公務員招錄考試、事業(yè)單位公開招聘考試中測評應試者綜合能力和素質(zhì)的一種常用面試方法,在優(yōu)化人才選拔、彰顯考試公平方面具有重要意義。目前,大部分的結(jié)構(gòu)化面試仍以紙質(zhì)化方式記錄面試評分數(shù)據(jù),并采用人工方式實現(xiàn)計時、計分、核分等環(huán)節(jié),不僅組織困難、效率低下,而且需要支出大量的人力成本和資金成本。通過計算機技術對整個結(jié)構(gòu)化面試流程進行信息化管理,一方面可以高效組織面試流程,節(jié)約時間成本,實現(xiàn)對面試的程序化、規(guī)范化管理;另一方面可以對面試數(shù)據(jù)進行格式化存儲和可視化分析,為優(yōu)化結(jié)構(gòu)化面試策略提供數(shù)據(jù)支撐。
1 系統(tǒng)需求分析
需求分析旨在明確系統(tǒng)開發(fā)目標和范圍,主要分為系統(tǒng)功能需求和非功能需求(包括性能需求、安全需求等)。實現(xiàn)結(jié)構(gòu)化面試的無紙化管理須遵循現(xiàn)有結(jié)構(gòu)化面試流程:面試開始前,須根據(jù)報考崗位對考生進行分組,并在組內(nèi)抽簽確定考生面試次序;同時根據(jù)考場情況對所有考官進行抽簽,確定每個考場的主考官人選,依據(jù)抽簽結(jié)果確定每個考官的考場號、座位號;最后將考生抽簽結(jié)果數(shù)據(jù)、考官抽簽結(jié)果數(shù)據(jù)匯總到各考場進行面試[3]。系統(tǒng)功能需求分為考生管理、考官管理、核分管理、數(shù)據(jù)管理,各部分功能需求如圖1所示。
2 系統(tǒng)體系結(jié)構(gòu)
該結(jié)構(gòu)化面試一體化系統(tǒng)采用經(jīng)典的基于Java? Web開發(fā)技術的三層體系架構(gòu),即表現(xiàn)層、業(yè)務邏輯層、數(shù)據(jù)持久層。表現(xiàn)層面向用戶,用于發(fā)起網(wǎng)絡請求以及響應數(shù)據(jù)處理結(jié)果,其中考生管理服務、考官管理服務、數(shù)據(jù)管理服務采用Thymeleaf模板引擎來解析HTML網(wǎng)頁數(shù)據(jù);電子評分系統(tǒng)使用Android應用程序?qū)崿F(xiàn)考官的評分結(jié)果與后端核分業(yè)務邏輯的數(shù)據(jù)交互[4]。業(yè)務邏輯層用于面向前端提供數(shù)據(jù)服務,接收前端發(fā)送的數(shù)據(jù)處理請求,根據(jù)既定的業(yè)務規(guī)則處理數(shù)據(jù)后返回給前端。業(yè)務邏輯層基于SpringBoot,采用SpringMVC+Spring+MyBatis(SSM) 技術架構(gòu),完成視圖解析、業(yè)務邏輯處理、數(shù)據(jù)持久化等功能。數(shù)據(jù)庫采用關系型數(shù)據(jù)庫MySQL與非關系型數(shù)據(jù)庫Redis 結(jié)合的方式,Redis 用于數(shù)據(jù)緩存,MySQL用于對業(yè)務數(shù)據(jù)進行持久化存儲。整體系統(tǒng)體系結(jié)構(gòu)如圖2所示。
3 系統(tǒng)設計
系統(tǒng)服務在運行過程中會產(chǎn)生大量的考試信息數(shù)據(jù),主要包含考生信息、考官信息、考生成績信息等,需要進行持久化存儲。MySQL作為傳統(tǒng)的關系型數(shù)據(jù)庫,其使用便捷和穩(wěn)定的事務處理機制在數(shù)據(jù)存儲和管理方面有著重要作用。而對于系統(tǒng)中頻繁訪問的數(shù)據(jù),如考場編號、考生分數(shù)等,使用MySQL直接存儲會造成系統(tǒng)訪問壓力,降低運行速度,因此增加Redis 數(shù)據(jù)庫對熱點數(shù)據(jù)進行中間緩存可以減緩對MySQL的訪問壓力,提升系統(tǒng)效率。
3.1 關系型數(shù)據(jù)庫設計
考生管理系統(tǒng)服務與考官管理系統(tǒng)服務最終的目的是獲取考生的抽簽結(jié)果數(shù)據(jù)以及考官的抽簽結(jié)果數(shù)據(jù)。由于兩個服務在部署的物理位置上存在隔離,故擁有獨立的數(shù)據(jù)庫,分別命名為examee_draw_ lots和examiner_draw_lots。數(shù)據(jù)庫表分別存儲考生的基本信息、簽到信息、抽簽結(jié)果,以及考官的基本信息、簽到信息、抽簽結(jié)果。考生的抽簽結(jié)果表包含身份證號、抽簽號、分組號等字段;考官的抽簽結(jié)果包含考官身份證號、姓名、身份(主考官或普通考官)、考場號、座位號。
電子評分系統(tǒng)服務與數(shù)據(jù)管理服務均包含對考生面試得分的數(shù)據(jù)處理模塊,并要實現(xiàn)實時的數(shù)據(jù)同步,因此涉及的關系型數(shù)據(jù)包含相同的字段,用于記錄每位考官對每位考生的賦分分值,數(shù)據(jù)庫表中包含的字段如表1所示。
3.2 非關系型數(shù)據(jù)庫設計
在電子評分系統(tǒng)服務中,服務端的主要功能是控制整個面試流程的自動進行,獲取每個考官對某個考生的評分結(jié)果,并根據(jù)一定的核分規(guī)則計算考生的最終成績。實現(xiàn)該功能需要實時記錄當前考場的面試進度、賦分進度和核分進度。為提升系統(tǒng)性能,采用Redis數(shù)據(jù)庫對考場情況、賦分情況等熱點數(shù)據(jù)進行緩存,并配置持久化策略[5]。例如,存儲考生的分數(shù)數(shù)據(jù)時采用Hash數(shù)據(jù)結(jié)構(gòu),鍵的命名規(guī)則采用組合方式,如“Score-A1-3”代表“A1”考場“3”號考生的分數(shù)。每個考生在面試時會有多位考官進行賦分,因此在記錄考生分數(shù)的Hash結(jié)構(gòu)中,值的Filed存儲考官的編號,Value存儲實際的分值。Redis中具體的數(shù)據(jù)結(jié)構(gòu)設計如表2所示。
4 系統(tǒng)實現(xiàn)
系統(tǒng)功能的實現(xiàn)緊密依托當前的結(jié)構(gòu)化面試組織流程,該一體化系統(tǒng)的實現(xiàn)可以進一步精簡相關角色,如計時員、記分員等。精簡后的角色包含考務辦公室工作人員、候考室工作人員、考官室工作人員、考場內(nèi)工作人員、考官五類角色。其中,考務辦公室工作人員負責配置本次考試的相關信息,如考生的身份信息、考官的身份信息以及考場信息(包括考場數(shù)量、各考場面試人數(shù))等;候考室工作人員負責對1個或多個考場的考生進行簽到及抽簽,獲取每位考生的面試次序;考官室工作人員負責對所有考官進行批量抽簽,確定每位考官所在的考場以及座位號;考場內(nèi)工作人員負責下載本考場的面試考生抽簽結(jié)果數(shù)據(jù)以及考官抽簽結(jié)果數(shù)據(jù),控制本考場的面試流程;考官負責對每位考生進行面試測評并給出面試分數(shù)。整體的流程圖及各角色職能如圖3所示。
4.1 數(shù)據(jù)管理服務
數(shù)據(jù)管理服務對外發(fā)布考生信息、考官信息、考場信息、評分要素等數(shù)據(jù)的下載接口。該模塊包含數(shù)據(jù)下載驗證程序,相應的系統(tǒng)角色在考前會分別收到各自角色的數(shù)據(jù)下載授權(quán)碼。在進行數(shù)據(jù)上傳與下載時,需要輸入對應的授權(quán)碼,服務端校驗通過后方能進行數(shù)據(jù)上傳與下載操作。數(shù)據(jù)被下載之后,服務端會記錄下載次數(shù),禁止重復下載及多次下載以確保數(shù)據(jù)的一致性。
數(shù)據(jù)管理模塊與其他系統(tǒng)服務間的數(shù)據(jù)通信使用基于Spring 的REST 訪問工具RestTemplate 來實現(xiàn)。RestTemplate簡化了HttpClient發(fā)起網(wǎng)絡請求的接口,使發(fā)送HTTP請求更加便捷。例如,下載考生抽簽數(shù)據(jù)時,只需要配置目標服務器URL,添加訪問參數(shù)并發(fā)起請求,即可獲取考生抽簽數(shù)據(jù)。具體代碼如圖4所示。
4.2 考官管理服務與考生管理服務
考生管理系統(tǒng)服務與考官管理系統(tǒng)服務的核心功能是實現(xiàn)抽簽。在實際操作過程中,無論是考官還是考生,均須先進行簽到才可以抽簽。在考官管理服務中,主考官不允許缺考,且存在主考官和普通考官兩種不同身份;在考生管理服務中,允許考生缺考。
考官管理服務抽簽模塊中,考官在簽到時需要確定考官身份,且主考官數(shù)量必須與考場數(shù)量相等,操作界面如圖5所示。抽簽時,由考官管理員進行一次性集體抽簽,確定考官所在的考場及座位號,最后將抽簽結(jié)果上傳至考點服務器。
在考生管理服務抽簽模塊中,實行逐個抽簽的操作模式,考生在簽到時完成抽簽活動。由于考生抽簽過程持續(xù)時間較長,為避免斷電等意外情況造成的數(shù)據(jù)丟失,考生抽簽過程在MySQL數(shù)據(jù)庫中用臨時表記錄并進行事務管理與持久化存儲。系統(tǒng)根據(jù)考生預先的分組數(shù)量及各組的考試人數(shù)分別創(chuàng)建一條數(shù)據(jù)記錄,最后形成數(shù)據(jù)抽簽池??忌灥綍r,隨機從考生所在組內(nèi)挑選一個序號分配給該考生;待抽簽完畢后,抽簽池內(nèi)剩余序號即為該組的缺考序號,最后將抽簽結(jié)果與缺考人員序號上傳至考點服務器。
4.3 電子評分系統(tǒng)服務
電子評分系統(tǒng)服務的功能是從考點服務器下載各考場的考生信息、考官信息,依據(jù)考試評分標準按次序完成對考生的賦分、核分操作,主要包含以下幾個模塊。
4.3.1 設置當前的面試考生
該系統(tǒng)可以實現(xiàn)面試流程的自動控制。主考官開啟面試流程后,系統(tǒng)跳過當前的缺考考生,呈現(xiàn)給考官們當前待面試考生的面試序號;考官賦分、系統(tǒng)核算分數(shù)完畢后,繼續(xù)流轉(zhuǎn)到下一個考生,如此循環(huán),直到面試結(jié)束。其中,設置當前待面試考生是電子評分系統(tǒng)服務的關鍵功能。主考官開啟面試流程前,應用程序通過獲取本考場的總?cè)藬?shù),創(chuàng)建包含所有人序號的數(shù)據(jù)列表??忌粘楹炌戤吅?,會將缺考考生信息上傳至考點服務器,電子評分系統(tǒng)服務獲取相應考場的缺考信息,并將本考場的缺考人員序號創(chuàng)建一個Set集合,最后將所有人序號列表與該Set集合求補集得出待面試人員集合,以列表(rightPush方式)形式存入Redis中??脊匍_啟面試時,通過獲取Redis對應列表的最左側(cè)元素作為待面試考生,代碼實現(xiàn)如下:
4.3.2 展現(xiàn)面試進度與賦分進度
在考官賦分界面及考場內(nèi)管理員界面,均包含本考場的面試進度及當前考生的賦分進度。在面試進度功能模塊中,根據(jù)考生的面試狀態(tài),主要分“未面試考生”“正在面試考生”“面試結(jié)束考生”“缺考考生”。
在Redis數(shù)據(jù)庫中,以List形式存儲待面試考生的面試抽簽號序列,其中List的第一個元素為正在面試的考生,其余考生為未面試考生。同時,以Set形式存儲面試結(jié)束考生的抽簽號及缺考考生的抽簽號。從Re? dis數(shù)據(jù)庫中獲取上述四種不同面試狀態(tài)的考生號序列,以HashMSiNZzPTzhOQzBtobANpDAF6gvOtk1QZ730pUlpNZKLM=ap形式返回給前端,前端通過數(shù)據(jù)解析后,為考官及考場管理員展現(xiàn)面試進度。
在當前考生賦分進度界面中,考官的賦分狀態(tài)分為“已賦分”“未賦分”。在Redis 數(shù)據(jù)庫中,每位考官對當前考生賦分后,會以Hash形式存儲考生的面試序號和分數(shù)。通過遍歷Redis 數(shù)據(jù)庫中考官對當前考生的賦分情況,可以獲取考官的賦分狀態(tài),最后返回至前端,界面如圖6 所示。
進行面試測評時,考生須在規(guī)定的考試時間內(nèi)完成答題,系統(tǒng)須添加倒計時功能來提示考官及考生當前的時間進度。系統(tǒng)采用客戶端與服務器雙向校驗的方式實現(xiàn)倒計時功能,既能緩解多個客戶端并發(fā)訪問帶來的服務器壓力,又能實現(xiàn)精準計時。其設計思路流程圖如圖7所示。
4.3.3 考官賦分功能實現(xiàn)
考官賦分界面面向考官,實現(xiàn)對考生綜合評價的打分功能。面試開始前,由考場管理員下載評分要素,考官根據(jù)各評分要素分別進行評分。系統(tǒng)會對考官的賦分情況進行數(shù)據(jù)校驗,當單個要素分值超過最高分值時,會提示錯誤并清空打分數(shù)據(jù)??脊冱c擊暫存按鈕后,輸入框變?yōu)橹蛔x屬性,并自動計算4個要素的分值之和,如圖8所示。考官點擊提交分數(shù)按鈕后,系統(tǒng)將各評分要素的分值及分數(shù)總和提交至后臺,后端數(shù)據(jù)校驗無誤后存入數(shù)據(jù)庫。當所有考官都提交成績后,系統(tǒng)計算考生最終的面試成績。
4.3.4 計算考生面試成績
計算考生的面試成績是系統(tǒng)的核心功能??紤]到不同的結(jié)構(gòu)化面試在計算考生最終成績時存在不同的計算策略,該部分設計定義了一個計算策略的頂層接口,采用策略設計模式,不同的計算策略分別實現(xiàn)該接口,最后根據(jù)不同的應用場景自由切換計算策略。結(jié)構(gòu)化面試普遍的計算方法為:7名考官分別打分,去掉一個最高分和一個最低分,其余5名考官求平均得分。在實現(xiàn)該方法時,首先將7名考官的得分存入一個double數(shù)組,然后由小到大進行排序,最后將數(shù)組下標為1至5的元素求平均值,保留3位小數(shù)后格式化輸出。
5 系統(tǒng)部署
該一體化系統(tǒng)涉及的各個應用服務均部署在Linux服務器上,采用CentOS 7操作系統(tǒng)和JDK 17運行環(huán)境,數(shù)據(jù)庫使用MySQL 5.7版本和Redis 5.0版本。出于可靠性、可用性、安全性的系統(tǒng)需求,各個物理隔離的區(qū)域內(nèi)分別配置了一臺應用服務器向該區(qū)域提供應用服務。在實際業(yè)務場景中,通常多個考場同時進行面試,且各個考場面試進度不一致,因此每個考場分別配置一臺計算機或服務器向該考場提供評分服務與計算,單個考場若產(chǎn)生數(shù)據(jù)異常也不會影響其他考場的面試進度。各服務通過HTTP方式與數(shù)據(jù)管理服務器進行數(shù)據(jù)同步,整體部署圖如圖9所示。
6 結(jié)論
本文根據(jù)結(jié)構(gòu)化面試的具體流程,基于Spring? Boot最新開發(fā)技術,采用經(jīng)典的SSM三層架構(gòu)開發(fā)模式,設計開發(fā)了結(jié)構(gòu)化面試一體化系統(tǒng)。該系統(tǒng)從考生簽到、隨機抽簽到最終匯總評分,實現(xiàn)了標準化與自動化管理,提升了面試過程的公正性與客觀性。系統(tǒng)通過測試,并在包頭市人事考試結(jié)構(gòu)化面試中得到具體應用,取得良好運行效果。未來,系統(tǒng)將結(jié)合人工智能技術,通過訓練深度學習模型,識別考生答題的關鍵信息和邏輯結(jié)構(gòu),實現(xiàn)智能評分,為考官賦分提供參考。