Golang
Πώς να αποθηκεύσετε σωστά το URL του εξωτερικού υπηρεσίας;
Τι είναι ένα map στο Go; Πώς είναι δομημένο (νέα υλοποίηση στο Go 1.24);
Πες μου για το pipeline CI/CD: ποια περιβάλλοντα, ποια βήματα, πώς χτίστηκε η διαδικασία;
Γιατί αποφασίσατε να βγείτε στην αγορά; Τι δεν σας ικανοποιεί στη τρέχουσα θέση σας;
Γιατί χρησιμοποιούνται οι διεπαφές στο Go, ποια είναι τα πλεονεκτήματα και τα μειονεκτήματά τους;
Ποια είναι η διαφορά μεταξύ μιας υλοποιημένης προβολής και μιας κανονικής προβολής;
Έχετε αντιμετωπίσει το Kubernetes σε προηγούμενα έργα;
Τι μπορεί να δει το επίπεδο του αποθετηρίου;
Κατά την επανα-κατακερματισμό, το κατακερματισμό παραμένει ίδιο ή υπολογίζεται ένας νέος για το κλειδί;
Τι είναι ο ανταγωνισμός και ο παραλληλισμός; Πώς διαφέρουν; Μπορούν να συνυπάρχουν;
Πόση μνήμη καταλαμβάνει ο τύπος bool;
Εσείς παρακολουθούσατε την παρακολούθηση ή έχετε μια ξεχωριστή ομάδα;
Πώς λειτουργεί το GOMAXPROCS και για ποιο λόγο χρειάζεται το P (επεξεργαστής) στο μοντέλο GMP;
Γιατί χρειάζονται δύο έλεγχοι if (στη γραμμή 79 και στη γραμμή με len(buf)==MaxItems), αντί για έναν;
/* Υπάρχουν δύο διακομιστές PostgreSQL: * PROD - διακομιστής OLTP, * STATS - διακομιστής για μακρές αναλυτικές ερωτήσεις. Στον τρέχοντα διακομιστή, στη βάση δεδομένων prod, υπάρχει ένας μεγάλος πίνακας (10Tb) με την ακόλουθη δομή: CREATE TABLE profiles( id SERIAL, data JSONB ) Στον πίνακα μπορεί να υπάρχουν "τρύπες", δηλαδή ορισμένα `id` μπορεί να λείπουν. Πρέπει να γράψετε ένα πρόγραμμα για να αντιγράψετε τον πίνακα profiles από το PROD στο STATS. Υποθέτουμε ότι θα χρησιμοποιηθούν οι ακόλουθες διεπαφές για εργασία με βάσεις δεδομένων: type Row []interface{} type Database interface { // η υλοποίηση της διεπαφής Database μπορεί να επανασυνδέσει // η κλήση SaveRows είναι idempotent io.Closer GetMaxID(ctx context.Context) (uint64, error) LoadRows(ctx context.Context, minID, maxID uint64) ([]Row, error) // [minID, maxID] SaveRows(ctx context.Context, rows []Row) error } func Connect(ctx context.Context, dbname string) (Database, error) // CopyTable // Αν full=false, συνεχίστε τη μεταφορά δεδομένων από το σημείο του προηγούμενου σφάλματος // Αν full=true, μεταφέρετε όλα τα δεδομένα func CopyTable(fromName string, toName string, full bool) error { // ... ο κώδικάς σας } Αν δοθεί η επιλογή `full=false`, το πρόγραμμα πρέπει να συνεχίσει τη μεταφορά δεδομένων από το σημείο του προηγούμενου σφάλματος. Αν `full=true`, πρέπει να μεταφέρει όλα τα δεδομένα. **Βασικό επίπεδο**: - σειριακή μεταφορά δεδομένων σε ένα ρεύμα - ανάκτηση μετά από σφάλμα (επιλογή `full=false`) Πρόσθετες πληροφορίες: - αν χρειάζεται, μπορείτε να επεκτείνετε τη διεπαφή προσθέτοντας δικές σας μεθόδους - αν χρειάζεται, μπορείτε να χρησιμοποιήσετε απευθείας το πακέτο **database/sql**
Τι κάνατε με την καθυστέρηση του καταναλωτή κατά την επαναρύθμιση ή διακοπή της υπηρεσίας;
Θες να αναπτυχθείς στην αρχιτεκτονική;
Μπορείς να μιλήσεις για τις goroutines; Τι γνωρίζεις γι' αυτές, ποια είναι τα χαρακτηριστικά τους;
Ποια τεστ έγιναν στο έργο και πώς ξεκίνησαν;
Τι συμβαίνει σε περίπτωση συγκρούσεων κατακερματισμού σε έναν χάρτη;