Heim >Backend-Entwicklung >Golang >Frisch veröffentlichte Go-Interviewfragen (Baidu und MiHoYo)

Frisch veröffentlichte Go-Interviewfragen (Baidu und MiHoYo)

藏色散人
藏色散人nach vorne
2021-09-25 16:38:569533Durchsuche

Beide Unternehmen nutzten damals keine Aufzeichnungen, um sie zu überprüfen. go技术岗位,一家百度,一家米哈游,面试的情况也不太乐观,现在分享一下面试中问的问题吧。

两家都是采用线上面试的,当时没有录音,现在全靠自己的回忆来复盘一下了。

百度一面

百度的面试步骤分为计算机基础、go相关、mysql相关、redis相关、linux相关问题。还有一些发散性的问题。

基础相关

  • 算法,包括不限于红黑树、二叉树等等。
  • 数据结构,包括不限于链表、数组等。
  • tcpip相关的一些问题,比如三次握手、四次挥手、time_wait等等。
  • 浏览器输入地址,中间发生的过程,仔细的描述一下。(这个我感觉基本都会被问,哈哈哈)。

这一块的话,我回答的是稀碎,算法和数据结构我一个都没答上来,后面两个因为之前面试问到过,所以查过一些,回答的还算可以。

go相关

  • GC,(面GO必问题),GCstw时机,各个阶段是如何解决的。
  • gpm,(面GO必问题),这个必须要完全理解,抢占式调度是如何抢占的,怎么调度goroutine的,MP的数量问题。
  • 如何优雅的实现一个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 einseitig

Die Interviewschritte von Baidu sind in Computergrundlagen, go-bezogen, mysql-bezogen, redis unterteilt > Verwandte, linux-bezogene Probleme. Es gibt auch einige abweichende Probleme.
  • Grundlegende verwandte

Algorithmen, einschließlich, aber nicht beschränkt auf Rot-Schwarz-Bäume, Binärbäume usw.

🎜Datenstrukturen, einschließlich, aber nicht beschränkt auf verknüpfte Listen, Arrays usw. 🎜🎜Einige Probleme im Zusammenhang mit tcp und ip, wie z. B. Drei-Wege-Handshake, Vier-Wege-Wave, time_wait usw. 🎜🎜 Geben Sie die Adresse in den Browser ein und beschreiben Sie den Vorgang ausführlich. (Ich habe das Gefühl, dass ich normalerweise so gefragt werde, hahaha). 🎜🎜🎜Was diesen Abschnitt betrifft, konnte ich auf keinen der Algorithmen und Datenstrukturen antworten, die zuvor in Interviews gestellt wurden, also habe ich einige überprüft und sie ziemlich gut beantwortet. 🎜🎜🎜🎜go bezogen🎜🎜🎜GC, (eine erforderliche Frage für GO), stw Timing in GC , wie jede Stufe gelöst wird. 🎜🎜gpm, (eine erforderliche Frage für GO), dies muss vollständig verstanden werden, wie präventive Planung vorgeht und wie man goroutine plant, das Mengenproblem von M und P. 🎜🎜So implementieren Sie elegant einen goroutine-Pool (diese Antwort ist spärlich)🎜🎜Sprechen Sie über Speicherflucht🎜🎜Speicherverwaltung (diese Antwort ist ebenfalls spärlich)🎜🎜🎜🎜🎜MySQL-bezogen🎜🎜 🎜MySQL Sperre, Sperrgranularität und Sperralgorithmus (Lückensperre, Datensatzsperre, Tastensperre) und unter welchen Umständen der Sperralgorithmus verwendet wird. Die allgemeine Bedeutung besteht darin, dass Datensatzsperren verwendet werden, wenn eine genaue Übereinstimmung möglich ist, andernfalls werden Lückensperren degeneriert. Prinzip der MySQL-MVVC-Implementierung. 🎜🎜MySQL-Index, Zeitpunkt der Indexerstellung, Erstellungsregeln. 🎜🎜MySQL-Subdatenbank- und Tabellenregeln, haben Sie sie jemals geübt? 🎜🎜MySQL-Indextyp und Indexdatenstruktur 🎜🎜MySQL-Transaktionsmerkmale und Isolationsstufe. 🎜🎜🎜🎜🎜redis🎜🎜🎜Was sind die Datentypen von Redis? 🎜🎜In der Konfigurationsdatei sollten zwei Codierungsmethoden für Redis konfiguriert sein. Die standardmäßigen 128 Elemente sind Ziplist (Komprimierungstabelle), und wenn sie größer als 128 sind, handelt es sich um die Speichereliminierungsstrategie von 🎜🎜Redis Persistenzstrategie 🎜🎜Redis Distributed Lock🎜🎜Was sind die verteilten Redis-Architekturen?🎜🎜Wenn eine Rangliste vorhanden ist, verwenden Sie zset, um nach Punkten und Zeit zu sortieren. Diejenigen mit höheren Punkten und diejenigen mit der neuesten Zeit werden zuerst eingestuft . Wie wird es umgesetzt? 🎜🎜🎜🎜🎜linux🎜🎜🎜Welche Befehle kennen Sie? 🎜🎜Wenn der Online-Verkehr stark ansteigt und alles an einen Upstream geht, wie kann ich das Problem beheben? 🎜🎜So finden Sie die 10 am häufigsten angeforderten IPs im Nginx-Zugriffsprotokoll🎜🎜🎜🎜🎜Zusammenfassung🎜🎜Nach dem Interview frage ich den Interviewer normalerweise, was an meiner Technologie gut ist. Vorschläge oder Meinungen des Interviewers Die Antwort für mich war: Die Computerbasis ist relativ schwach, aber die Geschäftsfähigkeit ist sehr stark. Das ist auch meine aktuelle Situation, haha, also habe ich kürzlich Computertheorie und Betriebssysteme gelesen, die von Lehrern des Harbin Institute of Technology unterrichtet wurden. Ich hoffe, dass meine harte Arbeit meine Mängel ausgleichen kann. 🎜

