Golang
Pouvez-vous donner un exemple de tâche avec un haut degré d'incertitude que vous avez dû accomplir?
Que signifie le recalcul des données historiques dans la mise en œuvre du processus de patch pour le chargement et le recalcul des données historiques ? Pourquoi doit-on le faire chaque nuit ?
Parlez-moi des niveaux d'isolation des transactions
Qu'est-ce que la pile et le tas?
Quelles sont les limitations lorsque plusieurs instances de consommateur lisent de Kafka?
Quels types d'index existent dans PostgreSQL ? Comment diagnostiquer une requête lente ?
Quels types d'interactions gRPC avez-vous utilisés ? Pouvez-vous les nommer ?
Que se passe-t-il après avoir saisi google.com dans le navigateur et appuyé sur Entrée ? Décrivez tout le processus et les participants.
Quelles primitives de synchronisation connais-tu en Go?
Comment Go prend en charge HTTP/2?
Parlez-moi du traitement concurrent — comment avez-vous limité le parallélisme, comment avez-vous choisi les paramètres par des mesures?
Quelles primitives de synchronisation connais-tu?
Qu'est-ce qu'un volume dans Docker?
Quelle est la différence entre EXPLAIN et EXPLAIN ANALYZE ?
Où sont stockées les chaînes en Go : dans le heap ou dans la pile ?
Il y a un gestionnaire HTTP qui effectue une requête SELECT complexe dans la base de données, et l'utilisateur n'est pas satisfait du long délai. Quelle est la séquence d'actions pour diagnostiquer et optimiser ?
/* Il y a une application avec une architecture de microservices. Un microservice peut être abstrait à l'aide de l'interface Backend. Pour accéder à une instance de microservice, on peut utiliser le type BackendImpl, qui est déjà implémenté. Chaque microservice a plusieurs dizaines d'instances en cours d'exécution, chacune accessible par sa propre adresse addr. Cependant, les instances individuelles du microservice ne sont pas fiables : elles peuvent échouer, être inaccessibles ou surchargées. C'est pourquoi vous devez implémenter le type Balancer, qui implémente également l'interface Backend et effectue un équilibrage de charge côté client entre les instances du microservice, en choisissant à chaque fois l'instance **la moins chargée**. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contient ip:port d'une instance spécifique func NewBackend(addr string) *BackendImpl type Balancer struct { //TODO } var _ Backend = &Balancer{} // addrs contiennent les adresses de toutes les instances équilibrées func NewBalancer(addrs []string) *Balancer { //TODO }
Avez-vous utilisé des services cloud ? Yandex, Google, AWS ou d'autres services cloud ?
Qu'est-ce que la latence, le débit, la MTU et le Keep-Alive?
Peut-on faire EXPLAIN ANALYZE en production?