In den letzten Jahren ist die Entwicklung optimierter Anwendungen und Websites teurer geworden, und gleichzeitig ist auch die Nachfrage nach Qualitätsentwicklern gestiegen.
Andererseits reichern Entwickler ihre Fähigkeiten mit mehr als nur einer Programmierfertigkeit an, um auf dem Markt wettbewerbsfähiger zu sein, insbesondere Fullstack-Entwickler, die immer sehr gefragt sind.
Die Frage bleibt: Wo findet man gute Fullstack-Entwickler und wie stellt man sie effizient ein? Beginnen Sie mit einer gewinnenden Fullstack Developer Stellenanzeige vor allem anderen.
Lassen Sie uns beginnen.
Was ist Fullstack-Entwicklung?
Fullstack-Entwicklung umfasst die Entwicklung von Frontend- (Client-Seite) und Backend-Anwendungen (Server-Seite). Fullstack-Entwickler arbeiten an der Entwicklung kompletter Webanwendungen, Websites und anderer Software von Grund auf. Sie sind auch für die Fehlersuche, Planung, Programmierung und Verwaltung des Entwicklungsprozesses zuständig. In gewisser Weise übernehmen sie die Rolle eines Teamleiters, der alle Aspekte und Phasen der Entwicklung überwacht.
Mehrere Technologien, Programmiersprachen und Frameworks sind mit der Fullstack-Webentwicklung verbunden und werden in Frontend und Backend unterteilt.
Lassen Sie uns das aufschlüsseln.
Frontend-Technologien
Das Frontend bezieht sich auf den Teil der Anwendung, der für den Benutzer vollständig sichtbar ist. Der Benutzer bedient die Elemente auf dem Frontend, und diese Interaktion führt zu einer schlechten, guten oder ausgezeichneten UX (User Experience) - je nach Qualität, Geschwindigkeit und Effizienz. Aber ein guter Fullstack-Entwickler wird alle drei Aspekte abdecken und optimieren.
Einige der Sprachen, die zur Erstellung des App-Frontends verwendet werden, sind:
-
HTML + CSS: HTML steht für HyperText Markup Language, und CSS steht für Cascading Style Sheets. Sie sind die perfekte Kombination für die Erstellung von Websites und die Schaffung eines nahtlosen Benutzererlebnisses auf vielen Plattformen, Geräten und Browsern. HTML sagt dem Browser, was er anzeigen soll, und CSS sagt ihm, wie.
-
JavaScript: JavaScript ist eine beliebte Skriptsprache zur Erstellung, Platzierung und Überwachung mehrerer interaktiver Elemente auf einer Website. Das zentrale JavaScript-Paradigma kombiniert seine vielen Frameworks und Bibliotheken (Node.js, Vue.js, Next.js), um moderne Anwendungen, Websites und andere Arten von Software nach Bedarf zu erstellen. Diese Sprache ist in hohem Maße anwendbar und ein wesentlicher Bestandteil sowohl des Frontends als auch des Backends des App-Entwicklungsprozesses.
-
TypeScript: Wenn Sie die Typen entfernen, wird TypeScript schnell zu JavaScript. Beide haben die gleiche Architektur, da TypeScript auf JavaScript aufbaut, und wenn ein Entwickler das eine beherrscht, beherrscht er auch das andere.
Frontend-Frameworks
Die Frontend-Sprachen "verlassen" sich auf die Leistung von Frameworks und Bibliotheken, um die Funktionalität von Apps zu verbessern und Entwickler auf lange Sicht produktiver zu machen. Einige der bekanntesten Frameworks für Frontend-Entwicklung sind:
-
Angular: Insgesamt hat sich Angular zu einer Plattform für die Entwicklung großer, robuster, dynamischer und leistungsfähiger Anwendungen entwickelt, die die Kommunikation auf der Client-Seite verbessert und sicherstellt, dass Updates regelmäßig durchgeführt werden.
-
React.js: Als JavaScript-Framework wird React.js für die Erstellung intuitiver Benutzeroberflächen verwendet und ist eines der beliebtesten Frontend-Frameworks. Es ist Open-Source und am besten bekannt für die Handhabung der Ansichtsschicht der App, ohne deren Qualität, Geschwindigkeit und Effizienz zu beeinträchtigen.
-
jQuery: Eine der Hauptfunktionen von jQuery ist die Vereinfachung des Datenaustauschs zwischen HTML-Dokumenten, d.h. die Interaktion zwischen dem DOM (Document Object Model) und JavaScript. Dies verbessert die DOM-Animationen und unterstützt die browserübergreifende JavaScript-Entwicklung.
-
Vue.js: Vue.js ist ein JavaScript-Framework, das auf JavaScript, CSS und HTML aufbaut. Entwickler verwenden diesen Rahmen, um einfache oder komplexe Benutzeroberflächen zu erstellen.
Backend-Technologien
Das Backend oder die Serverseite einer Anwendung oder Website umfasst mehrere Elemente, wie z. B. die ordnungsgemäße API-Integration, die Datenbankverwaltung und die Abfrageverwaltung. Einige der bekanntesten Programmiersprachen, Frameworks und Bibliotheken, die für Backend-Entwicklung verwendet werden, sind:
-
PHP: Als eine der beliebtesten serverseitigen Skriptsprachen wird PHP häufig für die Webentwicklung im Backend verwendet. Entwickler verwenden es gerne, um dynamische Inhalte zu erstellen und Dateien auf dem Server einfach zu lesen, zu schreiben und zu löschen, Daten zu verschlüsseln, Benutzerrechte zu verwalten und vieles mehr.
-
C++: C++ ist eine flexible, objektorientierte Programmiersprache, die die Leistung der Website optimiert und gleichzeitig die Benutzerfreundlichkeit des Frontends intakt lässt.
-
Python: Als beliebte Programmiersprache wird Python wegen seiner Einfachheit, der leicht zu erlernenden Syntax und der nahtlosen Integration mehrerer Systeme, Browser und Geräte weithin verwendet.
-
Java: Ein erfahrener Fullstack-Entwickler verfügt idealerweise über ausgezeichnete Kenntnisse in Java und dem Schreiben von Java-Code mit dieser objektorientierten, skalierbaren Sprache.
-
Node.js: Es gibt verschiedene Definitionen für Node.js, von einem Framework bis hin zu einer Laufzeitumgebung, aber alles läuft darauf hinaus, dass es sich um eine JavaScript-Erweiterung zum Erstellen, Testen und Ausführen von Backend-Diensten handelt.
Backend-Frameworks
Backend-Frameworks sind ein wichtiger Teil der Fullstack-Entwicklung, und einige der beliebtesten sind:
-
Django: Django ist ein Open-Source-Python-Framework für herausragendes Webdesign und -entwicklung. Es ist schnell und verwendet das MTV-Architekturmuster (model-template-view).
-
Laravel: Dies ist eine zuverlässige Backend-API für Next.js, mobile und andere Frontend-Anwendungen. Und, Laravel ist ein PHP-Framework, das das MVC-Architekturmuster verwendet.
-
RoR: Die Abkürzung steht für Ruby on Rails, und dies ist ein robustes Backend-Framework, das auf der Sprache Ruby basiert. Es stützt sich auf JSON und XML für die Datenübertragung und HTML, CSS und JavaScript zur Stabilisierung der UI (Benutzeroberfläche).
-
Spring: Als eines der Backend-Frameworks von Java zeichnet sich Spring durch eine einfache Syntax und eine leistungsfähige operative Logik für die komplexesten Operationen aus. Es hilft Entwicklern, zuverlässige und schnelle Anwendungen durch die POJOs (Java-Objekte) zu erstellen.
-
Express.js: Express.js ist ein Node.js-Webentwicklungsframework für mobile und Webanwendungen. Es rendert Seiten dynamisch, definiert Routing-Tabellen und führt verschiedene HTTP-Aktionen durch.
Wann brauchen Sie einen Fullstack-Entwickler?
Es gibt eine bemerkenswerte Nachfrage nach Fullstack-Entwicklern, weil sie mehrere Hüte tragen, indem sie sowohl die Frontend- als auch die Backend-Aspekte der Entwicklung abdecken. Damit bringen sie ausgezeichnete Problemlösungsfähigkeiten in ihre Arbeit ein.
Aber Sie brauchen einen Fullstack-Entwickler, wenn Sie ein Produkt wollen, das effizient und mit minimalem Aufwand erstellt wird, aber hochfunktional ist - und die Entwickler machen es größtenteils selbst, ohne nennenswerte externe Unterstützung.
Ein Fullstack Developer ist mit dem gesamten Entwicklungsprozess vom Startpunkt bis zum Endpunkt oder von der ersten Idee bis zum funktionierenden Prototyp vertraut. Sie brauchen einen solchen Technikexperten, denn eine Person, die mehrere Fähigkeiten besitzt, ist eine hervorragende Investition für jedes Unternehmen. Die Einstellung eines Fullstack-Entwicklers anstelle mehrerer technischer Experten, die sich mit viel weniger Technologien auskennen, spart Ihnen auf lange Sicht Zeit und Geld.
Wenn Sie einen qualitativ hochwertigen Fullstack-Entwickler beauftragen, wird dieser den gesamten Arbeitsablauf unabhängig überwachen und die Wahrscheinlichkeit von Missverständnissen in den strengen und entscheidenden Phasen des App-Entwicklungszyklus verringern.
Wir rekapitulieren:
- Sie sind vielseitige Technikexperten, die sich sowohl im Frontend als auch im Backend auskennen.
- Sie liefern zuverlässigen und robusten Code.
- Sie haben mehrere Jahre Erfahrung in einer Vielzahl von Bereichen und Nischen
- Sie können leicht die Rolle wechseln (Senior, Debugger, Projektleiter und mehr)
- Sie sind kostengünstige Technikexperten.
- Sie verfügen über gute Kenntnisse der Vergangenheit, der Gegenwart und möglicher zukünftiger Entwicklungstrends
Wo findet man Fullstack-Entwickler?
Sie können Fullstack-Entwickler an verschiedenen Orten finden, darunter Freelancing-Plattformen, soziale Medien, Code-Repositories, Mund-zu-Mund-Propaganda und Programmier-Websites. Bei diesen Optionen müssen Sie jedoch alle Recherchen selbst oder mit Ihrem Team von internen Personalverantwortlichen durchführen.
Nehmen wir stattdessen an, Sie wollen Zeit sparen und das Risiko vermeiden, dass sich die Einstellung in die Länge zieht. In diesem Fall können Sie immer auf Dienste zurückgreifen, die Ihnen innerhalb weniger Tage einsatzbereite Entwickler vermitteln, wie z. B. Proxify, wo wir uns auch für den Hintergrund der Entwickler und ihr technisches Wissen verbürgen, damit Sie nicht alles selbst machen müssen.
Interviewing Fullstack Developers
Hier finden Sie eine Checkliste der technischen Fähigkeiten, die ein Fullstack-Entwickler beherrschen muss, sowie einige Interviewfragen und -antworten, die Sie für die Beurteilung verwenden können.
Allgemeines Fullstack-Wissen
Ein erfahrener Fullstack-Entwickler kennt sich mit Datenstrukturen, Algorithmen, der Theorie von Programmiersprachen und Netzwerkthemen wie OSI/RM- und TCP/IP-Protokollmodellen aus.
Außerdem müssen sie mit mindestens drei verschiedenen Programmiersprachen umgehen können und praktische Beispiele für abgeschlossene Aufträge in der Vergangenheit vorweisen können.
Und nicht zuletzt müssen sie effizient testen und debuggen.
Technische Fähigkeiten
Kurz gesagt, sie müssen einige (oder die meisten) der folgenden Fähigkeiten kombinieren:
- HTML, CSS
- JavaScript, TypeScript
- React.js, Angular, Vue.js, Next.js, jQuery
- Node.js, Express.js
- Java, Spring
- Python, Django, Flask
- C++, C#
- PHP, Laravel
- Perl
- Ruby, Ruby on Rails
Aber sie sollten vor allem außergewöhnliche Kenntnisse in zeigen:
- Wie HTML und CSS funktionieren, einzeln und zusammen
- HTML-Code auf einer kursorischen Ebene
- Die meisten JavaScript-Frameworks auswendig
- Java und die meisten seiner Frameworks (Spring, Spring Boot)
- Kenne die Python-Frameworks sehr gut (Django, Flask)
C++
- Datenbanken (wie MongoDB, PostgreSQL, MySQL)
- Versionskontrollsysteme (wie Git und GitHub)
- Cloud-Hosting-Plattformen (wie Heroku, AWS, Google Cloud und Microsoft Azure)
Interview Fragen und Antworten für die Beurteilung von Fullstack-Entwicklern
Wir können die Fragen in allgemein und speziell unterteilen.
Allgemeine Fragen
1. Mit welchen Programmiersprachen haben Sie die meiste Erfahrung?
Beispielantwortung: Ich habe die meiste Erfahrung in der Erstellung von Anwendungen in Python, Django und Vue.js, aber ich habe auch erhebliche Erfahrung mit JavaScript, SQL und Rust. Nichtsdestotrotz gefällt mir die Betriebssystemunabhängigkeit, die mit diesem Gesamtstapel einhergeht, da ich immer sicher sein kann, dass meine Anwendungen mit den derzeit beliebtesten Betriebssystemen kompatibel sind.
2. Was ist Ihre bevorzugte oder am häufigsten verwendete Programmiersprache?
Hinweis: Hier sollte der Interviewer den Antworten des Bewerbers gegenüber aufgeschlossen sein. Es kann sein, dass der Entwickler eine andere Programmiersprache vorschlägt als die, die dem Interviewer vorschwebte.
Beispielantwort: Seit ich angefangen habe, habe ich gerne mit Python gearbeitet. Es hat eine sehr intuitive Syntax und eine sanfte Lernkurve (einfach zu erlernen, schwer zu meistern) und bietet eine Vielzahl von Bibliotheken und Frameworks, wenn Sie die Möglichkeiten erweitern möchten, ohne die Qualität der endgültigen Anwendung zu beeinträchtigen.
Nur eine bevorzugte Programmiersprache für Fullstack-Entwicklung zu wählen, ist schwierig, daher würde ich auch Node.js und C# hinzufügen. Node.js eignet sich hervorragend für Skalierbarkeit, Leistungssteigerung und ist kostengünstig. Gleichzeitig beschleunigt C# den Entwicklungsprozess, arbeitet skalierbar und ist einfach zu pflegen. Für eine Fullstack-Entwicklerrolle sind all diese Vorteile in Kombination von großer Bedeutung, da sie unsere Arbeit zugänglicher und effektiver machen, um ein hervorragendes Ergebnis zu erzielen.
3. Welche Technologien würden es Ihnen ermöglichen, eine Anwendung von Grund auf neu zu entwickeln?
Beispielantwortung: Was die clientseitige Entwicklung betrifft, so bevorzuge ich die Grundlagen, d. h. HTML, CSS, JavaScript und vielleicht TypeScript. Um Datenbankabfragen zu lösen, sollte MySQL die Arbeit erledigen. Für die Feinheiten würde ich Python mit Django oder den LAMP-Stack für komplexere Aufgaben verwenden. Ich verwende auch Git und Github, um mich mit anderen Fullstack-Entwicklern auszutauschen.
4. Was sind einige der jüngsten Trends in der Fullstack-Entwicklung, die Sie überrascht haben?
Beispiel für eine Antwort: Ich bin fasziniert vom Aufstieg (und möglichen Niedergang) der NFTs (non-fungible tokens). In der Vergangenheit wurden Programmierung und Kunst gewöhnlich als zwei getrennte Disziplinen betrachtet. Heutzutage scheint es, als würden die Grenzen mit jedem Tag mehr verschwimmen. Um zum Beispiel eine NFT-Sammlung zu erstellen, müssen Sie ein guter Programmierer mit einer einzigartigen künstlerischen Note sein. Die Welt der NFTs (und der Kryptowährungen im Allgemeinen) könnte entweder abheben oder ohne Vorwarnung spektakulär abstürzen, woran ich hin und wieder denke.
Abgesehen davon gibt es auch erwähnenswerte Dinge wie KI, mit der viele neue Werkzeuge eingeführt werden, die (fast) jedem helfen, seine Arbeit viel effizienter als bisher zu erledigen.
5. Gab es Fälle, in denen Ihre Mitarbeiter einen Kodierungsfehler gemacht haben? Was haben Sie getan?
*Hinweis: Der Interviewer sollte darauf vorbereitet sein, die mögliche Antwort des Entwicklers zu hören, da es sich um eine Frage mit einer persönlichen Meinung handelt.
Beispielantwortung: Ja. Einmal habe ich mit einem Kollegen an einem JavaScript-Projekt gearbeitet, und der Code ließ sich nicht korrekt kompilieren. Ich bin den Text manuell durchgegangen und habe festgestellt, dass sie Klammern verwendet haben, wo sie Klammern hätten verwenden sollen, aber ich bin eingesprungen, um den Fehler zu beheben.
6. Wie erstellt man SEO-freundliche Webanwendungen?
Beispielantwortung: Ich verwende eine ausgezeichnete Basissprache (Python) gepaart mit einem aktuellen Framework (Django), um Effizienz und Geschwindigkeit zu erreichen. Bei der Entwicklung von Webanwendungen können Sie sich nicht den Luxus erlauben, ungenutzte Ressourcen zu "horten", die unnötig Platz beanspruchen und den gesamten Arbeitsablauf verlangsamen. Bei der Suchmaschinenoptimierung (SEO) geht es vor allem um schnelle Ladezeiten (die Nutzer klicken in der Regel weg, wenn die Website nicht in etwa zwei oder drei Sekunden geladen ist), daher versuche ich, einen leichtgewichtigen Ansatz zu verwenden und SEO zu lösen, bevor das Engagement beginnt.
7. Wie debuggt man anspruchsvolle Programme?
Beispielantwortung: Eine Methode, die ich immer wieder verwende (und die meiner Meinung nach effektiver ist, als die Entwickler ihr normalerweise zugestehen), ist die so genannte "Auskommentierungsmethode". Sobald ich den Verdacht habe, dass ein fehlerhaftes Stück Code den restlichen Arbeitsablauf stört, kommentiere ich diesen speziellen Code aus und kompiliere den Auftrag neu. Wenn das Problem weiterhin besteht, wechsle ich zu browserbasierten Debuggern für Webprojekte (Firefox und Chrome) oder desktopbasierten Debuggern für Windows-Projekte (Visual Studio Debugger).
8. Was ist eine häufige Herausforderung in der Fullstack-Entwicklung, und wie löst man sie am besten?
Beispielantwortung: Ein offensichtliches Beispiel ist das Erreichen eines Gleichgewichts zwischen Frontend und Backend und deren gute Verwaltung. Es kann schwierig sein, dies zu bewerkstelligen, weil verschiedene Entwickler an anderen Dingen desselben Auftrags arbeiten, so dass die Synchronisierung zwischen den Teammitgliedern der Grund für diese Situation ist.
9. Wie lassen sich SQL-Abfragen am besten optimieren?
Beispielantwortung: Um diese Abfragen zu optimieren, müssen wir die besten Techniken zur Verbesserung der Leistung der SQL-Abfrage erkennen. Einige der besten Techniken sind:
- SELECT-Abfrage anstelle von SELECT*
- Indizierung
- Tabellen-Aliase
- Nicht viele JOINs verwendet
- Unterabfragen
- Platzhalter
- Optimierung des Datenbankdesigns
10. Können Sie den Callback Hell definieren?
Beispielantwortung: Die Callback Hell stellt ein Anti-Muster dar, das wir im asynchronen Programmiercode sehen können (im Grunde, wenn viele Funktionen gleichzeitig laufen). Die Rückrufhölle ist auch als Pyramide des Verderbens bekannt, und im Grunde genommen beziehen sich diese Namen für sie auf viele verschachtelte "if"-Funktionen oder Anweisungen. Diese Situation tritt ein, wenn viele asynchrone Funktionen gleichzeitig existieren und voneinander abhängen.
Dies kann zu einem Durcheinander führen, da viele Callback-Funktionen in Schichten und verschachtelt sind. Wenn wir also Callback-Funktionen verwenden, bleibt ein Code übrig, der fast unmöglich zu pflegen oder zu lesen ist und zudem einer Pyramide ähnelt. Auch der Fluss der Anwendung ist nicht leicht zu erkennen, und all dies ist ein Hindernis bei der Fehlersuche - daher die höllischen Phrasen dieses Anti-Musters.
Spezifische Fragen
1. Sind Sie mit Entwurfsmustern vertraut? Wie haben Sie sie in Ihren Aufträgen verwendet?
Beispielantwort: Im Allgemeinen sind Entwurfsmuster Ansätze zur Lösung einer bestimmten Herausforderung in der Softwareentwicklung. Ich habe bei meinen früheren Aufträgen mit großem Erfolg gestalterische und strukturelle Entwurfsmuster verwendet. Ich habe die Entwurfsmuster Singleton, Flyweight und Bridge verwendet.
2. Was ist der Unterschied zwischen Schnittstellen und abstrakten Klassen?
Beispielantwortung: Schnittstellenklassen erlauben es Ihnen nur, die Funktionalität der Klasse anzugeben, aber nicht, sie zu implementieren. Mit abstrakten Klassen können Sie Funktionen schnell durch Unterklassen implementieren.
3. Wie würden Sie eine RESTful API definieren?
Beispielantwortung: RESTful API ist eine Art Schnittstelle, über die zwei Computer (normalerweise ein Client und ein Server) im Internet kommunizieren. Die RESTful-API ruft einen Datensatz durch eine GET-Anfrage ab, erstellt einen Datensatz durch eine POST-Anfrage und löscht einen Datensatz durch eine DELETE-Anfrage.
4. Welche Lösung schlagen Sie vor, um einen Bot daran zu hindern, eine öffentlich bekannte API zu scrapen?
Beispielantwort: Es gibt mehrere Möglichkeiten, dies zu tun. Sie können zum Beispiel einen Benutzernamen und ein Passwort von den Benutzern verlangen (um ein Konto zu erstellen), um auf den Inhalt der Website zuzugreifen. Sie können auch die Anzahl der Anfragen begrenzen, die ein einzelner Benutzer mit einer identischen IP-Adresse stellen kann.
5. Was ist der Unterschied zwischen Normalisieren und Zurücksetzen von CSS?
Beispielantwortung: Durch die Normalisierung wird nur eine begrenzte Anzahl von Formatierungen entfernt, die von den Browsern an die Elemente auf einer Seite weitergegeben werden. Beim Zurücksetzen werden alle Standard-Stylings entfernt.
6. Was ist der Unterschied zwischen Blue-Green Deployment und Rolling Deployment?
Beispielantwortung: Eine Rolling-Deployment-Strategie hat nicht mehrere Staging-Umgebungen. Es werden nur bei Bedarf Aktualisierungen durchgeführt. Bei der blau-grünen Bereitstellung werden zwei Bereitstellungsstrategien verwendet: blau und grün. In der blauen Phase der BG-Einsatzstrategie wird der Einsatz je nach Bedarf einer Qualitätssicherung und Prüfung unterzogen. In der grünen Phase wird der Verkehr abgewickelt, bis alles in der blauen Phase entsprechend abgeschlossen ist.
7. Wie viele Arten von Entwurfsmustern gibt es?
Beispielantwortung: Es gibt drei: strukturell, verhaltensmäßig und schöpferisch. Strukturelle Muster erhöhen die Funktionalität der Klassen im Code ohne wesentliche Änderungen an der Komposition. Verhaltensklassen hängen von der Kommunikationsfähigkeit zwischen den Klassen ab. Erstellungsmuster sind für die Instanziierung von Klassen gedacht. Sie werden weiter unterteilt in Objekt-Kreativ-Objekt-Kreativ und Klassen-Kreativ-Muster.
8. Was sind einige der Unterschiede zwischen REST und GraphQL?
Beispielantwortung: GraphQL ist eine serverseitige Technologie, die Abfragen ausführt, um an Daten zu gelangen. REST ist ein Architekturstil, der die Erstellung von Webanwendungen einschränkt. Außerdem verwendet GraphQL ein Schema, während REST auf eine Reihe von Endpunkten für die Ausführung angewiesen ist.
9. Wie würden Sie die Ladezeit einer Webanwendung verkürzen?
Beispielantwortung: Es gibt mehrere Möglichkeiten. Zunächst können Sie die Bilder komprimieren und die Stylesheet-Referenzen an den Anfang der HTML-Seite verschieben. Als nächstes können Sie die Skriptverweise an das Ende der HTML-Seite verschieben. Schließlich können Sie den JavaScript- und CSS-Code trennen und außerhalb des Haupt-HTML-Dokuments platzieren.
10. Warum sollte man Floats in CSS löschen, und wie macht man das?
Beispielantwort: Wir können Elemente (vor allem Bilder) mit Hilfe von Floats so positionieren, dass der Inhalt schön um sie herumfließt. Aber wenn wir dies tun, kann das Ergebnis nachfolgende Elemente um die float-Elemente sein, so dass das Layout schlecht gebrochen wird. Um dies zu verhindern, löschen wir die Leerzeichen und haben so eine viel bessere Kontrolle über das Layout. Dies sind meiner Meinung nach die beiden gebräuchlichsten und populärsten Methoden für das Clearing von Floats, die es gibt:
- Clearfix ist die häufigste Form, daher müssen wir die Technik "clearfix" durch ein Pseudoelement anwenden. Wir müssen zuerst ein unsichtbares Element erstellen, das sich schnell löscht und schwebt. Erwarten Sie daher auch mehr Markup für den HTML-Code:
gruppe::nach {
Inhalt:"";
display:table;
clear:both;
}
11. Wie würden Sie ES6-Array-Duplikate am effizientesten entfernen?
Beispielantwortung: Die gebräuchlichste und beste Methode ist die Verwendung einer Menge - sie ermöglicht die Speicherung eindeutiger Werte. Wenn wir also das Array in eine Menge umwandeln, werden doppelte Werte auf diese Weise entfernt. Der letzte Schritt besteht darin, eine weitere Konvertierung vorzunehmen, diesmal in eine Sorte wie zuvor, mit eindeutigen Werten.
12. Können Sie den Unterschied zwischen async/await und Promises in JavaScript definieren und erklären?
Beispielantwortung: Async/await stellt einen "syntaktischen Zucker" dar, der auf Promises aufbaut und einen asynchronen Code durch die Verwendung von async-Funktionen und dem Schlüsselwort "await" einem synchronen ähneln lässt.
13. Wie würden Sie den Prozess der Entprellung von Funktionen in JavaScript erklären?
Beispielantwortung: Wenn wir die Ausführung einer Funktion aufschieben müssen, nennt man das Entprellen. Wir verschieben dies, um zu verhindern, dass zeitaufwändige Aufgaben zu häufig ausgelöst werden. Eine Möglichkeit, eine JavaScript-Funktion zu entprellen, ist:
Funktion Entprellen(fn, Verzögerung) {
let timeoutID;
return (...args) => {
clearTimeout(timeoutID);
timeoutID = setTimeout(() => fn.apply(this, argos), delay);
};
}
14. Was ist der Zweck von Event-Objekten für Module wie http oder fs in Node.js?
Beispielantwortung: Die Node.js-Module verwenden die Event-Objekte, um Ereignisse auszusenden, die Zustandsänderungen, Fehler oder die Verfügbarkeit von Ressourcen signalisieren. Die ereignisgesteuerte Programmierung muss sich auf die Verwendung von Ereignisobjekten stützen, um skalierbare und effiziente Anwendungen zu erreichen. Dies ist insbesondere dann der Fall, wenn wir mit E/A-gebundenen Workloads arbeiten.
15. Was können Sie über Speicherlecks sagen? Wie kann man sie erkennen, auflösen und verhindern?
Beispielantwortung: Speicherlecks (RAM) sind der Teil einer Anwendung, der einen bestimmten Speicher verwendet, ihn aber danach nicht wieder freigibt. Wenn eine Anwendung viel Speicherplatz verbraucht und diesen nicht freigibt, ist der Speicherpool nach einer Weile erschöpft. In der Vergangenheit kam es häufig zu Speicherlecks, wenn Entwickler C++ und C verwendeten. Dies zu erkennen ist nicht allzu schwierig, denn das offensichtlichste Anzeichen ist, dass nicht genügend Arbeitsspeicher zur Verfügung steht - das System wird langsamer, und die Anwendung stürzt ab. Dies zu verhindern ist auch nicht allzu schwer, wir brauchen nur einen guten Garbage Collector, um Speicher freizugeben.
Die Sichtweise eines Fullstack-Entwicklers
In der Zwischenzeit haben wir uns über die Fullstack-Entwicklung direkt an die Quelle erkundigt, zwei Fullstack-Entwickler von Proxify, Martin Lucka und Dmitriy Zolotukhin. Wir haben nach wesentlichen Technologien gefragt, nach den Voraussetzungen, die man wissen muss, ob sich Fullstack-Entwickler hauptsächlich auf das Backend oder das Frontend konzentrieren und wie sie generell an das Lernen herangehen sollten.
Hier ist, was Martin anfangs zu sagen hatte,
"Ein Fullstack-Entwickler ist ein Profi (ähnlich einem Einhorn), der eine App von Null bis zur endgültigen Benutzererfahrung entwickeln kann. Das schließt die Fähigkeit ein, Backend- (serverlos oder servervoll mit Datenbanken) und Frontend-Produkte (Web oder App) zu entwickeln."
Und er hält sich nicht zurück, wenn es um die Technologien geht, die man kennen muss,
"Wenn Sie sich für eine serverlose Lösung entscheiden, reicht es aus, nur Frontend-Technologie zu verwenden - JavaScript/TypeScript, CSS, React (lernen Sie nicht Angular, Vue.js und andere Frameworks, wenn sie nicht benötigt werden)", sagt er. "Wenn Sie sich für Server-full entscheiden, sind auch Kenntnisse in Backend-Sprachen (Node.js + TS/JS, Java, C#, PHP) und Datenbanken (SQL) wichtig."
Bezüglich des Fokus und der Zeit, die auf das Frontend oder Backend verwendet wird, wiederholte Martin,
"Normalerweise ist das Fullstack nur eine Reihe von Fähigkeiten, aber die meisten Aufträge haben es getrennt, und dann wählt der Entwickler, welchen Karriereweg er gehen will. Bei kleinen Aufträgen kann es sich um serverlose Lösungen handeln, bei denen beide Wissensuntergruppen zum Einsatz kommen (in diesem Fall ist es gut, etwas Cloud-Wissen zu haben - GCP/Firebase, AWS, Azure, Back4app).
Und für alle Neulinge, die in der Welt der Fullstack-Entwicklung ankommen, war dies der Rat, den er gab,
"Lernen Sie React und React Native, da ich immer noch glaube, dass sie die mächtigsten Werkzeuge auf dem Markt sind. Lernen Sie nicht den alten Weg mit Klassen, sondern den funktionalen Weg mit Hooks. Lernen Sie TypeScript, da es eine stabile Grundlage für jedes Engagement bietet. Lernen und üben Sie; am besten ist es, wenn Sie Ihr eigenes Projekt durchführen. Wenn Sie sehen, dass bei einigen Aufträgen nur JavaScript und Klassen verwendet werden und nicht funktionale Programmierung und TypeScript, laufen Sie so schnell wie möglich weg."
Dmitriy, teilt seine Gedanken darüber mit, wie man seine Zeit am besten verbringt und sich bei der Entwicklung konzentriert,
"Versuchen Sie, Ihre eigene Anwendung zu entwickeln und neue Technologien, Frameworks und Bibliotheken zu verwenden. Lesen Sie über neue Technologien und probieren Sie sie aus, anstatt nur zuzuschauen oder zu lesen. Installieren und verwenden Sie sie."
Und er fügt hinzu, dass es von entscheidender Bedeutung ist, das Backend und das Frontend nahezu identisch zu beherrschen. Je nach den Anforderungen des Auftrags können die Entwickler ihre Aufmerksamkeit auf die Stellen richten, wo sie am dringendsten benötigt wird.