Fizz, Buzz, dan Fizz Buzz!

Muhammad Umar Al Fajar
6 min readJun 1, 2021

--

Perkenalan

Halo teman-teman bagaimana kabarnya? semoga baik-baik saja yaaa, kali ini saya akan membahas mengenai “Fizz Buzz”. Sebelumnya saya ingin memperkenalkan diri dulu, saat ini saya adalah seorang mahasiswa semester enam yang berkuliah di salah satu Universitas Swasta di Bandung yaitu Universitas Komputer Indonesia, saya berasal dari Program Studi Teknik Informatika yang berada pada Fakultas Teknik dan Ilmu Komputer. Baik itu saja mungkin perkenalan diri dari saya, kita akan langsung lanjutkan ke pembahasan.

Definisi

The “Fizz-Buzz test” is an interview question designed to help filter out the 99.5% of programming job candidates who can’t seem to program their way out of a wet paper bag.

Jadi “Fizz Buzz” merupakan pertanyaan interview yang dirancang untuk menyaring calon programmer yang tidak tau bagaimana caranya memprogram, hmmmm.

Mari kita bahas

“Fizz Buzz” adalah suatu masalah yang hampir ditanyakan pada setiap coding interview, masalah ini digunakan pada tahap awal untuk menyeleksi mana yang programmer dan mana yang bukan, masalah ini terbilang sangat mudah bagi programmer karena kita hanya cukup mengerti tentang perulangan dan matematika dasar yang dimana dua hal tersebut termasuk dalam modal yang harus dimiliki oleh seorang programmer, jika seorang programmer tidak memiliki salah satu atau bahkan dua modal tersebut, tentu saja akan kesulitan dalam memecahkan masalah “Fizz Buzz” ini, dan pada kenyataannya pun banyak yang tidak bisa memecahkan masalah yang terbilang sederhana dan mudah ini.

Jadi, seperti apa sih sebenarnya masalah “Fizz Buzz” itu?

Masalahnya adalah kita akan diminta membuat sebuah function dengan integer atau angka sebagai parameter, nantinya function tersebut akan melakukan iterasi dari angka pertama sampai angka yang sudah ditentukan di parameter, dimana jika angka tersebut bisa dibagi oleh angka tiga maka akan menjadi “Fizz” dan apabila angka tersebut bisa dibagi oleh angka lima maka akan diganti menjadi “Buzz”, bagaimana dengan angka yang bisa dibagi oleh angka tiga dan angka lima? angka yang bisa dibagi oleh angka tiga dan angka lima nantinya akan diganti menjadi “Fizz Buzz”.

Kelihatannya cukup sederhana bukan? tapi anehnya banyak yang tidak bisa dalam memecahkan masalah tersebut.

Hal tersebut terjadi mungkin karena selama kuliah dan mengerjakan tugas-tugas pola pengerjaannya berbeda dengan masalah yang diajukan pada saat interview, masalah pada tugas-tugas yang diberikan pada saat kuliah tentu saja berbeda dengan masalah yang diajukan pada saat proses interview, sebetulnya masalah yang diajukan pada saat proses interview terbilang sederhana dan mudah, namun pada kenyataannya masalah tersebut cukup untuk membuat sedikit kebingungan atau bahkan tidak bisa sama sekali untuk memecahkan masalah tersebut, untuk itu perlu pemahaman yang baik soal bahasa pemrograman yang kita gunakan agar kita bisa merubah hasil pemikiran kita ke dalam sebuah kode, karena yang menjadi masalah adalah bagaimana menerapkan pemecahan suatu masalah pada sebuah bahasa pemrograman.

Coding Interview?

Tapi sebelum itu kita akan membahas sedikit tentang coding interview, sebelum coding interview alangkah baiknya teman-teman menyiapkan segala hal yang diperlukan untuk coding, tapi bukan menyiapkan kopi dan cemilan juga yah xixixi, yang harus teman-teman persiapkan dalam coding interview adalah IDE nya tentu saja dan siapkan juga berupa project kosong, kemudian teman-teman juga harus tau bagaimana cara menjalankan sebuah unit test, karena itu akan menjadi nilai tambah tersendiri buat teman-teman saat coding interview.

