Bank Soal PBW

dev.to

Bank Pertanyaan Penguji Big Golf

Dokumen ini versi upgrade untuk latihan sidang.
Isi pertanyaan dibuat lebih lebar, dari konsep dasar sampai keputusan teknis yang bisa ditanya mendadak.
Semua rujukan file hanya dari big-golf/.

Cara pakai biar tidak kaku

  • Jawab dulu 20 detik dengan pola konsep, alasan, bukti file
  • Kalau penguji minta detail, baru masuk ke alur kode
  • Jangan buru buru buka banyak file
  • Buka satu file yang paling relevan, jelaskan dulu konteksnya

Ringkasan inti yang harus nempel di kepala

  • Arsitektur pakai PHP native dengan pola MVC ringan
  • Routing ditangani manual di big-golf/config/router.php
  • UI pakai Bootstrap 5 dan styling kustom di big-golf/public/assets/css/tema.css
  • Vue dipakai tipis untuk interaksi kecil, bukan sebagai SPA penuh
  • Data ulasan diproses via PDO prepared statements
  • Area admin diamankan dengan session auth, CSRF, dan verifikasi password hash

A. Konsep dasar web dan stack

1) Kenapa pilih PHP native

Jawaban singkat

Kami sengaja pakai PHP native karena scope proyek jelas dan instruksi akademik memang mendorong itu. Dengan struktur MVC, kode tetap rapi meski tidak memakai framework besar.
Rujukan file

big-golf/public/index.php, big-golf/config/router.php, big-golf/controllers/

2) Kapan Bootstrap membantu paling terasa

Jawaban singkat

Bootstrap membantu di grid, form, button, modal, dan utilitas responsif. Ini bikin tim bisa fokus ke alur bisnis tanpa mengulang CSS dasar dari nol.
Rujukan file

big-golf/views/layouts/utama.php, big-golf/views/admin/login.php

3) Kenapa masih pakai CSS kustom kalau sudah ada Bootstrap

Jawaban singkat

Bootstrap dipakai sebagai fondasi komponen. Identitas visual proyek tetap kami bentuk di tema.css supaya tidak terasa template generik.
Rujukan file

big-golf/public/assets/css/tema.css

4) Vue dipakai di mana dan buat apa

Jawaban singkat

Vue dipakai tipis untuk kebutuhan interaksi kecil seperti mount tahun footer. Jadi penggunaannya hemat, tidak over engineering.
Rujukan file

big-golf/views/layouts/utama.php, big-golf/views/partials/footer.php

5) Kenapa tidak dijadikan SPA sekalian

Jawaban singkat

Kebutuhan aplikasi ini lebih cocok server rendered pages dengan interaksi lokal. Pendekatan itu lebih sederhana, cepat dijelaskan saat sidang, dan pas untuk scope company profile.
Rujukan file

big-golf/views/layouts/utama.php, big-golf/config/router.php

6) Apa nilai tambah arsitektur MVC di proyek ini

Jawaban singkat

MVC memudahkan pemisahan tanggung jawab. View fokus tampilan, controller fokus alur request, model fokus data.
Rujukan file

big-golf/controllers/UlasanController.php, big-golf/models/UlasanModel.php, big-golf/views/ulasan/halaman.php


B. Arsitektur request dan route

7) Alur request dari browser sampai HTML jadi apa

Jawaban singkat

Request masuk ke public/index.php, diteruskan ke router, lalu controller memilih view. Data yang perlu diambil dipanggil dari model sebelum render.
Rujukan file

big-golf/public/index.php, big-golf/config/router.php, big-golf/config/bootstrap.php

8) Kenapa route admin dipisah dengan endpoint aksi

Jawaban singkat

Kami pisahkan supaya alur GET halaman dan POST mutasi data tidak campur. Ini bikin kontrol keamanan dan audit lebih jelas.
Rujukan file

big-golf/config/router.php, big-golf/public/aksi_setujui_ulasan.php

9) Route publik apa saja yang paling penting dihafal

Jawaban singkat

Yang wajib hafal adalah /, /tentang, /fasilitas, /galeri, /lokasi-kontak, /ulasan, /admin/dashboard. Daftar ini biasanya muncul saat penguji cek cakupan fitur.
Rujukan file

big-golf/config/router.php

10) Kenapa tidak pakai dynamic routing

Jawaban singkat

Karena kebutuhan route masih terbatas dan stabil. Route statis membuat alur lebih mudah diuji dan minim kompleksitas.
Rujukan file

big-golf/config/router.php

11) Apa fungsi helper render halaman

Jawaban singkat

Helper render dipakai untuk konsistensi layout, data title, dan include partial umum. Jadi tidak perlu copy render logic di banyak controller.
Rujukan file

big-golf/config/bootstrap.php


C. Frontend dan UI detail komponen

