#claruey #Techniker
1. Was ist großartig an Go? - Goroutinen und der Scheduler, der es ermöglicht, ohne darüber nachzudenken, wie es mit Nebenläufigkeit umgeht.
2. Welche Nachteile siehst du bei Go? - Fehlerbehandlung
3. Wie bist du zu Go gekommen?
4. Was sorgt für die Leichtgewichtigkeit von Go und warum wechseln Go-Routinen schneller? Warum konnte man das im OS nicht so machen?
5. Woran opfern wir, wenn wir Goroutinen anstelle von OS-Threads verwenden?
6. Was ist Nebenläufigkeit und Parallelität?
7. Was ist die net.Listener Schnittstelle und welche Methoden hat sie?
8. Hast du direkt mit Netzwerken gearbeitet oder über Frameworks und welche?
9. Wie unterscheidet sich TCP von UDP und wofür werden sie allgemein verwendet?
10. Welche Risiken gibt es bei der Verwendung von TCP und UDP?
11. Was sind BigEndian und LittleEndian?
12. Was ist TLS?
13. Welche Möglichkeiten gibt es, Daten zwischen Microservices zu übertragen (z.B. Befehle/Anfragen/Antworten/Dateiübertragung)? Welche Muster oder Entwicklungsmittel können wir hier wählen und was sind die Nuancen?
14. Was sind die Methoden der Datenübertragung im Netzwerk und ihre Vor- und Nachteile?
15. Mit welchen Datenbanksystemen hast du gearbeitet und welche Werkzeuge hast du verwendet?
16. Welche Bibliothek hast du für jede Datenbank in Go verwendet?
17. Wie gehst du mit dem Wachstum der Datenbank während der Entwicklung um?
18. Wenn sich das Schema der Datenbank ändert, wie gehst du damit um, ohne alte Daten zu zerstören? Was ist mit Migrationen, ihre Vor- und Nachteile?
19. Wie änderst du die Datenbank in der Produktion? Wer hat das gemacht?
20. Wie kannst du die Datenbankkomponente am besten vom Hauptlogik abstrahieren, sodass SQL-Abfragen und Methoden sich nicht im Code verteilen? In einem separaten Verzeichnis, eine Schnittstelle übergeben und Tags verwenden?
21. Warum sind Indizes notwendig und was sind ihre Nachteile?
22. Dir wurde die Aufgabe gegeben, Code zu schreiben, den du in ein Projekt aufnehmen würdest, und wie würdest du die Ergebnisse dokumentieren?
23. Welche Dokumentation verwendest du normalerweise und zu welchem Zweck + wohin geht sie? Zum Beispiel, was ist diese Schnittstelle und wofür wird sie verwendet?
24. Nutzt du aktiv go doc und ist das eine Praxis in deinem Team?
25. Begleitest du Spezifikationen oder Markdown-Dokumentationen? Wie machst du das?
26. Wie war dein Workflow, wer hat die Aufgaben vergeben und was war der nächste Schritt?
27. Wie detailliert sind deine Aufgaben? Musst du nur zugreifen oder auch architektonisch denken und andere fragen?
28. Wir haben ein Projekt mit vielen Goroutinen. Welche Synchronisationsmittel verwendest du, damit alle Goroutinen elegant und sicher beendet werden?
29. Wo im Projekt hast du Goroutinen verwendet?
30. Wenn du eine Schnittstelle in eine Funktion übergibst, wie viele Bytes nimmt sie ein?
31. Was ist ein httpHandler, was erhält er, welche Struktur hat er, was gibt er zurück, was sind seine Argumente und Signatur? Wofür ist er und wo wird er weiter verwendet?
32. Was ist Middleware und wie benutzt man sie? Wie war es in deinem Projekt?
33. Welche Eigenschaften der Go-Sprache erlauben den Bau von Middlewares und was ist die Funktion, die sie akzeptiert und was gibt sie zurück?
34. Wenn du eine Funktion hast, die eine andere Funktion akzeptiert und nach Ausführung einen Goroutine startet und einen Callback macht, und du eine Methode einer Struktur übergibst, die keine Argumente nimmt und nichts zurückgibt - wird es einen Kompilierungsfehler geben oder etwas anderes? Sie hat eine leere Signatur, und du hast eine Methode, die diese Funktion erwartet, aber anstelle einer einfachen Funktion hast du eine Methode übergeben, also ein Objekt.Methode.
35. Es gibt eine Funktion, die einen int32 akzeptiert, und du versuchst, einen int16 zu übergeben, was passiert und in welcher Phase?
36. Wie viele Bytes nimmt ein Slice im Speicher auf amd64? 24 Bytes, und die Daten selbst werden nicht an die Funktion übergeben?
37. Wie kannst du eine Menge in Golang implementieren und was sind ihre Unterschiede und Nuancen?
38. Was ist UUID und hast du es in deinem Projekt verwendet, wo und welche Bibliothek hast du benutzt?
39. Du hast eine Map mit 1.000.000 Elementen, was passiert, wenn du ein weiteres hinzufügst? Welche Szenarien sind möglich und wie ändert sich die Geschwindigkeit des Datenzugriffs?
41. Hast du Docker (Container/Pods) verwendet? Welche anderen Dienste hast du vor Docker verwendet, z.B. "wie man eine Binärdatei auf einem Server bereitstellt"? Nach dem Kompilieren deines Codes, worauf muss es umgewandelt werden, damit der Dienst beim Systemstart startet?