CHƯƠNG 1. Khảo sát hiện trạng - Sự phát triển của công nghệ thông tin đã và đang làm thay đổi toàn bộ thế giới. Mọi ngành nghề, mọi lĩnh vực như kinh tế, y khoa, công nghiệp… dần dần được tin học hóa và làm cho công việc trở nên dễ dàng, nhanh chóng, chính xác hơn. - Đặc biệt trong công tác giáo dục và cả trong các công tác thi cử tuyển nhân sự, việc tin học hóa góp phần nâng cao chất lượng dạy và học cũng như kiểm tra.
Cho nên, hình thức thi trắc nghiệm hay trắc nghiệm kết hợp với tin học đã trở thành một trong những hình thức thi phổ biến nhất trên thế giới. - Với ưu điểm khách quan, chính xác và thuận tiện cho cả người ra đề và thí sinh đi thi, hình thức thi này đã được áp dụng ở hầu khắp các nước, đặc biệt là trong các kỳ thi của các tổ chức lớn có phạm vi toàn cầu như ETS (Educational Testing Service) – tổ chức các kỳ thi TOEFL, GMAT, GRE…, Microsoft – tổ chức các kỳ thi MCSE, MCAD… - Tại Việt Nam, trong những năm gần đây, song song với việc đổi mới phương pháp dạy và học, việc đổi mới hình thức thi cử cũng trở thành một việc làm cấp thiết. Trong các hình thức thi cử, trắc nghiệm khách quan là hình thức được nhiều người chú ý nhất do những ưu điểm của nó trong việc kiểm tra, đánh giá trình độ người dự thi như: khách quan, trung thực, kiểm tra được nhiều kiến thức, tránh được việc học tủ, học vẹt…Do đó, trắc nghiệm đang là khuynh hướng của hầu hết các kỳ thi ở Việt Nam hiện nay. - Chính vì vậy việc áp dụng tính năng này vào trong công tác tuyển nhân viên cho các công ty để xác định được trình độ chuyên môn cũng đang trên đà phát triển 1.
Tính cấp thiết của đề tài - Việc phỏng vấn theo kiểu trực tiếp face to face chưa tối ưu về mặt thời gian và công sức o Người phỏng vấn chỉ có thể gặp một số lượng ứng viên nhất định trong một đợt phỏng vấn để có thể hiểu rõ năng lực của từng ứng viên o Bên cạnh đó người phỏng vấn phải kiểm tra từng người trong số họ để chọn lọc những ứng cử viên sáng giá, chính vì thế làm tốn rất nhiều thời gian cho người phỏng vấn cũng như kinh phí của công ty cho việc phỏng vấn - Vấn đề đặt ra: Vậy có nên đưa tất cả các ứng viên vào trong một bài kiểm tra cụ thể do người phỏng vấn đặt ra, sau đó chọn lọc ra các ứng viên sáng giá một cách nhanh chóng? Từ đó sẻ giảm số lượng ứng viên sẽ cần phải phỏng vấn trực tiếp? - Giải quyết vấn đề trên, việc thi giấy truyền thống cũng là một cách, nhưng cũng tiêu tốn khá nhiều chi phí cho việc setup các tài liệu, đánh máy, khó chọn lọc câu hỏi theo loại của các câu hỏi từ những bài kiểm tra trước, in ra,… 15 do an - Chính vì thế việc cần một phần mềm vừa giúp nhân viên nhân sự đăng các bài tuyển dụng cũng như quản lý các ứng viên đã nộp đơn ứng tuyển, vừa giúp cho người phỏng vấn dễ dàng trong việc tạo bài quiz, hosting bài quiz và đưa cho các ứng viên thực hiện, bên cạnh đó còn có thể import các câu hỏi cần thiết từ file excel, chọn lọc các câu hỏi cho bài quiz mới bằng cách lấy lại các câu hỏi của những bài quiz cũ theo keyword - Cần có một thứ gì đó mới mẻ giúp cho ứng viên ứng tuyển cảm giác có một sự đặc biệt nào đó đối với công ty, từ đó sẽ có nhiều ứng viên ứng tuyển hơn 1. Mục tiêu và nhiệm vụ đề tài 1. Mục tiêu - Xây dựng các tính năng hỗ trợ nhân viên nhân sự cho việc phỏng vấn và tuyển nhân viên cho công ty: o Đăng tin tuyển dụng o Sắp xếp ứng viên theo các đợt phỏng vấn o Đưa các người phỏng vấn vào đợt phỏng vấn và ra các bài quiz cho ứng viên để kiểm tra kiến thức o Xem xét các bài thi sau khi ứng viên đã thi xong và đưa ra kết quả phỏng vấn - Xây dựng một trang web trắc nghiệm trực tuyến, hỗ trợ cho việc kiểm tra trình độ, rèn luyện, ôn tập kiến thức một cách cơ bản nhất với những chức năng sau o Quản lý thông tin bài quiz: Cho phép thêm, xóa, sửa bài quiz, import file, lấy lại được các câu hỏi của các bài quiz trước,… o Quản lý kết quả của các ứng viên tham gia vào bài quiz và thông tin chi tiết của mỗi bài quiz. o Quản lý câu hỏi: Cho phép thêm câu hỏi, xóa, chỉnh sửa câu hỏi,.
o Quản lý nhóm câu hỏi: chia làm 3 nhóm: dễ, bình thường và khó o Thực hiện cho thành viên làm bài o Lưu lại quá trình làm trong trường hợp máy tính gặp sự cố hoặc ngắt mạng o Cũng có thể kiểm tra lại nếu như lần kiểm tra trước gặp sự cố 1. Nhiệm vụ - Tìm hiểu, tham khảo các chức năng và giao diện của các hệ thống tương tự - Tìm hiểu về các API để gửi trả dữ liệu từ BackEnd vào FrontEnd và ngược lại - Tìm hiểu thêm các công nghệ hỗ trợ khác để chỉnh sửa và xây dựng các tính năng mới - Xây dựng trang web thân thiện, có liên kết account với Gmail - Xây dựng thêm các tính năng kiểm tra cho các ứng viên thi và các qui định thời gian và số lượt làm bài tập cũng như lấy lại cookie bài đang thi nếu lỡ như ứng viên thoát khỏi bài thi do sự cố nào đó 16 do an - Tìm hiểu cách lưu các file có dung lượng lớn bằng cloudinary (như hình ảnh, pdf,…) - Nghiên cứu và deloy ứng dụng lên nền tảng Heroku 1. Công nghệ lập trình - Sử dụng ExpressJS và NodeJS để viết server backend và ReactJS phía Frontend - Sử dụng MySQL để tạo nên cơ sở dữ liệu chính cho project - Để triển khai hệ thống thông qua mạng Internet, nhóm sử dụng các dịch vụ của Heroku 1. Phạm vi nghiên cứu - Tìm hiểu và áp dụng các cộng nghệ sử dụng trong đề tài: o ReactJS: xây dựng Single Page Application áp dụng ReactJS và các thư viện liên quan o MySQL: Xây dựng lên các dữ liệu cần thiết cũng như các mối quan hệ giữa các bảng tạo tiền đề để phát triển nên Project o ExpressJS: Xây dựng lên các API để gửi và nhận dữ liệu từ ReactJS và NodeJS o NodeJS: Xây dựng server cho cả Project 17 do an CHƯƠNG 2.
Giới thiệu về MERN Stack [1] - Technical stack là gì? Lang thang trên mạng, ta thường nghe nhắc đến những một số thuật ngữ như LAMP Stack, MEAN Stack,vv. Trong quá trình xây dựng sản phẩm start-up, ta cũng hay nghe nhắc tới tầm quan trọng của việc chọn technical stack cho phù hợp. Stack là gì, tại sao nó ra đời? - Để làm ra một ứng dụng hoàn chỉnh, chỉ viết code không thôi là không đủ. Khi cần lưu trữ thông tin, ta phải đưa chúng vào cơ sở dữ liệu.
Sau khi đã hoàn thành phần code, ta phải tìm cách deploy nó, tức là đưa code lên một chỗ nào đó để chạy code. - Một chương trình hoàn thiện không chỉ có code, mà còn phải có nền tảng hệ điều hành và những phần mềm đi kèm (web server, cơ sở dữ liệu). Người ta gom những thứ này lại với nhau, tạo thành technical stack. - Technical Stack, còn gọi là solution stack, là một tập hợp những phần mềm/công nghệ phối hợp chung với nhau, tạo thành một nền tảng để ứng dụng có thể hoạt động được.
Các bộ phận cấu thành một stack 2. MERN Stack [2] - Một stack cũng khá nổi trong vài năm trở lại đây là MERN stack. - MERN stack là nguyên bộ combo open source các công nghệ đều liên quan đến Javascript là cũng hot nhất hiện nay: MongoDB/MySQL, ExpressJS, React/React 18 do an Native, NodeJS. Người ta hay dùng MERN stack để xây dựng SPA (Single Page Application).
- Thật ra stack này không hoàn toàn đúng chuẩn stack vì nó không bao gồm hệ điều hành. NodeJS dùng để viết code server-side, có thể hoạt động như web server luôn (Trong thực tế người ta thường dùng thêm nginx làm proxy server). MySQL - MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập Cơ sở dữ liệu trên internet. Người dùng có thể tải về MySQL miễn phí từ trang chủ. MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, MacOSX, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS…[5] - MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). - MySQL được sử dụng cho việc bổ trợ NodeJs, PHP, Perl, và nhiều ngôn ngữ khác, làm nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHP hay Perl… - Các đặc điểm của MySQL: 19 do an o Linh hoạt: Sự linh hoạt về platform là 1 đặc tính nổi bật của MySQL với các phiên bản đang được hỗ trợ của Linux, Unix, Windows, MySQL cho phép tùy biến hoàn toàn theo ý muốn, thêm vào các yêu cầu thích hợp cho database server.
o Thực thi cao: Các chuyên gia cơ sở dữ liệu có thể cấu hình máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù thông qua kiến trúc storage-engine. MySQL có thể đáp ứng khả năng xử lý những yêu cầu khắt khe nhất của từng hệ thống, MySQL còn đưa ra các “công cụ” cần thiết cho các hệ thống doanh nghiệp khó tính bằng tiện ích tải tốc độ cao, bộ nhớ cache và các cơ chế xử lý nâng cao khác. o Sử dụng ngay: Các tiêu chuẩn đảm bảo của MySQL giúp cho người dùng vững tin và chọn sử dụng ngay, MySQL đưa ra nhiều tùy chọn và các giải pháp để người sử dụng dùng ngay cho server cơ sở dữ liệu MySQL o Hỗ trợ giao dịch: MySQL hỗ trợ giao dịch mạnh 1 cách tự động, thống nhất, độc lập và bền vững, ngoài ra khả năng giao dịch cũng được phân loại và hỗ trợ giao dịch đa dạng mà người viết không gây trở ngại cho người đọc và ngược lại.