Cara menggunakan javascript interview bootcamp

Saat melamar ke perusahaan baru, banyak metode yang digunakan oleh perusahaan untuk menyeleksi kandidat. Di sebagian besar perusahaan, pihak manajemen harus mempercayai developer untuk memberikan wawancara teknis guna menilai keterampilan kandidat. Sebagai calon programmer, kamu harus siap menjawab berbagai pertanyaan dari yang bersifat hingga pertanyaan teknis yang spesifik. Berikut beberapa pertanyaan yang sering ditanyakan oleh programmer senior kepada kandidat.

1. Dapatkah kamu menyebutkan dua paradigma pemrograman yang penting bagi developer aplikasi JavaScript?

JavaScript adalah bahasa multi-paradigma yang mendukung pemrograman imperatif/prosedural bersama dengan OOP (Object -Oriented Programming) dan functional programming.

2. Apa itu Functional Programming?

Functional programming menghasilkan program dengan menyusun fungsi matematika dan menghindari data yang dapat diubah. Lisp adalah salah satu bahasa pertama yang mendukung functional programming dan sangat terinspirasi oleh kalkulus lambda. Lisp dan banyak bahasa keluarga Lisp masih umum digunakan sampai sekarang.

Functional programming adalah konsep penting dalam JavaScript karena merupakan salah satu dari dua pilar JavaScript.

3. Apa perbedaan antara Classical Inheritance dan Prototypal Inheritance?

Class Inheritance

Instansi mewarisi dari classes dan membuat hubungan sub-class. Instansi biasanya dipakai melalui fungsi konstruktor dengan kata kunci `new`. Class inheritance dapat menggunakan kata kunci `class` dari ES6.

Prototypal Inheritance

Instansi mewarisi langsung dari objek lain. Instansi biasanya dibuat melalui factory function atau `Object.create()`. Instansi dapat terdiri dari banyak objek yang berbeda, memungkinkan selective inheritance yang mudah.

4. Apa pro dan kontra dari functional programming vs object-oriented programming?

Object-oriented programming (OOP)

Pro

Sangat mudah untuk memahami konsep dasar objek dan mudah untuk menginterpretasikan arti dari pemanggilan metode. OOP cenderung menggunakan gaya imperatif daripada gaya deklaratif, yang dibaca sebagai serangkaian instruksi langsung untuk diikuti komputer.

Kontra

OOP Biasanya tergantung pada shared state. Objek dan perilaku biasanya disatukan pada entitas yang sama, yang dapat diakses secara acak oleh sejumlah fungsi dengan urutan non-deterministik, yang dapat menyebabkan perilaku yang tidak diinginkan seperti kondisi balapan.

Functional Programming (FP)

Pro

Menggunakan paradigma fungsional, programmer menghindari shared state atau efek samping, yang menghilangkan bug yang disebabkan oleh banyak fungsi yang bersaing untuk sumber daya yang sama. Function cenderung disederhanakan secara radikal dan mudah dikomposisi ulang untuk kode yang lebih umum digunakan kembali dibandingkan dengan OOP.

Kontra

Eksploitasi fitur FP yang berlebihan seperti point-free style dan komposisi besar berpotensi mengurangi keterbacaan karena kode yang dihasilkan seringkali lebih spesifik secara abstrak, lebih singkat, dan kurang konkret.

FP memiliki kurva belajar yang jauh lebih sulit daripada OOP karena popularitas OOP yang luas telah memungkinkan bahasa dan materi pembelajaran OOP menjadi lebih kasual dan mudah dipahami. Sedangkan bahasa FP cenderung jauh lebih akademis dan formal. Konsep FP sering ditulis tentang penggunaan idiom dan notasi dari kalkulus lambda, aljabar, dan teori kategori.

6. Kapan prototypal inheritance merupakan pilihan yang tepat?

Ada lebih dari satu jenis prototypal inheritance:

  • Delegasi (rantai prototipe)
  • Konkatenatif (mis. mixin, `Object.assign()`)
  • Fungsional (Fungsi yang digunakan untuk membuat penutupan untuk status/enkapsulasi pribadi)

Setiap jenis prototypal inheritance memiliki rangkaian kasus penggunaan sendiri, tetapi semuanya sama-sama berguna dalam kemampuannya untuk mengaktifkan komposisi, yang menciptakan hubungan has-a atau using-a atau can-do sebagai lawan dari hubungan is-a dibuat dengan class inheritance.

7. Apa yang dimaksud dengan “mengutamakan komposisi Object Compositon dari Class Inheritance”?

Ini berarti bahwa penggunaan kembali kode harus dicapai dengan merakit unit fungsionalitas yang lebih kecil menjadi objek baru alih-alih mewarisi dari kelas dan membuat taksonomi objek.

Dengan kata lain, gunakan hubungan can-do, has-a, atau uses-a alih-alih menggunakan hubungan is-a.

8. Apa yang dimaksud dengan pengikatan data dua arah dan aliran data satu arah dan apa perbedaannya?

Pengikatan data dua arah berarti bidang UI terikat untuk memodelkan data secara dinamis sehingga ketika bidang UI berubah, data model berubah dengannya dan sebaliknya.

