Wenn Sie einem siebenjährigen Kind das Konzept des Multithreading erklären müssen, wie würden Sie es tun? Ich habe diese Frage kürzlich in einem Interview bekommen. Ich habe mir eine Geschichte über Jobs (die zu erledigende Aufgabe) und Arbeiter (die Fäden) ausgedacht, aber sie war nicht ganz überzeugend (wenn man bedenkt, dass das Kind zu jung ist).
Wenn Sie gebeten würden, dies zu beschreiben, wie würden Sie es tun?
interview
teaching
multithreading
Vinoth Kumar
quelle
quelle
Antworten:
Beschreiben Sie, was es ist. Lassen Sie die technischen Begriffe mit Ausnahme der Definitionen einfach weg:
quelle
Hey Kleiner. Waren Sie schon einmal zu Fuß und haben Kaugummi gleichzeitig gekaut, während Sie an Pokemon gedacht haben? Das ist dein Gehirn Multithreading.
quelle
Beziehen Sie es auf etwas, das sie leicht verstehen können. Autos auf einer Straße.
Denken Sie an eine einspurige Straße. Mit 12 Autos fahren sie nacheinander. Und nur ein Auto kann gleichzeitig fahren, und ein schnelleres Auto kann die langsameren nicht überholen.
Aber mit Multithreading fahren all diese Autos auf einer breiten Straße mit vier Fahrspuren. Die schnelleren Autos können an den langsameren vorbeifahren.
Bearbeiten: und wenn sie nicht aufpassen, können sie ineinander stoßen ...
quelle
Ich würde es so erklären, als würde ich Wäsche waschen.
Sie haben 3 Ladungen Wäsche und eine Waschmaschine und einen Trockner.
Die Art und Weise, wie jeder Wäsche wäscht, besteht darin, die erste Ladung in den Trockner zu befördern, bevor die nächste Ladung zum Waschen gebracht wird.
Jedes Kind würde verstehen, dass das Warten auf das Trocknen der ersten Ladung vor dem Waschen der zweiten Ladung mehr Zeit in Anspruch nehmen würde.
Sie können sogar noch einen Schritt weiter gehen, indem Sie erklären, dass Sie, wenn Sie mehr Waschmaschinen und Trockner haben (wie in einem Waschsalon), die Ladevorgänge schneller erledigen können.
quelle
Kochen einer Mahlzeit mit mehreren Gerichten auf einem kleinen Herd. Sie haben zwei Brenner (dh Prozessoren oder Kerne) und vier Teller (Gewinde) zum Kochen. Es können also immer nur maximal zwei Gerichte gleichzeitig gekocht werden. Unterschiedliche Gerichte haben unterschiedliche Garzeiten. Der Koch (das Betriebssystem) muss das alles unter einen Hut bringen, damit alles rechtzeitig zum Abendessen gekocht wird.
quelle
Ein Zirkusjongleur, der mit zwei Bällen beginnt und nach und nach immer mehr Bälle zu seinem Spiel hinzufügt.
quelle
Meiner Erfahrung nach haben 7-Jährige keine Probleme mit dem Konzept, dass verschiedene Dinge zur gleichen Zeit ablaufen, was die verschiedenen Programmier-Toolkits für Kinder bezeugen. Vor allem die Lego-Kits, aber auch das Scratch-System.
Vielleicht hat der Interviewer einfach versucht, einen neuen Blickwinkel auf die Frage nach etwas Unerwartetem zu finden.
quelle
"Du musst zwei Gläser aus der Küche zum Tisch tragen . (Sie rennen mit einem Glas in jeder Hand.) Jetzt mach es bitte noch einmal, aber benutze nur eine Hand."
quelle
Einige dieser Antworten sind umwerfend ... Ich glaube, ich bin der einzige hier, der 7-Jährige kennt ???
Insgesamt halte ich es für besser, dem Interviewer ins Gesicht zu schlagen.
quelle
Multi-Thread, es ist, als hätte man viele Dinge gleichzeitig zu tun und tut sie nach und nach.
Hey, der junge, neugierige Kerl, du musst jeden Tag essen, spielen und schlafen. Recht? Aber warum isst du nicht einmal ... nimm viel, bis du nicht mehr kannst, dann schlafe die ganze Zeit, die du brauchst, und spiele dann einfach interessante Spiele?
Nun, das kannst du nicht, denn wenn du nicht isst, wirst du hungrig, egal wie viel du in der vorherigen Mahlzeit bekommen hast. Wenn Sie nicht schlafen, werden Sie müde und können nicht mit Ihren Freunden spielen. Verstanden? Es gibt einige Dinge, die erledigt werden müssen, aber wir können sie nicht gleichzeitig erledigen. Wir frühstücken, spielen, essen zu Mittag, spielen wieder, ... und sagen endlich "Gute Nacht".
So funktioniert auch ein Computer: Sie spielen die Musik ein wenig ab, wechseln dann zu dem Bild, das Sie zeichnen, und schalten dann wieder auf Musik um. Aber die Zeit, die es dauerte, all diese Dinge tausendmal zu erledigen, ist nur ein Augenzwinkern, sodass Sie es nicht sehen können.
quelle
Sie haben eine Reihe von 6 Aufgaben, die Sie erledigen müssen:
Jede Aufgabe dauert 1 Stunde. Du hast 2 Brüder.
quelle
Sie haben einen Joystick / Gamecontroller.
Es gibt 4 Kinder. Jedes Kind spielt abwechselnd jedes Level, während sich die anderen ausruhen. Durch Teamwork erreichen sie schließlich Level 255 *.
Während jedes Kind spielt, isst es auch aus der Tüte mit Chips, von denen nur der aktuelle Spieler essen darf.
* Dann stürzt das Spiel ab. ;)
"Warum kaufst du nicht noch 3 Controller?"
Nun, das sind mehrere Prozessoren!
quelle
Kunstunterricht (Multi-Threaded-Anwendung)
Da es keine Klasse ohne Lehrer geben kann, brauchen Sie einen Lehrer (Hauptthema). Wenn Sie in die Klasse kommen, setzen Sie sich, und der Lehrer ist für alle verantwortlich und weist die Klasse an, Bilder für den Tag zu malen.
Der Lehrer weist allen Schülern den Tag zu, an dem mit dem Malen begonnen werden soll (Fadeninitialisierung und -zuweisung).
Da die Schule nur so viele Farben hat, müssen alle Farben miteinander teilen (Farben repräsentieren die Erinnerung).
Nehmen wir an, Sie malen einen Drachen und möchten ihm verrückte rote Augen geben, aber jemand anderes verwendet die rote Farbe. Sie können nicht einfach hinübergehen und die Farbe für sich selbst nehmen, da sonst niemand in der Lage wäre, sie zu verwenden. Stattdessen bitten Sie höflich darum, die Farbe zu teilen (Ressourcen sperren). Sie verbrauchen ein wenig und geben es dann weiter. Es kann sein, dass Sie etwas warten müssen, bis Sie es zurückbekommen, aber jeder, der es braucht, kann es bekommen, ohne sich zu streiten (Rennbedingungen).
Am Ende des Unterrichts schließt der Lehrer den Unterricht ab (Thread-Joining).
Gaming (Multi-Prozess-Anwendung)
Mit Freunden ein Kartenspiel spielen (oder ein gleichwertiges Spiel mit Sammlerstücken):
Nehmen wir an, Sie treffen sich nach der Schule mit Ihren Freunden (Prozessen). Es sind keine Lehrer da, und niemand ist da, um Ihnen zu sagen, was Sie tun sollen.
Jeder kommt zusammen, um Spiele zu spielen (Multi-Prozess- oder Multi-Layer-Anwendung).
Sie überlegen genau, wie Sie Ihre Karten einsetzen können, um Ihre Gegner zu besiegen (interne Verarbeitung), und Sie versuchen, Ideen mit Ihrem Partner zu teilen, wenn Sie eine Idee haben (Weitergabe von Nachrichten).
Wenn du wirklich gut wirst, kannst du einem Club beitreten:
Leader (Executive-Programm) Mitglieder (Unterprogramme)
Wenn der Club wirklich gut wird, haben sie möglicherweise eine spezielle Methode (API), um miteinander zu kommunizieren und eine bessere Strategie zu entwickeln.
Ich habe hier auf mehrere Prozessoren / Kerne verzichtet, da die Abstraktion ziemlich kompliziert wird (und die Kontextumschaltung für die meisten Anwendungen immer noch transparent ist). Ich könnte wahrscheinlich damit beginnen, dass jedes Team im Spiel einen separaten Prozessor / Kern darstellt und die meisten Spiele immer noch schlecht sind, weil sie nur einigen Teams erlauben, zusammen in einem Spiel zu spielen. Die Zukunft könnte eher wie ein MMORPG aussehen, in dem viele Leute in einem Spiel in vielen verschiedenen Teams zusammenspielen können.
Der Versuch, eine Kindermetapher für ein Distributionsverarbeitungssystem auf vielen Kerncomputern oder auf vielen Hostnetzwerken zu entwickeln, wäre ziemlich interessant, aber das ist nicht das, wonach die Op gefragt hat.
Hinweis:
Die oben angegebene Meldung bezieht sich auf die vielen Kommunikationsformen, mit denen Programme miteinander kommunizieren. Anwendungen haben wie Menschen viele Möglichkeiten, miteinander zu kommunizieren. Schreiben ist wie das Weiterleiten von serialisierten Daten, Sprechen ist wie das Vernetzen, Flüstern ist wie das Vernetzen über eine verschlüsselte Verbindung, Datenbanken sind wie eine Scorecard (endliche Struktur mit genau definierten Daten), und MSMQ zu verwenden ist wie das Tippen auf Morsecode, indem Sie Ihren Kopf gegen a schlagen feste Oberfläche.
Die meisten anderen Kommunikationsformen verschwimmen zu sehr, als dass ich sie für nicht unterscheidbar halten könnte.
Beiseite:
Wenn Sie schon einmal ein Online-Spiel wie Halo gespielt haben, haben die Personen, die Gruppen beitreten (oder Profispieler werden), normalerweise eine verkürzte Sprache, um sich gegenseitig zu informieren, wo sich die Spieler des anderen Teams befinden und was sie verwenden. Es ist wirklich unangenehm, wenn Sie die Callouts nicht kennen, aber es ist überraschend effektiv während des Spiels.
Es ist interessant, wie die meisten Menschen, die in einer bestimmten Kultur leben, eine gemeinsame Sprache sprechen, innerhalb dieser Kultur jedoch kürzere, prägnante Domänensprachen entwickeln, die für bestimmte Aufgaben optimiert sind. Beim Rechnen würde ich das mit einer API vergleichen.
quelle
Verwenden Sie ein weit verbreitetes Modell: die Essensphilosophen.
5 Philosophen beim Pastadinner.
5 Gabeln rund um den Tisch.
Jeder Philosoph braucht zwei Gabeln zum Essen.
Manche essen. Einige philosophieren während des Wartens.
quelle
Angenommen, Sie sind (das Kind) einen Ball aufspringen auf dem Kopf. Nach jedem bounce, sind zählen Sie es, das heißt, die Anzahl der Bounces. Auch nach jedem Prell Sie sagen, die Buchstaben aus Alphabet (A, B, C, ...)
Kid, du bist Multithreading.
quelle
Das Schleudern von Platten ist ein gutes Beispiel. Denken Sie an diesen Zauberer Menschen, die ein paar Teller nehmen und bekommen sie alle zur gleichen Zeit drehen. Der Magier wechselt ständig zwischen den Platten sie Spinnen alle Aufenthalt zu gewährleisten.
quelle
Ein Computer kann wirklich nur an einer Sache gleichzeitig arbeiten, aber er kann Dinge sehr schnell erledigen. (Ich verzichte der Einfachheit halber auf die Verarbeitung mit mehreren Kernen.) Aber was ist, wenn Sie gleichzeitig Musik hören und ein Spiel spielen möchten? Der Computer wechselt (sehr schnell) zwischen dem Umgang mit der Musik und dem Umgang mit dem Spiel.
quelle
Unser lokaler Spielplatz verfügt über eine Dreifachrutsche und eine Einzelrutsche. Das Einfädeln ist wie beim Dreifachrutschen, 3 Kinder können gleichzeitig nach unten rutschen. Aber auf der Einzelrutsche müssen zwei Kinder oben auf das erste Kind warten, das die Rutsche herunterfährt.
War ein Teil der Stellenbeschreibung ein Bericht an den CFO?
quelle
Zwei Kinder auf einem Spielplatz, die sich begrenzte Ressourcen teilen (streiten), sagen die benötigten Legostücke aus einer kleinen Schachtel, um ihre Lieblingsroboter herzustellen.
quelle