Welche Fragen stellt der Junior iOS-Entwickler bei den ersten Interviews?

Was wollen Arbeitgeber hören? Was musst du wissen? Sie schreiben viel im Internet, aber in Wirklichkeit spielt der menschliche Faktor eine Rolle und Sie werden bei einfachen Fragen gefangen, für die Sie nicht bereit waren.


Hallo Habr. In den letzten 7 Monaten habe ich Interviews umgangen, irgendwo über 20. Sie waren alle in der Junior iOS-Entwicklerposition. Infolgedessen gaben sie mir nach zahlreichen Qualen und Klimmzügen verschiedener Nuancen der mobilen Entwicklung ein Angebot an das Unternehmen, über das ich mich sehr freute.

Ich, als Person ohne frühe Entwicklungserfahrung, als Wirtschaftswissenschaftler, der sich selbst ausbildet, möchte einer Person, die sich gerade für diesen Weg entschieden hat, mitteilen, was sie bei Interviews erwarten sollte und welche Fragen sie definitiv aufwerfen oder überhaupt lernen muss.

Ich werde hier nur für Junior Swift iOS Entwicklerpositionen schreiben. Andere Interviews zu diesen Positionen wurden nicht bestanden.

Ich werde Dinge auflisten, die Sie mit einer Wahrscheinlichkeit von 99% fragen werden, dann werde ich ein paar Worte zu jedem Punkt hinzufügen.

Also fangen wir an.

Was sie dich definitiv fragen werden (na ja, wenn du plötzlich vergisst zu fragen, werden sie offensichtlich von dir erwarten, dass du das weißt):

  • ViewController-Lebenszyklus
  • OOP
  • Der Unterschied zwischen Klasse und Struktur
  • Protokolle
  • Möglichkeiten zum Übertragen von Daten zwischen Controllern
  • Storyboard oder xib
  • AutoLayout
  • Speichern von Daten (CoreData, Realm, UserDefault usw.)
  • Anforderungen und Arbeit mit vom Server empfangenen Daten (URLSession, Alamofire, Codable)
  • Verschlüsse
  • Optionale
  • Erweiterungen
  • Generika
  • BOGEN
  • Multithreading (oberflächlich gesehen wird ab Juni niemand mehr fundiertes Wissen benötigen)
  • schwach, nicht besessen, privat, dateiprivat
  • Der Unterschied zwischen Frame und Grenzen
  • Cocoapods (SwiftPacketManager, Karthago)
  • Git

Wir werden einige Punkte kurz diskutieren.

  • ViewController-Lebenszyklus

Hier ist alles einfach. Sie wollen von Ihnen hören:

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)

Es gibt natürlich noch Methoden, aber diese werden im Prinzip ausreichen.

  • OOP

Sie können diesen Moment leicht googeln und lesen, was da ist.

  • Klasse vs Struktur

Hier schien tatsächlich alles einfach zu sein, aber man muss wirklich wissen, worin sie sich unterscheiden. Sie müssen zumindest in einem einfachen Beispiel verstehen, was print () erzeugt und warum.

let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)

Sie sollten wissen, welchen Druck Sie in diesen beiden Fällen erhalten.

