Порридж В Ко-ливинге
Порридж В Ко-ливинге
@vitkarpov вот когда идешь на джуна в Яндекс, на скрининге гоняют по Языку, а в ФААНГе гоняют по языку вообще? Ну мидлов, про стажеров вы наверное не знаете
Порридж В Ко-ливинге
Ответы интересеные. Щас про асинхронность читаю, модет что еще интересное есть https://qna.habr.com/user/bingo347
Vladimir
Только сопромат, только хардкор.
Пригодится при расчете стропильной системы своего дома) Если не поручишь проектантам) Или для проверки проектантов)))
Vladimir
Ответы интересеные. Щас про асинхронность читаю, модет что еще интересное есть https://qna.habr.com/user/bingo347
не очень согласен про то, что асинхронная программа почти всегда многопоточная. Он может быть, но не обязана. Особенно если надо нечто подобное реализовать на процессоре с одним ядром. Или, например, на микроконтроллере. =) Я добавлю к его ответу, что такая модель асинхронных вычислений, какая применяется в современных языках называется кооперативная многозадачность против вытесняющей через привычные потоки.
Порридж В Ко-ливинге
Что? Не понимаю комментария
Звучит сложно, но интересно
Andrey
Ну вот взять, например, js. Он однопоточный, но асинхронный. В питоне тоже asyncio в одном потоке работает.
Vladimir
Evgeniy
В js имею в виду
Lynn «Кофеман»
Совсем. Только вручную запускать новые потоки. Ну или какая-нибудь внешняя (по отношению к языку) автоматизация, вплоть до какого-нибудь автоподъёма новых инстасов приложения.
Andrey
Новые не создаются совсем? При нагрузке
Про js не могу сказать, но думаю, что нет. В питоне точно не создаются, с нагрузками должен разбираться разработчик. Но если нагрузка на CPU высокая, новые потоки не помогут, помогут только процессы.
Lynn «Кофеман»
Ну да, но в браузере очевидно тоже никаких новых потоков никто не создаёт. Да и в других движках тоже.
Lynn «Кофеман»
Впрочем, а в каком *языке* потоки вдруг сами создаются?
Viktor
@vitkarpov вот когда идешь на джуна в Яндекс, на скрининге гоняют по Языку, а в ФААНГе гоняют по языку вообще? Ну мидлов, про стажеров вы наверное не знаете
Хороший вопрос. Раньше на скайпе были вопросы такие, что можно сказать «по языку», но сейчас такого нет. Все выясняется когда решаешь задачи, то есть интервьюеру ничего не мешает сделать шаг в сторону и спросить пока пишешь код.
Evgeniy
Впрочем, а в каком *языке* потоки вдруг сами создаются?
Корректнее было сказать не языке, а рантайме, да. В шарпе есть пул потоков, потоки оттуда задействуются по необходимости
Andrey
Т.е. для задействования всех ядер процессора потребуется несколько прроцессов питона, верно я понимаю? 🤔
Да, всё так. Обычно для тяжелых задач создают по процессу на ядро. Ну или x2 процессов, если они еще в IO упираются, например.
Lynn «Кофеман»
А кто определяет необходимость?
Viktor
Ааа, ну летом 2019 спрашивали в Яндексе
Интересно. И как это выглядит? На скайпе?
Andrey
Корректнее было сказать не языке, а рантайме, да. В шарпе есть пул потоков, потоки оттуда задействуются по необходимости
Пулы потоков можно и в питоне сделать, но так как это не потоки ОС, выполняться они всё равно будут под GIL и на одном ядре. Типичная задача для этого - скачать список ссылок. Все потоки будут висеть в ожидании сети, поэтому им нормально и на одном ядре. Хотя сейчас это лучше делать через asyncio, и вообще не думать про треды.
Vladimir
Да, всё так. Обычно для тяжелых задач создают по процессу на ядро. Ну или x2 процессов, если они еще в IO упираются, например.
тяжелые задачи на вычисления даже лучше выделить в отложенную очередь для вычислений, организовать конвеер по обработке запросов и передачи результатов. Да много подходов может быть.
Порридж В Ко-ливинге
Интересно. И как это выглядит? На скайпе?
Да, тупо: Сколько типов? Что такое замыкание? Что вернет этот код
Порридж В Ко-ливинге
Ну там куча этих вопросов, если кому надо, могу вспомнить большинство
Vladimir
Пулы потоков можно и в питоне сделать, но так как это не потоки ОС, выполняться они всё равно будут под GIL и на одном ядре. Типичная задача для этого - скачать список ссылок. Все потоки будут висеть в ожидании сети, поэтому им нормально и на одном ядре. Хотя сейчас это лучше делать через asyncio, и вообще не думать про треды.
Почему же это не потоки ОС? =) GIL нужен только для того, чтобы в отдельно взятый момент времени невозможно было получить доступ к разделяемым данным из другого потока. Поэтому интерпретатор блокирует остальные. При использовании процессов получаем по версии интерпретатора на процесс со своим GIL. Кстати, сейчас на подходе субинтепретаторы.
Evgeniy
А кто определяет необходимость?
Рантайм. Например, если есть множество асинхронных вызовов, то если запустить профилировщик, то можно увидеть, как обработка переключается между разными потоками, рандомно. Заранее заготовленными в пуле (четыре, если не ошибаюсь).
Vladimir
А кто определяет необходимость?
Поток и процесс - это понятие ОС. В ОС есть планировщик, который следит за использованием ресурсов процессоров. Это называется вытесняющая многозадачность. В современном мире сильно набирает популярность кооперативная многозадачность, когда переключение между выполнением участков кода управляется средствами языка.( Ну, понятно, что в итоге мы спустимся к epoll, kpoll) Вспоминая питон - средствами curio, asyncio, gevent, например.
Andrey
тяжелые задачи на вычисления даже лучше выделить в отложенную очередь для вычислений, организовать конвеер по обработке запросов и передачи результатов. Да много подходов может быть.
Отложенная очередь - это если кто-то ответа прямо сейчас ждет. А если нужно просто большой набор данных обработать, то, например, курсор БД уже может быть этой самой очередью в каком-то смысле.
Viktor
Да, тупо: Сколько типов? Что такое замыкание? Что вернет этот код
Любопытно. Я думал, что такого уже нет, но по-разному бывает.
Порридж В Ко-ливинге
Любопытно. Я думал, что такого уже нет, но по-разному бывает.
Ну вот у меня уже не спрашивали в 2020, но это может повезло
Andrey
Наверно это разные типы задач. Если надо вытащить много данных и если надо провести аналитический подсчет, например.
Впрочем, я сказал, что не всегда нужно, а сам тем временем использую multiprocessing.Queue для общения между мастером и воркерами :) А потом еще и воркеры пишут в другую такую же очередь, откуда еще один процесс дампит результаты
Ilia
я уже подумал что сегодняшняя задача легкая, оказалось что нет на больших вычислениях 😄
Ilia
а оказалось что я условия прочитал неверно. ну как всегда же ))
Evgeniy
я уже подумал что сегодняшняя задача легкая, оказалось что нет на больших вычислениях 😄
У меня сначала были мысли про ДП и таблицы с сочетаниями для всех комбинаций (вес человека 1, вес человека 2), но после просмотра Related Topics всё оказалось гораздо проще.
Evgeniy
То, что в лодку всего два человека влезает, всё упрощает.
Ilia
То, что в лодку всего два человека влезает, всё упрощает.
А я как раз Решил вариантом что сколько угодно могут влезать, и только потом увидел про двух ))
Evgeniy
А я как раз Решил вариантом что сколько угодно могут влезать, и только потом увидел про двух ))
Лишний раз отметка в голове "надо всегда внимательно читать условие")
Ilia
Сначала по тупому через жадный аллгоритм, потом хотел уже оптимизировать через набор максимально близких значений к лимиту, но к счастью увидел условие про двух человек ))
Evgeniy
Ясно)
Evgeniy
https://leetcode.com/problems/divide-two-integers/ Впечатляет количество тестов у этой задачи : 10 / 989 test cases passed.
Viktor
Типа нет фронтендеров, есть инженеры, которые занимаются фронтендом. А завтра могут отправить писать бекенд.
Zahar
Sad but true 😊
А алгоритмические задачки на собесе в Амазоне на каком ты языке решал?
Viktor
В Амазоне, кстати, одна секция была а-ля про фронтенд. С ноутом даже.
Viktor
Но один хрен мы там больше базарили, чем код писали.
Viktor
То есть на позицию фронтендера по фронтенду не спрашивают?) только алгоритмы?
В Яндексе, кстати, я что-то забыл есть ли отдельная секция или нет.
Viktor
Это очень грустно 😥
ну, типа все фулстеки. у нас тут джавист из 90-х, с 30 летним опытом сидит на тайпскрипте бодро пишет.
Viktor
ничего, нормально.
Viktor
а я прошёл собес на джаваскрипте и отправился писать на котлине. тоже ничего — нормально.
Viktor
Это очень грустно 😥
А вот в Топтале, кстати, классные были собеседования именно фронтендерские.
Viktor
Вроде как бы и алгоритмы, но задачки из мира фронтенда.
Viktor
Это очень грустно 😥
А почему это грустно, кстати, на твой взгляд?
Zahar
а я прошёл собес на джаваскрипте и отправился писать на котлине. тоже ничего — нормально.
То есть если ты хочешь прям фронтендом заниматься, то ФААНГ — это не твой вариант?
Viktor
То есть если ты хочешь прям фронтендом заниматься, то ФААНГ — это не твой вариант?
надо понимать, что фаанг очень большой. везде, даже в рамках одной компании, всё по-разному может быть. политика такая, что ты сам должен выбрать свою зону ответственности. если хочешь заниматься фронтендом, конечно, ты им и будешь заниматься.
Viktor
но не так, что когда надо что-нибудь на бекенде написать или aws настроить ты пошёл ставить задачи на «настоящих программистов»
Viktor
это не ок
Zahar
А почему это грустно, кстати, на твой взгляд?
Ну, я люблю интерфейсы, работать с доступностью, перфомансом, верстать и делать динамику Мне интересна вся веб-инфраструктура (точнее даже фронтенд), а бэкенд/мобильная разработка не так привлекает Хотя у меня 1.5 года опыта и может через пару лет мысли будут совершенно другими
Viktor
@zavsievich делал отдельный тредик с подробностями именно про сам процесс собеседований — https://twitter.com/vitkarpov/status/1343988746836996097 , если не видел вдруг, может интересно будет
Ilia
кайфово было верстать на реакт нейтиве ))
Ilia
Ты имеешь в виду, что мне вообще никакие продукты не подходят?)
потому что как и сказал Виктор, ты точно не можешь знать какую команду тебе подберут и чем ты будешь заниматься )
Ilia
в продуктовых командах с явной направленностью еще есть шанс попасть на такую вакасию, в стартапах врядли, там идет срезание углов жесткое, хоть и не всегда
Viktor
потому что как и сказал Виктор, ты точно не можешь знать какую команду тебе подберут и чем ты будешь заниматься )
на самом деле, эта история тоже меняется со временем. потому что в том же Фейсбуке есть буткемп, например, где ты по сути выбираешь команду себе.
Andrey
потому что как и сказал Виктор, ты точно не можешь знать какую команду тебе подберут и чем ты будешь заниматься )
А разве не ты сам команду выбираешь? В Авито, например, в общем случае ты сам выбираешь из доступных позиций в разных юнитах, и туда уже интервьюируешься. И только если что-то пошло не так (например, позиция закрылась), тебе предложал выбрать другой юнит. То есть не будет такой ситуации, что тебе подберут команду, в которой ты не хочешь оказаться.