12) Navbar pakai stack apa

Jawaban singkat

Navbar dirender dari partial PHP, interaksi mobile pakai dropdown Bootstrap, icon pakai Bootstrap Icons, dan gaya visual disetel di tema.css.
Rujukan file

big-golf/views/partials/navbar.php, big-golf/public/assets/css/tema.css

13) Footer pakai stack apa

Jawaban singkat

Footer dibangun dari partial PHP dengan utility Bootstrap, icon links, dan mini mount Vue untuk tahun dinamis. Ini contoh penggunaan Vue yang proporsional.
Rujukan file

big-golf/views/partials/footer.php, big-golf/views/layouts/utama.php

14) Lightbox galeri pakai apa

Jawaban singkat

Lightbox digerakkan JavaScript vanilla, bukan library tambahan besar. Ini cukup untuk navigasi foto dan tetap ringan.
Rujukan file

big-golf/public/assets/js/galeri.js, big-golf/views/galeri/index.php

15) Modal tulis ulasan pakai apa

Jawaban singkat

Modal memakai komponen Bootstrap, form dirender dari partial, dan interaksi bintang ditangani script JS khusus.
Rujukan file

big-golf/views/partials/ulasan/modal_tulis.php, big-golf/public/assets/js/ulasan-modal.js

16) Kenapa tetap pakai inline script di beberapa laman

Jawaban singkat

Untuk interaksi yang benar benar lokal pada satu halaman, inline script bisa lebih praktis dan mudah ditelusuri saat debugging. Selama tetap terkontrol, ini masih valid.
Rujukan file

big-golf/views/tentang/index.php, big-golf/views/fasilitas/index.php

17) Bagaimana responsivitas dijaga

Jawaban singkat

Responsivitas dijaga lewat grid Bootstrap, utility class, dan tuning CSS tema. Targetnya supaya konten tetap terbaca rapi di mobile sampai desktop.
Rujukan file

big-golf/views/layouts/utama.php, big-golf/public/assets/css/tema.css


D. Backend dan alur bisnis

18) Alur kirim ulasan dari user ke database

Jawaban singkat

User kirim form ke endpoint aksi, controller validasi input, lalu model simpan ke tabel ulasan dengan status awal menunggu. Data baru tampil ke publik setelah moderasi admin.
Rujukan file

big-golf/public/aksi_kirim_ulasan.php, big-golf/controllers/UlasanController.php, big-golf/models/UlasanModel.php

19) Alur vote ulasan di-handle di mana

Jawaban singkat

Vote masuk lewat route /ulasan/vote, lalu controller memvalidasi payload dan model melakukan update terparameter. Ini menjaga jalur vote tetap aman dari input liar.
Rujukan file

big-golf/config/router.php, big-golf/controllers/UlasanController.php

20) Kenapa contact form tidak langsung simpan DB

Jawaban singkat

Karena tujuan bisnisnya mengarahkan komunikasi ke WhatsApp. Jadi form lebih ke pre formatting pesan, bukan ticketing system.
Rujukan file

big-golf/public/aksi_kirim_kontak.php, big-golf/controllers/LokasiKontakController.php

21) Moderasi ulasan alurnya bagaimana

Jawaban singkat

Admin buka dashboard, pilih aksi setujui sembunyikan edit atau hapus, lalu endpoint POST memproses perubahan status lewat model. Setiap aksi utama disertai proteksi token.
Rujukan file

big-golf/views/admin/dashboard.php, big-golf/public/aksi_setujui_ulasan.php, big-golf/models/UlasanModel.php

22) Kenapa memakai endpoint aksi_*.php

Jawaban singkat

Pendekatan ini bikin jalur mutasi data sangat eksplisit dan mudah diaudit. Saat sidang pun lebih gampang dijelaskan endpoint mana yang melakukan apa.
Rujukan file

big-golf/public/aksi_login_admin.php, big-golf/public/aksi_hapus_ulasan.php


E. Database dan data integrity

23) Kenapa memilih PDO

Jawaban singkat

PDO memberi prepared statement yang rapi dan konsisten untuk berbagai query. Ini memudahkan binding parameter dan mengurangi risiko SQL injection.
Rujukan file

big-golf/koneksi.php, big-golf/models/UlasanModel.php

24) Apa bukti query aman dari SQL injection

Jawaban singkat

Query model menggunakan prepare, bindValue, dan execute, bukan menyusun string SQL mentah dari input user.
Rujukan file

big-golf/models/UlasanModel.php, big-golf/models/AdminPenggunaModel.php

25) Status ulasan dipakai untuk apa

Jawaban singkat

Status dipakai untuk memisahkan data publik dan data antrian moderasi. Artinya kontrol kualitas konten tetap di tangan admin.
Rujukan file