Es ist auch ein Plus, wenn Sie hinzufügen, von wem ViewController geerbt werden können und von wem nicht. (PS von Struct'a - nein)

  • Protokolle

Lesen Sie, was es ist und wofür sie verwendet werden (obwohl Sie wahrscheinlich schon davon gehört haben).
Sie können auch nach einer Erweiterung des Protokolls fragen. Sie müssen genau verstehen, wer die Delegierten sind und wie diese Verbindung funktioniert.

  • Möglichkeiten zum Übertragen von Daten zwischen Controllern

Es wird ausreichen, um ein Paar zu nennen. Delegieren Sie Methoden, Abschlüsse über init, wenn Sie einen ViewController über xib usw. erstellen.

  • Storyboard oder xib

Hier werden Sie höchstwahrscheinlich gefragt, ob Sie jemals einen ViewController über xib erstellt haben. Sie werden Sie nicht nach Details und Details fragen. Du Juni, du weißt immer noch nicht viel. Die Hauptsache für sie zu verstehen ist, ob Sie es schreiben können. Nun, es wird notwendig sein, eine Antwort zu geben, warum Sie durch xib erstellen oder umgekehrt.

  • AutoLayout

Hier können Sie lange über dieses Thema malen. Ich rate Ihnen zu googeln, was es ist. Verstehe das allgemeine Wesen, das wird ausreichen.

  • Speichern von Daten (CoreData, Realm, UserDefault usw.)

Diese Frage wird Sie noch lange verfolgen. Das Wichtigste ist zu wissen, wann UserDefault verwendet werden muss, was in KeyChain gespeichert werden soll und was Realm ist. Speichern Sie die Daten einige Male in Ihren Heimprojekten in CoreData, damit Sie eine allgemeine Vorstellung davon haben, um welche Art von Tier es sich handelt und wie Sie es zähmen können.

  • Anforderungen und Arbeit mit vom Server empfangenen Daten (URLSession, Alamofire, Codable)

Hier müssen Sie wissen, was POST, GET ist. Dies wird gefragt.

Sie müssen in der Lage sein, Fehler auf Anfrage zu behandeln. Die ideale Option ist, wenn Sie vor dem Vorstellungsgespräch die Leistungsbeschreibung für das Haus erhalten haben. Dort können Sie die volle Kraft Ihres Geistes demonstrieren.

Alamofire ist auch in Projekten üblich, daher sollten Sie es verwenden können.
Sie sollten in der Lage sein, die Daten, die der Server an Sie zurückgibt, mithilfe von Codable oder einigen Bibliotheken im Sinne von SwiftyJSON oder ObjectMapper zu analysieren.

  • Verschlüsse (Verschlüsse)

Dies ist ein sehr wichtiger Punkt. Es kann vorkommen, dass Sie es wirklich oft verwenden, sich aber nicht mit dem Kern dieses Problems befasst haben. Wenn Sie wissen, wie man sie schreibt und wie man sie benutzt - großartig! Aber wie zeigen Sie dem Arbeitgeber, dass Sie das wissen, wenn Sie nicht in einfachen Worten erklären können, was es ist. Ich rate Ihnen, SwiftBook in dieser Angelegenheit gründlich zu rascheln.

  • Optionale

Dies sollte einer der einfachsten Punkte für Sie sein. Sie sollten über diese "Schrödinger-Katze" und die Bereitstellungsmethoden Bescheid wissen. Sagen Sie ihnen unbedingt, dass Sie kein Unterstützer von Force Unwrap sind, und verachten Sie zutiefst Menschen, die im Projekt so „Mist“ sind.

  • Erweiterungen

Es ist unwahrscheinlich, dass dies ein separates Problem darstellt. Höchstwahrscheinlich wird dies in Verbindung mit anderen Problemen stehen (z. B. einer Frage zu Protokollen). Schreibe ein paar Mal Extension'y. Ich versichere Ihnen, da ist nichts kompliziert. Sie werden sich auf jeden Fall mit diesem Problem befassen.

Aber zum Beispiel hatte ich Fälle, in denen sie fragten, warum große Köpfe darauf gekommen sind.
Sie können sich irgendwo eine solche Antwort markieren - "Um die Klasse zu erweitern, auf die wir keinen Zugriff haben." Zum Beispiel einheimisches Eplovskie, auf das wir nicht eingehen können, das wir aber für unsere Bequemlichkeit ein wenig erweitern möchten.

  • Generika

Wofür sind sie? Was ist das? Wenn Sie in SwiftBook über Generika lesen, scheint es Ihnen, dass dies für Ihren einfachen Verstand etwas sehr Kompliziertes ist, aber tatsächlich ist dort alles viel einfacher. Die Hauptsache ist einfach, die Essenz dessen zu verstehen, wofür es geschrieben ist. Und Sie können immer ausspionieren, wie man es erstellt. Sie werden nicht gezwungen sein, es bei einem Interview zu schreiben. Sie möchten nur Ihr Verständnis für dieses Problem hören.

  • ARC (oberflächlich gesehen wird ab Juni niemand mehr fundiertes Wissen benötigen)

Hier möchten sie von Ihnen eine allgemeine Vorstellung von der Linkzählung hören. Wie es zunimmt und was passiert, wenn der „Zähler“ 0 ist. Sie werden Sie nicht bitten, unter die Haube zu tauchen, und wenn sie dies tun, werden sie wahrscheinlich nicht verstehen, dass der Juni vor ihnen sitzt.

Hier möchten sie verstehen, dass Sie Fehler im Code korrekt finden können, wenn Ihr ViewController beispielsweise nicht "versehentlich" "de-initialisiert" wird (getötet wird, verschwindet, verlässt).

  • Multithreading

So übertragen Sie vom Hauptthread zum Hintergrund. Es gibt viele Nuancen. Sie werden nicht alles auf einmal verstehen. Die Hauptsache ist, sich mit GCD- und Versandwarteschlangen zu befassen. Hier ist ein großartiger Artikel zu diesem Thema.

  • schwach, nicht besessen, privat, dateiprivat

Was für schwache sind sie. Was ist der Unterschied zwischen schwach und nicht besessen.

Was sind privat und dateiprivat? Dies ist eine einfache Frage. Sie können im Internet lesen, es gibt nichts Kompliziertes, aber Sie müssen es noch wissen.

Darf auch die Frage der Faulheit hier enthalten. Hier ist alles genauso einfach. Lies es!

  • Der Unterschied zwischen Frame und Grenzen

Diese Frage kann grundsätzlich ein Interview beginnen. Aber ich füge hinzu, dass diese Frage überraschenderweise nicht so häufig war wie die anderen. Aber im Internet raschelte ich und bemerkte, dass dies eine ziemlich häufige Frage ist. Versuchen Sie also nicht Ihr Glück, lernen Sie! Denken Sie, dass Sie sicher gefragt werden. Hier gibt es nichts Kompliziertes, Sie müssen nur die Essenz verstehen (ja, ja, wie bei allen anderen Themen).

  • Cocoapods (SwiftPacketManager, Karthago)

Sie sollten auf jeden Fall in der Lage sein, Bibliotheken in Ihr Projekt zu ziehen. Am beliebtesten sind CocoaPods. Es wird im Prinzip ausreichen, es zu wissen. Wenn Sie den Bereich erweitern möchten, sehen Sie auch SwiftPacketManager, Karthago.

  • Git

Nun, hier weiß ich nicht einmal, was hinzugefügt werden kann. Verwenden Sie den Git, machen Sie Commits (je mehr desto besser).

Sie müssen in der Lage sein, neue Zweige zu erstellen, mit anderen Zweigen zusammenzuführen (zusammenzuführen) und Zusammenführungskonflikte zu lösen (aufzulösen).

Im Prinzip habe ich die beliebtesten Fragen aufgelistet, auf die ich gestoßen bin. Natürlich hat niemand den menschlichen Faktor aufgehoben und sie können Sie bei jeder anderen Frage erwischen, aber wenn Sie sich mit diesen Themen auskennen, sind Sie bereits zu 90% bereit. Ich selbst bin noch ein Juni und ich verstehe, dass meine Meinung alles andere als sachkundig ist, aber ich habe mich entschlossen, mit anderen zu teilen, was ich weiß, in der Hoffnung, dass es für jemanden sehr nützlich ist und dazu beiträgt, die Phase eines technischen Interviews zu überwinden.

Lerne, entwickle und hilf anderen!

All Articles