Як би ви пояснили багаторічну різьблення семирічній дитині?


21

Якщо вам доводиться пояснювати семирічній дитині концепцію багаторічної нитки, як би ви це зробили? Нещодавно я отримав це питання в інтерв'ю. Я придумав історію, використовуючи роботу (завдання, яке потрібно виконати) та працівників (нитки), але це було не зовсім переконливо (вважаючи, що дитина занадто молода).

Якби вас попросили описати це, як би ви це зробили?


55
Я б запитав інтерв'юера, чи планував він наймати будь-яких 7-річних дітей.
Крейдж

14
Я б вдарив інтерв'ю в обличчя.
Морон

11
Це, мабуть, перевірити, що ви знаєте предмет досить добре, щоб навчити його тому, хто абсолютно не знає цього предмета.
FrustratedWithFormsDesigner

6
@Morons По-перше, це трохи жорстоко. По-друге, ваші слова заміщені великими літерами через якесь особливе значення?
Ніколь

11
@FrustratedWithFormsDesigner Ну, це дурно криваво. Чи можете ви пояснити складні числа тому, хто не вміє рахувати? Ні? Тоді ви сміття в складних номерах.
biziclop

Відповіді:


35

Опишіть, що це таке, просто залиште технічні умови, за винятком визначень:

  1. У вас є п’ять робіт. Потрібно почати працювати над усіма ними прямо зараз.
  2. Кожне завдання - це нитка.
  3. Ви процесор.
  4. Витратьте трохи часу на роботу над кожною роботою, а потім перейдіть до наступної, переконуючись, що приділите увагу всім.
  5. Якщо у вас є більше людей, роботу може працювати лише одна людина за один раз.
  6. Оскільки кожна людина може працювати на іншій роботі, більше людей можуть виконати всю роботу швидше, якщо у вас більше однієї роботи.

15
Я думаю, що єдине, що я додам, - це, можливо, змінити "роботу" на "ігри", грати з іграшками або робити завдання або домашні завдання.
bethlakshmi

Тоді, якщо у вас є "процесор", "зберігайте нотатки", коли вони працюють над роботою, ви можете пояснити кеш-пам'ять і узгодженість кешу в декількох процесорах env
Стівен Еверс

Хороший опис, але знаючи 7-річних, це не пролетить.
red-dirt

@el термоблока Я перебуваю 7 - річний! або atlest я ac lke 1 hahahahahaha
Mateen Ulhaq

@bethlakshmi, ви припускаєте, що в 7 років діти все ще грають в ігри і ще не вийшли і не отримали продуктивної роботи? давай!
Анонімний тип

22

Ей, малюк. Ви коли-небудь ходили і жували жуйку одночасно, думаючи про Покемон? Це ваш мозок мультиварки.


1
Це периферія вашого мозку здатна діяти відносно незалежно. Це (майже) як ваш мозок за допомогою DMA.
Нік Т

@nick T, більше схожий на хмарні обчислення без лише доступу вихідного коду до компонентів. Навіть людина, що жує жуйку, не має уявлення, як вони насправді виконують дію.
Анонімний тип

@Ano, ваше останнє твердження, здається, підкріплює мою периферійну аналогію. Периферійний пристрій виконує завдання, без того, щоб процесор заглиблювався в деталі, просто делегувавши його. Я думаю, ви також можете сказати, що це як хмарні обчислення, але це набагато більше; DMA та периферійні пристрої досить низькі.
Нік Т

справді? Я б міг подумати, що грати в покемон (вирішення проблем вищого порядку) матиме безперечно необхідну пам'ять режиму користувача та використання мови програмування вищого рівня, але, можливо, щось на зразок мастикуляції може бути DMA.
Анонімний тип

10

Зв’яжіть це з чимось, що вони можуть легко зрозуміти. Автомобілі на дорозі.

Подумайте про одну смугу дороги. З 12 автомобілями на ньому вони їздять одна за одною. І тільки одна машина може закінчити одночасно, і більш швидка машина не може проїхати повільніші.

Але, з багатопотоковою резьбою, це все одно, що всі ці машини їдуть по широкій дорозі з чотирма смугами. Швидші машини можуть пройти повз повільніші.