big-golf/models/UlasanModel.php, big-golf/views/ulasan/halaman.php

26) Apa fungsi log moderasi

Jawaban singkat

Log moderasi dipakai sebagai jejak perubahan saat status ulasan diubah admin. Ini penting untuk audit internal.
Rujukan file

big-golf/models/UlasanModel.php, big-golf/sql/skema.sql

27) Bagaimana relasi tabel dijaga

Jawaban singkat

Skema dibuat dengan constraint dan indeks untuk mendukung integritas data dan performa query utama.
Rujukan file

big-golf/sql/skema.sql


F. Security dan hardening

28) CSRF dipasang di mana saja

Jawaban singkat

CSRF ada di login, logout, moderasi admin, vote ulasan, kirim ulasan, dan form kontak. Token diverifikasi server side memakai hash_equals.
Rujukan file

big-golf/controllers/AdminAuthController.php, big-golf/controllers/UlasanController.php, big-golf/controllers/LokasiKontakController.php

29) Kenapa hash_equals penting

Jawaban singkat

hash_equals dipakai untuk perbandingan token yang lebih aman terhadap timing attack sederhana. Ini praktik standar saat verifikasi token.
Rujukan file

big-golf/controllers/AdminAuthController.php

30) Session hardening ada apa saja

Jawaban singkat

Session cookie disetel dengan httponly dan samesite, lalu session ID diregenerasi saat login. Ini mengurangi risiko pencurian atau fixation sesi.
Rujukan file

big-golf/config/bootstrap.php, big-golf/controllers/AdminAuthController.php

31) Mitigasi brute force login ada atau tidak

Jawaban singkat

Ada pembatasan berbasis percobaan gagal dan lock sementara. Ini belum kelas enterprise, tapi sudah cukup untuk baseline proyek akademik.
Rujukan file

big-golf/controllers/AdminAuthController.php

32) XSS dicegah bagaimana

Jawaban singkat

Output dinamis yang tampil di view di escape pakai htmlspecialchars. Jadi data user tidak diproses sebagai HTML aktif.
Rujukan file

big-golf/views/ulasan/halaman.php, big-golf/views/admin/dashboard.php

33) Kenapa validasi input tetap wajib walau ada CSRF

Jawaban singkat

CSRF melindungi asal request, bukan kualitas data. Validasi tetap wajib agar data konsisten dan aman diproses sistem.
Rujukan file

big-golf/lib/InputValidator.php


G. QA, testing, dan maintainability

34) Bagian mana yang paling rawan regresi UI

Jawaban singkat

Biasanya navbar mobile, galeri lightbox, dan modal ulasan. Tiga area ini punya interaksi lebih banyak dibanding section statis.
Rujukan file

big-golf/views/partials/navbar.php, big-golf/public/assets/js/galeri.js, big-golf/public/assets/js/ulasan-modal.js

35) Bagaimana cara cepat smoke test setelah perubahan

Jawaban singkat

Buka route utama, cek form kontak, kirim ulasan dummy, lalu verifikasi moderasi dari dashboard admin. Itu sudah menutup jalur kritis publik dan admin.
Rujukan file

big-golf/config/router.php, big-golf/views/admin/dashboard.php

36) Apa indikator quality yang kalian pakai

Jawaban singkat

Kami pakai indikator sederhana tapi konkret yaitu alur utama jalan, responsif dasar aman, input tervalidasi, dan konten publik terkurasi.
Rujukan file

big-golf/views/layouts/utama.php, big-golf/controllers/UlasanController.php

37) Kenapa struktur ini mudah dipelihara

Jawaban singkat

Karena alur file cukup jelas. Controller tahu ke model mana, view tahu layoutnya, dan endpoint aksi punya tanggung jawab tegas.
Rujukan file

big-golf/controllers/, big-golf/models/, big-golf/views/


H. Performa dan pengalaman pengguna

38) Apa keputusan performa paling penting di frontend

Jawaban singkat

Kami menghindari framework berat di sisi client. Interaksi yang dibutuhkan ditangani script kecil yang fokus.
Rujukan file

big-golf/public/assets/js/galeri.js, big-golf/public/assets/js/beranda-ulasan.js

39) Kenapa gambar diakses lewat endpoint aset

Jawaban singkat

Agar jalur URL konsisten dengan web root dan lebih gampang dikontrol dari sisi server. Ini membantu menghindari masalah path saat deploy.
Rujukan file

big-golf/public/galeri-aset.php, big-golf/public/lokasi-aset.php

40) Bagaimana kalian menjaga interaksi tetap halus

Jawaban singkat

Kami batasi animasi pada bagian yang punya nilai UX jelas dan tetap sediakan fallback reduced motion. Fokusnya pengalaman nyaman, bukan efek berlebihan.
Rujukan file

