TTDN 19520261 Phạm Minh Tân SE501 N11 ĐẠ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 LẬP TRÌNH ỨNG DỤNG TRÊN IOS ZALO TECH FRESHER 2022 Côn[.]
Trang 1- ZALO TECH FRESHER 2022 -
Công ty thực tập: Công ty cổ phần VNG Người phụ trách: Trần Thế Trung Thiện Thực tập sinh: Phạm Minh Tân
TP HỒ CHÍ MINH, 2022
Trang 2LỜI MỞ ĐẦU
Ngày nay, lập trình trên thiết bị di động không còn là một khái niệm quá mới
mẻ trong ngành công nghệ thông tin Những năm gần đây, với lượng người dùng các thiết bị di động lớn và ngày càng tăng trưởng, thì nhu cầu sử dụng các phần mềm trên
di động cũng không ngừng tăng lên Chính vì vậy, các ứng dụng di động cũng không ngừng được phát triển một cách đa dạng từ các ứng dụng phục vụ nhu cầu giải trí như nghe nhạc xem phim, các mạng xã hội, đến các ứng dụng theo dõi sức khỏe của con người Nhắc đến các thiết bị di động không thể không kể đến hai hệ điều hành phổ biến nhất là Android và iOS, chúng đã cùng nhau thống trị thị trường di động trong nhiều năm Khác với Android, vốn phổ biến hơn với các bạn sinh viên bởi tính
dễ tiếp cận do không kén môi trường phát triển, các ứng dụng iOS chỉ có thể được phát triển trên môi trường MacOS dẫn đến việc khá hiếm các bạn sinh viên chọn học Điều này tạo ra nhiều cơ hội về việc làm và cạnh tranh ít hơn so với lập trình trên Android Chính vì điều đó nên em đã lựa chọn công việc lập trình trên thiết bị di động
mà cụ thể hơn là trên nền tảng iOS để thực tập và đặc mục tiêu phát triển hơn sau này
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 Zalo - 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 3và kĩ năng vô cùng quan trọng trong lĩnh vực lập trình iOS để chuẩn bị hành trang trên con đường trở thành kỹ sư lập trình của mình
Đặt biệt cảm ơn anh Trần Thế Trung Thiện là mentor trực tiếp đã hướng dẫn các kiến thức nền tảng và các kĩ thuật nâng cao trong lập trình iOS Bên cạnh đó, cảm
ơn anh đã hỗ trợ nhiệt tình, giúp đỡ em giải quyết các khó khăn khi tham gia vào môi trường làm việc mới đặc biệt trong vấn đề giao tiếp với mọi người trong nhóm.Trên hết, em xin cảm ơn những đóng góp và những lời khuyên bổ ít của anh trong việc xây dựng dự án, giúp em 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, 25 tháng 12 năm 2022
Phạm Minh Tân
Trang 4
NHẬN XÉT CỦA KHOA
Trang 5
Chương 2 NỘI DUNG THỰC TẬP 5
2.2 Thực hiện dự án dưới sự hướng dẫn của mentor (8 tuần) 8 2.2.1 Cơ bản về ngôn ngữ lập trình Swift, Objective C 9
Trang 61
NỘ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 Zalo 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 Zalo Tech Fresher 2022
1.1 Giới thiệu công ty VNG và các sản phẩm của Zalo
Ở 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 team Zalo
1.1.1 Giới thiệu về VNG
Hình 1.1 Logo công ty VNG1
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]
1 Nguo&n: https://haymora.com/cong-nghe-thong-tin/cong-ty-co-phan-vng
Trang 72
VNG đượ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 Team Zalo tại VNG
Ngoài các sản phẩm về Game vốn đã làm nên thương hiệu nổi tiếng củaVNG tại Việt Nam, ít ai biết rằng VNG còn có một đội ngũ phát triển các ứng dụng phục vụ đời sống người Việt Đội ngũ ấy chính
là Zalo và một trong số các sản phẩm tiêu biểu của Zalo có thể kể đến:
● Ứng dụng Zalo: Ra đời vào năm 2012, Zalo hiện nay đã trở thành ứng dụng tin nhắn phổ biến nhất Việt Nam
● Zing MP3: Ra đời từ năm 2007, Zing MP3 đã thay đổi cách thưởng thức âm nhạc của người Việt Từ chỗ nghe playlist, bảng xếp hạng một cách thụ động, người yêu nhạc Zing MP3 đã chuyển sang chủ động tìm kiếm bài hát mình muốn.[2]
● Báo mới: Báo Mới là trang tổng hợp tin tức phổ biến nhất
ở Việt Nam, ghi nhận lượng truy cập cao và cập nhật tin tức cho độc giả từ hàng trăm tờ báo trực tuyến.[2]
Trang 83
Thực tập tại team Zalo cho em một cơ hội tiếp cận các sản phẩm được bản thân sử dụng hằng ngày dưới một gốc độ của nhà phát triển
từ đó có động lực hơn trong việc trở thành lập trình viên trong tương lai
1.2 Giới thiệu chương trình Zalo Tech Fresher
Hình 1.2 Zalo Tech Fresher Program 20222
Zalo Tech Fresher Program 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 3 tháng, ứng viên sẽ được tham gia đào tạo tại chỗ với các cố vấn chuyên nghiệp, giàu kinh nghiệm là những chuyên gia công nghệ hàng đầu và đang giữ vai trò leader của Zalo, Zing MP3, Kiki… Ứng viên sẽ được tạo điều kiện bằng kiến thức cơ bản và kinh nghiệm thực tế
để học hỏi, sáng tạo và phát triển sau khóa học.[3]
Đây là một trong những chương trình thực tập thực sự đáng trông chờ trong năm 2022 với nhiều đãi ngộ tốt và phù hợp với sinh viên còn đang đi học như em bởi nhiều lý do Đầu tiên với sự linh hoạt trong thời gian làm việc
2 Nguo&n: https://zalo.careers/fresher
Trang 94
và 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 Zalo Tech Fresher 2022 trong kì thực tập của mình
Trang 105
Chươ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 3 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à training kĩ năng mềm (1,5 tuần)
9/5/2022 Chào mừng và giới thiệu chương trình
18/5/2022 Gặp gỡ mentor, kết thúc giai đoạn 1
Giai đoạn 2: Thực hiện dự án dưới sự hướng dẫn của mentor (8 tuần)
Tuần 1 Tìm hiểu các kiến thức cơ bản về ngôn ngữ lập
Trang 116
Tìm hiểu lập trình giao diện UIKit
Họp với mentor review các phần đã học được, rút kinh nghiệm làm việc, chuẩn bị cho tháng tiếp theo
Tuần 7
Tiếp tục phát triển dự án
Sử dụng instruments để profilling ứng dụng: CPU, Time, Memory tiếp tục tối ưu performance của ứng dụng
Giai đoạn 3: Review, hoàn thiện dự án và báo cáo kết quả (2.5 tuần)
Tiến hành phát triển một số chức năng nâng cao
Tuần 2 Chuẩn bị báo cáo, demo và thuyết trình về dự
án
Trang 127
2.1 Giới thiệu và training kĩ năng mềm
Ở 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 Security
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
2.1.3 Product cycle
Thời gian: 1 ngày
Nội dung: Các kiến thức về quá trình phát triển và vận hành một sản phẩm
theo các quy chuẩn khác nhau được trình bày trong phần này, giúp em hiểu hơn về quá trình phát triển phần mềm tại doanh nghiệp Đi xâu vào quá
Trang 138
trình phát triển phần mềm cho em những gốc nhìn mới lạ hơn về các sản phẩm phần mềm của doanh nghiệp từ lúc bắt đầu tới khi dự án kết thúc
Thực hiện: học thông qua buổi seminar của team product
2.1.4 Task management and presentation
Thời gian: 1 ngày
Nội dung: Ở phần này, các kĩ năng về quản lý thời gian và công việc được
trình bày một cách dí dỏm và hài hước thông qua các hoạt động trò chơi và câu hỏi tương tác giúp quá trình học tập diễn ra vô cùng vui vẻ mà vẫn mang lại nhiều kiến thức bổ ích Kĩ năng thuyết trình cũng được chú trọng
và cuối buổi bài tập thuyết trình đã góp phần cũng cố thêm cho những lý thuyết về kĩ năng này
Thực hiện: học thông qua buổi training của công ty, làm bài tập về nhà
theo nhóm
2.2 Thực hiện dự án dưới sự hướng dẫn của mentor (8 tuần)
Sau 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 149
2.2.1 Cơ bản về ngôn ngữ lập trình Swift, Objective C
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 iOS đó là Swift và Objective C và viết báo cáo về ngôn ngữ Swift3 Các nội dung tìm hiểu bao gồm:
● Thông tin ngôn ngữ
● Tên và kiểu dữ liệu
● Collection (arrays, sets, dictionaries)
● Controlling (control flow, loop statement)
● Cấu trúc, thuộc tính và phương thức
● Lập trình hướng đối tượng (lớp và các tính chất của OOP)
● Protocol và extensions
● Optional, Unwrapping và Generics
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 cả 2 ngôn ngữ lập trình sẽ sử dụng là Objective C và Swift
2.2.2 Quản lý bộ nhớ ARC
Thời gian: 3 ngày
Nội dung: Ở tuần thứ 2 của dự án, 3 ngày đầu em đã được phân công tìm
hiểu về cách mà swift và objective C lưu trữ các biến theo kiểu store và reference, tìm hiểu về cơ chế ARC (auto reference counting), các thuộc tính của biến (retain, weak, strong, atomic, nonatomic) trong Objective C
3
Nội dung nghiên cứu: https://leather-reptile-723.notion.site/Swift-8bdd2142331141b78d2f3b54d3c3c629
Trang 1510
để tránh các lỗi gây lãng phí tài nguyên và bộ nhớ cũng như là tiền đề cho việc đảm bảo thread safe
Thực hiện: Tự học thông qua tài liệu của Apple
Kết quả: Nắm được bản chất ARC, và các lỗi thường gặp khi lưu trữ và
sử dụng biến Hình thành nhận thức về việc chống memory leak và đảm bảo thread safe cho ứng dụng
2.2.3 Tìm hiểu các design pattern, cấu trúc project iOS và App lifecycle Thời gian: 2 ngày
Nội dung: Cũng trong tuần thứ 2 của dự án, 2 ngày tiếp theo em đã tìm
hiểu thêm về một số phần có liên quan đến lập trình iOS như:
● Ba trong số các design pattern thường dùng đó là Singleton, Delegate và Factory
● Cấu trúc project iOS: cách lưu trữ các tệp, thư mục dự án, các cách quản lý thư viện, cách tổ chức các tệp theo chuẩn của công ty
● App lifecycle: Tìm hiểu về các trạng thái của ứng dụng từ lúc được mở cho đến lúc bị tắt hoặc vào background, tìm hiểu các trường hợp các tài nguyên ứng dụng bị thu hồi bởi hệ thống và các trường hợp ứng dụng bị interrupt
Thực hiện: Tự học qua các tài liệu của apple, được sự góp ý và chỉnh sửa
thêm của mentor ở phần cấu trúc ứng dụng
Kết quả: Nắm rõ các phần liên quan tới lập trình iOS chuẩn bị tạo dự án
iOS đầu tiên
2.2.4 Kiến trúc hệ thống và lập trình giao diện UiKit
Thời gian: 1 tuần
Nội dung: Ở tuần này em được phân công tìm hiểu hai thành phần quan
trọng của lập trình iOS đó là kiến trúc và lập trình giao diện
Trang 1611
Ở phần kiến trúc em tìm hiểu các kiến trúc như MVC, MVP và RX
Ở phần lập trình giao diện em đã tìm hiểu các components UI trong UIKit như label, button, image view, các layout như view, stack view và các cách tạo constraint
Thực hiện: Tự học từ các blog trên internet và sự hướng dẫn của mentor Kết quả: Nắm được cơ bản các kiến trúc dùng trong iOS, quyết định sử
dụng kiến trúc MVC làm dự án bởi tính đơn giản dễ dàng triển khai của
nó Nắm được các components cơ bản của UIKit, sử dụng thành tạo các layout và constraint, biết sử dụng các thư viện bên ngoài để cải thiện tốc
độ viết constraint
2.2.5 List view native
Thời gian: 1 tuần
Nội dung: Tìm hiểu các listview native trong iOS là tableview và
collectionview tìm hiểu nâng cao thêm IGListKit4: tìm hiểu các đặc điểm, cách sử dụng và cách xử lý các event khi chọn item hoặc khi scroll các listview native
Thực hiện: Tự học qua các tài liệu và từ khóa của mentor, lập trình một
ứng dụng to-do list đơn giản
Kết quả: Biết cách sử dụng cơ bản và custom các listview native và
IGListKit
2.2.6 Thực hiện dự án thực tập
Sau khi hoàn thành 4 tuần nghiên cứu đầu tiên thì bắt đầu từ tuần thứ
5, 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 một dự án cá nhân đó là dự án
4
Kết quả tìm hiểu: https://leather-reptile-723.notion.site/IG-LIST-KIT-25e1332902d449568081315b2c3b6466