J'ai rassemblé un tas de questions d'entrevue comme «Décrivez comment vous concevriez une application d'album photo», «Décrivez comment vous concevriez cette fonctionnalité particulière de ce site Web particulier» (par exemple, j'aime sur Facebook, la recommandation sur Amazon, le panier d'achat, le jeu de black jack). Alors, que faire s'il y a des millions de cette chose? Que changerais tu?
Il semble que ce soit attend un schéma de base de données ou un tas de définitions de classe (ou les deux?). J'ai appris les bases de données à l'école, mais je n'ai jamais conçu d'architecture auparavant et j'ai du mal à savoir par où commencer, si les conceptions que je propose sont "bonnes" et ce que je peux changer pour la rendre évolutive.
Existe-t-il une approche générale ou un processus de réflexion lors de la conception de ces systèmes? Et les problèmes / problèmes généraux qui semblent se poser beaucoup dans la conception que je devrais essayer d'éviter? Quelqu'un pourrait-il me guider à travers un (ou de préférence tous, tout en comparant les besoins de chacun) et expliquer:
1) Comment trouvez-vous les entités nécessaires? 2) Comment décidez-vous des relations que tout aura? 3) Comment intégrez-vous l'optimisation des performances dans votre conception? 4) Est-ce que je fais cela en utilisant des classes ou des bases de données? Cela fait-il une différence (par exemple, aurais-je une classe qui ne peut pas vraiment être traduite en table de base de données, par exemple?)
La principale raison pour laquelle je demande, c'est parce que je passais par "Cracking the Coding Interview" et que mes réponses étaient complètement différentes de celles de l'auteur - j'avais des idées très différentes sur les cours qui étaient importants.
MON TENTATIVE: Avec l'application de partage de photos, j'aurais les classes / tableaux: photo et utilisateur à coup sûr.
Ensuite, je pense que si nous essayons de créer un schéma, il y aurait un tableau reliant la photo et l'utilisateur si nous supposons que chaque personne sur la photo est liée à la photo (ce tableau est-il nécessaire? Sinon, est-ce toujours une pratique courante d'avoir une table séparée pour les relations plusieurs-à-plusieurs ou non?).
Mais si nous essayons d'adopter une approche orientée objet, peut-être aurions-nous plutôt une classe appelée album qui fait tout le travail et a toutes les informations des deux autres tables / classes. C'est une chose que j'ai remarquée dans le livre - il y a un tas de classes et puis une classe qui a fondamentalement toutes les informations et relie les autres classes - est-ce commun? Par exemple, dans mes exemples ci-dessus, cela semble-t-il s'appliquer?
J'espère juste que certaines règles / directives générales suivront, car pour le moment je ne sais pas comment dire à quoi ressemble une bonne architecture pour un grand système.