Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Wie unterscheidet sich Java von anderen gängigen Sprachen? Warum sollte Java die erste Sprache sein, die gelernt wird? Lassen Sie uns einen Plan erstellen, der Ihnen dabei hilft, Java sowohl von Grund auf zu erlernen als auch Programmierkenntnisse in anderen Sprachen anzuwenden. Lassen Sie uns die Unterschiede zwischen der Erstellung von Produktionscode in Java und der Entwicklung in anderen Sprachen auflisten. Mikhail Zatepyakin las diesen Bericht bei einem Treffen für zukünftige Teilnehmer Praktika Yandex und andere angehende Entwickler – Java Junior-Treffen.


— Hallo zusammen, mein Name ist Mischa. Ich bin Entwickler bei Yandex.Market und erzähle Ihnen heute, warum Sie Java lernen sollten und wie Sie es effektiv machen können. Sie stellen vielleicht eine berechtigte Frage: Warum erzähle ich diese Geschichte und nicht irgendein starker Entwickler mit langjähriger Erfahrung? Fakt ist, dass ich selbst erst vor Kurzem, also vor etwa anderthalb Jahren, Java studiert habe, ich erinnere mich also noch daran, wie es war und welche Fallstricke es gibt.

Vor einem Jahr habe ich ein Praktikum bei Yandex.Market gemacht. Ich habe das Backend für Beru entwickelt, für den Market selbst haben Sie es wahrscheinlich verwendet. Jetzt arbeite ich dort weiter, in einem anderen Team. Wir erstellen eine Analyseplattform für Yandex.Market für Geschäftspartner.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Lass uns anfangen. Warum Java aus praktischer Sicht lernen? Tatsache ist, dass Java eine sehr berühmte Programmiersprache ist. Es hat eine sehr große Community.

Es gibt zum Beispiel einen solchen TIOBE-Index, einen beliebten Index zur Beliebtheit von Programmiersprachen, und Java steht dort an erster Stelle. Außerdem werden Sie auf Jobbörsen wahrscheinlich feststellen, dass es bei den meisten Stellenangeboten um Java geht, das heißt, dass Sie durch die Entwicklung in Java immer einen Job finden können.

Da die Community sehr groß ist, finden Sie auf einigen Stack Overflow-Websites oder anderen Websites eine Antwort auf Ihre Fragen. Außerdem schreiben Sie bei der Entwicklung in Java tatsächlich Code auf der JVM, sodass Sie problemlos zu Kotlin, Scala und anderen Sprachen wechseln können, die die JVM verwenden.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Was ist aus ideologischer Sicht das Gute an Java? Es gibt verschiedene Programmiersprachen. Sie lösen verschiedene Probleme, das wissen Sie. Python eignet sich beispielsweise hervorragend zum Schreiben von einzeiligen Skripten zur schnellen Lösung von Problemen.

Der Vorteil ist, dass Sie den ausführbaren Code vollständig kontrollieren können. Wir haben zum Beispiel Autos, fahrerlose Yandex-Autos, deren Code in Pluszeichen geschrieben ist. Warum? Java hat so etwas – Garbage Collector. Es löscht den RAM von unnötigen Objekten. Dieses Ding startet spontan und stoppt die Welt, das heißt, es stoppt den Rest des Programms und beginnt, Objekte zu zählen und den Speicher von Objekten zu löschen. Wenn so etwas in einer Drohne funktioniert, ist das nicht cool. Ihre Drohne fährt geradeaus, löscht in diesem Moment ihren Speicher und blickt überhaupt nicht auf die Straße. Daher steht die Drohne ganz oben auf der Liste der Profis.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Welche Probleme löst Java? Es handelt sich in erster Linie um eine Sprache zur Entwicklung großer Programme, die über Jahre hinweg von Dutzenden oder Hunderten von Menschen geschrieben werden. Insbesondere ist ein Großteil des Backends in Yandex.Market in Java geschrieben. Wir haben ein verteiltes Team in mehreren Städten mit jeweils zehn Leuten. Und der Code ist leicht zu warten, er wird seit mindestens zehn Jahren unterstützt und gleichzeitig kommen neue Leute hinzu und verstehen diesen Code.

