Saya telah mengumpulkan banyak pertanyaan wawancara seperti "Jelaskan bagaimana Anda akan merancang aplikasi album foto", "Jelaskan bagaimana Anda akan merancang fitur khusus ini dari situs web khusus ini" (misalnya suka di Facebook, rekomendasi di Amazon, keranjang belanja, permainan jack hitam). Lalu, bagaimana jika ada jutaan benda ini? Apa yang akan Anda ubah?
Sepertinya ini mengharapkan skema database atau sekelompok definisi kelas (atau keduanya?). Saya telah belajar tentang database di sekolah tetapi saya belum pernah benar-benar merancang aplikasi sebelumnya dan saya mengalami kesulitan mengetahui di mana harus memulai, apakah desain yang saya buat adalah "baik" dan apa yang dapat saya ubah untuk membuatnya dapat diskalakan.
Apakah ada pendekatan umum atau proses pemikiran ketika merancang sistem ini? Dan masalah umum / masalah yang sepertinya banyak muncul dalam desain yang harus saya coba hindari? Dapatkah seseorang mungkin menuntun saya melalui satu (atau lebih disukai semua, sambil membandingkan kebutuhan masing-masing) dan menjelaskan:
1) Bagaimana Anda menemukan entitas apa yang dibutuhkan? 2) Bagaimana Anda memutuskan hubungan apa yang akan dimiliki semuanya? 3) Bagaimana Anda memasukkan optimasi kinerja ke dalam desain Anda? 4) Apakah saya melakukan ini menggunakan kelas atau database? Apakah itu membuat perbedaan (yaitu apakah saya memiliki kelas yang tidak dapat benar-benar diterjemahkan ke tabel database, misalnya?)
Alasan utama saya bertanya adalah karena saya sedang melalui "Cracking the Coding Wawancara" dan jawaban saya benar-benar berbeda dari yang penulis - saya punya ide yang sangat berbeda tentang kelas apa yang penting.
PERHATIAN SAYA: Dengan aplikasi berbagi foto, saya akan memiliki kelas / tabel: Foto dan Pengguna pasti.
Lalu, saya pikir jika kita mencoba membuat skema, akan ada tabel yang menghubungkan foto dan pengguna jika kita menganggap setiap orang di foto tersebut terhubung ke foto (apakah tabel ini diperlukan? Jika tidak, apakah masih praktik umum untuk memiliki tabel terpisah untuk hubungan banyak ke banyak atau tidak?).
Tetapi jika kita mencoba mengambil pendekatan berorientasi objek, mungkin sebaliknya kita akan memiliki kelas yang disebut album yang melakukan semua pekerjaan dan memiliki semua info dari dua tabel / kelas lainnya. Ini adalah satu hal yang saya perhatikan dalam buku - ada banyak kelas dan kemudian satu kelas yang pada dasarnya memiliki semua info dan menghubungkan kelas-kelas lain - apakah ini biasa? Misalnya, dalam contoh saya di atas, apakah ini tampaknya akan berlaku?
Saya hanya berharap beberapa aturan / pedoman umum untuk diikuti karena saat ini saya tidak tahu bagaimana mengatakan seperti apa arsitektur yang bagus untuk sistem besar.