9 Fragen zu ungewöhnlichen Designmustern im Vorstellungsgespräch (mit Antworten)

9 Fragen und Antworten zu unkonventionellen Designmustern im VorstellungsgesprächIn der Softwaretechnik ist ein Entwurfsmuster eine allgemeine, wiederholbare Lösung für ein häufig auftretendes Problem im Softwaredesign. Ein Entwurfsmuster ist kein fertiges Design, das direkt in Code umgewandelt werden kann. Es ist eine Beschreibung oder Vorlage zur Lösung eines Problems, die in vielen verschiedenen Situationen verwendet werden kann.

F1: Was sind Design Patterns und warum sollten sie verwendet werden?

Thema: Designmuster
Schwierigkeit: ⭐

Entwurfsmuster sind eine gut beschriebene Lösung für die am häufigsten auftretenden Probleme, die während der Softwareentwicklung auftreten.

Das Entwurfsmuster stellt die besten Praktiken dar, die über einen bestimmten Zeitraum von erfahrenen Softwareentwicklern entwickelt wurden. Sie fördern die Wiederverwendbarkeit, was zu einem robusteren und wartbareren Code führt.

🔗 Quelle: www.educba.com

Q2: Was ist ein Filtermuster?

Thema: Designmuster
Schwierigkeit: ⭐⭐

Filtermuster oder Kriterienmuster ist ein Entwurfsmuster, das es Entwicklern ermöglicht, eine Reihe von Objekten anhand verschiedener Kriterien zu filtern und sie durch logische Operationen entkoppelt zu verketten. Diese Art von Entwurfsmuster fällt darunter strukturell Muster, da dieses Muster mehrere Kriterien kombiniert, um einzelne Kriterien zu erhalten.

Designmuster filtern ist nützlich, wenn Sie Filter dynamisch hinzufügen möchten oder mehrere Funktionen implementieren und die meisten von ihnen unterschiedliche Filterkriterien erfordern, um etwas zu filtern. In diesem Fall können Sie, anstatt die Filter innerhalb der Funktionen fest zu codieren, Filterkriterien erstellen und diese bei Bedarf wiederverwenden.

List <Laptop> laptops = LaptopFactory.manufactureInBulk();
AndCriteria searchCriteria = new AndCriteria(
  new HardDisk250GBFilter(), 
  new MacintoshFilter(), 
  new I5ProcessorFilter());

List <Laptop> filteredLaptops = searchCriteria.meets(laptops);

🔗 Quelle: tutorialspoint.com

Q3: Was ist ein Strategiemuster?

Thema: Designmuster
Schwierigkeit: ⭐⭐

Im Strategiemuster , kann ein Klassenverhalten oder sein Algorithmus zur Laufzeit geändert werden. Diese Art von Entwurfsmuster fällt darunter Verhalten Muster.

Im Strategiemuster erstellen wir Objekte, die verschiedene Strategien darstellen, und ein Kontextobjekt, dessen Verhalten je nach Strategieobjekt variiert. Das Strategieobjekt ändert den ausführenden Algorithmus des Kontextobjekts.

Bild

🔗 Quelle: tutorialspoint.com

Q4: Was ist ein Beobachtermuster?

Thema: Designmuster
Schwierigkeit: ⭐⭐⭐

Beobachtermuster (auch bekannt als Publish-Subscribe-Muster) wird verwendet, wenn zwischen Objekten eine Eins-zu-Viele-Beziehung besteht, z. B. wenn ein Objekt geändert wird und seine abhängigen Objekte automatisch benachrichtigt werden sollen. Beobachtermuster fällt darunter verhalten Kategorie Muster.

Ein Objekt mit einer Eins-zu-Viele-Beziehung zu anderen Objekten, die an seinem Zustand interessiert sind, wird als das bezeichnet Thema oder Verleger. Das Beobachter werden benachrichtigt, wann immer der Zustand der Thema Änderungen und kann entsprechend handeln. Das Thema kann eine beliebige Anzahl von abhängigen haben Beobachter die es benachrichtigt, und eine beliebige Anzahl von Beobachter abonnieren können Thema um solche Benachrichtigungen zu erhalten.

Das Observer-Muster verwendet zwei Akteursklassen: * Die abstrakte Klasse Observer (os Subscriber) stellt eine update() -Methode, die vom Subjekt aufgerufen wird, um es über die Zustandsänderung des Subjekts zu informieren. * Die Klasse „Subject“ (oder „Publisher“) ist ebenfalls eine abstrakte Klasse und definiert vier primäre Methoden: attach(), detach(), setState()und notify()

Bild

🔗 Quelle: sitepoint.com

F5: Warum sollte ich jemals eine Verantwortungskette gegenüber einem Dekorateur verwenden?

Thema: Designmuster
Schwierigkeit: ⭐⭐⭐⭐

Der wesentliche Unterschied besteht darin, dass a Dekorateur fügt ein neues Verhalten hinzu, das die ursprüngliche Benutzeroberfläche tatsächlich erweitert. Es ist ähnlich, wie eine normale Erweiterung Methoden hinzufügen kann, außer dass die „Unterklasse“ nur durch eine Referenz gekoppelt ist, was bedeutet, dass jede „Oberklasse“ verwendet werden kann.