Welche Eigenschaften sollte eine Sprache haben, damit der Code darin leicht unterstützt wird und er problemlos in großen Teams entwickelt werden kann? Erstens sollte es sich um lesbaren Code handeln, und es sollte einfach sein, komplexe Architekturlösungen zu implementieren. Das heißt, es sollte einfach sein, Abstraktionen auf hoher Ebene usw. zu schreiben. All das bietet uns Java. Dies ist eine objektorientierte Sprache. Es ist wirklich einfach, Abstraktionen auf hoher Ebene und komplexe Architekturen zu implementieren.

Auch für Java gibt es viele Frameworks und Bibliotheken, da die Sprache schon über 15 Jahre alt ist. In dieser Zeit wurde alles, was geschrieben werden konnte, darauf geschrieben, daher gibt es jede Menge Bibliotheken für alles, was Sie brauchen könnten.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Welche grundlegenden Fähigkeiten sollte meiner Meinung nach ein beginnender JA-Spieler haben? Dies sind zunächst einmal Kenntnisse der Java-Kernsprache. Als nächstes kommt eine Art Dependency-Injection-Framework. Der nächste Redner, Kirill, wird ausführlicher darauf eingehen. Ich werde nicht zu tief gehen. Als nächstes folgen die Architektur- und Designmuster. Wir müssen in der Lage sein, architektonisch schönen Code zu schreiben, um große Anwendungen schreiben zu können. Und das ist eine Art SQL oder ORM für Aufgaben der Arbeit mit der Datenbank. Und das gilt eher für das Backend.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Gehen! Java-Kern. Ich werde Amerika hier nicht wirklich entdecken – man muss die Sprache selbst beherrschen. Worauf Sie achten sollten. Erstens hat Java in den letzten Jahren viele Versionen veröffentlicht, das heißt, 2014-2015 wurde die siebte veröffentlicht, dann die achte, neunte, zehnte, viele neue Versionen und viele neue coole Dinge wurden darin eingeführt , zum Beispiel die Java Stream API, Lambda usw. Sehr coole, frische, coole Dinge, die im Produktionscode verwendet werden, worüber in Interviews gefragt wird und was Sie wissen müssen. Daher sollten Sie nicht ein Buch aus dem Regal der Java-4-Bibliothek nehmen und es lernen. Das ist unser Plan: Wir lernen Java-8 oder höher.

Wir legen großen Wert auf Innovationen wie Stream API, var usw. Sie werden in Interviews gefragt und werden ständig in der Produktion eingesetzt. Das heißt, die Stream-API ist viel cooler als Schleifen, im Allgemeinen eine sehr coole Sache. Seien Sie unbedingt aufmerksam.

Und es gibt alle möglichen Dinge wie Iteratoren, Ausnahmen und so weiter. Dinge, die Ihnen unwichtig erscheinen, solange Sie selbst einen kleinen Code schreiben. Sie brauchen diese Ausnahmen nicht, wer braucht sie schon? Aber sie werden auf jeden Fall bei Vorstellungsgesprächen gefragt, sie werden Ihnen in der Produktion auf jeden Fall nützlich sein. Generell sollte man auf Ausnahmen, Iteratoren und andere Dinge achten.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Datenstrukturen. Auf Strukturen kann man nicht verzichten, aber es wäre toll, wenn man nicht nur weiß, dass es Sets, Wörterbücher und Blätter gibt. Und auch unterschiedliche Implementierungen von Strukturen. Beispielsweise gibt es für dasselbe Wörterbuch in Java viele Implementierungen, darunter HashMap und TreeMap. Sie haben unterschiedliche Asymptotika, sie sind im Inneren unterschiedlich aufgebaut. Sie müssen wissen, wie sie sich unterscheiden und wann Sie welche verwenden sollten.

Es wird auch sehr cool sein, wenn Sie wissen, wie diese Datenstrukturen intern funktionieren. Das heißt, es ist nicht einfach, ihre Asymptotik zu kennen – wie viel der Einsatz funktioniert, wie lange der Pass funktioniert, sondern wie die Struktur im Inneren funktioniert – zum Beispiel, was ein Bucket in HashMap ist.

Es lohnt sich auch, auf Bäume und Diagramme zu achten. Dies sind Dinge, die im Produktionscode nicht sehr häufig vorkommen, aber in Interviews beliebt sind. Dementsprechend müssen Sie in der Lage sein, Bäume und Diagramme in Breite und Tiefe zu durchlaufen. Das sind alles einfache Algorithmen.