🎜🎜Eine Seite von MiHoYo

🎜Das MiHoYo-Interview ist im Allgemeinen in vier Teile unterteilt: go bezogen, mysql bezogen, redis code>Verwandt, <code>linuxVerwandt. 🎜🎜🎜🎜go related🎜🎜🎜Die erste Frage verwirrte mich. Der Code lautet wie folgt: 🎜🎜
...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)
    }()}...
🎜Fragen Sie, was passieren wird, warum und wie Sie es lösen können. Verwenden Sie Verschlüsse nur nicht direkt, um externe Variablen zu verwenden. Dies kann durch Übergeben von Parametern gelöst werden. 🎜
  • Speicherverlust, unter welchen Umständen kommt es zu einem Speicherverlust?
  • Das zugrunde liegende Implementierungsprinzip des Kanals (eigentlich bedeutet dies, dass buf die Datenstruktur einer zirkulär verknüpften Liste ist)
  • Aufschieben, dies muss sorgfältig beantwortet werden, wann wird der Rückgabewert geändert? Die Reihenfolge mehrerer verschiebt sich.
  • Der Unterschied zwischen make und new
  • Was passiert, wenn der Kanal geschlossen wird und dann die Daten gesendet werden? Was passiert, wenn ein geschlossener Kanal geschlossen wird?
  • Sind Karten-Thread-sicher? Kartenerweiterungsregeln.
  • Der Unterschied zwischen Arrays und Slices.
  • GC
  • GPM-Modell
  • Unterschiede zwischen Prozessen, Threads und Coroutinen. (Das ist sehr wichtig)

Es gibt noch andere, die ich vergessen habe.

redis

ist fast wie Baidu.

MySQL

ist fast dasselbe wie Baidu.

Linux

So ziemlich das Gleiche, also habe ich gefragt, wie man die ID des Prozesses anhand des Prozessnamens überprüfen kann

Zusammenfassung

Laut dem Interview-Feedback gab MiHoYo eine schlechte Go-Grundlage Die Geschäftsfähigkeit ist stark. Vielleicht ist dies das Merkmal von Outsourcing früher.

Die zweite Seite von MiHoYo

Die zweite Seite von MiHoYo stellt hauptsächlich Fragen zu Geschäft und Algorithmus und besteht hauptsächlich aus drei Teilen.

  • Bezogen auf Microservices, einschließlich der Registrierung und Erkennung von Microservices, der Überwachung von Microservices, der aktuellen Begrenzung von Microservices usw. und wie man Microservices dämonisiert. Ich habe dem Supervisor geantwortet, weiß aber nicht, ob das richtig ist.
  • Die Realisierung eines bestimmten Geschäfts, die Realisierung von Einlösungscodes, wie man Hunderttausende oder Millionen von Einlösungscodes stapelweise generiert (ich habe diese Frage mithilfe des Snowflake-Algorithmus beantwortet), unter hoher Parallelität, wie man sicherstellt, dass ein Einlösungscode dies kann nur von einer Person verwendet werden kann, und wie ein Einlösecode von mehreren Personen eingelöst werden kann. (Ich habe eine halbe Stunde gebraucht, um diese Frage zu beantworten. Da ich schon früher mit ähnlichen Geschäften zu tun hatte, fühle ich mich ein wenig zuversichtlich.)
  • Drei Algorithmusfragen.
    1. Schreiben Sie eine Lösungsmethode: Geben Sie 4 Zahlen ein und geben Sie einen erwarteten Wert durch Addition, Subtraktion, Multiplikation und Division aus.
    2. Breadth-First-Algorithmus: So geben Sie die Werte jeder Ebene aus.
    3. Schrittproblem: Wenn Sie eine Stufe nach oben gehen möchten, können Sie eine Stufe nach der anderen oder zwei Stufen nacheinander aufsteigen. Schreiben Sie eine Methode, um die Anzahl der Stufen einzugeben und auszugeben, wie viele Wege Sie nach oben gehen müssen.

Empfohlen: „Golang-Tutorial

Das obige ist der detaillierte Inhalt vonFrisch veröffentlichte Go-Interviewfragen (Baidu und MiHoYo). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen