Avez-vous de l'expérience dans l'écriture de programmes avec multithreading et asynchronie? Avez-vous eu un support dans le développement de systèmes distribués?
Golang
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
Quelle est la complexité de l'algorithme en termes de temps et de mémoire?
Section algorithmique : deux problèmes de niveau Medium ou supérieur sur LeetCode. Durée : 1,5 heures pour les deux problèmes.
Travaillez-vous actuellement ou pas, et dans quel format : bureau, hybride, télétravail?
/* Nous devons transférer des données d'une source à un consommateur. La source fournit les données en petits lots (~dizaines d'enregistrements), tandis que le consommateur fonctionne plus efficacement avec de gros lots. Un exemple réel est le transfert de données depuis des files d'attente de type Kafka vers la base de données Clickhouse. Source: - Pratiquement infinie. - La source ne renvoie jamais plus de MaxItems en un seul appel à Next. - Dans une "session" (un appel à la fonction Pipe), la source renvoie de nouvelles données à chaque appel à Next. - Cependant, après un redémarrage, la source recommencera à partir de la position "confirmée" précédente, indiquée par cookie. Par conséquent, *chaque* valeur de cookie renvoyée par Next, après avoir sauvegardé les données dans le récepteur, doit être confirmée avec un appel à Commit, dans le même ordre dans lequel elles ont été renvoyées par Next. Récepteur: - Ne peut pas traiter plus de MaxItems à la fois. Niveau de base: Il est nécessaire d'implémenter la fonction func Pipe(p Producer, c Consumer) error qui lit les données de la source, les regroupe dans un buffer de taille maximale MaxItems et les sauvegarde dans le récepteur, puis confirme la progression dans la source. */ const MaxItems = 9999 type Producer interface { // Next retourne: // - un lot d'éléments à traiter // - un cookie à confirmer lorsque le traitement est terminé // - une erreur Next() (items []any, cookie int, err error) // Commit est utilisé pour marquer le lot de données comme traité 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 }
Quelle est la différence entre un équilibriseur de charge L4 et un équilibriseur L7?
Quels indicateurs de performance avez-vous utilisés pour évaluer votre travail sur le dernier projet?
""" Les sièges dans une salle de cinéma sont alignés en une seule rangée. Un spectateur qui vient d'arriver choisit une place, pour s'asseoir aussi loin que possible des autres spectateurs dans la rangée. Autrement dit, la distance entre cette place, et le spectateur le plus proche doit être maximale. Il est garanti qu'il y a toujours des places libres et qu'au moins un spectateur est déjà assis. Écrivez une fonction qui, étant donné une rangée de places (un tableau de zéros et de uns), renvoie la distance (nombre d'espaces entre les sièges) entre la place choisie et le spectateur le plus proche. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
/* * Étant donné un tableau d'entiers et un nombre X, * il faut trouver le sous-tableau non vide le plus long dont le minimum est X. * Retournez la longueur de ce sous-tableau ou -1 s'il n'existe pas. */
Comment sont organisés les tests dans l'équipe — qui écrit quoi, quelle couverture, y a-t-il des tests E2E?
Comment peut-on améliorer l'efficacité de la recherche d'éléments dans une structure de données Map?
Comment est déterminé le temps d'exécution de l'opération d'ajout d'un élément par clé dans la structure de données Map?
Comment déterminer visuellement ou algorithmiquement qu'un élément est unique dans la structure de données Map?
Quel projet choisir pour un entretien technique et comment le décrire?
Quel indicateur de nombre d'opérations par seconde lors de la lecture de données avez-vous atteint ou analysé?
[nom] a indiqué : à la ligne 20, uniq ne contient pas le nombre de caractères uniques, mais quelque chose d'autre. Qu'est-ce exactement ?
Pourquoi faut-il deux vérifications if (à la ligne 79 et à la ligne avec len(buf)==MaxItems), au lieu d'une seule?
Quel taux de requêtes par seconde a été atteint lors de l'écriture des données?
// Pour deux tableaux d'entiers de longueur N, // pour tous K de 1 à N, compter le nombre de nombres communs dans les préfixes de longueur K. // Les nombres dans le tableau peuvent se répéter, l'intersection est comptée sans tenir compte des multiplicateurs. // Un préfixe de longueur K du tableau A est les premiers K éléments du tableau 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]