Sobes.tech

Ποια είναι η εμπειρία σας στην υλοποίηση και ρύθμιση συστημάτων αυθεντικοποίησης και εξουσιοδότησης;

Junior — Middle
248

Ποια είναι η πολυπλοκότητα του αλγορίθμου σε χρόνο και μνήμη;

247

Τμήμα αλγορίθμων: δύο προβλήματα επιπέδου Medium ή υψηλότερα στο LeetCode. Διάρκεια — 1,5 ώρες για τις δύο εργασίες.

247

Εργάζεστε τώρα ή όχι, και σε ποια μορφή: γραφείο, υβριδικό, απομακρυσμένο;

246

""" Οι θέσεις στον κινηματογράφο είναι τοποθετημένες σε μια σειρά. Ένας θεατής που μόλις ήρθε επιλέγει μια θέση, για να καθίσει όσο το δυνατόν πιο μακριά από τους άλλους θεατές στη σειρά. Δηλαδή, η απόσταση από αυτή τη θέση, στην οποία θα καθίσει, μέχρι τον πλησιέστερο θεατή πρέπει να είναι μέγιστη. Εγγυάται ότι πάντα υπάρχουν ελεύθερες θέσεις στη σειρά και ότι ήδη κάθεται τουλάχιστον ένας θεατής. Γράψτε μια συνάρτηση που, δεδομένης μιας σειράς θέσεων (ένας πίνακας μηδενικών και ένα), επιστρέφει την απόσταση (αριθμός διαστημάτων μεταξύ των καθισμάτων) από τη επιλεγμένη θέση μέχρι τον πλησιέστερο θεατή. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

245

/* Chreiazomaste na metatrepoume dedomena apo mia poria se mia alli. I poria parexei ta dedomena se mikro merh, (~deka eggrafes), enw o xristis douleuei pio apodotika me megalous morfous. Enas pragmatikos paradeigma einai i metatrepisi dedomenon apo Kafka-typous oures stin vasi dedomenon Clickhouse. Poria: - Praktika apeiro. - I poria den epistrefei pio apo MaxItems eggrafes se mia monadiki klisi Next. - Mesa se mia "synthesi" (mia klisi tis sunartisis Pipe), i poria epistrefei nea dedomena se kathe Next. - Omws, meta apo mia epanarchi, i poria tha ksekinisei apo tin prohgoumeni "epiveveomeni" thesi, pou deixnei apo to cookie. Opote, *kathe* timi cookie pou epistrefei to Next, meta tin apothikeusi ton dedomenon ston parakto, prepei na epiveveothei me mia klisi Commit, stin idia seira pou epistrefontai apo to Next. Paraliptikos: - Den mporei na diadrastei perissotero apo MaxItems se mia fora. Vasi: Prepei na ylopoiisete tin sunartisi func Pipe(p Producer, c Consumer) error pou diavazei dedomena apo tin poria, ta omadopoiei se ena buffer me megethos oxi pio apo MaxItems kai ta apothikeuei ston parakto, meta epivevevei to progresa stin poria. */ const MaxItems = 9999 type Producer interface { // Next epistrefei: // - ena paketo me items gia diadrasth // - cookie gia na epiveveothei otan oloklirothei i diadrasth // - lathi Next() (items []any, cookie int, err error) // Commit xrisimopoieitai gia na shmeiosei oti to paketo einai olokliro Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

244

Ποια είναι η διαφορά μεταξύ ενός ισοσταθμιστή φορτίου L4 και ενός L7;

243

Ποια δείκτες απόδοσης χρησιμοποιήσατε για την αξιολόγηση της εργασίας σας στο τελευταίο έργο;

Junior — Middle
242

/* * Ένα πίνακα ακέραιων αριθμών και ένας αριθμός X δίνονται, * απαιτείται να βρεθεί το μεγαλύτερο μη κενό υποδιάστημα, του οποίου το ελάχιστο είναι X. * Επιστρέψτε το μήκος αυτού του υποδιαστήματος ή -1 αν δεν υπάρχουν. */

241

""" Οι θέσεις στον κινηματογράφο είναι τοποθετημένες σε μια σειρά. Ένας θεατής που μόλις έφτασε επιλέγει μια θέση, για να καθίσει όσο το δυνατόν πιο μακριά από τους άλλους θεατές στη σειρά. Δηλαδή, η απόσταση από αυτή τη θέση, μέχρι τον πλησιέστερο θεατή, πρέπει να είναι μέγιστη. Εγγυάται ότι υπάρχουν πάντα ελεύθερες θέσεις και ότι ήδη κάθεται τουλάχιστον ένας θεατής. Γράψτε μια συνάρτηση που, δεδομένης μιας σειράς θέσεων (ένας πίνακας με μηδενικά και μονάδες), θα επιστρέφει την απόσταση (αριθμός διαστημάτων μεταξύ των καθισμάτων) από την επιλεγμένη θέση μέχρι τον πλησιέστερο θεατή. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """

240

Πώς καθορίζεται ο χρόνος εκτέλεσης της λειτουργίας προσθήκης ενός στοιχείου με κλειδί στη δομή δεδομένων Map;

Junior — Middle
237

Ποιο έργο να επιλέξετε για μια τεχνική συνέντευξη και πώς να το περιγράψετε;

236

Πώς να προσδιορίσετε οπτικά ή αλγοριθμικά ότι ένα στοιχείο είναι μοναδικό στη δομή δεδομένων Map;

Junior — Middle
235

[όνομα] ανέφερε: στη γραμμή 20, το uniq δεν περιέχει τον αριθμό των μοναδικών χαρακτήρων, αλλά κάτι άλλο. Τι ακριβώς;

233

Ποιο δείκτη αριθμού ενεργειών ανά δευτερόλεπτο κατά την ανάγνωση δεδομένων έχετε επιτύχει ή αναλύσει;

Middle — Middle+
233

Ποιο ήταν το δείκτη αιτημάτων ανά δευτερόλεπτο που επιτεύχθηκε κατά την εγγραφή δεδομένων;

Junior — Middle
232

Γιατί χρειάζονται δύο έλεγχοι if (στη γραμμή 79 και στη γραμμή με len(buf)==MaxItems), αντί για έναν;

231

Πώς είναι δομημένα τα τεστ στην ομάδα — ποιος γράφει τι, ποια κάλυψη, υπάρχει E2E;

231

// Για δύο πίνακες ακέραιων αριθμών μήκους N, // για όλα τα K από 1 έως N, μετρήστε τον αριθμό των κοινών αριθμών στα προθέματα μήκους K. // Οι αριθμοί στον πίνακα μπορεί να επαναλαμβάνονται, η τομή υπολογίζεται χωρίς να λαμβάνονται υπόψη οι πολλαπλότητες. // Ένα πρόθεμα μήκους K του πίνακα A είναι τα πρώτα K στοιχεία του πίνακα A // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]

230

// Δίνονται δύο ταξινομημένες ακολουθίες ακεραίων σε μη φθίνουσα σειρά. // Είναι απαραίτητο να επιστραφούν όλα τα στοιχεία της πρώτης ακολουθίας που δεν υπάρχουν στη δεύτερη. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }

228
/11