Редагувати: і, якщо вони не обережні, вони можуть врізатися один в одного ...


4
Якщо багатопотокова дорога - це дорога, то це те, коли коли їде одна машина, інша взагалі не рухається - не слідкуючи за нею ...
Ніколь

@ Renesis, хороший момент, я думаю, я міг би змінити приклад на вузький міст, який може перетнути лише одна машина за один раз, тому що дві машини будуть двома важкими ...
CaffGeek

10

Я б пояснив це як прання білизни.

У вас є 3 вантажі білизни, одна пральна машина і одна сушарка.

Прання прання - це переміщення першого вантажу в сушарку, ніж наступне завантаження для прання.

Будь-яка дитина зрозуміє, що чекати, коли перший вантаж висохне, перш ніж почати мити друге завантаження, знадобиться більше часу.

Ви навіть можете зробити це на крок далі, пояснивши, якщо у вас більше шайб і сушарок (як, наприклад, у пральній машині), ви можете виконувати навантаження швидше.


2
Крім того, ви не можете сушити білизну, поки вантаж не пройде через шайбу, тому ви можете також описати блокування
zzzzBov

Я ледь не дав тобі +1, але тоді я зрозумів, що жодна дитина з розумом не піде за цим поясненням. Для початківців ви використовували щось надзвичайно нудне (з точки зору дітей, а не моє), що є справою. Як тільки ви скажете слово прання, їх розум відключається, вони буквально почують лише перші 7 слів.
Анонімний тип

6

Готуємо страву з кількома стравами на невеликій плиті. У вас є два конфорки (тобто процесори або сердечники) і чотири страви (нитки) для приготування. Тож одночасно можна приготувати (запустити) лише максимум дві страви. Різні страви мають різний час приготування. Кухар (ОС) повинен все жонглювати таким чином, щоб все було готове вчасно до обіду.


3

Цирковий жонглер, починаючи з двох куль і поступово додаючи все більше і більше кульок до свого вчинку.


Це найкраща відповідь, оскільки вона відповідає на питання з точки зору 7-річної дитини, а не 30-річного програміста.
Анонімний тип

2

На мій досвід 7-річні діти не мають проблем із поняттям, що різні речі відбуваються одночасно, про що свідчать різні набори програм програмування, призначені для дітей. Зокрема набори Lego, а також система Scratch.

Можливо, інтерв'юер просто намагався знайти новий кут, щоб задати вам щось несподіване.


2

"Мені потрібно, щоб ти носив дві склянки з кухні до столу . (Вони біжать, несучи склянку в кожній руці.) Тепер, будь ласка, зроби це ще раз, але використовуй лише одну руку".


2

Деякі з цих відповідей вражають розумом ... Я думаю, що я, можливо, єдиний тут, хто знає 7-річних ???

Отже, Джонні ... Мультиплетіння схоже на те, що відбувається, коли в школі йде час. Весь ваш клас потребує прибирання після закінчення робочого дня ... Кожна дитина - це в основному нитка ... збирання іграшок - це завдання, а коробка іграшок - це спільний ресурс.

В цілому, я думаю, що вдарити інтерв'ю в обличчя - це краща відповідь.


хто позначив це -1, жартує сам. серйозно виростити почуття гумору. Це смішне питання, до якого слід ставитися з цього приводу.
Анонімний тип

Це, мабуть, одна з найкращих відповідей, почутих досі. Він приймає концепцію і поміщає його в термінах слухач розуміє - навіть якщо слухач не має ні найменшого уявлення про те , як код багатопоточних додатків, вони тепер будуть розуміти основну ідею.
FrustratedWithFormsDesigner

2

Багатопотокові, це як робити багато справ за один раз, і робити їх потроху.

Привіт, молодий цікавий хлопець, кожен день ти повинен їсти, грати і спати; правильно? Але чому б не їсти один раз ... взяти багато, поки ти не можеш більше взяти, а потім спати весь час, а тобі просто грати та грати в цікаві ігри?