Sobald Sie anfangen, großen Code zu schreiben, komplex, Bibliotheken zu verwenden oder Code mit mehreren Klassen zu verwenden, werden Sie feststellen, dass es für Sie schwierig ist, ohne Systeme zu erstellen und Abhängigkeiten aufzulösen. Dies sind in erster Linie Maven und Gradle. Sie ermöglichen Ihnen, Bibliotheken in einer Zeile in Ihr Projekt zu importieren. Das heißt, Sie schreiben eine einzeilige XML-Datei und importieren Bibliotheken in das Projekt. Tolle Systeme. Sie sind ungefähr gleich, verwenden Sie entweder Maven oder Gradle.

Als nächstes kommt eine Art Versionskontrollsystem. Ich empfehle Git, weil es beliebt ist und es jede Menge Tutorials gibt. Fast jeder nutzt Git, es ist eine coole Sache, ohne kann man nicht leben.

Und eine Art Entwicklungsumgebung. Ich empfehle IntelliJ Idea. Es beschleunigt den Entwicklungsprozess erheblich, hilft Ihnen sehr, schreibt den gesamten Standardcode für Sie, im Allgemeinen ist es cool.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Links von der Folie: SQLZOO, Habrapost

SQL. Ein wenig über Backender. Hier gab es tatsächlich einen lustigen Fall. Zwei Tage vor meinem zweiten Praktikumsgespräch rief mich eine HR-Mitarbeiterin an und sagte, dass sie mich in zwei Tagen nach SQL und HTTP fragen würden, ich müsse es lernen. Und ich wusste fast nichts über SQL oder HTTP. Und ich habe diese coole Seite gefunden - SQLZOO. Ich habe darin in 12 Stunden SQL gelernt, ich meine SQL-Syntax, wie man SELECT-Abfragen schreibt, JOIN usw. Sehr coole Seite, ich kann sie nur wärmstens empfehlen. Tatsächlich habe ich in 12 Stunden 90 % von dem gelernt, was ich jetzt weiß.

Und es ist auch toll, die Datenbankarchitektur zu kennen. Dies sind alle Arten von Schlüsseln, Indizes und Normalisierungen. Auf Habré gibt es dazu eine Reihe von Beiträgen.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

In Java gibt es neben SQL alle möglichen objektrelationalen Zuordnungssysteme wie JPA. Es gibt einen Code. In der ersten Methode gibt es etwas SQL-Code – SELECT id name FROM info.users WHERE id IN userIds. Aus der Benutzerdatenbank werden deren IDs und Namen aus der Tabelle abgerufen.

Als nächstes gibt es einen bestimmten Mapper, der ein Objekt von der Basis in ein Java-Objekt umwandelt. Und es gibt unten eine dritte Methode, die diesen Code tatsächlich ausführt. All dies kann mithilfe von JPA durch eine Zeile ersetzt werden, die unten beschrieben ist. Es macht das Gleiche: Alle ByIdIn finden. Das heißt, basierend auf dem Namen der Methode wird eine SQL-Abfrage für Sie generiert.

Sehr coole Sache. Ich selbst habe JPA verwendet, als ich SQL noch nicht kannte. Passen Sie im Allgemeinen auf. Wenn Sie zu faul sind, SQL zu lernen, ist das eine Katastrophe. Und im Allgemeinen Feuer!

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Frühling. Wer hat schon einmal von so etwas wie dem Spring-Framework gehört? Sehen Sie, wie viele von Ihnen es sind? Nicht ohne Grund. Spring ist in den Anforderungen jeder zweiten Java-Backend-Stelle enthalten. Ohne sie gibt es in einer großen Entwicklung wirklich nichts. Was ist Frühling? Zunächst einmal handelt es sich hierbei um ein Dependency-Injection-Framework. Auch darüber werde erzählen nächster Redner. Aber kurz gesagt, dies ist eine Sache, die es Ihnen ermöglicht, die Abhängigkeiten einiger Klassen einfacher in andere zu importieren. Das heißt, die Kenntnis von Abhängigkeiten wird vereinfacht.

Spring Boot ist ein Teil von Spring, mit dem Sie Ihre Serveranwendung mit einer Taste ausführen können. Sie gehen zu THID, drücken ein paar Tasten und schon ist Ihre Serveranwendung auf localhost 8080 betriebsbereit. Das heißt, Sie haben noch keine einzige Codezeile geschrieben, aber es funktioniert bereits. Sehr coole Sache. Wenn du etwas Eigenes schreibst, Feuer!

