Questions d'entretien Go récemment publiées (Baidu et MiHoYo)
Les deux sociétés ont utilisé des entretiens en ligne. Il n'y a eu aucun enregistrement à l'époque. Maintenant, je me fie entièrement à mes propres souvenirs pour les revoir. go
技术岗位,一家百度,一家米哈游,面试的情况也不太乐观,现在分享一下面试中问的问题吧。
两家都是采用线上面试的,当时没有录音,现在全靠自己的回忆来复盘一下了。
百度一面
百度的面试步骤分为计算机基础、go
相关、mysql
相关、redis
相关、linux
相关问题。还有一些发散性的问题。
基础相关
- 算法,包括不限于红黑树、二叉树等等。
- 数据结构,包括不限于链表、数组等。
-
tcp
、ip
相关的一些问题,比如三次握手、四次挥手、time_wait
等等。 - 浏览器输入地址,中间发生的过程,仔细的描述一下。(这个我感觉基本都会被问,哈哈哈)。
这一块的话,我回答的是稀碎,算法和数据结构我一个都没答上来,后面两个因为之前面试问到过,所以查过一些,回答的还算可以。
go相关
-
GC
,(面GO
必问题),GC
中stw
时机,各个阶段是如何解决的。 -
gpm
,(面GO
必问题),这个必须要完全理解,抢占式调度是如何抢占的,怎么调度goroutine
的,M
和P
的数量问题。 - 如何优雅的实现一个
goroutine
池(这个回答的稀碎) - 谈谈内存逃逸
- 内存管理(这个也回答的稀碎)
mysql相关
- mysql锁,分锁粒度和锁算法(间隙锁、记录锁,临键锁),以及锁算法在什么情况下会用到。大概意思就是如果精准能匹配到的话,用的就是记录锁,否则退化为间隙锁
- mysql mvvc实现原理。
- mysql 索引,索引建立时机,建立规则。
- mysql 分库分表规则,有没有实践过?
- mysql 索引的类型以及索引的数据结构
- mysql 事务特性,以及隔离级别。
redis
- redis的数据类型有哪些,使用场景说说。
- redis zset的编码方式,应该有两种,在配置文件中配置的,默认128个元素是ziplist(压缩表),大于128则是skiplist
- redis的内存淘汰策略
- redis的持久化策略
- redis分布式锁
- redis分布式架构有哪些
- 如果有一个排行榜,用zset,根据积分和时间来排序,积分高的,时间最近的拍前面,怎么实现?
linux
- 你熟悉的有哪些命令
- 如果线上流量暴增,全都打到一个upstream上了,怎么排查。
- 如何在nginx的access log中查出请求前10的ip
总结
我面试结束后,一般都会问面试官,根据这次面试,针对我的技术上面,有什么好的建议或者意见,这位面试官给我的回答是:计算机基础比较薄弱,但是业务能力很强。这也是我目前的现状,哈哈,所以最近一直在看哈工大老师的计算机理论和操作系统。希望能勤能补拙吧。
米哈游一面
米哈游面试总体分为四个部分,go
相关,mysql
相关,redis
相关,linux
Baidu d'un côté
Les étapes de l'entretien de Baidu sont divisées en bases informatiques, liées à go
, liées à mysql
, redis
Problèmes liés à linux
. Il existe également des problèmes divergents. - Algorithmes
liés à la base, y compris, mais sans s'y limiter, les arbres rouge-noir, les arbres binaires, etc.
🎜Structures de données, y compris, mais sans s'y limiter, les listes chaînées, les tableaux, etc. 🎜🎜Certains problèmes liés àtcp
et ip
, tels que la poignée de main à trois voies, la vague à quatre voies, time_wait
, etc. 🎜🎜 Entrez l'adresse dans le navigateur et décrivez le processus en détail. (J’ai l’impression qu’on va me demander ça, hahaha). 🎜🎜🎜En ce qui concerne cette section, mes réponses étaient rares. Je n'ai pu répondre à aucun des algorithmes et des structures de données qui ont été posées lors d'entretiens auparavant, j'en ai donc vérifié certaines et y ai assez bien répondu. 🎜🎜🎜🎜lié à Go🎜🎜🎜GC
, (une question obligatoire pour GO
), stw
timing dans GC
, comment chaque étape est résolue. 🎜🎜gpm
, (une question obligatoire pour GO
), cela doit être parfaitement compris, comment la planification préemptive préempte et comment planifier goroutine
, le problème de quantité de M
et P
. 🎜🎜Comment implémenter avec élégance un pool goroutine
(cette réponse est clairsemée)🎜🎜Parlez de l'évasion de mémoire🎜🎜Gestion de la mémoire (cette réponse est également clairsemée)🎜🎜🎜🎜🎜lié à MySQL🎜🎜 🎜MySQL le verrouillage, la granularité du verrouillage et l'algorithme de verrouillage (verrouillage des espaces, verrouillage des enregistrements, verrouillage des touches), et dans quelles circonstances l'algorithme de verrouillage sera utilisé. La signification générale est que s'il peut être associé avec précision, des verrous d'enregistrement seront utilisés, sinon ils dégénéreront en verrous d'espacement🎜🎜principe d'implémentation de mysql mvvc. 🎜🎜index mysql, timing de création d'index, règles de création. 🎜🎜Règles de sous-base de données et de table MySQL, les avez-vous déjà mises en pratique ? 🎜🎜Type d'index mysql et structure des données d'index 🎜🎜Caractéristiques des transactions mysql et niveau d'isolement. 🎜🎜🎜🎜🎜redis🎜🎜🎜Quels sont les types de données de redis ? Parlons des scénarios d'utilisation. 🎜🎜Il devrait y avoir deux méthodes d'encodage pour redis zset. Configurées dans le fichier de configuration, les 128 éléments par défaut sont ziplist (table de compression), et s'ils sont supérieurs à 128, c'est la stratégie d'élimination de mémoire de 🎜🎜redis 🎜🎜redis. stratégie de persistance 🎜🎜verrouillage distribué redis🎜🎜Quelles sont les architectures distribuées redis ?🎜🎜S'il existe une liste de classement, utilisez zset pour trier en fonction des points et du temps. Ceux avec les points les plus élevés et ceux avec le temps le plus récent seront classés en premier. . Comment le mettre en œuvre ? 🎜🎜🎜🎜🎜linux🎜🎜🎜Quelles commandes connaissez-vous 🎜🎜Si le trafic en ligne augmente fortement et que tout va en amont, comment puis-je le résoudre ? 🎜🎜Comment trouver les 10 adresses IP les plus demandées dans le journal d'accès nginx🎜🎜🎜🎜🎜Résumé🎜🎜Après l'entretien, je demande généralement à l'intervieweur, sur la base de cet entretien, ce qui est bien dans ma technologie, les suggestions ou les opinions de l'intervieweur ? La réponse que j'ai reçue a été : la base informatique est relativement faible, mais la capacité commerciale est très forte. C'est aussi ma situation actuelle, haha, j'ai donc récemment lu la théorie informatique et les systèmes d'exploitation enseignés par des professeurs du Harbin Institute of Technology. J'espère que mon travail acharné pourra compenser mes lacunes. 🎜🎜🎜Un côté de MiHoYo
🎜L'interview de MiHoYo est généralement divisée en quatre parties, liées àgo
, liées à mysql
, redis code>Connexe, <code>linux
Connexe. 🎜🎜🎜🎜go Related🎜🎜🎜J'ai été confus par la première question. Le code est le suivant : 🎜🎜...m := make(map[int]int, 10)for i := 1; i<= 10; i++ { m[i] = i}for k, v := range(m) { go func() { fmt.Println("k ->", k, "v ->", v) }()}...
- Fuite de mémoire, dans quelles circonstances la mémoire sera-t-elle divulguée ?
- Le principe sous-jacent de mise en œuvre du canal (en fait, cela signifie que demander à buf est la structure de données d'une liste chaînée circulaire)
- defer, il faut y répondre avec attention, quand le report modifiera la valeur de retour. L'ordre de plusieurs reports.
- La différence entre make et new
- Que se passe-t-il lorsque le canal est fermé et que les données sont ensuite envoyées Que se passe-t-il lorsqu'un canal fermé est fermé ?
- La carte est-elle sécurisée pour les threads ?
- La différence entre les tableaux et les tranches.
- GC
- Modèle GPM
- Différences entre les processus, les threads et les coroutines. (C'est très important)
Il y en a d'autres que j'ai oubliés.
redis
est presque comme Baidu.
mysql
est presque le même que Baidu.
linux
À peu près la même chose, j'ai donc demandé comment vérifier l'identifiant du processus en fonction du nom du processus
Résumé
Selon les commentaires de l'interview, MiHoYo a donné une mauvaise base Go. la capacité commerciale est forte. C'est peut-être la caractéristique de l'externalisation d'avant.
La deuxième face de MiHoYo
La deuxième face de MiHoYo pose principalement des questions sur les affaires et les algorithmes, et elle se compose principalement de trois parties.
- Concernant les microservices, y compris l'enregistrement et la découverte des microservices, la surveillance des microservices, la limitation actuelle des microservices, etc., et comment démoniser les microservices, j'ai répondu au superviseur, mais je ne sais pas si c'est correct.
- La réalisation d'affaires spécifiques, la réalisation de codes de remboursement, comment générer par lots des centaines de milliers ou des millions de codes de remboursement (j'ai répondu à cette question en utilisant l'algorithme du flocon de neige), sous haute concurrence, comment s'assurer qu'un code de remboursement peut être utilisé uniquement par Une seule personne peut l'utiliser une fois, et comment un code d'échange peut être utilisé par plusieurs personnes. (Il m'a fallu une demi-heure pour répondre à cette question. Parce que j'ai déjà fait des affaires connexes, je me sens un peu en confiance)
- Trois questions sur l'algorithme.
- Écrivez une méthode pour résoudre : saisissez 4 nombres, affichez une valeur attendue par addition, soustraction, multiplication et division.
- Algorithme de largeur d'abord : comment afficher les valeurs de chaque couche.
- Problème d'étape, si vous voulez monter d'une étape, vous pouvez monter une étape à la fois, ou vous pouvez monter deux étapes à la fois Écrivez une méthode pour saisir le nombre d'étapes et afficher le nombre de façons de le faire. monter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Lorsque vous utilisez SQL.Open, pourquoi le DSN ne signale-t-il pas une erreur? En langue go, sql.open ...
