Здравствуйте, e.thrash, Вы писали:
ET>Какие вопросы могут показать примерный уровень по данным направлениям в на должность senior .Net developer?
"Какими способами можно запустить другой поток в дотнете". Пока еще ни один индусик не ответил, хотя если судить по резюме, то все тимлиды, ну или на худой конец сеньоры с 10+ годами опыта в дотнете.
Здравствуйте, e.thrash, Вы писали:
ET>Какие вопросы могут показать примерный уровень по данным направлениям в на должность senior .Net developer?
Если действительно senior, то не надо долбать вопросами чем отличается ThreadStartDelegate от ParametrizedThreadStartDelegate.
Спроси вообще про средства асинхронности и многопоточности. Если останется на уровне Thread.Start и ThreadPool, то низачот. Должен знать про Task Parallel Library, SynchronizationContext, Dispatcher, BackgroundWorker. Если расскажет про Rx и async, то будет плюсом.
Также должен ориентировать в паттернах асинхронных вызовов, вроде APM (BeginXXX\EndXXX) и EAP (XXXAsync\XXXCompleted\Cancel).
Что касается WCF, то для уровня Senior, кроме стандартных байндингов и контрактов надо спрашивать про MessageContracts, коллбеки, сессии, инстансы, режимы многопоточности, webhttpbinding, REST (odata).
Здравствуйте, gandjustas, Вы писали:
G>Спроси вообще про средства асинхронности и многопоточности. Если останется на уровне Thread.Start и ThreadPool, то низачот. Должен знать про Task Parallel Library, SynchronizationContext, Dispatcher, BackgroundWorker.
По поводу последнего, имхо, вы зря. Может человек только сервер-сайд и писал, откуда он может знать про классы, специфичные для клиентского кода?
Здравствуйте, e.thrash, Вы писали:
ET>Какие вопросы могут показать примерный уровень по данным направлениям в на должность senior .Net developer?
Попроси написать простую producer/consumer queue с гарантированым порядком исполнения или любой другой пример с нужной последовательностью обработки потоков. Если напишет плавно перейди к возможным дедлокам в этом коде. Это так для затравки.
Здравствуйте, e.thrash, Вы писали:
ET>Какие вопросы могут показать примерный уровень по данным направлениям в на должность senior .Net developer?
Спроси какие проблемы были и как решались. А то вопросами про инновационные TPL и байндинги найдёшь новичка с хорошей памятью, проштудировавшего очередную книжку.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, gandjustas, Вы писали:
G>>Спроси вообще про средства асинхронности и многопоточности. Если останется на уровне Thread.Start и ThreadPool, то низачот. Должен знать про Task Parallel Library, SynchronizationContext, Dispatcher, BackgroundWorker.
L>По поводу последнего, имхо, вы зря. Может человек только сервер-сайд и писал, откуда он может знать про классы, специфичные для клиентского кода?
Не важно где и что он писал, важно что будет писать.
A>Попроси написать простую producer/consumer queue с гарантированым порядком исполнения или любой другой пример с нужной последовательностью обработки потоков. Если напишет плавно перейди к возможным дедлокам в этом коде. Это так для затравки.
Здравствуйте, e.thrash, Вы писали:
ET>Какие вопросы могут показать примерный уровень по данным направлениям в на должность senior .Net developer?
для синьора нужен solid background и правильный ход мыслей
ниже очень примерный список тем для самопроверки
-базовые сведения об объектах синхронизации критикал секшны, семафоры, барьеры, спин вэйты\локи, SWMR
-базовые сведения о типичных багах — дедлоки, контеншн, гонки
-multitaskinig preemptive\non preemptive, scheduling
-модели памяти, лок-фри
-базовые представления о различных подходах — императивный vs функциональный, task based paralelism, асинхронная обработка, параллелизм в декларативных моделях (plinq, partitioning, SQL)
-базовые сведения об апааратной реализации, ассоциативность и когерентность кэшэй, латентность l1\l2\l3\ram, hyper threading, numa
Здравствуйте, gandjustas, Вы писали:
L>>По поводу последнего, имхо, вы зря. Может человек только сервер-сайд и писал, откуда он может знать про классы, специфичные для клиентского кода?
G>Не важно где и что он писал, важно что будет писать.
Взаимодействие с UI — имхо далеко не самый большой челленж в написании многопоточных приложений.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, gandjustas, Вы писали:
L>>>По поводу последнего, имхо, вы зря. Может человек только сервер-сайд и писал, откуда он может знать про классы, специфичные для клиентского кода?
G>>Не важно где и что он писал, важно что будет писать.
L>Взаимодействие с UI — имхо далеко не самый большой челленж в написании многопоточных приложений.
Здравствуйте, gandjustas, Вы писали:
L>>Взаимодействие с UI — имхо далеко не самый большой челленж в написании многопоточных приложений.
G>Да ну? G>Вот такое без TPL\Rx\F# легко сделать?
Как из этого следует необходимость знания "SynchronizationContext, Dispatcher, BackgroundWorker"?
Здравствуйте, rm822, Вы писали:
R>Здравствуйте, e.thrash, Вы писали:
ET>>Какие вопросы могут показать примерный уровень по данным направлениям в на должность senior .Net developer?
R>для синьора нужен solid background и правильный ход мыслей R>ниже очень примерный список тем для самопроверки
R>-базовые сведения об объектах синхронизации критикал секшны, семафоры, барьеры, спин вэйты\локи, SWMR R>-базовые сведения о типичных багах — дедлоки, контеншн, гонки R>-multitaskinig preemptive\non preemptive, scheduling R>-модели памяти, лок-фри R>-базовые представления о различных подходах — императивный vs функциональный, task based paralelism, асинхронная обработка, параллелизм в декларативных моделях (plinq, partitioning, SQL) R>-базовые сведения об апааратной реализации, ассоциативность и когерентность кэшэй, латентность l1\l2\l3\ram, hyper threading, numa
Указание WCF в заголовке коворит больше об io-bound, чем о compute-bound.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, gandjustas, Вы писали:
L>>>Взаимодействие с UI — имхо далеко не самый большой челленж в написании многопоточных приложений.
G>>Да ну? G>>Вот такое без TPL\Rx\F# легко сделать?
L>Как из этого следует необходимость знания "SynchronizationContext, Dispatcher, BackgroundWorker"?
Так что челендж примерно одинаковый, а понимать какие механизмы используются — необходимо для senior.
Здравствуйте, gandjustas, Вы писали:
G>>>Да ну? G>>>Вот такое без TPL\Rx\F# легко сделать?
L>>Как из этого следует необходимость знания "SynchronizationContext, Dispatcher, BackgroundWorker"?
G>
G>Так что челендж примерно одинаковый,
Если челендж с и без — одинаковый, то кузнец, очевидно, не нужен.
G>
G>а понимать какие механизмы используются — необходимо для senior.
Здравствуйте, rm822, Вы писали:
R>-базовые сведения об объектах синхронизации критикал секшны, семафоры, барьеры, спин вэйты\локи, SWMR R>-базовые сведения о типичных багах — дедлоки, контеншн, гонки R>-multitaskinig preemptive\non preemptive, scheduling R>-модели памяти, лок-фри R>-базовые представления о различных подходах — императивный vs функциональный, task based paralelism, асинхронная обработка, параллелизм в декларативных моделях (plinq, partitioning, SQL) R>-базовые сведения об апааратной реализации, ассоциативность и когерентность кэшэй, латентность l1\l2\l3\ram, hyper threading, numa
О! Супер!!
R>-базовые сведения об объектах синхронизации критикал секшны, семафоры, барьеры, спин вэйты\локи, SWMR R>-базовые сведения о типичных багах — дедлоки, контеншн, гонки R>-multitaskinig preemptive\non preemptive, scheduling R>-модели памяти, лок-фри R>-базовые представления о различных подходах — императивный vs функциональный, task based paralelism, асинхронная обработка, параллелизм в декларативных моделях (plinq, partitioning, SQL) R>-базовые сведения об апааратной реализации, ассоциативность и когерентность кэшэй, латентность l1\l2\l3\ram, hyper threading, numa
Правда я всегда думал что l3 это и есть ram, но возможно за три года без embedded отстал...
R>>-базовые сведения об объектах синхронизации критикал секшны, семафоры, барьеры, спин вэйты\локи, SWMR R>>-базовые сведения о типичных багах — дедлоки, контеншн, гонки R>>-multitaskinig preemptive\non preemptive, scheduling R>>-модели памяти, лок-фри R>>-базовые представления о различных подходах — императивный vs функциональный, task based paralelism, асинхронная обработка, параллелизм в декларативных моделях (plinq, partitioning, SQL) R>>-базовые сведения об апааратной реализации, ассоциативность и когерентность кэшэй, латентность l1\l2\l3\ram, hyper threading, numa
O>"Какими способами можно запустить другой поток в дотнете". Пока еще ни один индусик не ответил, хотя если судить по резюме, то все тимлиды, ну или на худой конец сеньоры с 10+ годами опыта в дотнете.
Технически это System.Threading.Thread класс который сведется к CreateThread(). Все остальное — надстройки. Если же ты имеешь в виду как задействовать другой поток в своем приложении, то на ум сразу приходит выше-упомянутый класс, BackgroundWorker и асинхронные делегаты, которые, в свою очередь, задействуют thread pool. Возможно есть еще что-то в более поздних версиях .NET-a что на ум не приходит, но пофиг.
А теперь, будь добр, скажи что ты ожидаешь услышать на этот вопрос и какие именно способы ты сам задействовал в своем коде? Если ты вообще пишешь код.
Внимание! Этого человека слушать не надо. Это профессиональный читатель но никак не программист. Хинт: смотрим сертификаты данного товарища которые он разрекламировал в своей подписи. Складывается впечатление что данный товарищ решил сдать все тесты которые есть у Майкрософта.