Comments 53
Как вариант, можно попытаться сменить протокол с HTTP на что-то с гарантированной доставкой (AMQP и т. д.).
А как, по вашему, гарантированная доставка в AMPQ работает, если не через retry? Звучит так, как будто вы предлагаете спрятать проблему ретраев на нагруженный сервис в черный ящик, и представить что таким образом всё само заработает.
+4
Кажется, статья должна называться «Типовые ошибки на техническом собеседовании в ДомКлик».
Потому что иначе вообще непонятно, о чем речь, при чем тут типовое собеседование и, скажем, GIL (а что это, кстати?).
Потому что иначе вообще непонятно, о чем речь, при чем тут типовое собеседование и, скажем, GIL (а что это, кстати?).
+21
Наверное вы правы. Подумаю как изменить заголовок. Хотя тут скорее на собеседованиях python разработчиков, чем именно в ДоиКлик
0
>Я опишу специфические вопросы для Python, но в целом статья подойдет для любого собеседования.
Вряд ли. Для любого собеседования некоторые вопросы тут вообще не имеют смысла.
Вряд ли. Для любого собеседования некоторые вопросы тут вообще не имеют смысла.
+1
Я опишу специфические вопросы для Python
Отличие процессов от потоков в Linux
И даже если взять остальные вопросы, то например меня на собеседованиях про threading ни разу не спрашивали, асинхронность — да, потоки — нет. GIL — ок. Retry — не совсем питонский вопрос.
0
А ошибка-то в чём? В питоне или ДомКлике?
0
UFO just landed and posted this here
UFO just landed and posted this here
Я прочитал начало и выпал в осадок. Как знание Linux связано с Python? Это вообще из другой области. Читал дальше и падал все ниже. Как AMQP связан с Python? Это про архитектуру в целом, к языку не относится вообще никак. Вы уж определитесь, вам нужен DevOps, System Architect, Linux/System developer или таки пайтон разработчик?
Я очень надеюсь что вы не относитесь к той компании, в которой у разработчика на React спрашивают сколько регистров у 486 CPU
Я очень надеюсь что вы не относитесь к той компании, в которой у разработчика на React спрашивают сколько регистров у 486 CPU
+12
Есть вопросы на конкретный язык, есть вопросы на общие знания. По linux вопросы задаются не каждому кандидату и не у каждой команды, все зависит от позиции и специфики задач.
Что касается amqp, то в проектировании конечных решений участвует вся команда, а не 1 архитектор, поэтому мы и задаем такие вопросы.
Что касается amqp, то в проектировании конечных решений участвует вся команда, а не 1 архитектор, поэтому мы и задаем такие вопросы.
+2
Тогда статью следовало бы назвать как-то вроде «Мы собеседуем людей на весьма специфическую должность, и вот вопросы на которые они не отвечают».
ИМХО системные программисты вам подошли бы намного лучше. Особенности форков и прочего — это же родная для системных C++ разработчиков среда. Ну и плюс AMQP тут как пристройка какая-то сбоку. Пайтон — это высокоуровневый язык, он специально создавался чтобы не думать о том что там творится под капотом на уровне OS. Более того, часто такое знать даже вредно, ибо невозможно знать вообще всё в IT, и избыток непрофильных знаний у кандидатов довольно часто означает недостаток профильных.
ИМХО системные программисты вам подошли бы намного лучше. Особенности форков и прочего — это же родная для системных C++ разработчиков среда. Ну и плюс AMQP тут как пристройка какая-то сбоку. Пайтон — это высокоуровневый язык, он специально создавался чтобы не думать о том что там творится под капотом на уровне OS. Более того, часто такое знать даже вредно, ибо невозможно знать вообще всё в IT, и избыток непрофильных знаний у кандидатов довольно часто означает недостаток профильных.
+1
Пайтон — это высокоуровневый язык, он специально создавался чтобы не думать о том что там творится под капотом на уровне OS
человек, который ограничивает свои знания такими заявлениями ограничивает себя и в профессиональном росте. Плох тот Junior, который не хочет стать Senior. Вы от Senior тоже такого ответа будете ждать?
0
От Senior кого? Senior питониста, или Senior системщика?
0
Senior Python Software Engineer
0
Писать макросы для Excel и оптимизировать SQL-запросы Senior Python Software Engineer тоже должен уметь?
0
Excel не входит в стек используемых технологий разработки ПО, по крайней мере не этого блога. Базы данных входят в стек и поэтому да должен. Если программист пишет SQL — запрос то интересоваться, что выводит explain и как долго исполняется запрос, какие индексы задействованы, его обязанность.
0
В какой такой стек входит SQL у питониста? Который, к примеру, кодит нейросети? Или который на бигдату собеседуется? Или который последние 5 лет работал только с ORM? Питон — это не только веб, уже давно не. То что там у кого-то в блоке\компании требуется, это их частный случай, и я бы очень посоветовал им обновить название вакансии, чтобы люди не тратили на неё время. Я об этом выше и написал.
Вы немного перепутали причинно-следственную связь. Питонист пришел на собеседование и на него там посыпались вопросы по особенностям реализации форков процессов в определенной операционной системе. Это НЕ его профильная область. Он может интересоваться ей, а может и не интересоваться, вместо этого интересуясь разведением хомячков в тундре или новыми фичами в Vue.JS (кстати, 2 последних также удалены от классической сферы питон-разраба, как и первое). Допустим вы его загрузили непрофильными вопросами и он ушел. Да, он может потом загуглить ваши форки в линуксе, но какой от этого толк? Он уже ушел, вы потратили время, он потратил время. Ситуация диаметрально противоположная от win-win
Вы немного перепутали причинно-следственную связь. Питонист пришел на собеседование и на него там посыпались вопросы по особенностям реализации форков процессов в определенной операционной системе. Это НЕ его профильная область. Он может интересоваться ей, а может и не интересоваться, вместо этого интересуясь разведением хомячков в тундре или новыми фичами в Vue.JS (кстати, 2 последних также удалены от классической сферы питон-разраба, как и первое). Допустим вы его загрузили непрофильными вопросами и он ушел. Да, он может потом загуглить ваши форки в линуксе, но какой от этого толк? Он уже ушел, вы потратили время, он потратил время. Ситуация диаметрально противоположная от win-win
0
Пытаюсь вспомнить, как мне пригодились таблицы прерываний Ральфа Брауна, а также функции C-WinAPI, которые я изучал 20 лет назад, при программировании на питоне…
Неужели это сениору так нужно?
Неужели это сениору так нужно?
0
абстрагироваться от темы, наверно вы правы, действительно, как знание принципов работы двигателей внутреннего сгорания, или электродвигателей связано с управлением средствами передвижения, на которых эти двигатели установлены.
Наверно просто время такое.
Наверно просто время такое.
+1
Честно говоря все это похоже на какой то сюр, заходишь почитать про специфику вкатывания в Python а тут с порога: нюансы GIL, кишки Линукса. Точно подходящий инструмент для хайлоада?
+2
Смотря что считать хайлоадом. Большинству проектов хватит с запасом при правильном использовании. А с учетом удобства и скорости разработки, хороший инструмент для многих задач, выключая вполне нагруженные сервисы. Быстрее чем на go или c++ не будет работать.
+1
UFO just landed and posted this here
это очень спорный вопрос. все зависит от того чем вы привыкли пользоваться и задачи которую решаете.
+1
UFO just landed and posted this here
А именно? Чисто из любопытства
+1
UFO just landed and posted this here
ясно, спс, уж лучше сразу яву тогда или c#
+2
UFO just landed and posted this here
Чем она вам не нравится?
0
UFO just landed and posted this here
Даже пришлось перейти на Iphone, потому что был Galaxy Note 10 и с нужными мне приложениями он постоянно перегревался и по сути не работал, беспроводная зарядка вообще не работала, она постоянно отключалась из-за перегрева
Ну 7е ноты вообще самопроизвольно возгорались, их даже запретили проносить на борт самолетов. Думаете дело в Java?
Конечно на regex-redux есть аномалия, но возможно код не очень оптимальный написали
Ничего страшного, ведь считать n-problem или рассчитывать множество мандельброта нужно гораздо чаще чем применять регеэкспы.
потому что во всех других сценариях мы видим что Java медленней
Особенно хорошо это видно в тестах binary-trees, k-nucleotide, fasta.
0
UFO just landed and posted this here
1) так может galaxy note 10 греется из-за неудавной батареи/контроллера и процессора либо кривизны рук Samsung разработчиков/проектировщикова не из-за того используется Java?
2) Как только тесты перешли от написания кода в С стиле(посмотрите свифтовые исходники первых трех с UnsafeMutablePointer) к использованию регеэксп либы то почему то Swift резко ударил лицом в грязь.
3) В fasta разница мизерная зато в binary-trees она пятикратная а в k-nucleotide трехкратная. Их вы предпочли проигнорировать. В чем же возможная причина? Общего между ними — использована пакетная либа платформы Foundation для многопоточности, а в Java аналогичные пакеты.
Итого в сухом остатке — если использовать встроеные в плаформы либы то почему то пропадает куда-то вся дутая производительность.
Это да, есть такая беда у Java — съедать всю доступную память. С другой стороны выбирая между временем выполнения и памятью лучше выбрать время, оно стоит дороже.
PS Прекрасно представляю что из себя представляет Android изнутри и именно поэтому считаю что превзойти iOS по производительности это несбыточная задача.
Apple контролирует абсолютно все этапы работы приложения:
1) они задизайнили процессор на котором он будет работать и остальное железо
2) они целиком создали тулчейн на котором приложение будет собираться и разрабатываться
3) все драйвера и ядро операционной системы написаны ими же.
4) системные библиотеки платформы(рантайм языка приложений) точно так же полностью сделаны Apple
5) жестокий фильтр приложений, в том числе по признаку user experience и производительности.
У Google как «владельца» Android из этого есть контроль только над п4 и отчасти п2.
Железо клепают производители, они же пишут драйвера кто во что горазд. В сторе миллион приложений совершенно разного качества, практически без всякого контроля UX.
Я совершенно уверен что если бы Android использовал swift(go,c++,rust) для написаний приложений а iOS Java, то все равно ситуация была бы точно такой же.
2) Как только тесты перешли от написания кода в С стиле(посмотрите свифтовые исходники первых трех с UnsafeMutablePointer) к использованию регеэксп либы то почему то Swift резко ударил лицом в грязь.
3) В fasta разница мизерная зато в binary-trees она пятикратная а в k-nucleotide трехкратная. Их вы предпочли проигнорировать. В чем же возможная причина? Общего между ними — использована пакетная либа платформы Foundation для многопоточности, а в Java аналогичные пакеты.
Итого в сухом остатке — если использовать встроеные в плаформы либы то почему то пропадает куда-то вся дутая производительность.
памяти Swift'ом съедено заметно меньше
Это да, есть такая беда у Java — съедать всю доступную память. С другой стороны выбирая между временем выполнения и памятью лучше выбрать время, оно стоит дороже.
PS Прекрасно представляю что из себя представляет Android изнутри и именно поэтому считаю что превзойти iOS по производительности это несбыточная задача.
Apple контролирует абсолютно все этапы работы приложения:
1) они задизайнили процессор на котором он будет работать и остальное железо
2) они целиком создали тулчейн на котором приложение будет собираться и разрабатываться
3) все драйвера и ядро операционной системы написаны ими же.
4) системные библиотеки платформы(рантайм языка приложений) точно так же полностью сделаны Apple
5) жестокий фильтр приложений, в том числе по признаку user experience и производительности.
У Google как «владельца» Android из этого есть контроль только над п4 и отчасти п2.
Железо клепают производители, они же пишут драйвера кто во что горазд. В сторе миллион приложений совершенно разного качества, практически без всякого контроля UX.
Я совершенно уверен что если бы Android использовал swift(go,c++,rust) для написаний приложений а iOS Java, то все равно ситуация была бы точно такой же.
+1
За большие приложения на go лучше тогда сразу убивать. За приложения реального времени на php -тоже.
0
Ага ну да конечно, user space они же green треды из коробки(смысл вопроса про разницу kernel thread vs kernel process пропадает), внятная и стандартизированная memory model безо всяких GIL уже 20 лет как, неблокирующий IO из коробки(NIO), netty сервер для хайлоада(уже даже поддержку io_uring запилили), тонны потокобезопасных коллекций и примитивов синхронизации на любой вкус, огромное количество экспертизы размазанной по не менее огромному комьюнити, требования по знанию многопоточности предъявляются к разработчикам начиная еще с джуниор уровня.
Ну да Python прям смотрится на фоне Java явным фаворитом для highload.
Ну да Python прям смотрится на фоне Java явным фаворитом для highload.
+1
На Java написано огромное количество отличного софта, от Cassandra до много чего в экосистеме того же Hadoop. Помимо очевидных минусов, у нее огромное количество плюсов, включая библиотеки на любой вкус, большое количество кандидатов на рынке труда и так далее.
+2
>>Поток— это просто процесс, который использует некоторые ресурсы совместно с другими >>процессами.
Э-э… Это шутка такая, да?
В первую очередь (помимо других ресурсов), процесс обладает набором страниц памяти, он предоставляет «песочницу» для исполнения приложения. А поток — это, в первую очередь, контекст исполнения, предоставляет регистры процессора и стек. Это как-бы общепринятая терминология, в подавляющем большинстве ОС это так, и Linux тут не исключение.
Э-э… Это шутка такая, да?
В первую очередь (помимо других ресурсов), процесс обладает набором страниц памяти, он предоставляет «песочницу» для исполнения приложения. А поток — это, в первую очередь, контекст исполнения, предоставляет регистры процессора и стек. Это как-бы общепринятая терминология, в подавляющем большинстве ОС это так, и Linux тут не исключение.
+4
В ядре Linux потоки реализованы так же, как и обычные процессы. Поток— это просто процесс, который использует некоторые ресурсы совместно с другими процессами.
Речь идет о том, что нет отдельной реализации для потоковв операционной системе. Поведение согласно тому, что вы описываете получить можно, с этим нет никаких проблем
-1
Речь о том что надо быть аккуратным с терминологией. Процесс и поток — это совершенно разные сущности, и предложение «Поток— это просто процесс» от соискателя на собеседовании сразу напрягает и триггерит дополнительные вопросы на понимание конекстов памяти и контекста исполнения.
+5
Ваши представления о Linux устарели 17 лет назад: en.wikipedia.org/wiki/Native_POSIX_Thread_Library
+1
Аж захотелось устроиться в домклик. встретимся через год)
+1
Я правильно понимаю, что знание особенности «подкапотной» реализации потоков питона на Linux важно только, если создаёшь глобальные объекты на сотни мегабайт?
0
Sign up to leave a comment.
Типовые ошибки Python-разработчиков на собеседованиях