Der Frühling ist ein sehr großer Rahmen. Es greift nicht nur Ihre Serveranwendung auf und löst die Abhängigkeitsinjektion auf. Sie können damit eine Reihe von Dingen tun, einschließlich der Erstellung von REST-API-Methoden. Das heißt, Sie haben eine Methode geschrieben und ihr die Annotation „Get Mapping“ angehängt. Und jetzt haben Sie bereits eine Methode auf localhost, die Ihnen „Hello World“ schreibt. Zwei Zeilen Code und es funktioniert. Cooles Zeug.

Spring erleichtert auch das Schreiben von Tests. Ohne Tests geht es in der Großentwicklung nicht. Der Code muss getestet werden. Zu diesem Zweck verfügt Java über eine coole Bibliothek, JUnit 5. Und JUnit im Allgemeinen, aber die neueste Version ist die fünfte. Es gibt alles zum Testen, allerlei Behauptungen und anderes.

Und es gibt ein tolles Mockito-Framework. Stellen Sie sich vor, Sie haben eine Funktionalität, die Sie testen möchten. Die Funktionalität erledigt eine Menge Dinge, darunter irgendwo in der Mitte, dass sie sich beispielsweise mit Ihrer ID bei VKontakte anmeldet und von der ID den Vor- und Nachnamen des VKontakte-Benutzers erhält. Sie werden VKontakte wahrscheinlich nicht in die Tests einbeziehen, das ist seltsam. Aber Sie müssen die Funktionalität testen, also haben Sie diese Klasse mit Mockito erstellt, mokiert und imitiert.

Sie werden sagen, dass, wenn eine Anfrage mit einer ID wie dieser oder jener an diese Klasse eingeht, ein Nachname zurückgegeben wird, zum Beispiel Vasya Pupkin. Und es wird funktionieren. Das heißt, Sie testen die gesamte Funktionalität für eine Klasse. Sehr coole Sache.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Link von Folie

Designmuster. Was ist das? Hierbei handelt es sich um Vorlagen zur Lösung typischer Probleme, die in der Entwicklung auftreten. In der Entwicklung tauchen oft gleiche oder ähnliche Probleme auf, die es toll wäre, irgendwie gut zu lösen. Daher wurden Best Practices und bestimmte Vorlagen zur Lösung dieser Probleme entwickelt.

Es gibt eine Website mit den beliebtesten Mustern – refactoring.guru. Sie können sie lesen, herausfinden, welche Muster es gibt, und eine Menge Theorie lesen. Das Problem ist, dass es praktisch nutzlos ist. Tatsächlich sind Muster ohne Übung nicht besonders nützlich.

Sie werden von einigen Mustern wie Singletone oder Builder hören. Wer hat diese Worte gehört? Viele Leute. Es gibt so einfache Muster, die man selbst umsetzen kann. Aber die meisten Muster: Strategie, Fabrik, Fassade – es ist nicht klar, wo man sie anwenden soll.

Und bis Sie in der Praxis im Code einer anderen Person eine Stelle sehen, auf die dieses Muster angewendet wird, werden Sie es nicht selbst anwenden können. Daher ist Übung bei Mustern sehr wichtig. Und nur darüber auf refactoring.guru zu lesen, ist nicht besonders hilfreich, aber es lohnt sich auf jeden Fall, es zu tun.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Warum werden Muster benötigt? Nehmen wir an, Sie haben eine bestimmte Benutzerklasse. Es hat eine ID und einen Namen. Jeder Benutzer muss sowohl eine ID als auch einen Namen haben. Oben links ist das Klassenzimmer.

Welche Möglichkeiten gibt es, den Benutzer zu initialisieren? Es gibt zwei Optionen – entweder einen Konstruktor oder einen Setter. Welche Nachteile haben beide Ansätze?

Konstrukteur. neuer Benutzer (7, „Bond“), okay. Nehmen wir nun an, dass wir keine User-Klasse haben, sondern eine andere mit sieben numerischen Feldern. Sie erhalten einen Konstruktor mit sieben aufeinanderfolgenden Zahlen. Es ist nicht klar, um welche Zahlen es sich handelt und welche davon zu welcher Immobilie gehört. Der Designer ist nicht großartig.

