NỘI DUNG THỰC TẬP Ở chương này, báo cáo sẽ tập trung trình bày các nội dung của kì thực tập bao gồm các phần giới thiệu và training kĩ năng mềm, nghiên cứu các kiến thức liên quan về lậ
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
BACKEND DEVELOPER
- ZALOPAY TECH INTERN 2022 -
Công ty thực tập: Công ty cổ phần Zion
Trang 2TP HỒ CHÍ MINH, 2023
Trang 3LỜI MỞ ĐẦU
Sau một thời gian không ngừng tìm kiếm trên các diễn đàn và các website lập trình để theo đuổi mục tiêu trở thành lập trình viên iOS, em đã vô tình nhìn thấy bài đăng tuyển dụng của ZaloPay - một tổ chức thuộc VNG Được biết, VNG là một công
ty công nghệ uy tín hàng đầu Việt Nam với các sản phẩm phục vụ cuộc sống người Việt, hơn nữa công ty còn có mối quan hệ hợp tác tốt đẹp với khoa Công nghệ phần mềm Chính vì vậy em đã lựa chọn VNG là nơi thực tập cho mình
Sau khi trở thành thực tập sinh tại VNG, em đã được trải nghiệm một chương trình đào tạo chuyên nghiệp với đội ngũ mentor giàu kinh nghiệm Bên cạnh đó việc được tiếp xúc với môi trường làm việc thực tế cũng giúp đỡ em rất nhiều trong việc phát triển các kĩ năng mềm cần thiết cho tương lai Sau thời gian thực tập kéo dài ba tháng, em đã nắm vững các kiến thức, kĩ năng cần thiết trong lập trình iOS và sẵn sàng tiến xa hơn trên con đường mà mình đã chọn
Trang 4em có thể hoàn thành dự án một cách tốt nhất
Cuối cùng, em xin cảm ơn những thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ và tạo điều kiện giúp em có cơ hội được đi thực tập và hoàn thành bài báo cáo này
Em xin chân thành cảm ơn
Tp Hồ Chí Minh, 30 tháng 6 năm 2023
Sinh viên
Nghi Lâm Minh Khôi
Trang 5NHẬN XÉT CỦA KHOA
Trang 6MỤC LỤC
LỜI MỞ ĐẦU 6
LỜI CẢM ƠN 7
NHẬN XÉT CỦA KHOA 8
NỘI DUNG BÁO CÁO 1
1.1 GIỚITHIỆUCÔNGTYVNGVÀCÁCSẢNPHẨMCỦAZALOPAY 1
1.1.1 GIỚITHIỆUVỀVNG 1
1.1.2 BỘPHẬNZALOPAYTẠIVNG 3
1.2.GIỚITHIỆUCHƯƠNGTRÌNHZALOPAYTECHINTERN 4
2.1.GIỚITHIỆUVÀTRAININGKĨNĂNGMỀM 8
2.1.1 TƯDUYLOGICVÀGIAOTIẾPTHỜIGIAN:1NGÀY 8
2.1.2 KỸNĂNGXÂYDỰNGVÀTỔCHỨCKẾHOẠCH 8
2.1.3 KỸNĂNGTHUYẾTTRÌNH 8
2.2.THỰCHIỆNDỰÁNDƯỚISỰHƯỚNGDẪNCỦAMENTOR(16TUẦN) 9
2.2.2 TÌMHIỂUVỀGIT,GITFLOW 10
2.2.3 TÌMHIỂUVỀDATABASE,CACHE 11
2.2.4 TÌMHIỂUVỀNETTY,PROTOBUF 12
2.2.5 TÌMHIỂUVỀBUSINESSCỦADỰÁN 13
2.2.6 THỰCHIỆNDỰÁNTHỰCTẬP 13
2.3.BÁOCÁOKẾTQUẢTHỰCTẬP 13
2.4.KẾTQUẢCUỐICÙNG 13
3.1.GIỚITHIỆUVỀCHỨCNĂNG 15
3.1.1 YÊUCẦUCHỨCNĂNG 15
3.1.2 PHÂNTÍCHCHỨCNĂNG 15
3.2.QUÁTRÌNHTHỰCHIỆN 16
3.3.KẾTQUẢĐẠTĐƯỢC 16
TÀI LIỆU THAM KHẢO 17
Trang 8NỘI DUNG BÁO CÁO
Chương 1 GIỚI THIỆU CÔNG TY VÀ CHƯƠNG TRÌNH THỰC TẬP
Ở chương đầu của báo cáo em sẽ nêu một vài thông tin về công ty thực tập VNG, team ZaloPay nơi mình sẽ trực tiếp làm việc, cũng như là một vài thông tin về chương trình ZaloPay Tech Intern 2022
Ở phần này, em sẽ giới thiệu về công ty VNG, lý do chọn VNG là công ty thực tập và các sản phẩm của bộ phận ZaloPay
1.1.1 Giới thiệu về VNG
Thành lập từ năm 2004, VNG Corporation là một trong những công ty Internet & Công nghệ hàng đầu tại Việt Nam, phục vụ cho người dùng Internet trên 100 quốc gia và vùng lãnh thổ Sở hữu hệ sinh thái các sản phẩm Internet đa dạng, cùng với nguồn lực công nghệ tiên tiến, đội ngũ kỹ sư trẻ, tài năng, VNG còn nghiên cứu và phát triển các
hệ thống, giải pháp thông minh trên nền tảng IoT, Big Data, VR/AR, AI.[1]
Trang 92
Trang 10VNG được xếp hạng vào CLB các công ty Internet trị giá tỷ đô của thế giới (2014), được bình chọn là Doanh nghiệp Nội dung số có ảnh hưởng lớn nhất đối với sự phát triển của Internet Việt Nam trong 1 thập kỷ (2007 - 2017) Trong năm 2019, VNG nhận giải thưởng “Nơi làm việc tốt nhất Châu Á” do HR Asia, tạp chí uy tín hàng đầu về Nhân
sự tại Châu Á tổ chức và bình chọn.[1]
Cùng với sứ mệnh phát triển con người của mình, VNG thường xuyên làm tham gia, tổ chức vào các hoạt động với các trường thuộc khối Đại học Quốc gia trong đó có UIT Hơn nữa VNG còn mối quan
hệ hợp tác tốt đẹp với Khoa Công nghệ phần mềm
Chính vì những lý do trên nên em đã quyết định sẽ chọn VNG
là địa điểm thực tập của mình
1.1.2 Bộ phận ZaloPay tại VNG
Được ra mắt vào năm 2015, ZaloPay cung cấp một loạt các tính năng và tiện ích cho người dùng trong việc thực hiện các giao dịch tài chính trực tuyến
Với ZaloPay, người dùng có thể thực hiện nhiều hoạt động thanh toán khác nhau, bao gồm:
Chuyển tiền: Người dùng có thể gửi và nhận tiền từ bạn bè, người thân hoặc đối tác kinh doanh thông qua ứng dụng Zalo
Thanh toán hóa đơn: ZaloPay cho phép người dùng thanh toán các hóa đơn tiện ích như điện, nước, internet, truyền hình cáp và nhiều loại dịch vụ khác một cách thuận tiện
Mua sắm trực tuyến: ZaloPay tích hợp tính năng mua sắm trực tuyến, cho phép người dùng mua hàng từ các cửa hàng trực tuyến, ứng dụng di động hoặc website đối tác
Giao dịch nội dung số: Người dùng có thể mua các nội dung số như nhạc, game, ứng dụng di động, và nhiều dịch vụ giải trí khác bằng ZaloPay
Trang 11Rút tiền: ZaloPay cung cấp tính năng rút tiền từ tài khoản điện tử vào tài khoản ngân hàng hoặc bằng cách chuyển tiền trực tiếp đến cửa hàng liên kết với ZaloPay
ZaloPay cũng mang lại nhiều lợi ích cho người dùng Ví dụ, người dùng có thể nhận các ưu đãi và khuyến mãi đặc biệt khi sử dụng ZaloPay, cũng như tích lũy điểm thưởng để đổi lấy các quà tặng hoặc giảm giá Ngoài ra, ZaloPay cũng đảm bảo tính bảo mật và an toàn trong quá trình thanh toán, đảm bảo thông tin tài chính và dữ liệu cá nhân của người dùng được bảo vệ
Tóm lại, ZaloPay là một dịch vụ thanh toán di động đa năng và tiện ích tại Việt Nam, mang lại sự tiện lợi, an toàn và linh hoạt cho người dùng trong việc thực hiện các giao dịch tài chính hàng ngày
ZaloPay Tech Intern 2022 là chương trình đào tạo nhanh dành cho các ứng viên mới hơn về công nghệ trẻ và tài năng, những người đam mê sử dụng công nghệ để tạo ra tác động lớn hơn đến cuộc sống của người Việt Nam Với khóa huấn luyện 1-1 kéo dài 4 tháng, ứng viên sẽ được tham gia đào tạo tại chỗ
Trang 12và chỉ cần đáp ứng đủ 2.5 buổi trong tuần, chương trình hoàn toàn phù hợp với lịch học dày đặc ở năm cuối chương trình đào tạo Hơn nữa việc được tiếp cận sớm với môi trường làm việc chuyên nghiệp cùng với nơi làm việc cởi mở và năng động sẽ giúp ích cho bản thân em rất nhiều trong tương lai Chính vì thế
em đã chọn tham gia chương trình ZaloPay Tech Intern 2022 trong kì thực tập của mình
Trang 13Chương 2 NỘI DUNG THỰC TẬP
Ở chương này, báo cáo sẽ tập trung trình bày các nội dung của kì thực tập bao gồm các phần giới thiệu và training kĩ năng mềm, nghiên cứu các kiến thức liên quan
về lập trình iOS, thực hiện dự án thực tập và cuối cùng là kết quả dự án thực tập Toàn
bộ quá trình thực tập kéo dài khoảng 4 tháng với lịch trình được khái quát trong bảng sau:
Bảng 2.1 Lịch trình thực tập
Giai đoạn 1: Giới thiệu và gặp gỡ (1 ngày)
5/12/2022
Chào mừng và giới thiệu chương trình Gặp gỡ mentor, kết thúc giai đoạn 1 Giai đoạn 2: Training kỹ năng song song với thực hiện dự án (4 tháng)
Java và framework Spring Boot
Trang 14Tuần 5
Tìm hiểu về Business của công ty
năng hủy liên kết và lưu trữ thông tin người dùng
Giai đoạn 3: Review, hoàn thiện và báo cáo kết quả thực tập (2 tuần)
Trang 15Ở phần đầu tiên của kì thực tập sẽ là các buổi giới thiệu và training kĩ năng mềm kéo dài 1.5 tuần, cuối các buổi training sẽ có các bài tập thực hành nhóm giúp ghi nhớ bài học và để mọi người làm quen với nhau
2.1.1 Tư duy logic và giao tiếp
Thời gian: 1 ngày Nội dung: Ở kĩ năng này, em được học thế nào là tư duy phản biện, cách
hình thành tư duy phản biện, và tầm quan trọng của nó trong giao tiếp Cùng với các tình huống và bài tập được thiết kế sinh động gần gửi từ Thinking school đây là một trong những tiết học thú vị và vô cùng bổ ích
Thực hiện: học thông qua các buổi training của công ty, làm bài tập về
nhà theo nhóm
2.1.2 Kỹ năng xây dựng và tổ chức kế hoạch
Thời gian: 1 ngày Nội dung: Ở kĩ năng này, các kiến thức về an toàn cá nhân , các rủi ro cá
nhân và virus máy tính được đề cập giúp em nâng cao nhận thức về bảo mật và các rủi ro rò rỉ thông tin cá nhân và thông tin doanh nghiệp Đồng thời cũng cung cấp những bài học hữu ích trong việc bảo vệ bản thân trên môi trường ảo
Thực hiện: học thông qua buổi seminar của team security
Trang 16Sau khi hoàn thành các bài training về kỹ năng mềm ở 8 tuần tiếp theo
em sẽ học các kiến thức cần thiết để xây dựng một ứng dụng iOS từ lúc bắt đầu Giai đoạn này gồm 8 tuần được chia thành 2 giai đoạn nhỏ hơn với các nội dung:
● Giai đoạn 1: Tìm hiểu cơ bản về ngôn ngữ lập trình Swift và Objective C, quản lý bộ nhớ ARC, tìm hiểu các design pattern, cấu trúc project, app lifecycle, kiến trúc hệ thống, lập trình giao diện với UIKit, Listview native
● Giai đoạn 2: Thực hiện dự án thực tập, GCD và Operation Queue, Networking và file manager, instrument
Chi tiết các nội dung được trình bày như sau:
Trang 172.2.1 Tìm hiểu các kiến thức về ngôn ngữ lập trình
Java và framework Spring Boot Thời gian: 5 ngày (1 tuần)
Nội dung: Ở tuần đầu trong quá trình thực hiện dự án, em được giao nhiệm
vụ tìm hiểu về ngôn ngữ lập trình trên nền tảng Java và framework Spring Boot và viết báo cáo về ngôn ngữ Java Các nội dung tìm hiểu bao gồm:
• Tên và kiểu dữ liệu: Các kiểu dữ liệu cơ bản và tùy chỉnh trong Java
• Collection (arrays, lists, sets, maps): Các cấu trúc dữ liệu và thao tác trên các tập hợp trong Java
• Controlling (control flow, loop statement): Cách điều khiển luồng chương trình và vòng lặp trong Java
• Cấu trúc, thuộc tính và phương thức: Cách định nghĩa lớp, thuộc tính và phương thức trong Java
• Lập trình hướng đối tượng (lớp và các tính chất của OOP): Nguyên tắc và các khái niệm cơ bản của lập trình hướng đối tượng trong Java
• Interface và abstract class: Sử dụng interface và abstract class để định nghĩa các hợp đồng và kế thừa trong Java
• Exception handling: Xử lý ngoại lệ và quản lý các tình huống đặc biệt trong Java
• Generics: Sử dụng generics để tạo ra các lớp và phương thức linh hoạt trong Java
Thực hiện: tự học thông qua sự hướng dẫn và giới thiệu của mentor về các
nội dung chính yếu và quan trọng
Kết quả: Sau một tuần tự học em đã nắm được các nội dung cơ bản và
quan trọng của Java và Spring Boot
2.2.2 Tìm hiểu về git, git flow
Thời gian: 3 ngày
Trang 18Nội dung: Ở tuần thứ 2 em được giao tìm hiểu git và git-flow nhằm mục
đích hiểu được quy trình phát triển của team đang sử dụng
Thực hiện: Tự học thông qua tài liệu của git Kết quả: Nắm được bản chất git, và git-flow
2.2.3 Tìm hiểu về database, cache
Thời gian: 5 ngày Nội dung: Ở tuần thứ 3 em được giao tìm hiểu về MySQL và Redis, là 2
công nghệ mà gần như dự án nào của team cũng áp dụng
• MySQL:
o Cơ sở dữ liệu quan hệ: Em tìm hiểu về kiến trúc và nguyên tắc hoạt động của cơ sở dữ liệu quan hệ Nắm vững cách cài đặt và cấu hình MySQL, tạo database, bảng, chỉ mục và ràng buộc dữ liệu
o Ngôn ngữ truy vấn SQL: Em nắm vững các câu lệnh SQL cơ bản như SELECT, INSERT, UPDATE và DELETE để truy vấn và thay đổi dữ liệu trong MySQL Tìm hiểu về các toán
tử, hàm và câu lệnh điều kiện trong SQL
• Redis:
o Hệ thống cache: Em tìm hiểu về khái niệm cache và vai trò của nó trong tối ưu hóa hiệu suất hệ thống Tìm hiểu về Redis như một hệ thống cache in-memory phổ biến
o Cài đặt và cấu hình Redis: Em nắm vững cách cài đặt và cấu hình Redis trên máy tính và trong môi trường sản phẩm Tìm hiểu về các cấu trúc dữ liệu cơ bản trong Redis như String, List, Set và Hash
o Quản lý cache và tương tác với Redis: Em tìm hiểu cách sử dụng Redis để lưu trữ và truy xuất dữ liệu cache Nắm vững các câu lệnh Redis như GET, SET, DEL và EXPIRE để tương tác với cache
Trang 19o Xử lý sự kiện và giao tiếp mạng: Em nắm vững cách sử dụng Netty để xử lý các sự kiện mạng như kết nối, ngắt kết nối, truyền/nhận dữ liệu qua socket, và xử lý lỗi
o Giao thức mạng: Em tìm hiểu cách Netty hỗ trợ các giao thức mạng như TCP, UDP, HTTP và WebSocket Nắm vững cách triển khai và sử dụng giao thức mạng trong Netty
• Protocol Buffers (Protobuf):
o Protobuf là một ngôn ngữ và công cụ để định nghĩa cấu trúc
dữ liệu và giao tiếp dữ liệu hiệu quả và độc lập với ngôn ngữ
Em tìm hiểu về cách định nghĩa cấu trúc dữ liệu và tạo file Proto trong Protobuf
o Serialization và Deserialization: Em nắm vững cách sử dụng Protobuf để thực hiện việc serialize (đóng gói) dữ liệu thành các định dạng nhị phân và deserialize (giải nén) dữ liệu từ định dạng nhị phân thành đối tượng dữ liệu
Thực hiện: Tự học từ các blog trên internet và sự hướng dẫn của mentor
Trang 20Thực hiện: Tự học qua các tài liệu của công ty
Kết quả: Nắm được các nghiệp vụ và ý nghĩa của các service mà team xây
dựng
2.2.6 Thực hiện dự án thực tập
Sau khi hoàn thành 8 tuần nghiên cứu đầu tiên thì bắt đầu từ tuần thứ
9, song song với việc học kiến thức mới, để có thể áp dụng ngay các kiến thức vừa học em được yêu cầu thực hiện các chức năng trong dự án thực tế đó là chức năng hủy liên kết tài khoản của khách hàng và lưu trữ thông tin khi liên kết thất bại
Các phần chức năng sẽ được triển khai lên ứng dụng ngay khi hoàn thành
Thời gian: 1 tuần
Nội dung: Sau một khoảng thời gian làm việc cùng với team thì em được yêu cầu
chuẩn bị một bài thuyết trình để báo cáo với các Head của các bộ phận về quá trình thực tập của em: đã học được gì, phát triển ra sao, giá trị đã đóng góp
Thực hiện: Họp báo cáo với mentor, chuẩn bị bài thuyết trình kết thúc đợt thực
Trang 21trong công ty và sự cố gắng của bản thân, em đã hoàn thành kỳ thực tập một cách trọn vẹn đạt được đánh giá 9.5/10 từ mentor, đồng thời trở thành nhân viên chính thức tại công ty Sau khi kết thúc kỳ thực tập em đã học được nhiều kiến thức và kĩ năng mới trong công việc, sẵn sàng đón nhận những thử thách, mục tiêu mới trong tương lai
Trang 22Chương 3 CHI TIẾT VỀ CHỨC NĂNG
Sau khi trình bày chi tiết nội dung và quá trình thực tập ở VNG trong chương
2, ở chương này em sẽ trình bày về chức năng em đã thực hiện
Ở phần này em sẽ tập trung giới thiệu về các yêu cầu và phân tích chức năng của dự án
3.1.1 Yêu cầu chức năng
Xây dựng chức năng hủy liên kết ở hệ thống mới nhằm mục đích migrate
● Áp dụng thành thạo multithreading trong việc xử lý logic
● Xử lý các trường hợp liên quan tới interrupt ứng dụng, môi trường mạng (chập chờn, mạng ảo)
● Rèn luyện kĩ năng Software Testing: Unit Test, Functional Testing, Performance Testing
3.1.2 Phân tích chức năng
● Hủy liên kết
• Tạo giao dịch hủy liên kết tài khoản cho khách hàng
• Liên kết với các bên để thực hiện hành động hủy liên kết
• Liên tục cập nhật status để khách hàng nắm tình trạng giao dịch
Trang 23● Lưu trữ thông tin khi liên kết thất bại
• Thực thi ngay khi có giao dịch thất bại từ khách hàng
• Lưu trữ các thông tin cần thiết để liên kết từ khách hàng
Quá trình thực hiện dự án được bắt đầu từ tuần thứ 9 của giai đoạn 2 (thực hiện
dự án dưới sự hướng dẫn của mentor), quá trình thực hiện được diễn ra song song với việc tìm hiểu các nội dung từ tuần 9:
● Đọc và tìm hiểu cách vận hành của các service cũ
● Xây dựng workflow cho chức năng
● Tiến hành xây dựng chức năng
● Báo cáo cho manager
● Tiến hành deploy lên môi trường QC để test
● Tiếp tục sửa chữa và cải tiến
Các kết quả đạt được của dự án:
● Xây dựng thành công chức năng hủy liên kết có thể đáp ứng migrate từ