Sobes.tech

Golang

Condition Il y a 3 entités : utilisateur, chat, message • L'utilisateur a un nom et une date d'inscription • Le chat a un nom et une date de création • Le message a du texte, un auteur et une date de création • Un utilisateur peut être dans plusieurs chats en même temps • Le message appartient obligatoirement à un chat, il ne peut pas appartenir à plus d'un chat en même temps • Il faut décrire le domaine sous forme de tables -- distribué -- message_count dans chats limite 100 --getShard(time zone) -> shard_id -> 1 --getShard(time zone) -> shard_id -> 2 --shard1 [1..100] --shard2 [101..200] CREATE TABLE users ( id int PRIMARY KEY, name varchar(255) NOT NULL, reg_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE TABLE chats ( id int PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), message_count int NOT NULL CHECK <= 100 ); CREATE TABLE user_chats ( user_id int not null REFERENCES users(id), chat_id int NOT NULL REFERENCES chats(id), PRIMARY KEY (user_id, chat_id) ); CREATE TABLE messages ( id int PRIMARY KEY, chat_id int NOT NULL REFERENCES chats(id), author_id int NOT NULL REFERENCES users(id), created_at TIMESTAMP NOT NULL DEFAULT NOW(), text TEXT NOT NULL );

Senior
Ozon ФинтехOzon Финтех
75

Avez-vous actuellement d'autres entretiens ou offres?

Senior
DST Lab
75

Nomme tous les méthodes HTTP (verbes) que vous connaissez.

Middle
АО Медиа Эффект
75

Sur quoi peut-on se baser lors du choix du nombre de shards pour le cache si la charge n'est pas connue à l'avance?

Middle
Ozon FreshOzon Fresh
75

Comment aviez-vous déployé PostgreSQL ? Parlez-moi de la stabilité et de la scalabilité.

Middle+
РамблерРамблер
75

La formalisation via GPH n'apparaît pas dans le livre de travail?

Senior
Hi Rockits
75

Comment avez-vous effectué la mise à l'échelle des consommateurs Kafka ? Selon quels critères ?

Middle+
ВайлдберрисВайлдберрис
75

package principal import ( "fmt" "sync" ) func main() { for i := 0; i < 5; i++ { go fmt.Println(i) } }

Senior
X5 techX5 tech
75

Est-il préférable de définir l'interface au lieu d'implémentation ou au lieu d'utilisation?

Senior
Магнит Тех
75

Qu'est-ce que le partitionnement et le sharding ? Les avez-vous utilisés ?

Senior
А7
75

Le service a planté après la connexion de la dixième boutique à la fonctionnalité de statistiques. Que feras-tu ? Comment diagnostiquer et optimiser la base de données ?

Middle+
X5 groupX5 group
75

Que se passe-t-il en cas de collisions de hachage dans une map ?

Middle+
WaterWal
75

Parle-moi de ton expérience chez Tinkoff — comment as-tu été embauché et quelles étaient tes tâches?

Middle+
КуперКупер
75

Codage en direct : tâche sur les goroutines — accès concurrent aux données partagées, condition de course, solution via mutex. Différence entre sync.Mutex et sync.RWMutex.

Middle+
Веро Трейс
75

Quelle est la différence entre les canaux tamponnés et non tamponnés?

Senior
Финтехробот
75

Que cherches-tu actuellement pour toi dans ton nouvel emploi?

Middle+
plata
75

Pouvez-vous parler de l'architecture du transformateur?

Middle
Graveling
75

Dans quelles situations est-il plus approprié qu'un développeur écrive du code manuellement plutôt que de s'appuyer sur des solutions générées par l'IA?

Senior
AndersenAndersen
75

Les mises à jour des documents arrivent au service message Document { string Url = 1; // URL du document, son identifiant unique uint64 PubDate = 2; // heure de publication déclarée du document uint64 FetchTime = 3; // heure de réception de cette mise à jour du document, peut être considérée comme un identifiant de version. La paire (Url, FetchTime) est unique. string Text = 4; // texte du document uint64 FirstFetchTime = 5; // initialement absent, doit être rempli } Les documents peuvent arriver dans n'importe quel ordre (pas dans l'ordre de leur mise à jour), et il peut également y avoir des messages en double. Il est nécessaire de former en sortie des messages identiques, mais avec des champs corrigés selon les règles suivantes (tout ce qui est indiqué ci-dessous concerne un groupe de documents avec le même champ Url): Le champ Text et FetchTime doivent être ceux du document avec le plus grand FetchTime reçu jusqu'à présent. Le champ PubDate doit être celui du message avec le plus petit FetchTime. Le champ FirstFetchTime doit être égal à la valeur minimale de FetchTime. Autrement dit, à chaque instant, nous prenons PubDate et FirstFetchTime du premier version reçu jusqu'à présent (si on les trie par FetchTime), et Text de la dernière. L'interface dans le code peut être implémentée ainsi: type Processor interface { Process(doc *Document) (*Document, error) } Ce code fonctionnera dans un service qui lit des messages d'une file (Kafka ou similaire), et écrit également le résultat dans la file. Si Process retourne Null, rien n'est écrit dans la file.

Senior
VKVK
75

Connaissez-vous Linux et à quel niveau?

Middle+
ООО Макс
75
/412