Die zweite Option ist Setter. Sie schreiben deutlich: setId(7), setName(“Bond”). Sie verstehen, welche Eigenschaft zu welchem ​​Feld gehört. Aber Setter hat ein Problem. Erstens vergessen Sie möglicherweise, etwas zuzuweisen, und zweitens erweist sich Ihr Objekt als veränderlich. Dies ist nicht threadsicher und beeinträchtigt die Lesbarkeit des Codes geringfügig. Deshalb haben sich die Leute ein cooles Muster ausgedacht – Builder.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Um was geht es hierbei? Versuchen wir, die Vorteile beider Ansätze – Setter und Konstruktor – in einem zu kombinieren. Wir erstellen ein bestimmtes Objekt, Builder, das auch über die Felder „ID“ und „Name“ verfügt, das wiederum auf der Grundlage des Setters erstellt wird und über eine Build-Methode verfügt, die Ihnen einen neuen Benutzer mit allen Parametern zurückgibt. Wir erhalten ein unveränderliches Objekt und einen Setter. Cool!

Was sind die Probleme? Hier haben wir den klassischen Builder. Das Problem ist, dass wir immer noch vergessen können, ein Feld einzuchecken. Und wenn wir vergessen haben, die ID aufzurufen, wird sie in diesem Fall im Builder auf Null initialisiert, da der Typ int nicht nullbar ist. Und wenn wir den Namen „Bond“ eingeben und vergessen, das Ausweisbüro aufzusuchen, haben wir einen neuen Benutzer mit der ID „0“ und dem Namen „Bond“. Nicht cool.

Versuchen wir, dagegen anzukämpfen. Im Builder ändern wir int in int, sodass es nullbar ist. Jetzt ist alles super.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Wenn wir versuchen, einen Benutzer mit dem Namen „Bond“ zu erstellen und dabei vergessen, seine ID anzugeben, erhalten wir eine Nullzeiger-Ausnahme, da die ID nicht nullbar ist und der Builder eine Null-Zeiger-Ausnahme hat.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Aber wir können immer noch vergessen, einen Namen einzugeben, also setzen wir die Objektwiedergabe auf null. Wenn wir nun unser Objekt über Builder erstellen, wird überprüft, ob das Feld keine Nullwerte zulässt. Und das ist noch nicht alles.

Schauen wir uns das letzte Beispiel an. Wenn wir in diesem Fall in der ID-Laufzeit irgendwie null setzen, wäre es großartig, sofort zu wissen, dass Sie es getan haben, und es ist nicht cool, dass Sie jetzt einen Fehler machen.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Sie müssen einen Fehler nicht zum Zeitpunkt der Benutzererstellung auslösen, sondern wenn Sie die ID auf Null setzen. Deshalb ändern wir im Builder den Setter Integer in int und er wird sofort schwören, dass sie null ausgegeben haben.

Kurz gesagt, worum geht es? Es gibt ein einfaches Builder-Muster, aber selbst seine Implementierung weist einige Feinheiten auf, sodass es sehr cool ist, sich verschiedene Implementierungen von Mustern anzusehen. Jedes Muster hat Dutzende Implementierungen. Das ist alles sehr interessant.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Wie schreiben wir Builder im Produktionscode? Hier ist unser Benutzer. Wir fügen eine Builder-Rotation aus der Lombok-Bibliothek hinzu und es generiert selbst einen Builder für uns. Das heißt, wir schreiben keinen Code, aber Java geht bereits davon aus, dass diese Klasse einen Builder hat, und wir können sie so nennen.

