Untuk bisa bergabung di posisi Mobile Engineer, Anda harus menyelesaikan tantangan berikut ini.
Catatan: Tantangan ini seharusnya tidak memerlukan waktu pengerjaan lebih dari 48 jam.
- Perlu dicatat bahwa tantangan ini membutuhkan pengetahuan dasar Java atau Kotlin pada Android, Objective-C atau Swift pada iOS, Dart untuk penggunaan Flutter.
- Jika Anda belum menguasai Java, luangkan waktu beberapa saat untuk mempelajari dasarnya di sini
- Jika Anda belum menguasai Kotlin, luangkan waktu beberapa saat untuk mempelajari dasarnya di sini
- Jika Anda belum menguasai Objective-C, luangkan waktu beberapa saat untuk mempelajari dasarnya di sini
- Jika Anda belum menguasai Swift, luangkan waktu beberapa saat untuk mempelajari dasarnya di sini
- Jika Anda belum menguasai Dart, luangkan waktu beberapa saat untuk mempelajari dasarnya di sini
- Jika Anda tidak memahami Android silakan pelajari di sini.
- Jika Anda tidak memahami iOS silakan pelajari di sini.
- Jika Anda tidak memahami Flutter silakan pelajari di sini.
- Untuk Android, Anda akan membutuhkan Java, Android Studio atau IntelliJ, dan Android SDK ter-/install/ di perangkat kerja Anda.
- Untuk iOS, Anda akan memerlukan MacOS dan Xcode
- Untuk instálási Flutter silahkan ikuti instruksi ini.
Permasalahan umum yang terjadi pada aplikasi pesan instan yaitu pengelompokan berdasarkan kriteria tertentu. Pada Code Challenge kali ini, masalah yang harus diselesaikan adalah pengelompokan pesan gambar dan kontak.
Terdapat empat jenis pesan yang dipertukarkan, yaitu teks, gambar, dokumen, dan kontak. Penjelasan dari setiap jenis pesan adalah sebagai berikut:
- Pesan Teks
- Pesan teks hanya berisi teks dan tidak memiliki lampiran.
- Pesan teks tidak dikelompokkan.
- Pesan Gambar
- Pesan gambar merupakan pesan yang berisi lampiran berupa gambar.
- Pesan gambar berisi tautan yang merujuk pada berkas gambar.
- Judul pada pesan gambar disertakan pada atribut body pada pesan utama.
- Pesan gambar dikelompokkan berdasarkan kriteria.
- Pesan Dokumen
- Pesan dokumen merupakan pesan teks yang berisi lampiran berupa dokumen.
- Pesan dokumen berisi tautan yang merujuk pada berkas dokumen.
- Pesan dokumen tidak memiliki judul.
- Pesan dokumen tidak dikelompokkan.
- Pesan Kontak
- Pesan kontak merupakan pesan teks dengan lampiran berupa info kontak.
- Pesan kontak berisi nama kontak.
- Pesan kontak tidak memiliki judul.
- Pesan kontak dikelompokkan berdasarkan kriteria.
Daftar pesan dapat dikelompokkan berdasarkan kriteria sebagai berikut:
- Pesan Gambar
- Tanggal yang sama
- Pengirim yang sama
- Tidak ada judul
- Berulang minimal 4 kali
- Pesan Kontak
- Tanggal yang sama
- Pengirim yang sama
- Berulang minimal 2 kali
- Fork repositori ini (jika Anda tidak tahu bagaimana caranya, Google adalah teman Anda)
- Buatlah sebuah source folder untuk kemudian diisi dengan kode Anda.
- Di dalam source directory Anda, buat sebuah aplikasi Android atau iOS yang dapat melakukan hal berikut:
- Tampilkan semua pesan yang ada dalam data set berdasarkan tanggal/timestamp ascending.
- Kelompokkan data yang tersedia pada file
message_dataset.json
sesuai dengan kriteria. Data yang dapat dikelompokkan disajikan dalam bentuk group/collection (misalkan tampilan yg berbeda atau informasi collection seperti collage pada aplikasi pesan instan). Contohnya:- pesan teks
- pesan kontak
- collection message [pesan gambar, pesan gambar, pesan gambar, pesan gambar]
- pesan dokumen
- collection message [pesan kontak, pesan kontak]
- pesan gambar
- pesan teks
- pesan teks
- dst..
- Penyajian data dalam bentuk list.
- Commit dan Push kode Anda ke repositori baru Anda.
- Kirimkan pull request kepada kami.
- Kami akan melakukan peninjauan terhadap kode Anda dan Anda akan kami hubungi kembali.
Tantangan ini dibuat oleh Donn Felker di repositori Example Android Challenge miliknya dan telah diubah sesuai kebutuhan