Das Kette der Verantwortung Muster kann ein vorhandenes Verhalten ändern, was dem Überschreiben einer vorhandenen Methode durch Vererbung ähnelt. Sie können anrufen super.xxx() um die „Kette“ weiter nach oben zu gehen oder die Nachricht selbst zu bearbeiten.

🔗 Quelle: stackoverflow.com

F6: Wann würden Sie das Builder-Pattern verwenden? Warum nicht einfach ein Factory-Pattern verwenden?

Thema: Designmuster
Schwierigkeit: ⭐⭐⭐⭐

Das Builder-Muster ist eine gute Wahl beim Entwerfen von Klassen, deren Konstruktoren oder statische Fabriken mehr als eine Handvoll Parameter haben würden.

Betrachten Sie ein Restaurant. Die Erstellung von „heutiges Essen“ ist ein Fabrikmuster, weil Sie der Küche sagen „hol mir das heutige Essen“ und die Küche (Fabrik) entscheidet, welches Objekt sie erzeugen soll, basierend auf versteckten Kriterien.

Der Builder wird angezeigt, wenn Sie eine benutzerdefinierte Pizza bestellen. In diesem Fall sagt der Kellner zum Koch (Baumeister): „Ich brauche eine Pizza; Käse, Zwiebeln und Speck dazu!“ Daher legt der Builder die Attribute offen, die das generierte Objekt haben sollte, verbirgt jedoch, wie sie festgelegt werden.

🔗 Quelle: stackoverflow.com

Q7: Wie unterscheidet sich das Brückenmuster vom Adaptermuster?

Thema: Designmuster
Schwierigkeit: ⭐⭐⭐⭐

Die Absicht der Adaptermuster besteht darin, die Schnittstellen einer oder mehrerer Klassen so aussehen zu lassen wie die einer bestimmten Klasse.

Das Brückenmuster wurde entwickelt, um die Schnittstelle einer Klasse von ihrer Implementierung zu trennen, sodass Sie die Implementierung variieren oder ersetzen können, ohne den Clientcode zu ändern.

🔗 Quelle: tutorialspoint.com

F8: Was ist der Unterschied zwischen den Mustern Dependency Injection und Service Locator?

Thema: Designmuster
Schwierigkeit: ⭐⭐⭐⭐⭐

  • Mit dem ServiceLocator , ist die Klasse weiterhin für das Erstellen ihrer Abhängigkeiten verantwortlich. Es verwendet einfach den Service Locator, um dies zu tun.

  • Service-Locators Abhängigkeiten verbergen – Sie können einem Objekt nicht sagen, ob es eine Datenbank trifft oder nicht (zum Beispiel), wenn es Verbindungen von einem Locator erhält.

  • Mit AUS , erhält die Klasse ihre Abhängigkeiten. Es weiß weder, noch kümmert es sich darum, woher sie kommen.

Ein wichtiges Ergebnis davon ist, dass das DI-Beispiel viel einfacher zu testen ist, da Sie ihm Scheinimplementierungen seiner abhängigen Objekte übergeben können. Sie könnten die beiden kombinieren – und den Service-Locator (oder eine Fabrik) einfügen, wenn Sie wollten.

🔗 Quelle: stackoverflow.com

F9: Erklären Sie den Unterschied zwischen den Entwurfsmustern „Fassade“, „Proxy“, „Adapter“ und „Decorator“?

Thema: Designmuster
Schwierigkeit: ⭐⭐⭐⭐⭐

  • Adapter passt eine gegebene Klasse/Objekt an eine neue Schnittstelle an. Im ersteren Fall wird typischerweise Mehrfachvererbung verwendet. Im letzteren Fall wird das Objekt von einem konformen Adapterobjekt umhüllt und herumgereicht. Das Problem, das wir hier lösen, ist das der nicht kompatiblen Schnittstellen.
  • Fassade ist eher ein einfaches Tor zu einem komplizierten Satz von Funktionen. Sie schaffen eine Blackbox für Ihre Kunden, damit sie sich weniger Sorgen machen, dh Schnittstellen vereinfachen.
  • Proxy bietet die gleiche Schnittstelle wie die Proxy-Klasse und erledigt in der Regel selbst einige Haushaltsaufgaben. (Anstatt also mehrere Kopien eines schweren Objekts X zu erstellen, erstellen Sie Kopien eines leichten Proxys P, der wiederum X verwaltet und Ihre Aufrufe nach Bedarf übersetzt.) Sie lösen das Problem, dass der Client ein schweres und/oder verwalten muss komplexes Objekt.
  • Dekorateur wird verwendet, um Ihren Objekten mehr Schießpulver hinzuzufügen (beachten Sie den Begriff Objekte – normalerweise dekorieren Sie Objekte zur Laufzeit dynamisch). Sie blenden/beeinträchtigen nicht die bestehenden Schnittstellen des Objekts, sondern erweitern es einfach zur Laufzeit

🔗 Quelle: stackoverflow.com

Danke 🙌 fürs Lesen und viel Glück bei deinem Vorstellungsgespräch!
Weitere Fragen und Antworten zu FullStack-Interviews finden Sie unter 👉 www.fullstack.cafe

Similar Posts

Leave a Reply

Your email address will not be published.