Si vous devez expliquer le concept du multi-threading à un enfant de sept ans, comment le feriez-vous? J'ai récemment eu cette question dans une interview. Je suis venu avec une histoire utilisant des emplois (la tâche à faire) et des travailleurs (les fils) mais ce n'était pas entièrement convaincant (étant donné que l'enfant est trop jeune).
Si on vous demandait de décrire cela, comment le feriez-vous?
interview
teaching
multithreading
Vinoth Kumar
la source
la source
Réponses:
Décrivez ce que c'est, laissez de côté les termes techniques à l'exception des définitions:
la source
Hé gamin. Avez-vous déjà marché et mâché de la gomme en même temps en pensant à Pokemon? C'est votre cerveau multi-threading.
la source
Reliez-le à quelque chose qu'ils peuvent facilement comprendre. Voitures sur une route.
Pensez à une route à voie unique. Avec 12 voitures dessus, elles roulent les unes après les autres. Et une seule voiture peut finir en même temps, et une voiture plus rapide ne peut pas dépasser les plus lentes.
Mais, avec le multi-threading, c'est comme si toutes ces voitures roulaient sur une route large à quatre voies. Les voitures les plus rapides peuvent dépasser les plus lentes.
Edit: et s'ils ne font pas attention, ils peuvent se planter ...
la source
Je l'expliquerais comme faire la lessive.
Vous avez 3 charges de linge et une laveuse et une sécheuse.
La façon dont tout le monde fait la lessive est de déplacer la première charge dans le sèche-linge que de mettre la prochaine charge pour le lavage.
Tout enfant comprendrait qu'attendre que la première charge sèche avant de commencer à laver la deuxième charge prendrait plus de temps.
Vous pourriez même aller plus loin en expliquant si vous avez plus de laveuses et sécheuses (comme dans une laverie), vous pouvez faire les charges plus rapidement.
la source
Cuisiner un repas avec plusieurs plats sur une petite cuisinière. Vous avez deux brûleurs (c.-à-d. Processeurs ou noyaux) et quatre plats (fils) à cuire. Ainsi, seuls deux plats au maximum peuvent être cuits (exécutés) à la fois. Différents plats ont des temps de cuisson différents. Le cuisinier (l'OS) doit jongler avec tout cela pour que tout soit cuit à temps pour le dîner.
la source
Un jongleur de cirque commençant par deux balles et ajoutant progressivement de plus en plus de balles à son jeu.
la source
D'après mon expérience, les enfants de 7 ans n'ont aucun problème avec le concept de différentes choses qui se passent en même temps, comme en témoignent les différentes boîtes à outils de programmation conçues pour les enfants. Notamment les kits Lego, mais aussi le système Scratch.
L'enquêteur essayait peut-être simplement de trouver un nouvel angle pour vous demander quelque chose d'inattendu.
la source
"J'ai besoin que vous portiez deux verres de la cuisine à la table . (Ils courent, portant un verre dans chaque main.) Maintenant, veuillez recommencer, mais n'utilisez qu'une seule main."
la source
Certaines de ces réponses sont hallucinantes ... Je pense que je suis peut-être la seule ici à connaître les enfants de 7 ans ???
Dans l'ensemble, je pense que frapper l'intervieweur au visage est une meilleure réponse.
la source
Multi thread, c'est comme avoir beaucoup de choses à faire à la fois, et les faire petit à petit.
Hé le jeune gars curieux, chaque jour tu dois manger, jouer et dormir; droite? Mais pourquoi ne mangez-vous pas une fois ... prenez-en beaucoup jusqu'à ce que vous n'en puissiez plus, puis dormez tout le temps dont vous avez besoin, puis jouez et jouez à des jeux intéressants?
Eh bien, vous ne pouvez pas faire ça, parce que si vous ne mangez pas, vous aurez faim, peu importe combien vous avez obtenu au repas précédent. Si vous ne dormez pas, vous serez fatigué et ne pourrez pas jouer avec vos amis. Compris? Il y a plusieurs choses à faire, mais nous ne pouvons pas les faire en même temps. Nous prenons le petit déjeuner, jouons, prenons le déjeuner, jouons à nouveau, ... et disons enfin "bonne nuit".
C'est aussi la façon dont un ordinateur fonctionne: il joue un peu de la musique, puis passe à l'image que vous dessinez, puis recommence à jouer de la musique. Mais le temps qu'il a fallu pour faire toutes ces choses mille fois n'est qu'un clin d'œil, donc vous ne pouvez pas le voir.
la source
Vous avez un ensemble de 6 tâches que vous devez faire:
Chaque tâche prend 1 heure. Vous avez 2 frères.
la source
Vous avez un joystick / contrôleur de jeu.
Il y a 4 enfants. Chaque enfant joue à tour de rôle chaque niveau pendant que les autres se reposent. Grâce au travail d'équipe, ils atteignent finalement le niveau 255 *.
Pendant que chaque enfant joue, il mange également dans le sac de jetons que seul le joueur actuel est autorisé à manger.
* Ensuite, le jeu se bloque. ;)
"Pourquoi n'achetez-vous pas 3 contrôleurs de plus?"
Eh bien, ce sont de multiples processeurs!
la source
Cours d'art (application multithread)
Puisqu'il ne peut y avoir de classe sans professeur, vous avez besoin d'un professeur (fil conducteur). Lorsque vous arrivez en classe, vous vous asseyez et l'enseignant représente tout le monde et assigne la classe pour peindre des images pour la journée.
L'enseignant assigne tous les élèves de la journée pour commencer la peinture (initialisation et affectation du fil).
Parce que l'école n'a que peu de peintures, tout le monde devra partager ses couleurs (les peintures représentent la mémoire).
Disons que vous peignez un dragon et que vous voulez lui donner des yeux rouges fous, mais quelqu'un d'autre utilise la peinture rouge. Vous ne pouvez pas vous contenter de prendre la peinture par vous-même, car personne d'autre ne pourrait l'utiliser. Au lieu de cela, vous demandez poliment de partager (verrouillage des ressources) la peinture. Vous utilisez un peu, puis passez-le. Vous devrez peut-être attendre un peu pour le récupérer, mais cela permet à tous ceux qui en ont besoin d'en obtenir sans se battre (conditions de course).
À la fin de la classe, l'enseignant rejette la classe (jonction de fil).
Jeux (application multi-processus)
Jouer à un jeu de cartes avec des amis (ou un jeu équivalent avec des objets de collection):
Disons que vous vous réunissez avec vos amis (processus) après l'école. Il n'y a pas d'enseignant dans les parages, personne n'est là pour vous dire quoi faire.
Tout le monde est réuni pour jouer à des jeux (application multi-processus ou multi-couches).
Vous réfléchissez sérieusement à la façon dont vous pouvez utiliser vos cartes pour battre vos adversaires (traitement interne) et vous essayez de partager des idées avec votre partenaire lorsque vous proposez une idée (transmission de messages).
Si vous devenez vraiment bon, vous pouvez rejoindre un club:
Membres dirigeants (programme exécutif) (sous-programmes)
Si le club devient vraiment bon, ils peuvent trouver un moyen spécial (API) de communiquer entre eux pour mieux élaborer des stratégies.
J'ai choisi de ne pas mentionner plusieurs processeurs / cœurs ici parce que l'abstraction devient assez compliquée (et le changement de contexte est toujours transparent pour la plupart des applications). Je pourrais probablement commencer par dire que chaque équipe du jeu représente un processeur / noyau distinct et la plupart des jeux sont toujours nuls car ils ne permettent qu'à quelques équipes de jouer ensemble dans un jeu. L'avenir pourrait ressembler à un MMORPG où de nombreuses personnes peuvent jouer ensemble dans un jeu avec de nombreuses équipes différentes.
Essayer de développer une métaphore des enfants pour un système de traitement distributif sur un ordinateur à plusieurs cœurs ou sur un grand nombre de réseaux hôtes serait assez intéressant à jouer, mais ce n'est pas ce que l'Op a demandé.
Remarque:
Le message qui passe au-dessus est une référence aux nombreuses formes de communication que les programmes utilisent pour se parler. Comme les gens, les applications ont de nombreuses façons de se parler. L'écriture est comme le piping de données sérialisées, parler est comme le réseautage, chuchoter est comme le réseautage via une connexion cryptée, les bases de données sont comme une carte de score (structure finie avec des données bien définies), et utiliser MSMQ est comme taper du code morse en se cognant la tête contre un Surface solide.
La plupart des autres formes de communication au-delà de cela se brouillent trop pour que je puisse les considérer comme indiscernables.
De côté:
Si vous avez déjà joué à un jeu en ligne comme Halo, les personnes qui se joignent à des groupes (ou deviennent des joueurs professionnels) ont généralement un langage abrégé pour passer des appels afin de se diriger mutuellement où se trouvent les joueurs de l'autre équipe et ce qu'ils utilisent. C'est vraiment désagréable si vous ne connaissez pas les appels, mais c'est étonnamment efficace pendant le jeu.
Il est intéressant de voir comment, même si la plupart des gens qui vivent dans une culture donnée parlent une langue commune mais dans cette culture, les gens développent des langues de domaine succinctes plus courtes qui sont optimisées pour gérer des tâches spécifiques. En informatique, je comparerais cela à une API.
la source
Utilisez un modèle largement adopté: les philosophes de la restauration.
5 philosophes mangeant leur dîner de pâtes.
5 fourchettes disponibles autour de la table.
Chaque philosophe a besoin de deux fourchettes pour manger.
Certains mangent. Certains philosophent en attendant.
la source
Supposons que vous (l'enfant) rebondissiez une balle sur votre tête. Après chaque rebond, vous le comptez, c'est-à-dire le nombre de rebonds. Aussi après chaque rebond, vous dites les lettres de l'alphabet (A, B, C, ...)
Kid, tu es multithreading.
la source
Les assiettes tournantes en sont un bon exemple. Pensez à ces magiciens qui prennent des assiettes et les font tourner en même temps. Le magicien bascule constamment entre les assiettes pour s'assurer qu'elles tournent toutes.
la source
Un ordinateur ne peut vraiment fonctionner que sur une seule chose à la fois, mais il peut faire les choses très rapidement. (Je laisse de côté le traitement multicœur pour plus de simplicité.) Et si vous voulez écouter de la musique et jouer à un jeu en même temps? L'ordinateur bascule (très rapidement) entre la gestion de la musique et la gestion du jeu.
la source
Notre aire de jeux locale a un toboggan triple et un toboggan simple. L'enfilage est comme la triple diapositive, 3 enfants peuvent glisser simultanément. Mais sur la diapositive unique, deux enfants doivent attendre en haut que le premier enfant descende la diapositive.
Une partie de la description de poste relevait-elle du directeur financier?
la source
Deux enfants dans une aire de jeux partagent (se disputent) des ressources limitées, disent les pièces de lego requises dans une petite boîte pour fabriquer leurs robots préférés.
la source