Namun jangan lupa juga bahwa coding interview bukan hanya tentang memecahkan masalah seperti “Fizz Buzz”, berikut adalah tips untuk coding interview:

  1. siapkan mental agar teman-teman bisa menjawab pertanyaan yang seharusnya teman-teman bisa menjawabnya, jangan sampai nanti teman-teman menyesal karena hal tersebut.
  2. siapkan dokumen-dokumen yang teman-teman butuhkan seperti CV, surat lamaran, sertifikat penghargaan, dan lainnya.
  3. tunjukkan portofolio program apa saja yang pernah teman-teman buat.

Selain pertanyaan teknis interview programmer, pertanyaan yang bersifat non-teknis juga sangat penting untuk dipelajari.

Sebagai contoh, teman-teman harus bisa meyakinkan ke pihak perekrut bagaimana bisa menghadapi tekanan dalam pekerjaan, bagaimana cara berkomunikasi dengan mitra dalam satu proyek hingga pandangan Anda tentang tren dunia pemrograman saat ini.

Dengan kata lain, asah kemampuan Anda berbicara agar pihak perekrut meyakini teman-teman adalah kandidat yang selalu ingin belajar hal baru dan berbagi perkembangan proyek terkini dengan sesama mitra proyek.

Contoh Pertanyaan-pertanyaan Non-Teknis

  1. Apa tugas umum seorang programmer?
    Meskipun terdengar sepele, pertanyaan ini mungkin saja ditanyakan oleh perekrut untuk menguji seberapa paham kamu tentang deskripsi kerja yang kamu lamar. Jawablah dengan singkat, padat, dan jelas sesuai pemahamanmu.
  2. Apa saja bahasa pemrograman yang kamu kuasai?
    Pastikan kamu menjawab dengan percaya diri dan sesuai dengan yang tertera di CV agar perekrut lebih yakin atas kredibilitasmu. Menguasai bahasa pemrograman yang sedang naik daun seperti C++, Go, atau Java dapat menjadi nilai plus dalam penilaian.
  3. Apa saja bahasa pemrograman yang kamu kuasai?
    Pastikan kamu menjawab dengan percaya diri dan sesuai dengan yang tertera di CV agar perekrut lebih yakin atas kredibilitasmu. Menguasai bahasa pemrograman yang sedang naik daun seperti C++, Go, atau Java dapat menjadi nilai plus dalam penilaian.
  4. Apakah kamu lebih nyaman mengerjakan pemrograman secara tandem atau personal?
    Tidak ada jawaban yang benar atau salah untuk pertanyaan ini. Perekrut hanya ingin tahu tipe kerja sama yang kamu miliki. Jawablah dengan jujur berdasarkan pengalamanmu selama ini agar pengalaman kerjamu nantinya juga sesuai dengan yang kamu harapkan.
  5. Apakah contoh tantangan terberat yang pernah kamu selesaikan dalam pemrograman?
    Kamu pernah membangun aplikasi sederhana dengan tools seadanya? Atau, pernah ikut proyek sukarela untuk misi tertentu? Jabarkan pengalaman yang berharga bagimu dan tunjukkan bahwa kamu mampu bekerja di bawah berbagai tantangan.
  6. Pentingkah sertifikasi dan pelatihan bagimu sebagai seorang programmer?
    Ada programmer yang menempuh jalur otodidak. Ada juga yang memilih menimba ilmu di pelatihan. Manapun jalur yang kamu pilih, ceritakan preferensimu pada perekrut agar mereka mengerti dari jalur mana kamu berasal dan ke mana orientasimu di masa depan.
  7. Adakah ilmu pemrograman yang ingin kamu pelajari dalam waktu dekat?Jawabanmu atas pertanyaan ini akan mencerminkan semangat untuk belajar. Memiliki profesi di dunia IT, apalagi sebagai programmer, kamu dituntut untuk terus belajar dan menambah pengalaman. Semangat atau tidaknya kamu untuk beradaptasi bisa jadi pertimbangan oleh perekrut.

