Jeśli musisz wyjaśnić siedmioletniemu dziecku koncepcję wielowątkowości, jak byś to zrobił? Niedawno dostałem to pytanie w wywiadzie. Wymyśliłem historię, w której wykorzystałem prace (zadanie do wykonania) i pracowników (wątki), ale nie było to całkowicie przekonujące (biorąc pod uwagę, że dziecko jest zbyt młode).
Gdybyś został poproszony o opisanie tego, jak byś to zrobił?
interview
teaching
multithreading
Vinoth Kumar
źródło
źródło
Odpowiedzi:
Opisz, co to jest, po prostu pomiń terminy techniczne, z wyjątkiem definicji:
źródło
Cześć dzieciaku. Czy kiedykolwiek chodziłeś i żułeś gumę jednocześnie myśląc o Pokemonach? To twój wielowątkowy mózg.
źródło
Odwołaj to do czegoś, co mogą łatwo zrozumieć. Samochody na drodze.
Pomyśl o drodze jednopasmowej. Mając 12 samochodów, jeżdżą jeden po drugim. I tylko jeden samochód może ukończyć w tym samym czasie, a szybszy samochód nie może wyprzedzić wolniejszych.
Ale dzięki wielowątkowości wszystkie samochody jeżdżą szeroką drogą z czterema pasami ruchu. Szybsze samochody mogą minąć te wolniejsze.
Edycja: a jeśli nie będą ostrożni, mogą się ze sobą zderzyć ...
źródło
Wyjaśniłbym to jak pranie.
Masz 3 wsady prania, jedną pralkę i jedną suszarkę.
Wszyscy robią pranie, wkładając pierwszy ładunek do suszarki, a nie wkładając następny ładunek do prania.
Każde dziecko zrozumie, że oczekiwanie na wyschnięcie pierwszego wsadu przed rozpoczęciem prania drugiego wsadu zajęłoby więcej czasu.
Możesz nawet pójść o krok dalej, wyjaśniając, że jeśli masz więcej pralek i suszarek (np. W pralni samoobsługowej), możesz ładować szybciej.
źródło
Gotowanie posiłku z kilkoma potrawami na małym piecu. Masz dwa palniki (tj. Procesory lub rdzenie) i cztery naczynia (wątki) do gotowania. Jednorazowo można ugotować (uruchomić) tylko dwa dania. Różne potrawy mają różne czasy gotowania. Kucharz (OS) musi to wszystko pogodzić, aby wszystko ugotowało się na kolację.
źródło
Żongler cyrkowy rozpoczynający się od dwóch piłek i stopniowo dodający coraz więcej piłek do swojego aktu.
źródło
Z mojego doświadczenia wynika, że 7-latkowie nie mają problemów z koncepcją różnych rzeczy dziejących się w tym samym czasie, o czym świadczą różne zestawy narzędzi programistycznych przeznaczone dla dzieci. W szczególności zestawy Lego, ale także system Scratch.
Być może osoba przeprowadzająca wywiad próbowała po prostu znaleźć nowy punkt widzenia, pytając cię o coś nieoczekiwanego.
źródło
„Potrzebuję, abyś przyniósł dwie szklanki z kuchni do stołu . (Biegną, trzymając szklankę w każdej ręce.) Teraz zrób to jeszcze raz, ale używaj tylko jednej ręki.”
źródło
Niektóre z tych odpowiedzi są oszałamiające ... Myślę, że mogę być jedyną osobą, która zna 7-latków ???
Ogólnie myślę, że uderzenie ankietera w twarz to lepsza odpowiedź.
źródło
Wielowątkowy, to tak, jakbyś miał wiele rzeczy do zrobienia na raz i robił je stopniowo.
Hej, młody ciekawy facet, każdego dnia musisz jeść, bawić się i spać; dobrze? Ale dlaczego nie zjesz raz ... weź dużo, dopóki nie będziesz mógł wziąć więcej, a potem śpij tyle czasu, ile potrzebujesz, a potem po prostu grać i grać w ciekawe gry?
Cóż, nie możesz tego zrobić, ponieważ jeśli nie jesz, będziesz głodny, bez względu na to, ile dostałeś w poprzednim posiłku. Jeśli nie śpisz, będziesz zmęczony i nie będziesz mógł bawić się z przyjaciółmi. Zrozumiany? Jest kilka rzeczy, które należy zrobić, ale nie możemy tego zrobić od razu. Jemy śniadanie, gramy w gry, jemy lunch, znów gramy w gry ... i wreszcie mówimy „dobranoc”.
Tak działa również komputer: trochę odtwarzają muzykę, następnie przełączają się na rysowany obraz, a następnie przełączają się ponownie, aby odtwarzać muzykę. Ale czas potrzebny na zrobienie tych wszystkich rzeczy tysiąc razy to tylko mrugnięcie okiem, więc nie możesz tego zobaczyć.
źródło
Masz zestaw 6 zadań do wykonania:
Każde zadanie zajmuje 1 godzinę. Masz 2 braci.
źródło
Masz jeden joystick / kontroler gier.
Jest 4 dzieci. Każde dziecko gra kolejno na każdym poziomie, podczas gdy inne odpoczywają. Dzięki pracy zespołowej ostatecznie osiągają poziom 255 *.
Podczas gdy każde dziecko bawi się, je również z worka frytek, z którego może jeść tylko obecny gracz.
* Następnie gra się zawiesza. ;)
„Dlaczego nie kupisz jeszcze 3 kontrolerów?”
To są różne procesory!
źródło
Klasa artystyczna (aplikacja wielowątkowa)
Ponieważ nie ma klasy bez nauczyciela, potrzebujesz nauczyciela (główny wątek). Po przejściu do klasy siadasz, a nauczyciel rozlicza się ze wszystkimi i przydziela klasę do malowania obrazów na dany dzień.
Nauczyciel przydziela wszystkich uczniów na dzień, aby rozpocząć malowanie (inicjowanie wątku i przypisanie).
Ponieważ szkoła ma tylko tyle farb, wszyscy będą musieli dzielić się ze sobą kolorami (farby reprezentują pamięć).
Powiedzmy, że malujesz smoka i chcesz nadać mu zwariowane czerwone oczy, ale ktoś inny używa czerwonej farby. Nie możesz po prostu podejść i wziąć farby dla siebie, bo wtedy nikt inny nie byłby w stanie jej użyć. Zamiast tego grzecznie poprosisz o udostępnienie (zablokowanie zasobów) farby. Używasz trochę, a następnie przekazujesz. Być może będziesz musiał trochę poczekać, aby go odzyskać, ale pozwala wszystkim, którzy go potrzebują, zdobyć trochę bez walki o farbę (warunki wyścigu).
Na koniec klasy nauczyciel zwalnia klasę (łączenie wątków).
Gry (aplikacja wieloprocesowa)
Granie w grę karcianą z przyjaciółmi (lub równoważna gra z przedmiotami kolekcjonerskimi):
Powiedzmy, że spotykasz się ze znajomymi (procesami) po szkole. W pobliżu nie ma nauczycieli, nikt nie powiedziałby ci, co masz robić.
Wszyscy spotykają się, aby grać w gry (aplikacja wieloprocesowa lub wielowarstwowa).
Zastanawiasz się, jak wykorzystać swoje karty do pokonania przeciwników (przetwarzanie wewnętrzne) i próbujesz dzielić się pomysłami ze swoim partnerem, gdy wpadniesz na pomysł (przekazanie wiadomości).
Jeśli poczujesz się naprawdę dobrze, możesz dołączyć do klubu:
Lider (program wykonawczy) Członkowie (podprogramy)
Jeśli klub stanie się naprawdę dobry, może wymyślić specjalny sposób (API) do komunikowania się ze sobą w celu lepszej strategii.
Zdecydowałem się nie wspominać o wielu procesorach / rdzeniach, ponieważ abstrakcja staje się dość skomplikowana (a przełączanie kontekstu jest nadal przezroczyste dla większości aplikacji). Mógłbym zacząć od stwierdzenia, że każda drużyna w grze reprezentuje osobny procesor / rdzeń, a większość gier wciąż jest do bani, ponieważ pozwalają na grę tylko kilku drużynom. Przyszłość może wyglądać bardziej jak MMORPG, w którym wiele osób może grać razem w grze w wielu różnych zespołach.
Próba opracowania dziecięcej metafory dla systemu przetwarzania rozproszonego na wielu komputerach lub wielu sieciach hostów byłaby całkiem interesująca do zabawy, ale nie o to prosiła operacja.
Uwaga:
Przekazywanie wiadomości powyżej odnosi się do wielu form komunikacji używanych przez programy do komunikowania się ze sobą. Podobnie jak ludzie, aplikacje mają wiele sposobów komunikowania się ze sobą. Pisanie jest jak przesyłanie serializowanych danych, mówienie jest jak praca w sieci, szeptanie jest jak praca w sieci za pomocą szyfrowanego połączenia, bazy danych są jak karta wyników (skończona struktura z dobrze zdefiniowanymi danymi), a używanie MSMQ jest jak stukanie w kod Morse'a poprzez walenie głową w twarda powierzchnia.
Większość innych form komunikacji poza tym rozmazuje się zbyt mocno, abym uważał je za nierozróżnialne.
Na bok:
Jeśli kiedykolwiek grałeś w grę online, taką jak Halo, ludzie, którzy dołączają do grup (lub stają się zawodowymi graczami), zwykle mają skrócony język, aby wydawać połączenia, aby kierować się nawzajem tam, gdzie są gracze drugiej drużyny i czego używają. To naprawdę okropne, jeśli nie znasz połączeń, ale jest zaskakująco skuteczne podczas gry.
Ciekawe, jak pomimo tego, że większość ludzi żyjących w danej kulturze mówi wspólnym językiem, ale w tej kulturze ludzie rozwijają krótsze, zwięzłe języki domenowe, zoptymalizowane do obsługi określonych zadań. W informatyce porównałbym to do API.
źródło
Użyj powszechnie przyjętego modelu: filozofów kulinarnych.
5 filozofów jedzących obiad z makaronem.
5 widelców dostępnych wokół stołu.
Każdy filozof potrzebuje dwóch widelców do jedzenia.
Niektórzy jedzą. Niektórzy filozofują podczas oczekiwania.
źródło
Załóżmy, że podskakujesz piłkę na głowie. Po każdym odbiciu liczysz to, tj. Liczbę odrzuceń. Również po każdym odbiciu wymawiasz litery z alfabetu (A, B, C, ...)
Dzieciaku, jesteś wielowątkowy.
źródło
Dobrym przykładem są wirujące talerze. Pomyśl o tych magikach, którzy biorą talerze i obracają je jednocześnie. Mag nieustannie przełącza się między płytami, aby upewnić się, że wszystkie się obracają.
źródło
Komputer naprawdę może działać tylko na jedną rzecz na raz, ale może działać bardzo szybko. (Dla uproszczenia pomijam przetwarzanie wielordzeniowe). Ale co, jeśli chcesz słuchać muzyki i jednocześnie grać w grę? Komputer (bardzo szybko) przełącza się między obsługą muzyki a obsługą gry.
źródło
Nasz lokalny plac zabaw ma potrójną zjeżdżalnię i jedną zjeżdżalnię. Nawlekanie jest jak potrójna zjeżdżalnia, 3 dzieci mogą zjechać jednocześnie. Ale na jednym slajdzie dwoje dzieci musi czekać na górze, aby pierwsze dziecko zjechało po zjeździe.
Czy część opisu stanowiska podlegała CFO?
źródło
Dwoje dzieci na placu zabaw dzieli (walczy) ograniczone zasoby, powiedz wymagane klocki Lego z małego pudełka, aby stworzyć swoje ulubione roboty.
źródło