Раз уж зашел разговор про дизайн и архитектурные интервью, а это мои любимые, скажу пару слов. Я за много лет провел более 500 интервью с FAANG кандидатми и не только, разной степени опытности. Может кому будет интересно узнать, что думают интервьюеры. Дисклеймер, я не знаю российской специфики.
Любопытство - хорошее качество. Используя пример из поста: "зачем нам эти загруженные файлы и что мы хоти с ними делать?" и здравый смысл в помощь. Помните о времени, мы про интервью говорим, а не про PRD/ERD/RFC. Спрашивать можно много, а дизайн сам себя не нарисует. Я люблю схемы, сразу видно что-к-чему. Иногда сразу отзыв на кандидата написать времени нет, поэтому я фотографировал доску, чтобы ничего не забыть. Хорошо планируйте место на доске. Опытные инженеры схем рисовали много, поэтому это тоже сигнал.
Расслабьтесь и получайте удовольствие. Дизайн/архитектура - интервью креативное. При хорошем вопросе и вменяемых людях по обе стороны стола можно отлично провести время. Собственно, поэтому я предпочитал эти интервью, скажем, коду. Бывают сильные кандидаты, у которых и новое узнаешь из их области. Например, одного ютьюбовца я попросил спроектировать YouTube.
Совсем здорово, если сможете интервью превратить в jam двух инженеров. Тогда ещё и экстра бонус в cultural fit получите. Но тут по обстоятельствам. Может у интервьюера помойка горит, а тут вы такой красивый. Так что soft skills вам в помощь. Я боролся за кандидатов, с которыми мне хотелось бы работать, но интервьюер интервьюеру рознь.
Будьте честными. Если вы чего-нибудь не знаете - так и скажите. Я часто задавал вопрос «работали ли вы с Х», чтобы понять, в какую сторону вести интервью. Скажете, что знаете - уйдем глубже, и может стать грустно. Понять, что практического опыта нет, очень просто. А его отсутствие не обязательно и проблема. Были редкие случаи, когда молодежь что-то выдумывала с серьезным лицом. Они ушли домой раньше времени. Инженерные часы дороги, оставшиеся интервью мы отменили.
Drive the interview. Вы же специалист? Покажите, что умеете. Это ваши 45 минут славы. Нет ничего тоскливее клещами вытягивать ответы из кандидата.
Интервью - это игра, и у нее есть правила. Вы нам продаете себя, мы вам продаем opportunity. Вы очень хотите именно к нам, мы очень хотим именно вас. Идеально, если и то и то - искренная правда. Но если вам лично не звонил наш CTO, то за дверью еще десятки, а то и тысячи в очереди. Да и у вас, опытного профессионала, наверняка несколько предложений на руках.
И да, "A players hire A players; B players hire C players" - чистая правда.
Мало вероятно — значит случится через неделю, а не завтра. Да и обычно Redis он на отдельных машинах крутится. Лучше медленнее, зато весь сервер не потеряется.
Я советую выкинуть доки от twisted, а не сам twisted. Для начинающих там все очень долго и путано. Разобраться и начать работать с tornado гораздо быстрее. Впрочем это мой опыт и я на нем не настаиваю.
Asyncio выглядит интересно и я думаю попробовать переписать что-нибудь под него, чтобы составить собственное мнение. Но вобщем с asyncio есть три большие проблемы:
Python 3.4. Все сидят на 2.6-2.7 и переходить на 3.x не собираются. Печально, но факт. Twisted/Tornado работают в 2.6-2.7
Переводить продакшн код с Twisted/Tornado на Asyncio тоже особо незачем.
Для asyncio пока мало библиотек. Надеюсь скоро это изменится.
Так что asyncio пока только для новых проектов и смелых/отчаянных команд. Хотя есть надежда что asyncio поможет сдвинуть переход на 3.x с мертвой точки.
Как по мне, так asyncio, twisted и tornado, одно и тоже с разницей в API и деталях, когда как треды и greenlets уже совсем другой принцип.
Выкиньте доки по twisted в окно, imho с торнадо проще и быстрее разобраться. А принципы примерно одинаковые. Про asyncio пока не скажу, но принципиально все тоже самое.
Что собственно вы хотите делать с корутинами? Фактически это теже колбэки, только выглядящие как синхронный код.
@ gen.coroutine
def foo(self):
html = yield async_fetch(«example.com»)
print «got html:», html
где async_fetch, загружает страницу и вызывет self.process которому передает загруженны html код.
Это все грубо говоря и размахивая руками, есть еще много тонкостей: foo теперь future которую тоже нужно ждать (yield), async_fetch должен быть генератором, exceptions надо ловить итд.
Да, и важно понимать что такое генераторы и как они работают. На stack overflow был знаменитый пост где все объяснено.
Потому что все старые сервера в лучшем случае с python 2.6. Там уже много всего работает на питоне, обновлять и тестировать нет ни времени ни желания. Даже параллельно держать несколько питонов без тестирования опасно.
Контентом за моим авторством они пользуются а я их услугами пользоваться не могу не отдав номер телефона.
К тому же они постоянно шлют email оповещения, настройки который я тоже уже не могу поменять. Что там закон говорит про спам?
если это какая-то бюрократическая/гос контора у которой свои стандарты, например университет, и они не могут вам десять собеседований устраивать, то прийдется писать более детальное описание — CV. например ~80% тех 70 страниц было перечисление докладов, публикаций, конференций, наград итд.
Раз уж зашел разговор про дизайн и архитектурные интервью, а это мои любимые, скажу пару слов. Я за много лет провел более 500 интервью с FAANG кандидатми и не только, разной степени опытности. Может кому будет интересно узнать, что думают интервьюеры. Дисклеймер, я не знаю российской специфики.
Любопытство - хорошее качество. Используя пример из поста: "зачем нам эти загруженные файлы и что мы хоти с ними делать?" и здравый смысл в помощь. Помните о времени, мы про интервью говорим, а не про PRD/ERD/RFC. Спрашивать можно много, а дизайн сам себя не нарисует. Я люблю схемы, сразу видно что-к-чему. Иногда сразу отзыв на кандидата написать времени нет, поэтому я фотографировал доску, чтобы ничего не забыть. Хорошо планируйте место на доске. Опытные инженеры схем рисовали много, поэтому это тоже сигнал.
Расслабьтесь и получайте удовольствие. Дизайн/архитектура - интервью креативное. При хорошем вопросе и вменяемых людях по обе стороны стола можно отлично провести время. Собственно, поэтому я предпочитал эти интервью, скажем, коду. Бывают сильные кандидаты, у которых и новое узнаешь из их области. Например, одного ютьюбовца я попросил спроектировать YouTube.
Совсем здорово, если сможете интервью превратить в jam двух инженеров. Тогда ещё и экстра бонус в cultural fit получите. Но тут по обстоятельствам. Может у интервьюера помойка горит, а тут вы такой красивый. Так что soft skills вам в помощь. Я боролся за кандидатов, с которыми мне хотелось бы работать, но интервьюер интервьюеру рознь.
Будьте честными. Если вы чего-нибудь не знаете - так и скажите. Я часто задавал вопрос «работали ли вы с Х», чтобы понять, в какую сторону вести интервью. Скажете, что знаете - уйдем глубже, и может стать грустно. Понять, что практического опыта нет, очень просто. А его отсутствие не обязательно и проблема. Были редкие случаи, когда молодежь что-то выдумывала с серьезным лицом. Они ушли домой раньше времени. Инженерные часы дороги, оставшиеся интервью мы отменили.
Drive the interview. Вы же специалист? Покажите, что умеете. Это ваши 45 минут славы. Нет ничего тоскливее клещами вытягивать ответы из кандидата.
Интервью - это игра, и у нее есть правила. Вы нам продаете себя, мы вам продаем opportunity. Вы очень хотите именно к нам, мы очень хотим именно вас. Идеально, если и то и то - искренная правда. Но если вам лично не звонил наш CTO, то за дверью еще десятки, а то и тысячи в очереди. Да и у вас, опытного профессионала, наверняка несколько предложений на руках.
И да, "A players hire A players; B players hire C players" - чистая правда.
Рекламный пост?
https://ru.wikipedia.org/wiki/%D0%AF%D0%BC%D0%B0%D0%B9%D1%81%D0%BA%D0%B0%D1%8F_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0
Asyncio выглядит интересно и я думаю попробовать переписать что-нибудь под него, чтобы составить собственное мнение. Но вобщем с asyncio есть три большие проблемы:
Так что asyncio пока только для новых проектов и смелых/отчаянных команд. Хотя есть надежда что asyncio поможет сдвинуть переход на 3.x с мертвой точки.
Как по мне, так asyncio, twisted и tornado, одно и тоже с разницей в API и деталях, когда как треды и greenlets уже совсем другой принцип.
Что собственно вы хотите делать с корутинами? Фактически это теже колбэки, только выглядящие как синхронный код.
def process(self, html):
print «got html:», html
def foo(self):
async_fetch(«example.com», callback=self.process)
вместо этого пишем
@ gen.coroutine
def foo(self):
html = yield async_fetch(«example.com»)
print «got html:», html
где async_fetch, загружает страницу и вызывет self.process которому передает загруженны html код.
Это все грубо говоря и размахивая руками, есть еще много тонкостей: foo теперь future которую тоже нужно ждать (yield), async_fetch должен быть генератором, exceptions надо ловить итд.
Да, и важно понимать что такое генераторы и как они работают. На stack overflow был знаменитый пост где все объяснено.
Как сам процесс происходит, какие проблемы возникают.
А вот если там еще =< 2.5 так вобще печаль.
К тому же они постоянно шлют email оповещения, настройки который я тоже уже не могу поменять. Что там закон говорит про спам?
если не проблема, как вариант — яндекс фотки. бесплатно, без ограничения, но очень медленный аплоад.