Kembali ke Masalah Fizz Buzz

Oke sekarang kita lanjut ke coding dan pembahasanyaaa…

import org.testng.annotations.Test;

public class FizzBuzz {
public void fizzBuzz(int total) {
for (int i = 1; i <= total; i++) {
if (i % 3 == 0 && i % 5 == 0) {
System.out.println("Fizz Buzz");
}else if (i % 3 == 0) {
System.out.println("Fizz");
}else if (i % 5 == 0) {
System.out.println("Buzz");
}else {
System.out.println(i);
}
}
}
@Test
void testFizzBuzz() {
fizzBuzz(100);
}
}

Di sini saya menggunakan bahasa pemrograman Java, bebas sebenarnya untuk masalah “Fizz Buzz” ini teman-teman bisa menggunakan bahasa pemrograman apa saja.

public void fizzBuzz(int total) {
for (int i = 1; i <= total; i++) {
}
}

Untuk penjelasan kode di atas pertama-tama kita membuat sebuah function dengan parameter yang diberi nama “total” dengan tipe integer, untuk penamaan bebas teman-teman bisa menggunakan apa saja. Selanjutnya di dalam function tersebut kita melakukan iterasi untuk integer i sampai kurang atau sama dengan nilai total, yang dimana nilai totalnya akan kita tentukan saat kita memanggil function tersebut.

            if (i % 3 == 0 && i % 5 == 0) {
System.out.println("Fizz Buzz");
}else if (i % 3 == 0) {
System.out.println("Fizz");
}else if (i % 5 == 0) {
System.out.println("Buzz");
}else {
System.out.println(i);
}

Selanjutnya dalam iterasi tersebut kita buat percabangan dimana jika nilainya bisa dibagi oleh angka tiga maka akan diganti dengan “Fizz” dan jika bisa dibagi dengan angka lima maka akan kita ganti dengan “Buzz” sedangkan jika bisa dibagi dengan angka tiga dan lima maka akan diganti menjadi “Fizz Buzz”.

Yang perlu teman-teman perhatikan dalam membuat percabangan ini adalah urutannya, seperti yang teman-teman liat pada kode di atas, untuk pengecekan “Fizz Buzz” diletakan paling awal karena jika kita memulai pengecekan dengan “Fizz” atau “Buzz” terlebih dahulu maka saat ada angka yang bisa dibagi angka tiga atau angka lima maka angka tersebut tidak akan menjadi “Fizz Buzz”, oleh karena itu kita lakukan pengecekan “Fizz Buzz” terlebih dahulu.

Untuk pengecekannya teman-teman bisa menggunakan operasi matematika yaitu modulo, modulo sendiri merupakan sisa bagi yang artinya jika angka tersebut dibagi maka sisanya itu adalah modulo nya, jadi ini bisa kita gunakan untuk memecahkan masalah “Fizz Buzz” ini dimana jika ada angka dimodulo tiga sama dengan nol maka akan kita ganti dengan “Fizz” dan jika ada angka dimodulo dengan angka lima maka akan kita ganti dengan “Buzz” sedangkan jika dimodulo oleh angka tiga dan angka lima sama dengan nol maka akan diganti dengan “Fizz Buzz”.

    @Test
void testFizzBuzz() {
fizzBuzz(100);
}

Selanjutnya kita coba menjalankan unit test dan memanggil function yang telah kita buat tadi dan kita akan lakukan iterasi sampai angka seratus. Maka hasilnya adalah sebagai berikut:

Bagaimana? sangat sederhana dan mudah bukan? kode di atas hanya salah satu cara dalam memecahkan masalah “Fizz Buzz” ini mungkin saja teman-teman nanti akan diajukan pertanyaan mengenai “Fizz Buzz” ini namun dengan kondisi yang berbeda, untuk itu pastikan teman-teman benar-benar menguasai bahasa pemrograman yang akan teman-teman gunakan saat coding interview, baik mungkin itu saja pembahasan kita kali. Terimakasih.

--

--