Topik wawancara representatif

Wawancara Desain Sistem: Mendesain Ledger Tanda Terima Persetujuan Multipenyewa (Multi-Tenant Consent Receipt Ledger)

Desain sistemSulit
Tim Redaksi Offer.ccDipublikasikan Diperbarui

Pertanyaan

Desain Ledger Tanda Terima Persetujuan multipenyewa yang mencatat persetujuan, penarikan, dan perubahan tujuan sekaligus mendukung kueri audit.

Prompt dan kasus penggunaan

Desain Ledger Tanda Terima Persetujuan multipenyewa yang mencatat persetujuan, penarikan, dan perubahan tujuan sekaligus mendukung kueri audit. Prompt ini cocok untuk wawancara desain sistem, rekayasa privasi (privacy engineering), dan infrastruktur platform. Kuncinya adalah memodelkan persetujuan sebagai fakta yang dapat dilacak, bukan nilai boolean yang dapat ditimpa.

Hal yang dinilai oleh pewawancara

  • Apakah Anda mendefinisikan peristiwa persetujuan, versi tujuan, kategori data, bukti, dan semantik penarikan persetujuan.
  • Apakah isolasi penyewa, integritas append-only, idempoten, dan kueri yang dapat diverifikasi dirancang secara bersamaan.
  • Apakah propagasi penarikan, konsumen yang tertunda, percobaan ulang (retries), dan koreksi historis ditangani.
  • Apakah minimalisasi privasi, auditabilitas, performa kueri, dan retensi diseimbangkan.

Pertanyaan untuk diklarifikasi sebelum menjawab

Konfirmasikan apakah subjek adalah pengguna akhir atau administrator perusahaan, dan apakah persetujuan dicakup berdasarkan tujuan, kategori data, wilayah, atau pemroses (processor). Tanyakan tentang volume peristiwa puncak, dimensi kueri, batas waktu audit, penyimpanan lintas wilayah, kesegeraan penarikan persetujuan, dan konfirmasi penerimaan hilir (downstream acknowledgements). Klarifikasi ekspor yang dapat dibaca mesin, penahanan hukum (legal hold), permintaan penghapusan, dan kunci yang dikelola penyewa.

Kerangka jawaban 30 detik

“Saya akan menggunakan tujuan yang memiliki versi dan aliran peristiwa append-only untuk pemberian, pembaruan, penarikan, dan hasil propagasi. Operasi tulis dipartisi berdasarkan penyewa dan bersifat idempoten; operasi baca mengembalikan status efektif dan rantai bukti pada waktu yang dipilih. Penarikan memberi tahu pemroses hilir melalui antrean yang andal dengan percobaan ulang dan peninjauan manusia. Enkripsi, bidang minimal, kunci penyewa, dan kebijakan retensi membatasi eksposur.”

Jawaban mendalam langkah demi langkah

  1. Model domain: Tentukan subjek, penyewa, versi tujuan, kategori data, sumber persetujuan, bahasa, stempel waktu, teks bukti, dan transisi status.
  2. Penulisan dan integritas: Tambahkan peristiwa dengan urutan monotonik dan kunci idempotensi permintaan; gunakan rantai hash atau tanda tangan untuk mencegah pengeditan diam-diam, sembari memisahkan rotasi kunci dari isolasi penyewa.
  3. Pembacaan status: Bangun proyeksi untuk kueri subjek-dan-tujuan sambil mempertahankan posisi peristiwa, versi proyeksi, dan referensi bukti.
  4. Propagasi penarikan: Publikasikan penarikan ke pemroses hilir dan catat konfirmasi penerimaan, percobaan ulang, serta kegagalan akhir setiap penerima; "terkirim" tidak boleh diartikan sebagai "pemrosesan telah berhenti."
  5. Operasi dan tata kelola: Partisi data, tingkatkan penyimpanan (tier storage), audit akses, prioritaskan penghapusan versus penahanan hukum, dan sediakan ekspor serta paginasi yang diotorisasi penyewa.

Contoh jawaban berkualitas tinggi