Ну, ви не можете цього зробити, тому що якщо не їсте, ви зголоднієте, незалежно від того, скільки ви отримали за попередню їжу. Якщо ви не спите, ви будете втомитися і не можете грати зі своїми друзями. Розуміли? Є кілька речей, які потрібно зробити, але ми не можемо їх зробити відразу. Ми снідаємо, граємо в гру, беремо обід, знову граємо в ігри, ... і нарешті кажемо "доброї ночі".

Це також спосіб роботи на комп’ютері: вони трохи відтворюють музику, потім переходять на малюнок, який ви малюєте, а потім знову переключаєтесь на музику. Але час, який знадобилося зробити всі ці речі тисячу разів, - це просто мигнення очей, тому ви не можете його побачити.


1

У вас є набір із 6 завдань, які ви повинні виконати:

  • роби своє домашнє завдання
  • прибирати свою кімнату
  • робити покупки
  • збирайте яблука в саду
  • мити посуд
  • підмітати ганок

На кожне завдання потрібно 1 годину. У вас є 2 брати.

  • Якщо ви не використовуєте багатозадачність, це означає, що ви повинні виконати всю роботу самостійно. Це займе у вас 6 годин (якщо ви почнете о 12:00, усі завдання будуть виконані о 18:00).
  • Якщо ви використовуєте багатозадачність, це означає, що ви можете дати деякі завдання своїм братам. Якщо ви почнете працювати одночасно, всі завдання закінчите раніше. У цьому випадку всі 3 з вас виконають по 2 завдання кожне, що займе 2 години (якщо ви почнете о 12:00, усі завдання будуть виконані о 14:00!).

0

У вас є один джойстик / контролер гри.

Є 4 дітки. Кожна дитина по черзі грає на кожному рівні, а інші відпочивають. Використовуючи командну роботу, вони з часом досягають рівня 255 *.

Поки кожен малюк грає, він також їсть з мішка чіпсів, з якого може їсти тільки поточний гравець.

* Потім гра виходить з ладу. ;)


"Чому ти не купиш ще 3 контролери?"

Ну, це кілька процесорів!


0

Арт-клас (багатопотокова програма)

Оскільки без вчителя не може бути класу, то вам потрібен вчитель (основна тема). Коли потрапляєш до класу, ти сідаєш, а вчитель відповідає за всіх і призначає класу малювати картини на день.

Учитель призначає всім учням на день розпочати малювання (ініціалізація нитки та призначення).