Ich habe bereits gesagt, dass Java für fast alles Bibliotheken hat, einschließlich Lombok, einer coolen Bibliothek, die es Ihnen ermöglicht, das Schreiben von Boilerplates zu vermeiden. Builder, GET.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Muster können architektonischer Natur sein und sich nicht nur auf eine Klasse, sondern auf das System als Ganzes beziehen. Es gibt so ein cooles Prinzip im Systemdesign: das Single-Responsibility-Prinzip. Worüber redet er? Die Tatsache, dass jede Klasse für einige ihrer eigenen Funktionen verantwortlich sein muss. In diesem Fall haben wir einen Controller, der mit Benutzern und JSON-Objekten kommuniziert. Es gibt Facade, das JSON-Objekte in Modelle umwandelt, mit denen die Java-Anwendung dann arbeitet. Es gibt einen Dienst mit komplexer Logik, der mit diesen Modellen funktioniert. Es gibt ein Datenzugriffsobjekt, das diese Modelle in die Datenbank einfügt und sie aus der Datenbank abruft. Und da ist noch die Datenbank selbst. Mit anderen Worten: Es ist nicht alles in einer Klasse, sondern wir erstellen fünf verschiedene Klassen, und das ist ein anderes Muster.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Sobald Sie Java mehr oder weniger erlernt haben, ist es großartig, ein eigenes Projekt zu schreiben, das über eine Datenbank verfügt, mit anderen APIs arbeitet und Ihre Serveranwendung REST-API-Clients zur Verfügung stellt. Dies wäre eine großartige Ergänzung zu Ihrem Lebenslauf und ein cooler Abschluss Ihrer Ausbildung. Damit können Sie sich einen Job suchen.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

Hier ist ein Beispiel meiner Serveranwendung. In meinem zweiten Jahr habe ich mit den Jungs eine Hausarbeit geschrieben. Sie schrieben eine mobile Anwendung zur Organisation von Veranstaltungen. Dort konnten sich Benutzer über VKontakte anmelden, Punkte auf der Karte platzieren, Veranstaltungen erstellen, ihre Freunde dazu einladen, Bilder von Veranstaltungen speichern usw.

Was habe ich im Projekt gemacht? Habe eine Serveranwendung in Spring Boot geschrieben, ohne SQL zu verwenden. Ich kannte ihn nicht, ich habe JPA verwendet. Was könnte es tun? Melden Sie sich über OAuth-2 bei VK an. Nehmen Sie den Token des Benutzers, gehen Sie damit zu VK und prüfen Sie, ob es sich um einen echten Benutzer handelt. Erhalten Sie Informationen über Benutzer über VKontakte. Es war in der Lage, Informationen in einer Datenbank zu speichern, auch über JPA. Speichern Sie Bilder und andere Dateien geschickt im Computerspeicher und speichern Sie Links zu ihnen in der Datenbank. Zu diesem Zeitpunkt wusste ich nicht, dass es CLOB-Objekte in der Datenbank gibt, also habe ich es so gemacht. Es gab eine REST-API für Benutzer und Clientanwendungen. Und es gab Unit-Tests für die Grundfunktionalität.

[…] Ein kleines Beispiel meines erfolgreichen Erlernens von Java. In meinem ersten Jahr an der Universität wurde mir C# beigebracht und mir wurde ein Verständnis der OOP-Programmierung vermittelt – was Klassen, Schnittstellen, Abstraktion sind und warum sie benötigt werden. Es hat mir sehr geholfen. Ohne dies ist das Erlernen von Java ziemlich schwierig; es ist nicht klar, warum Klassen benötigt werden.

Warum Java lernen und wie man es effektiv macht. Yandex-Bericht

In meinem zweiten Jahr an der Universität lehrten sie erneut Java Core, aber ich hörte damit nicht auf, sondern studierte selbst Spring und schrieb eine Kursarbeit, mein Projekt, das ich oben erwähnt habe. Und mit all dem machte ich ein Praktikum bei Yandex, bestand ein Vorstellungsgespräch und stieg bei Yandex.Market ein. Dort habe ich das Backend für Beru, das ist unser Marktplatz, und für Yandex.Market selbst geschrieben.

Danach wechselte ich vor sechs Monaten zu einem anderen Team innerhalb desselben Marktes. Wir führen Analysen für Geschäftspartner durch. Wir sind in der Analyseplattform, wir sind zu dritt im Backend, sodass ich einen sehr großen Einfluss auf das Projekt habe. Eigentlich ist es sehr interessant. Das heißt, wir liefern tatsächlich Daten über den Markt – welche Verkäufe gibt es, in welchen Kategorien, in welchen Modellen, für Geschäftspartner, große namhafte Unternehmen. Und wir sind nur zu dritt, wir schreiben diesen Code und er ist sehr cool.

Danke! Nützliche Links:
- „Java 8. Einsteigerhandbuch“.
- Datenstrukturen.
- SQLZOO.
- Datenbanknormalisierung.
- Designmuster.
- Designmuster.
- Code bereinigen.
- Effektives Java.

Source: habr.com

Kommentar hinzufügen