Golang
Τι είναι οι goroutines; Πώς διαφέρουν από τα κανονικά νήματα (threads);
Γιατί μπήκατε στην αγορά και τι είναι σημαντικό τώρα κατά την επιλογή ενός νέου εργοδότη, ενός νέου έργου; Υπάρχει μια θεμελιώδης διαφορά μεταξύ fintech και λιανικής;
Πώς υλοποιείται η αντίθετη πλευρά — το μοτίβο Inbox στην υπηρεσία ειδοποιήσεων; Πώς διασφαλίζεται η ιδιομορφία στην επεξεργασία των γεγονότων;
Χρησιμοποιήσατε το EXPLAIN για βελτιστοποίηση ερωτημάτων; Τι καταλάβατε και πόσο επιταχύνατε τα ερωτήματα;
Τι σε ενδιαφέρει τώρα, τι ψάχνεις για τον εαυτό σου;
/* Υπάρχουν δύο διακομιστές 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**
Τι κάνατε με την καθυστέρηση του καταναλωτή κατά την επαναρύθμιση ή διακοπή της υπηρεσίας;
Γενική εντύπωση από τη συνέντευξη, επίπεδο υποψηφίου, συστάσεις
Έχετε ποτέ χρειαστεί να προγραμματίσετε σε C;
Υπάρχει μια λειτουργία που διασχίζει ένα δοχείο και μετρά τα στοιχεία μικρότερα από 42. Αν την καλέσετε σε έναν πίνακα και σε μια συνδεδεμένη λίστα με τα ίδια δεδομένα, τι θα δείξει ο χρονόμετρος;
// Ερώτηση 1. Τι θα εμφανιστεί στην οθόνη; package main import "fmt" func main() { s := "Hello world" s[0] = "h" if err != nil { fmt.Println("Σφάλμα", err) } fmt.Println(s) }
Τι θα συμβεί στο τέλος με το μήκος του πίνακα κατά τη συγχρονισμένη προσθήκη από 1000 goroutines;
Έφτασε μια παραλαβή στο αποθήκη, στη συνέχεια φορτώθηκαν 5 τεμάχια από το αποθήκη στο φορτηγό. Πώς θα προχωρήσει η ροή στο πληροφοριακό σύστημα;
Όρος Υπάρχουν 3 οντότητες - χρήστης, συνομιλία, μήνυμα • Ο χρήστης έχει όνομα και ημερομηνία εγγραφής • Η συνομιλία έχει όνομα και ημερομηνία δημιουργίας • Το μήνυμα έχει κείμενο, συγγραφέα και ημερομηνία δημιουργίας • Ο χρήστης μπορεί να συμμετέχει σε πολλές συνομιλίες ταυτόχρονα • Το μήνυμα ανήκει υποχρεωτικά σε μια συνομιλία και δεν μπορεί να ανήκει σε περισσότερες από μία ταυτόχρονα • Πρέπει να περιγραφεί ο τομέας με μορφή πινάκων
Πού τοποθετούνται οι μεταβλητές στο Go — στη στοίβα ή στη σωρό; Τι είναι η ανάλυση διαφυγής;
Υλοποιήστε μια λειτουργία που δέχεται []any και delta int. Είναι απαραίτητο να αυξήσετε κατά delta μόνο τις πρώτες εμφανίσεις μοναδικών αριθμών (int). Άλλοι τύποι και επαναλαμβανόμενοι αριθμοί αφήνονται αμετάβλητοι. Η λειτουργία πρέπει να επιστρέφει τη ενημερωμένη λίστα και 2 αριθμούς: updated – πόσοι μοναδικοί αριθμοί άλλαξαν, duplicates – πόσα αριθμητικά στοιχεία αποδείχθηκαν διπλότυπα func IncrementUniqueIntsInMixed(xs []any, delta int) ([]any, int, int) { // ο κώδικάς σας } // Παράδειγμα: xs := []any{1, "a", 5, "b", 1, 0, 5} u, d, s := IncrementUniqueIntsInMixed(xs, 3) // xs == []any{4, "a", 8, "b", 1, 3, 5} // u == 3 // μοναδικοί αριθμοί: 1, 5, 0 // d == 2 // διπλότυποι αριθμοί: δεύτερο 1, δεύτερο 5
Τι είναι το Mutex και το RWMutex; Ποια είναι η διαφορά;
Πώς αισθάνεσαι στην ομάδα σε επίπεδο; Τι λείπει για μια πλήρη θέση senior;
Τι είναι ένας μερικός (partial) δείκτης;
Πώς καταλαβαίνεις σε ποιο κουβά να βάλεις ένα νέο στοιχείο;