Diberikan sebuah array angka, hitung rata-rata hanya dari bilangan genap saja.
Contoh Input:
const arr = [10, 15, 20, 25, 30, 35, 40];Expected Output:
25 // (10 + 20 + 30 + 40) / 4 = 100 / 4 = 25
Diberikan sebuah array angka, kembalikan objek yang berisi nilai minimum dan maksimum tanpa menggunakan Math.min() atau Math.max().
Contoh Input:
const arr = [45, 12, 78, 3, 56, 99, 23];Expected Output:
{ min: 3, max: 99 }Diberikan sebuah array angka yang tidak terurut, hitung nilai median (nilai tengah).
Aturan:
- Jika jumlah elemen ganjil, median adalah nilai tengah
- Jika jumlah elemen genap, median adalah rata-rata dari 2 nilai tengah
Contoh Input:
const arr1 = [3, 1, 4, 1, 5]; // setelah sort: [1, 1, 3, 4, 5]
const arr2 = [3, 1, 4, 1, 5, 9]; // setelah sort: [1, 1, 3, 4, 5, 9]Expected Output:
arr1 โ 3 (nilai tengah)
arr2 โ 3.5 (rata-rata dari 3 dan 4)
Diberikan sebuah array angka, kembalikan nilai yang paling sering muncul (mode).
Contoh Input:
const arr = [1, 2, 2, 3, 3, 3, 4, 4];Expected Output:
3 // muncul 3 kali
Diberikan sebuah array, hitung berapa banyak elemen unik (tidak duplikat).
Contoh Input:
const arr = [1, 2, 2, 3, 4, 4, 4, 5];Expected Output:
5 // elemen unik: 1, 2, 3, 4, 5
Sama seperti challenge asli, tapi hasil kompresi harus dalam lowercase.
Contoh Input:
const str1 = 'AAAABBBCCCAA';
const str2 = 'AAAaaBBBbb';Expected Output:
str1 โ 'a4b3c3a2'
str2 โ 'a3a2b3b2'
Diberikan string yang sudah terkompresi, kembalikan ke bentuk aslinya.
Contoh Input:
const compressed = 'A4B3C3A2';Expected Output:
'AAAABBBCCCAA'
Modifikasi kompresi string: jika karakter hanya muncul 1 kali, jangan tambahkan angka.
Contoh Input:
const str1 = 'AAABBCDDD';
const str2 = 'ABCDEF';Expected Output:
str1 โ 'A3B2CD3'
str2 โ 'ABCDEF' (original, karena tidak ada pengulangan)
Buat fungsi untuk memvalidasi apakah string kompresi valid (format: huruf diikuti angka positif).
Aturan:
- Hanya boleh huruf (A-Z, a-z) diikuti angka positif
- Tidak boleh ada karakter spesial
- Angka tidak boleh 0 atau negatif
Contoh:
'A4B3C2' โ true
'A0B3' โ false (angka 0)
'4AB3' โ false (dimulai dengan angka)
'A-2B3' โ false (angka negatif)
'A4B' โ false (tidak ada angka setelah B)Buat kompresi string dengan format berbeda: setiap grup dipisahkan dengan koma.
Contoh Input:
const str = 'AAABBBCCAA';Expected Output:
'A:3,B:3,C:2,A:2'
Diberikan array of strings, kembalikan statistik berikut:
- Total karakter di semua string
- String terpanjang
- String terpendek
- Rata-rata panjang string
Contoh Input:
const arr = ['hello', 'world', 'javascript', 'code'];Expected Output:
{
totalChars: 24,
longest: 'javascript',
shortest: 'code',
averageLength: 6
}- Selalu tanyakan edge cases - Array kosong? String kosong? Angka negatif?
- Jelaskan pendekatan sebelum coding - Interviewer ingin tahu proses berpikir Anda
- Tulis test cases - Tunjukkan bahwa Anda memikirkan berbagai skenario
- Mulai dengan solusi sederhana - Optimize kemudian jika diperlukan
- Gunakan nama variabel yang jelas -
countlebih baik daric
Buat database dan API untuk sistem e-commerce.
Tabel yang diperlukan:
produk (id, nama, deskripsi, harga, stok, kategori_id)
kategori (id, nama_kategori)
pesanan (id, user_id, total_harga, status, created_at)
detail_pesanan (id, pesanan_id, produk_id, jumlah, harga_satuan)
Tasks:
- Buat model Sequelize dengan relasi One-to-Many (kategori โ produk) dan Many-to-Many (pesanan โ produk via detail_pesanan)
- Implementasi endpoint
GET /produkdengan fitur:- Filter by kategori (
?kategori=electronics) - Search by nama (
?search=laptop) - Pagination (
?page=1&limit=10) - Sort by harga (
?sort=harga&order=asc)
- Filter by kategori (
- Implementasi endpoint
POST /pesananyang:- Menerima array produk dan jumlah
- Validasi stok tersedia
- Menghitung total harga otomatis
- Mengurangi stok produk
- Implementasi endpoint
GET /laporan/penjualanyang menampilkan:- Total penjualan per kategori
- Produk terlaris (top 5)