Zebrałem wiele pytań do wywiadu, takich jak „Opisz, jak zaprojektowałbyś aplikację do albumu ze zdjęciami”, „Opisz, jak zaprojektowałbyś tę konkretną funkcję na tej stronie” (np. Polubienia na Facebooku, rekomendacji na Amazon, koszyku, grze black jack). A co jeśli są miliony takich rzeczy? Co byś zmienił?
Wygląda na to, że oczekuje albo schematu bazy danych, albo zbioru definicji klas (lub obu tych elementów?). Dowiedziałem się o bazach danych w szkole, ale tak naprawdę nigdy wcześniej nie projektowałem aplikacji i nie mam pojęcia, od czego zacząć, czy projekty, które wymyślę, są „dobre” i co mogę zmienić, aby było skalowalne.
Czy podczas projektowania tych systemów istnieje ogólne podejście lub proces myślowy? I ogólne problemy / problemy, które wydają się często pojawiać w projekcie, którego powinienem unikać? Czy ktoś może poprowadzić mnie przez jeden (lub najlepiej wszystkie, porównując potrzeby każdego z nich) i wyjaśnić:
1) Jak wymyślić, jakie podmioty są potrzebne? 2) Jak decydujesz, jakie relacje będą miały wszystko? 3) Jak włączyć optymalizację wydajności do swojego projektu? 4) Czy robię to za pomocą klas lub baz danych? Czy to robi różnicę (np. Czy miałbym klasę, której tak naprawdę nie można na przykład przetłumaczyć na tabelę bazy danych?)
Głównym powodem, dla którego pytam, jest to, że przechodziłem przez „Wywiad z kodowaniem”, a moje odpowiedzi były całkowicie odmienne od odpowiedzi autora - miałem bardzo różne wyobrażenia o tym, które zajęcia były ważne.
MOJA PRÓBA: Dzięki aplikacji do udostępniania zdjęć miałbym zajęcia / tabele: Zdjęcie i Użytkownik na pewno.
Następnie myślę, że jeśli próbujemy utworzyć schemat, istnieje tabela łącząca zdjęcie i użytkownika, jeśli założymy, że każda osoba na zdjęciu jest powiązana ze zdjęciem (czy ta tabela jest konieczna? Jeśli nie, czy nadal jest to powszechna praktyka mieć osobną tabelę dla relacji wiele do wielu, czy nie?).
Ale jeśli spróbujemy zastosować podejście obiektowe, może zamiast tego mielibyśmy klasę o nazwie album, która wykonuje całą pracę i zawiera wszystkie informacje z dwóch innych tabel / klas. To jedna rzecz, którą zauważyłem w książce - jest kilka klas, a potem jedna klasa, która w zasadzie zawiera wszystkie informacje i łączy inne klasy - czy to jest wspólne? Na przykład w moich przykładach powyżej wydaje się, że miałoby to zastosowanie?
Mam tylko nadzieję na przestrzeganie ogólnych zasad / wytycznych, ponieważ w tej chwili nie mam pojęcia, jak powiedzieć, jak wygląda dobra architektura dla dużego systemu.