Saya akan membagi ledger menjadi lapisan peristiwa yang tidak dapat diubah (immutable), proyeksi yang dapat dibangun kembali, dan penyimpanan bukti yang terkontrol. Setiap peristiwa akan mencakup penyewa, referensi subjek yang tidak dapat dibalik, tujuan dan versi, kategori data, tindakan, sumber, waktu, versi kebijakan, dan kunci idempotensi permintaan. Teks persetujuan asli atau tangkapan layar antarmuka pengguna akan berada di penyimpanan terenkripsi dan tidak dimasukkan ke dalam kueri biasa. Penyewa akan memiliki partisi dan cakupan kunci terpisah; peristiwa akan ditambahkan ke urutan penyewa serta menggunakan hash dan tanda tangan untuk mendeteksi pengeditan diam-diam. Layanan kueri akan membaca proyeksi untuk mengetahui status efektif pada waktu yang dipilih, lalu mengembalikan posisi peristiwa dan referensi bukti. Peristiwa penarikan akan masuk ke antrean yang andal dan melacak konfirmasi penerimaan per pemroses hilir. Batas waktu habis atau penolakan akan dicoba ulang dan dieskalasi, dengan status eksplisit untuk dicatat (recorded), dikirim (sent), dikonfirmasi (acknowledged), dan gagal (failed). Proyeksi dapat dibangun kembali dari ledger untuk perubahan versi tujuan dan koreksi historis. Saya akan memvalidasi isolasi penyewa, permintaan duplikat, peristiwa di luar urutan, rotasi kunci, latensi penarikan, otorisasi ekspor, dan penahanan penghapusan dengan pengujian serta latihan pemutaran ulang (replay drills).

Kesalahan umum

  • Hanya menyimpan consent=true, yang menghapus versi tujuan dan riwayat penarikan.
  • Memperlakukan keberhasilan pemberitahuan hilir sebagai bukti bahwa pemrosesan telah berhenti.
  • Mengganti peristiwa append-only dengan baris yang dapat diedit, sehingga kehilangan bukti perubahan riwayat.
  • Menempatkan subjek yang dapat diidentifikasi atau data penyewa dalam indeks global, merusak isolasi dan minimalisasi.
  • Merancang operasi tulis tanpa memperhitungkan peristiwa di luar urutan, percobaan ulang, pembangunan kembali proyeksi, penghapusan, atau penahanan hukum.

Pertanyaan lanjutan dan tanggapan

Bagaimana jika pengguna mengeklik persetujuan dua kali?

Lakukan deduplikasi dengan kunci idempotensi permintaan dan sidik jari peristiwa sambil mempertahankan perubahan sumber atau versi UI yang bermakna. Kembalikan status efektif dan pertahankan catatan mengenai permintaan mana yang digabungkan atau diabaikan.

Apakah perubahan versi tujuan memerlukan persetujuan baru?

Perlakukan teks tujuan dan versi sebagai referensi yang tidak dapat diubah. Jika versi baru memperluas pemrosesan, buat status persetujuan-ulang-diperlukan (re-consent-needed); jangan secara diam-diam menerapkan persetujuan lama ke tujuan baru.

Bagaimana ledger mendukung permintaan penghapusan?

Pisahkan bukti audit yang harus dipertahankan dari data subjek yang dapat dihapus, menggunakan referensi non-identifikasi dan penghapusan kriptografis jika sesuai. Penahanan hukum lebih diutamakan daripada penghapusan biasa, dengan cakupan dan pengecualian yang dicatat sebagai peristiwa terkontrol.

Bagaimana Anda membuktikan bahwa sebuah kueri tidak melewatkan peristiwa?

Kembalikan rentang urutan penyewa, versi proyeksi, dan ringkasan pemeriksaan peristiwa. Alat audit dapat memutar ulang lapisan peristiwa pada titik yang sama dan membandingkannya dengan proyeksi.

Sumber publik

Pertanyaan terkait

Alat wawancara terkait

Gunakan Jawab untuk jawaban desain sistem

Perjelas persyaratan terlebih dahulu, lalu lanjutkan dengan skala, arsitektur, pilihan komponen, dan trade-off.

Lihat alat