Ein Leser hat mich gefragt, welche Fragen man vielleicht im Fachgespräch zu erwarten hat, wenn man ein „klassisches“ PHP-Projekt umgesetzt hat. Damit alle etwas davon haben, formuliere ich hier mal ein paar Fragen, die ich mir (und dann im Anschluss natürlich dem Prüfling 😉 ) stellen würde.
Vorab ein paar Informationen zum Projekt:
- Thema: Projektverwaltung. (Also wirklich das gaaaanz klassische Thema. Das habe ich tatsächlich schon zehnmal oder öfter gesehen.)
- Irgendein MVC-Webframework wird verwendet (z.B. Symfony, FLOW, Cake).
- Irgendeine Datenbank wird verwendet (z.B. MySQL, PostgreSQL).
Ich könnte mir nun die folgenden Fragen vorstellen. Die Liste ist sicherlich nicht vollständig, aber gibt vielleicht eine Anregung oder eine Idee zum Denkprozess des Prüfers. Ich gehe davon aus, dass ich außer der Präsentation nichts über das Projekt gesehen habe. In diesem Fall habe ich sogar außer der (kurzen) Projektbeschreibung nichts gesehen. Einige Fragen sind also ggfs. überflüssig, weil sie sich aus der Präsentation ergeben.
Ich gehe bei den Fragen immer so vor, dass ich einen konkreten Anlass aus dem Projekt suche, z.B. einen Quelltextausschnitt, und dazu Fragen stelle. Dann werde ich immer abstrakter und lande irgendwann bei allgemeinen Themen wie der Objektorientierung. Dieses Vorgehen muss natürlich nicht immer so angewendet werden. Alternativ steige ich bei sehr guten Prüflingen auch direkt mit den abstrakten Fragen ein.
Projektbezogen
- Warum wurde die x-te Projektverwaltung selbst programmiert und keine fertige Lösung verwendet? (Hierauf sollte man eine gute Antwort haben, da ansonsten das gesamte Projekt in Frage gestellt werden kann!)
- Wurde objektorientiert entwickelt oder prozedural? Warum?
- Wie wurde getestet bzw. die Qualität gesichert?
- Was zeichnet das gewählte MVC-Framework aus (z.B. Convention over Configuration)?
- Gibt es eine Benutzerverwaltung und wie ist sie implementiert? Gibt es z.B. eine Anbindung an ein Active Directory?
- War die Berücksichtigung des Datenschutzes relevant? Wie wurde er gewährleistet?
- Welche Sicherheitsvorkehrungen wurden getroffen?
- Gibt es ein Datensicherungskonzept?
Architektur
- Warum wurde ein MVC-Framework verwendet?
- Warum wurde genau dieses Framework verwendet?
- Gab es alternative Frameworks? Was waren die Vor-/Nachteile?
- Wie funktioniert das Framework?
- Was ist MVC?
- Wie werden „M“ und „V“ im konkreten Framework umgesetzt?
- Welche Aufgaben hat überhaupt ein Controller?
- Was sind die Vorteile der MVC-Architektur?
- Was sind die Vor-/Nachteile von „Fat Models“?
- Gibt es Beispiele, bei denen die gewählte Architektur ihre Vorteile ausspielen kann? Vielleicht sogar aus dem konkreten Projekt?
- Gibt es noch andere Softwarearchitekturen? Was sind Vor-/Nachteile?
- In welcher Komponente werden bei MVC die Daten validiert?
- Welche Kommunikationsbeziehungen gibt es im klassischen MVC zwischen den drei Komponenten?
- Wie unterscheidet sich MVC vom klassischen 3-Schichten-Modell?
- Wie ist das Routing umgesetzt?
- Wurde ein ORM verwendet?
PHP
- Was heißt PHP?
- Warum wurde das Projekt mit PHP entwickelt?
- Welche Eigenschaften hat PHP (Typisierung, Interpreter/Compiler, Syntax)?
- Was sind die Vor-/Nachteile von PHP im Vergleich mit anderen Programmiersprachen?
- Welche Probleme treten vielleicht bei der Objektorientierung in PHP auf?
- Kann man Unit-Tests mit PHP schreiben und wenn ja wie?
- Wie wurden die klassischen Sicherheitsprobleme gelöst (insb. Cross Site Scripting und SQL Injection)?
Datenbank
- Warum wurde die konkrete Datenbank gewählt?
- Warum wurde eine relationale Datenbank gewählt?
- Wie ist das Datenmodell entstanden?
- Welche Alternativen gibt es zu relationalen Datenbanken?
- Was ist NoSQL?
- Hätte man auch eine NoSQL-Datenbank verwenden können und wenn ja, welche?
- Welche Beziehungen bestehen zwischen den zentralen Entitäten und welche Kardinalitäten gibt es?
Frontend
- Welche(s) Framework(s) wurde(n) für die Frontendentwicklung verwendet? Warum?
- Was heißt HTML und was ist das?
- Was heißt CSS und was ist das?
- Warum sollte man Struktur und Layout voneinander trennen?
- Wurde HTML5 im Projekt verwendet?
- Was sind die zentralen Neuheiten in HTML5?
- Was ist semantisches HTML? Welche Vorteile bietet es?
- Was ist jQuery?
- Welche Ergonomierichtlinien wurden bei der Gestaltung der Formulare verwendet?
- Wie wurde sichergestellt, dass die Anwendung auch in älteren Browsern läuft?
- Wie wurde die Kompatibilität mit unterschiedlichen Browsern sichergestellt?
- Ist die Oberfläche responsive?
- Wurde die Oberfläche auch auf Mobilgeräten getestet?
- Welche Eigenschaften hat die Sprache JavaScript?
Objektorientierung
- Ist PHP eine objektorientierte Programmiersprache?
- Was ist Objektorientierung?
- Was sind die Vorteile der Objektorientierung im Vergleich mit der prozeduralen Programmierung?
- Von hier aus würde ich dann allgemein in Richtung der Objektorientierung weiter fragen: Anwendungsentwickler-Podcast #2: Häufige Fragen im Fachgespräch – Objektorientierung.
Webentwicklung allgemein
- Was ist AJAX?
- Was sind die Vor-/Nachteile von AJAX?
- Wie ist überhaupt der Ablauf beim Aufruf einer dynamischen Website?
- Was ist responsive Webdesign?
- Welche Möglichkeiten gibt es als Alternative zu responsive Webdesign, um Websites auf Mobilgeräten lauffähig zu machen?
- Worauf sollte man achten, wenn man eine Website gestaltet, die auf allen Gerätegrößen sinnvoll dargestellt werden muss?
- Was ist JSON? Was sind die Vor-/Nachteile im Vergleich mit XML?
- Auf welche gefährlichen Sicherheitslücken muss man insb. bei der Webentwicklung achten?
Fallen euch noch mehr Fragen ein? Welche Fragen würdet ihr erwarten? Welche Fragen würdet ihr selbst stellen? Ich würde mich über eure Kommentare freuen!
Weitere Infos zum Fachgespräch
Du suchst noch mehr Tipps rund um das Fachgespräch? Dann schau doch mal in diese Artikel- und Podcast-Kategorie: Alle Artikel rund um das Fachgespräch.
Kennst du schon meine Hörbücher zur Vorbereitung auf das Fachgespräch? Unter dasperfektefachgespraech.de kannst du sie herunterladen. In insg. über 10 Stunden gehe ich über 200 Fragen im Detail durch und gebe Tipps für die Beantwortung.
Und wenn du dich für meinen Newsletter einträgst, bekommst du immer direkt alle Neuigkeiten von dieser Seite in dein Postfach geliefert.
Jetzt anmelden!
Hab vielen Dank für die Fragen. Da kann man sich auf einiges Vorbereiten. 🙂
Ich würde wohl einmal die Frage stellen, ob PHP überhaupt eine Programmiersprache ist … Ich würde beispielsweise die Frage „Ist PHP eine objektorientierte Programmiersprache?“ direkt mit „Es ist nicht einmal eine Programmiersprache“ beantworten.
Hallo Stuppa, da hast du wohl schlechte Erfahrungen mit PHP gemacht, wie? 😉 PHP hat sicherlich einige Schwachstellen, ist aber dennoch eine vollwertige Programmiersprache. Und PHP wird immer noch in vielen Abschlussprojekten eingesetzt.
Hallo Stefan. Ich habe lediglich auf php.net den ersten Satz gelesen. 🙂 „PHP is a popular general-purpose scripting language that is especially suited to web development.“
Es bezeichnet sich selbst als eine Skriptsprache und bildet damit nur eine Untermenge der Programmiersprachen. Damit hat sie definitiv ebenfalls Eigenschaften einer Programmiersprache, aber ich glaube da hängt man sich zu sehr in Details auf, wenn man da versucht die klare Abgrenzung von Skirpt- und Programmiersprachen zu finden. Im Endeffekt würde ich sagen, dass es zwar das gleiche leisten kann wie eine Programmiersprache, sich jedoch anders „anfühlt“ und „verhält“, aber das liegt wohl im Auge des Betrachters.
Hallo Stuppa,
damit widersprichst du dir selbst: PHP ist eine Skriptsprache und Skriptsprachen sind eine Untermenge von Programmiersprachen. Daraus folgt, dass PHP eine Programmiersprache ist 🙂
Skriptsprachen haben Eigenschaften, die das Entwickeln von kleinen Programmen vereinfachen und werden meist nicht kompiliert, sondern interpretiert (siehe Skriptspache), aber das heißt nicht, dass sie keine „vollwertigen“ Programmiersprachen sind. Insb. PHP hat alle Eigenschaften einer Programmiersprache und ich würde sie somit auch als eine solche bezeichnen. In der Prüfung würde ich mich diesbzgl. nicht auf eine Diskussion einlassen.
Viele Grüße! Stefan
Hallo Stefan,
vielen Dank für den tollen Blog hier!
Könnten sie einmal eine ähnliche Fragen-Auflistung für ein Pythonprojekt erstellen, auch in der Gefahr das hier demnächst jeder Fragen für seine verwendete Programmiersprache sehen möchte^^. Aber das wäre wirklich sehr hilfreich. 🙂
Schöne Grüße aus Bremen und vielen Dank!
Hallo Hinne,
leider kenne ich mich mit Python nicht gut genug aus, um konkrete Fragen zu formulieren. Wenn es sich allerdings um ein Webprojekt handelt, stehen die meisten Fragen im Beitrag. Normalerweise werden auch eher allgemeine Fragen gestellt (Richtung OO usw.) und nicht so spezifisch auf die Programmiersprache bezogen. Allerdings habe ich bis vor wenigen Jahren noch selbst mit PHP entwickelt, weshalb mir die konkreten Fragen schnell einfielen. Zu Java, Ruby oder C# würde mir vielleicht noch mehr einfallen, aber wie du schon selbst sagst, ist das wenig zielführend 🙂
Viele Grüße!
Stefan