big-golf/public/assets/css/tema.css, big-golf/views/beranda/index.php


I. Deployment, operasi, dan reasoning produk

41) Kalau pindah server apa yang paling diperhatikan

Jawaban singkat

Yang paling penting adalah document root ke public, konfigurasi env database, dan URL publik Maps atau WA. Tiga ini kalau salah biasanya aplikasi jalan setengah.
Rujukan file

big-golf/public/index.php, big-golf/.env, big-golf/config/url_publik.php

42) Kenapa fitur reservasi tidak dibuat booking slot penuh

Jawaban singkat

Karena kebutuhan bisnis aktual mengarah ke walk in plus komunikasi WhatsApp. Jadi kami pilih solusi yang relevan, bukan fitur kompleks yang tidak terpakai.
Rujukan file

big-golf/views/lokasi_kontak/index.php, big-golf/controllers/LokasiKontakController.php

43) Kenapa admin dipusatkan untuk moderasi ulasan

Jawaban singkat

Karena alur bisnis butuh kontrol kualitas konten publik. Dengan moderasi terpusat, risiko konten tidak layak bisa ditekan.
Rujukan file

big-golf/views/admin/dashboard.php, big-golf/models/UlasanModel.php

44) Apa kompromi teknis terbesar di proyek ini

Jawaban singkat

Komprominya ada pada kesederhanaan arsitektur versus fitur enterprise. Kami pilih pondasi yang cukup kuat untuk scope akademik tanpa menambah beban kompleksitas.
Rujukan file

big-golf/config/router.php, big-golf/controllers/AdminAuthController.php

45) Kalau disuruh lanjut versi berikutnya, prioritasnya apa

Jawaban singkat

Prioritasnya test automation dasar, monitoring error yang lebih jelas, dan hardening login di level global bukan hanya session scoped.
Rujukan file

big-golf/controllers/AdminAuthController.php, big-golf/views/admin/dashboard.php


J. Pertanyaan menjebak dan contoh jawaban aman

46) “Pakai Bootstrap berarti kalian tinggal copy template, ya”

Jawaban aman

Bootstrap kami pakai sebagai fondasi komponen, bukan jadi desain final. Identitas visual tetap kami bentuk sendiri di tema dan konten domain Big Golf.
Rujukan file

big-golf/public/assets/css/tema.css, big-golf/views/beranda/index.php

47) “Kalau native, pasti lebih tidak aman dari framework”

Jawaban aman

Yang menentukan aman atau tidak itu praktik implementasi. Di proyek ini kami pakai prepared statements, CSRF token, escaping output, dan session hardening.
Rujukan file

big-golf/models/UlasanModel.php, big-golf/controllers/AdminAuthController.php

48) “Kenapa tidak sekalian pakai React atau Next”

Jawaban aman

Untuk scope company profile plus moderasi ulasan, stack sekarang sudah pas dari sisi effort dan hasil. Kami memilih teknologi yang paling relevan, bukan paling ramai.
Rujukan file

big-golf/views/layouts/utama.php, big-golf/config/router.php

49) “Kalau ada CSRF, berarti pasti aman semua dong”

Jawaban aman

CSRF hanya salah satu lapisan. Tetap perlu validasi input, kontrol auth, dan output escaping agar perlindungannya lengkap.
Rujukan file

big-golf/lib/InputValidator.php, big-golf/views/ulasan/halaman.php

50) “Kenapa data kontak tidak disimpan database saja”

Jawaban aman

Karena target operasionalnya komunikasi langsung ke WhatsApp. Jadi kami pilih alur yang paling dipakai di lapangan.
Rujukan file

big-golf/controllers/LokasiKontakController.php


Tips delivery supaya terdengar natural

  • Pakai kalimat sederhana seperti menjelaskan ke partner tim
  • Hindari jawaban hafalan panjang
  • Kalau bingung, balik ke tiga kata kunci yaitu alasan, implementasi, dan bukti file
  • Saat ditanya tajam, tenang dulu lalu jawab dari sudut kebutuhan bisnis dan keamanan teknis

File standby saat presentasi

  • big-golf/config/router.php
  • big-golf/views/layouts/utama.php
  • big-golf/views/partials/navbar.php
  • big-golf/views/partials/footer.php
  • big-golf/controllers/UlasanController.php
  • big-golf/controllers/AdminAuthController.php
  • big-golf/models/UlasanModel.php
  • big-golf/lib/InputValidator.php
  • big-golf/public/assets/css/tema.css

Gate dokumen

  • Pertanyaan diperluas lintas lingkup: terpenuhi
  • Bahasa dibuat lebih natural untuk lisan sidang: terpenuhi
  • Rujukan spesifik ke codebase: terpenuhi
  • Rujukan di luar big-golf/: tidak ada

Status: LULUS

Source: dev.to

arrow_back Back to News