










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