Aliran data satu arah berarti bahwa model adalah satu-satunya sumber yang digunakan. Perubahan di UI memicu pesan yang memberi sinyal maksud pengguna ke model (atau "menyimpan" di React). Hanya model yang memiliki akses untuk mengubah status aplikasi. Efeknya adalah data selalu mengalir dalam satu arah, yang membuatnya lebih mudah untuk dipahami.

Aliran data satu arah bersifat deterministik, sedangkan pengikatan dua arah dapat menyebabkan efek samping yang lebih sulit untuk diikuti dan dipahami.

9. Apa pro dan kontra dari arsitektur monolitik vs microservice?

Arsitektur Monolitik

Arsitektur monolitik berarti aplikasi ditulis sebagai satu unit kode kohesif yang komponennya dirancang untuk bekerja bersama, berbagi ruang memori dan sumber daya yang sama.

Pro

Keuntungan utama dari arsitektur monolitik adalah bahwa sebagian besar aplikasi biasanya memiliki banyak masalah lintas sektoral, seperti pencatatan, pembatasan kecepatan, dan fitur keamanan seperti jejak audit dan perlindungan DOS.

Saat semuanya berjalan melalui aplikasi yang sama, mudah untuk menghubungkan komponen ke masalah lintas sektoral tersebut.

Ada juga keuntungan kinerja, karena akses memori bersama lebih cepat daripada komunikasi antar-proses (IPC).

Kontra

Layanan aplikasi monolitik cenderung digabungkan dan terjerat erat saat aplikasi berkembang, sehingga sulit untuk mengisolasi layanan untuk tujuan seperti penskalaan independen atau pemeliharaan kode.

Arsitektur Microservice

Arsitektur microservice berarti aplikasi terdiri dari banyak aplikasi independen lebih kecil yang mampu berjalan di ruang memorinya sendiri dan diskalakan secara independen satu sama lain di banyak mesin yang berpotensi terpisah.

Pro

Arsitektur microservice biasanya lebih terorganisir, karena setiap layanan mikro memiliki pekerjaan yang sangat spesifik, dan tidak peduli dengan pekerjaan komponen lain. Layanan yang dipisahkan juga lebih mudah untuk dikomposisi ulang dan dikonfigurasi ulang untuk melayani tujuan aplikasi yang berbeda (misalnya, melayani klien web dan API publik).

Kontra

Saat kamu membangun arsitektur microservice baru, kamu mungkin menemukan banyak masalah lintas sektoral yang tidak kamu antisipasi pada waktu desain. Dalam arsitektur microservice, kamu harus mengeluarkan overhead modul terpisah untuk setiap masalah lintas sektoral, atau merangkum masalah lintas sektoral di lapisan layanan lain yang dilalui semua lalu lintas.

10. Apa itu pemrograman asinkron dan mengapa penting dalam JavaScript?

Pemrograman sinkron berarti kode dieksekusi secara berurutan dari atas ke bawah, memblokir tugas yang berjalan lama seperti permintaan jaringan dan I/O disk.

Pemrograman asinkron berarti bahwa mesin berjalan dalam event loop. Ketika operasi pemblokiran diperlukan, permintaan dimulai, dan kode terus berjalan tanpa pemblokiran untuk hasilnya. Ketika respons sudah siap, interupsi diaktifkan, yang menyebabkan event handler dijalankan, di mana aliran kontrol berlanjut. Dengan cara ini, satu program dapat menangani banyak operasi bersamaan.

UI secara alami tidak sinkron, dan menghabiskan sebagian besar waktu untuk menunggu input pengguna untuk menginterupsi loop peristiwa dan memicu pengendali peristiwa.

Pemrograman asinkron penting dalam JavaScript, karena sangat cocok untuk kode antarmuka pengguna, dan sangat bermanfaat untuk kinerja di server.

Kesimpulan

Javascript merupakan bahasa pemrograman yang luas dan selalu berkembang. Tapi jika kamu dapat memahami konsep-konsep dasar pemrograman, hal itu dapat membuktikan kemampuan dan keseriusanmu untuk terus belajar dan mengembangkan kemampuanmu.

Untuk memahami konsep - konsep dasar pemrograman secara mendalam, ada banyak sumber yang bisa kamu cari. Salah satunya adalah Hacktiv8, tempat pelatihan yang mentransformasi seorang pemula menjadi talenta digital terlatih dan berkompeten. Kurikulum dalam program ini juga dirancang sesuai dengan kebutuhan di dunia kerja, sehingga siswa dapat langsung mempraktikkan ilmu yang didapatkan setelah lulus.

Hacktiv8 juga memiliki fasilitas Career Program untuk membantu para siswa mempersiapkan diri dalam menghadapi interview di suatu perusahaan. Kami akan membantumu membuat CV yang efektif dan memberi tahu bagaimana cara menghadapi pertanyaan-pertanyaan yang sering ditanyakan HR dan user kepada programmer baru.

Untuk info lebih lengkap tentang program ini, kamu bisa email ke [email protected] atau chat melalui WhatsApp ke 02150996662. Tertarik menjadi seorang programmer? Jangan ragu untuk mewujudkan karirmu bersama Hacktiv8.