Я зібрав купу запитань щодо інтерв'ю на кшталт "Опишіть, як би ви створили додаток для фотоальбому", "Опишіть, як би ви створили цю особливість цього конкретного веб-сайту" (наприклад, подобається у Facebook, рекомендація щодо Amazon, кошик для покупок, гра чорного джека). Тоді, що робити, якщо цієї речі є мільйони? Що б ти змінив?
Схоже, це або очікування схеми бази даних, або купа визначень класу (або обох?). Я дізнався про бази даних у школі, але я ніколи раніше не розробляв програму і раніше не стикався з тим, з чого почати, чи "дизайн", який я придумав, "хороший" і що я можу змінити, щоб зробити його масштабованим.
Чи існує загальний підхід або процес думки при проектуванні цих систем? І загальних питань / проблем, які, здається, виникають у дизайні, чого я повинен намагатися уникати? Може хтось, можливо, провів мене через один (або, бажано, всі), порівнюючи потреби кожного) та пояснив:
1) Як ви придумаєте, які сутності потрібні? 2) Як ти вирішуєш, які стосунки матиме все? 3) Як ви включите оптимізацію продуктивності у свій дизайн? 4) Чи роблю це за допомогою класів чи баз даних? Чи має це значення (тобто, чи маю я клас, який насправді не можна перекласти в таблицю бази даних, наприклад?)
Основна причина, про яку я запитую, - це те, що я переживав "Інтерв'ю з розбиттям кодування", і мої відповіді були абсолютно різними від авторських - у мене були дуже різні уявлення про те, які класи важливі.
МОЕ ЗАРАЗ: За допомогою програми для обміну фотографіями я б точно розмістив класи / таблиці: Фото та Користувач.
Тоді я думаю, що якщо ми намагаємося створити схему, то буде таблиця, що поєднує фотографію та користувача, якщо ми припускаємо, що кожна людина на фотографії пов’язана з фотографією (чи потрібна ця таблиця? Якщо ні, чи це все-таки звичайна практика мати окрему таблицю для стосунків багато-багато чи ні?).
Але якщо ми намагаємося застосувати об'єктно-орієнтований підхід, можливо, замість цього у нас був би клас, який називається альбомом, який виконує всю роботу і містить всю інформацію з двох інших таблиць / класів. Це одне, що я помітив у книзі - є купа класів, а потім один клас, який в основному має всю інформацію та з'єднує інші класи - це загальне явище? Наприклад, у моїх вище прикладах, здається, це застосовується?
Я просто сподіваюся дотримуватися деяких загальних правил / рекомендацій, тому що зараз я не маю уявлення, як сказати, як виглядає хороша архітектура для великої системи.