Оскільки в школі є лише стільки фарб, всі повинні будуть ділитися кольорами один з одним (фарби представляють пам'ять).

Скажімо, ви малюєте дракона і хочете подарувати йому божевільні червоні очі, але хтось інший використовує червону фарбу. Ви не можете просто перейти і взяти фарбу для себе, оскільки тоді ніхто інший не міг би її використовувати. Натомість те, що ви робите, - ви ввічливо просите поділитися фарбою (блокування ресурсів). Ви трохи використовуєте, а потім передаєте його. Можливо, вам доведеться трохи почекати, щоб повернути його, але це дозволяє кожному, хто потребує цього, отримати без боротьби з фарбою (умови гонки).

В кінці уроку вчитель відхиляє клас (приєднання до теми).


Ігри (багатопроцесорний додаток)

Гра в карткові ігри з друзями (або еквівалентна гра з предметами колекціонування):

Скажімо, ви збираєтеся зі своїми друзями (процесами) після школи. Навколо немає вчителів, нікого немає, щоб сказати, що робити.

Всі збираються разом, щоб грати в ігри (багатопроцесорний або багатошаровий додаток).

Ви дуже замислюєтесь над тим, як можна використовувати свої картки для перемоги над опонентами (внутрішня обробка), і ви намагаєтеся ділитися ідеями з партнером, коли ви придумуєте ідею (передача повідомлення).

Якщо ви дійсно хороші, можете приєднатися до клубу:

Керівник (виконавча програма) Члени (підпрограми)

Якщо клуб стає дійсно хорошим, вони можуть придумати спеціальний спосіб (API) спілкуватися один з одним, щоб допомогти краще стратегізувати стратегію.


Я вирішив не згадувати тут декілька процесорів / ядер, оскільки абстракція стає досить складною (а комутація контексту все ще прозора для більшості програм). Я, мабуть, міг би почати з того, що кожна команда в грі представляє окремий процесор / ядро, і більшість ігор все ще висмоктуються, оскільки вони дозволяють лише кільком командам грати разом у грі. Майбутнє може виглядати щось більше, як MMORPG, де багато людей можуть грати разом у грі на багатьох різних командах.

Спроба розробити у дітей метафору для системи розподільної обробки на багатьох основних комп'ютерах або багатьох хост-мережах буде дуже цікаво грати, але це не те, про що Op просили.


Примітка:

Повідомлення, що передаються вище, - це посилання на безліч форм спілкування, які програми використовують для розмови один з одним. Як і люди, у додатків є багато способів спілкування один з одним. Писання - це так, як Piping серіалізовані дані, розмова - це як мережа, шепіт - це як мережа через зашифроване з'єднання, бази даних - це як карта рахунків (кінцева структура з чітко визначеними даними), а використання MSMQ - це як натискання коду morse шляхом збивання голови тверда поверхня.

Більшість інших форм спілкування поза цим розмиттям занадто багато для мене, щоб вважати їх невідрізними.

Убік:

Якщо ви коли-небудь грали в таку онлайн-гру, як Halo, люди, які приєднуються до груп (або стають професійними гравцями), зазвичай мають скорочену мову, щоб телефонувати на виклики, щоб направляти один одного, де гравці іншої команди та що вони використовують. Це дуже неприємно, якщо ви не знаєте викликів, але це дивно ефективно під час гри.

Цікаво, як, хоча більшість людей, які живуть у межах даної культури, говорять загальною мовою, але всередині цієї культури люди розробляють коротші лаконічні доменні мови, оптимізовані для вирішення конкретних завдань. При обчисленні я порівняв би це з API.


-1

Скористайтеся широко прийнятою моделлю: філософи їдальні.

5 Філософи їли вечерю з макаронами.

5 Вилки, доступні навколо столу.

Кожному філософу потрібно їсти дві виделки.

Деякі їдять. Деякі філософствують під час очікування.


2
Філосфери їдять двома виделками? Людина, вони навіть чужіші, ніж я думав! : P Ця історія має більше сенсу з паличками замість виделок ...
FrustratedWithFormsDesigner

4
@ Розчаровані, саме тому їм потрібно так багато думати.

Я не думаю, що заміна паличок на виделки працює добре. :)
Тяньна

4
Мені подобається аналогія паличок. Вам обов’язково потрібно їсти дві палички для їжі. Вам не потрібні два виделки. Справа з вилами насправді плутає проблему. Тим більше, що розгортання є ключовим терміном у багатопроцесорній роботі.
Пол Сасик

.. а потім ваш застряг пояснюючи, що таке філософ. І справді вони запитають, для чого їм потрібні два виделки (що ніби немов з точки зору 7yo) і чому з того, хто б чекав до їжі!
Анонімний тип

-1

Припустимо, ти (дитина) підстрибуєш кулю на голову. Після кожного відскоку ви рахуєте його, тобто кількість відмов. Також після кожного відмов ви вимовляєте букви з алфавіту (A, B, C, ...)

Малюк, ти багатопоточний.


-1

Спінінг-плити - хороший приклад. Подумайте про тих чарівників, які беруть якісь тарілки і змушують їх одночасно крутитися. Маг постійно перемикається між пластинами, щоб переконатися, що всі вони крутяться.


-2

Комп’ютер дійсно може працювати лише над однією справою, але це може робити дуже швидко. (Я залишаю багатоядерну обробку для простоти.) Але що робити, якщо ви хочете слухати музику і грати в гру одночасно? Комп'ютер (дуже швидко) перемикається між обробкою музики та керуванням грою.


"Але чому це не робиться обом одночасно?"
Mateen Ulhaq

-2

У нашому місцевому майданчику є потрійний слайд та одна гірка. Нитки схожі на потрійний слайд, 3 дитини можуть ковзати вниз одночасно. Але на одиночному слайді двоє дітей повинні чекати вгорі, коли перший малюк зійде на слайд.

Чи було частиною опису вакансій звітування перед фінансовим директором?


-3

Двоє дітей на ігровому майданчику діляться обмеженими ресурсами, кажуть необхідні шматочки лего з маленької скриньки, щоб зробити своїх улюблених роботів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.