# Kế hoạch bao vệ Project với Doanh nghiệp
## Yêu cầu với các nhóm bảo vệ
### Các yêu cầu về chình chiếu
1. Slide mô tả dự án bao gồm:
- Thiết kế Database dưới dạng R-D (Diagram)
- Mô tả Dự án bao gồm các thành phần:
- Cấu trúc Project
- Một số hình ảnh hiển thị cho các trang con. Mỗi trang 1 ảnh
- Kết nối giữa CODE - CSDL của 2 dạng: SqlClient (Dapper) + DbContext
- Mô tả luồng đi của dữ liệu từ request => response
- Các công nghệ sử dụng đính kèm
- Phần CMS nếu có
- Các thành phần GIT: Git Branchs, file Git Ignore
- Các phân chia công việc + báo cáo theo tuần (Nếu có)
- Test case (nếu có)
- Nhật ký phát triển dự án.
2. Các câu hỏi:
- Nhóm câu hỏi liên quan đến thiết kế CSDL + Query
- Bảng và mục đích lưu trữ của bảng. Giải thích
- Liên kết bảng và loại liên kết. Nêu lý do tại sao lại liên kết như vậy
- Trong trường hợp cần chỉnh sửa CSDL tại một số điểm, mô tả phương án maintaint tiếp theo.
- Các store Procedured có cần chỉnh sửa gì không?
- Soft delete nên được tổ chức như thế nào? Điều chỉnh các QUERY với soft delete. Điều chỉnh CMS với soft delete
- Nhóm câu hỏi DESIGN PATTERN
- Đường đi của dữ liệu như thế nào.
- Tầng Data Access có tác dụng gì
- Tại sao không tuân theo mô hình MVC mà lại phải sinh ra 1 tầng Service và 1 tầng Access
- Controller có tác dụng gì?
- Tác dụng của tầng SERVICE.
- Thành phần HELPER nên được đặt ở đâu?
- Thành phần Thêm mới/Cập nhật có thể gộp làm một được không?
- Nhóm câu hỏi CODING CONVENTION:
- Cách đặt tên Class, Property, Method, Controller đã đúng chưa
- Chuẩn RESTfull API được viết như thế nào?
- Trong CODE có sử dụng Prefix không, tác dụng của nó?
- Tên biến tiếng Anh hay tiếng Việt. Nêu cách kết hợp tên biến bằng tiếng Việt và tiếng Anh
- Xuống hàm là gì? Tách hàm từ hàm lớn thành hàm nhỏ như thế nào?
- Nhóm câu hỏi về GIT
- Nêu 1 cycle sử dụng GIT để đẩy CODE lên origin như nào. Giải thích từng câu lệnh
- Phân biện local branch và origin branch
- Sử dụng nhành main(master) và các nhánh con. Tác dụng của việc này
- File Gitignore sử dụng khi nào? Tác dụng của nó. Cách lấy file .ignore
- Git-Terminar được mở ở đâu?
- Xử lý CONFLICT với GIT: Khi nào thì CONFLICT, Xử lý như thế nào.
- Nhóm câu lệnh quản lý dự án:
- Mô hình KANBAN là gì? Sử dụng mô hình KANBAN với ASANA.
- Báo cáo tuần được viết như thế nào? các nhóm có thói quen viết báo cáo tuần, tổ chức TASK trên asana chưa
- Nhóm câu lệnh liên quan đến BUG và xử lý BUG:
- Các lỗi thường gặp trong dự án là gì?
- Tại sao lại gặp lỗi NullReference? Làm thế nào để xử lý lỗi NullReference
- Sử dụng Break-point để debug như thế nào?
- Khi gặp lỗi, tìm kiếm như thế nào?
- Khi gặp vấn đề mới, tìm kiếm như thế nào?
- Thử tìm kiếm 1 đoạn lệnh xuất FILE EXCEL từ DATA -> CODE
- Nhóm câu hỏi sử dụng thư viện:
- Các thành phần cần đọc khi xử lý 1 thư viện mới
- Cách đưa các thư viện vào CODE: Vị trí đặt thư viện, Vị trí đặt CODE khi viết ra
- Xây dựng phần mềm theo hướng SPA là gì? Thường sử dụng công nghệ nào để xây dựng phần mềm theo hướng SPA
- Nhóm câu hỏi liên quan đến TEST
- TEST-CASE là gì?
- Viết TEST-CASE sẽ bao gồm những thành phần nào?
- Unit TEST là gì? Unit TEST được viết bởi ai?
- Dữ liệu khi TEST được lấy từ DATABASE chính hay từ DATABASE khác?
- Nếu có DATABASE phụ, lấy dữ liệu từ DATABASE chính bằng cách nào?
- Dữ liệu giả sẽ được lấy ở đâu? Sử dụng công cụ lấy dữ liệu giả như thế nào?
- Nhóm câu hỏi liên quan đến quy trình phát triển phần mềm
- Một quy trình phát triển chung của phần mềm sẽ phải bao gồm những bước nào?
- Các công việc trong ngành CNTT tương ứng với từng bước trong quy trình phát triển phần mềm.
- Quy trình WATERFALL là gì? Ưu - Nhược điểm của quy trình này
- Quy trình Agile là gì? Ưu - Nhược điểm của quy trình này.
- Quy trình: Viết Mục tiêu công việc vào đầu tuần, báo cáo tiến độ hằng ngày, review vào cuối tuần cho 1 module và lặp lại với các module khác là hình ảnh của quy trình phát triển phần mềm nào?
## Yêu câu tổ chức
### Thành phần khách mời
#### Doanh nghiệp:
1. Doanh nghiệp tham gia với vai trò thành viên hội đồng, trực tiếp đặt các câu hỏi cho học viên. Các câu hỏi liên quan đến các lĩnh vực trong nội dụng giảng dạy:
- BACKEND: .NET EntityFramework. Database quan hệ MSSQL.
- FRONTEND: HTML/CSS/JS
- GIT
- Công cụ quản lý TRELLO/ASANA
- TEST-CASE và Manual TEST
2. Doanh nghiệp tham gia với vai trò khách mời:
- Nhận xét đánh giá về các ứng viên. Tham gia đặt các câu hỏi liên quan đến mức độ quan tâm với công việc, khả năng làm việc và chủ động trong công việc.
- Tham gia yêu cầu tìm hiểu về mặt công nghệ tương ứng với nhu cầu.
- Chia sẻ về văn hóa làm việc trong doanh nghiệp với học sinh
3. Giáo viên hội đồng
- Tham gia đặt câu hỏi với các nội dung liên quan đến PROJECT và các nội dung được đào tạo trong chương trình CODECAMP
- Đánh giá học viên thông qua việc hoàn thiện sản phẩm
4. Học viên có nhu cầu tham gia vào chương trình CODECAMP trong tương lai.
#### Ban tổ chức
1. Thời gian ôn tập cho nhóm tham gia.
2. Quyết định só nhóm tham gia bảo vệ chính thức
3. Lên thời gian tổ chức
4. Chuẩn bị phòng tổ chức bao gồm: máy chiếu, loa đài.
5. Công tác truyền thông tới doanh nghiệp khách mời, giáo viên nhà trường, học viên