Pull to refresh

Comments 57

Без лишней скоромности можно сказать, что ваш обзор шикарен по своей полноте

Spoiler header
Хотя конечно найдутся недовольные
Спасибо за хорошие слова! Рад, что Вам понравилось.
Отличная статья, спасибо.
Не думал, что можно так красиво и просто объяснить достаточно сложные вещи. Читается на одном дыхании (честное слово)!

Один в один слова моей супруги после прочтения данной книги, её восторгу не было предела, пришлось тоже прочесть и… нисколько не пожалел. Кстати книга не слишком объемная, прочел за пару вечеров.

Многие переходят с php на phyton. Как вам помог бэкграунд php? Понятно что бд, http одно и то же по сути

Думаю, мне найбольше помог опыт работы с Delphi (я на нём написал свою первую платформу по документообороту), а уж потом php (поскольку для него изучил 90% все основных шаблонов программирования). Для меня любознательность + интерес к своему делу — основные мотиваторы (наряду или после ЗП).
Мне также помог знакомый, который показал все прелести работы на питоне=)

Ну, вопросы это хорошо, но только не по огромному кол-ву теории по языку, лучше дать задачу по типу Knight's Dial, ведь большая часть вопросов выше не дает гарантии на то, что вы сумеете решать задачи, а не собирать решение из коструктора лего. Дали бы ДО по Декартачам, что-нибудь аккуратно закодить — и уже ясно, что такой человек нуден компании, а вот человек который не имеет представление о всем этом, а только собирает из лего — бесполезен.

Личный опыт или просто предположение?
1. У меня была цель не обучить других языку, а помочь при подготовке к собеседованиям.
2. Я с Вами полностью согласен! Мне тоже непонятно зачем искать «швейцарский нож» для 2-3 задач. Разве что в долгосрочной перспективе такого сотрудника можно кидать на разные проекты.
3. Из моей практики чаще полезно знать теорию и понимать, как оно работает под капотом. Это все зависит от Вашых обязаностей и проблем на проекте.
На какую зп в мск можно рассчитывать зная всё это?
К сожалению, это вопрос больше к рекрутеру, Вам и той фирме, куда Вы хотите попасть.
Какая разница между аутентификацией и авторизацией? Честно говоря, я сразу задал риторический вопрос: «а почему Вы упустили ещё идентификацию?». Этим я аккуратно пытался дать понять собеседнику, что осведомлён в этих вопросах.

Кричал
Почему? Все должны знать разницу между идентификацией, аутентификацией и авторизацией — ничего необычного вроде нет, это базовые вещи.
Упустили там не идентификацию а accounting and auditing, по крайней мере так выходит из контекста. Буду благодарен если кто-то мне расскажет что такое идентификация и ее отличии от аутентификации. И как все это соотносится например с этим:
tools.ietf.org/html/rfc2904

Так или иначе, спасибо за статью!
Нет, из контекста следует только идентификация, аутентификация и авторизация — это стадии логина в любую систему, откуда вдруг взялся «accounting and auditing»?
Три стадии логина в любую систему это Authentication, Authorization and Accounting; если есть общепринятый стандарт, который описывает стадии логина в любую систему как
идентификация, аутентификация и авторизация
— буду признателен за ссылку.
Вот цытата с Википедии
Аутентификацию не следует путать с авторизацией (процедурой предоставления субъекту определённых прав) и идентификацией (процедурой распознавания субъекта по его идентификатору).

Статья, которую Вы указали, за 2000 год. Мне кажеться, что с того времени некоторые понятия обрели новые имена и переводы.

За ссылку спасибо. Век живи — век учись!
Дело в том, что между аутентификацией и идентификацией более тонкая грань, нежели между аутентификацией и авторизацией.
П.С. Этот вопрос был вырван из контекста вопросов по безопасности. Некоторые из них я тут упустил. Поэтому со стороны могло показаться некоторое задротство.
Спасибо за тёплые слова! Рад, что Вам понравилось!

Хоть уже и не работаю с Питоном, но прочитал с удовольствием. Хорошая подборка, спасибо. Несколько лет назад я тоже собирал вопросы на собеседования по Питону. Вот что получилось.

У Вас много терпения!
Такой детальный мануал получился! Кратко, внятно обо всём самом нужном.

Отличная статья, я хоть и не пишу на пайтоне, но прочитал с удовольствием, и еще с большим удовольствим подтянул теоретическую часть. Спасибо.

В одно время я хотел написать что-то подобное, но, во-первых, таких статей очень много, а во-вторых, опираясь на свой пред. опыт могу уверенно сказать, что РНР не сравниться с питоном (даже не смотря на замечательные фреймворки типа Laravel и последний Zend). Хотя в седьмой версии и внесли много полезных правок, лично в моих глазах он не дотягивает до питона.
могу уверенно сказать, что РНР не сравниться с питоном

Не сравниться в чем?
Первым делом в глаза кинулась елегантность и простота языка Python. Более-менее чёткая и понятная стандартизация во многих вещах.

Конечно, после использования некоторых шаблонов из GoF или из J2EE на РНР у меня был некий шок, ведь public/private/protected в чистом виде в питоне отсутствуют.
Но благо, есть бенчмарки, где можно сравнить скорость работы, расход памяти и пр. для разных языков. В конечном итоге мой выбор пал на питон.

П.С. Не хочу холиварить. Сам достаточно долго проработал на РНР и до сих пор считаю, что на нём можно реализовать 80-90% того. что нужно для веба. Остальное — через обходные пути.
НО усилия, которые нужны для написания кода на РНР и аналогичного на питоне очень разные.
Первым делом в глаза кинулась елегантность и простота языка Python.

Т.е. примитивность?

Более-менее чёткая и понятная стандартизация во многих вещах.

В каких, только опять же конкретно.

Но благо, есть бенчмарки, где можно сравнить скорость работы, расход памяти и пр. для разных языков.

Да, питон медленнее PHP в зависимости от задач в среднем в 3-10 раз.

Сам достаточно долго проработал на РНР и до сих пор считаю, что на нём можно реализовать 80-90% того. что нужно для веба.

На PHP можно реализовать 100% того, что нужно для веба ибо это его не основное, а единственное назначение. Это первый и пока что единственный язык для веба созданный.

НО усилия, которые нужны для написания кода на РНР и аналогичного на питоне очень разные.

Справедливости ради стоит отметить, что питон сам по себе с вебом вообще работать не умеет, правда ведь? Или вы сейчас на полном серьезе сравнили какой-нибудь django/flask с vanilla PHP?

П.С. Я не холиварю, просто немножко в недоумении с ваших оценок.

Знание теории не отменяет необходимости наличиеэя острого ума и умения решать практические задачи. Бывает такое, что человек на хорошо знает все эти алгоритмы и умеет определять сложность, но простые задачи на подумать и в уме просто построить алгоритм решения этой самой простой задачи уже не может.

100%! Без практики вся теория — в топку!
Спасибо, поправил очипатку=)
Интересная и очень познавательная статья. С удовольствием прочитал. Сколько у вас ушло примерно времени на изучение самого языка Phyton?
PS. У вас опечатка:
про цикл событий в JavaScriptю
Спасибо, поправил.
П.С. Очень много правок было=)

Сам синтаксис язика очень приятный и учиться за пару недель.
На практику у меня ушло около полугода. Теорию подтянул за 2-3 месяца. Благо, мой бэкграунд это позволил мне сделать с найменьшими усилиями. Также интересно и полезно было сравнивать уже известные язики с питоном.
UFO just landed and posted this here
Вот бы про Java что-то подобное почитать и изучить.
Если доберусь к ней — озвучу;)
pramp.com вот тут можно попрактиковаться проходить собеседования, если 4то
Спасибо за подсказку! Уже добавил в статью=)

Честно говоря, секция по Python могла бы быть и лучше. Вопросов мало, и многие из них носят поверхностный характер.


В частности вопросы про PEP8, инструменты для проверки codestyle вообще практически никогда не задаются, потому что никак не отражают знание кандидатом питона и умение решать конкретные задачи.


Что такое list/dict comprehension?

Почему опущен set comprehension? Почему бы не рассказать про generator expressions? Как себя ведут такие выражения в 2 и 3 версии (скоуп наружу у list comprehension)?


Как работает хэш-таблица (словарь)? Что такое коллизии и как с ними бороться?

Почему бы не рассказать тогда и про то, как устроены list и tuple? Близость set к dict по внутреннему устройству?


Кроме типичных (dict, list, set, tuple) обязательно прочитайте про frozen_set, default_dict, ordered_dict...

Почему именно про них, а не рассказать про иерархию типов начиная с синглтонов и примитивов? Как устроены строки, почему отсутствует char и что, например, bool это подтипint? И, кстати, пишутся указанные вами структуры данных как frozenset, defaultdict и OrderedDict, без андерскоров.




Ну и первая фраза тоже смущает


Первый вопрос на большинстве собеседований: "Что такое SOLID?"

Первый вопрос на собеседовании зависит от многих факторов — профиль работы компании, позиция, бекграунд ваш и вашего собеседника, внутренних правил и стиля внутри команды итд.


Конкретно SOLID спрашивают в тех командах, где сильна парадигма настоящего ООП (а не простых вещей типа наследования, миксинов и абстрактных классов). В особенности в тех, где используются инверсия контроля/инъекция зависимостей/инверсия зависимостей/IoC-контейнеры.


Тем не менее, немало компаний не спрашивают SOLID вовсе, и предпочитают сосредоточиться на внутренностях питона или на решении задач.

Спасибо за комментарий!

1. Вы удивитесь, но вопрос касательно стиля и пайчекера был задан мне на двух разных собеседованиях.
2. Я полностью с Вами согласен, что всё зависит, от интервьювера, компании и конкретного проекта. Но я их не задавал и не выдумывал. Написал то, что сам слышал.

3.
Почему бы не рассказать про generator expressions?
Почему именно про frozen_set, default_dict, ordered_dict, а не рассказать про иерархию типов начиная с синглтонов и примитивов

Хорошая идея. Позже добавлю.

4.
Тем не менее, немало компаний не спрашивают SOLID вовсе, и предпочитают сосредоточиться на внутренностях питона или на решении задач.

Возможно, в Вашем случае так и есть, но у меня было наоборот. Я заметил, более важно не компания, а то, кто тебе попался на собеседовании. В одном из интервью меня собеседовал парень, который работал несколько лет в Google. Он спрашивал про более практичные вещи.

5.
Честно говоря, секция по Python могла бы быть и лучше. Вопросов мало, и многие из них носят поверхностный характер.

Я заметил, что это зависит от уровня знаний собеседника. Никто не будет спрашывать, какая разница между версиями MRO или работу garbage collector не зная ответа. Возможно, мне попадались собеседники, которым было интересно именно то, что я описал в статье.
Как вы сами написали — ЗП по мотивации стоит не на последнем месте. И если абстрагироваться от конкретных цифр (их можно на hh посмотреть), то все-равно возникает вопрос — что часто квалификация и ЗП не связаны. Я знаю примеры очень дорогих и успешных компаний, где web-разработка базируется на php и уровень разработчиков невысокий, но ЗП там будут по рынку, а может быть и выше.
Возникает некоторый диссонанс, что можно зарабатывать прилично (может даже больше) лабая на php и не зная большинства перечисленных вами вещей. И следовательно, работая в таких компаниях и получая хорошую ЗП, врядли получится сильно повысить квалификацию.
Лично я стремлюсь к новым знаниям, постоянно изучаю, но все-равно чувствую, что до идеала еще далеко, даже если оставаться в рамках web-разработки на Python.

Какого ваше мнение по данному вопросу, как вы выбирали работодателей, везде ли был высокий уровень и как вы это определяли?
1. К сожалению, сам неоднократно стыкался с несоответствием оплаты — знаниям. Как по мне, тут несколько факторов: как ты себя оцениваешь, за сколько готов себя продать, сколько стоит проект и сколько фирма готова тебе отстегнуть. После общения с соотв. ребятами просто стал понимать, что рынок диктует условия. Лично я видел проекты, где мидлу (по знаниям) платили как синьйору (по ЗП). Раз даже видел и наоборот.

2. Вы очень хорошо описали причины, по которым я перешёл с Делфи а позже и РНР на питон и двигался дальше. Я тоже стремлюсь к новым знаниям. П.С. Я даже поэтому теперь чуть сместился с веб-разработки на питоне — в БигДату.

3. А вот к подбору работодателей я подходил очень аккуратно. Для себя сложил матрицу, где выписал главные для меня параметры, а потом ставил очки после прохождения собеседования. Также у каждого параметра был свой вес (приоритет для меня). По итоговой оценке я выбирал.
Среди главных параметров были такие (по убыванию приоритетов):
— технологии используемые на проекте
— состав комманды
— ЗП
— среднее время добирания
— моя оценка уровня собеседования
— размер фирмы
и несколько других

Для меня главное работать в хорошей комманде, у кого есть чему-то новому поучиться, перспективные технологии и пр., а уже потом ЗП (ней я могу пожертвовать)
Как работает Serializer в django?

Всё-таки в самой джанго нет сериализаторов. Они есть в библиотеке Django REST Framework
Спасибо! Забыл уточнить. Уже поправил.
Не удивлюсь, если читатели потом сами будут проводить собеседования, опираясь на ваш материал. Получится автофокусировка внимания интервьюеров и респондентов на перечисленных вопросах.
Не вижу ничего плохого в этом. Сейчас «автофокусировка» на 10-ке не слишком нужных (или практичных) вопросах. Пускай их будет побольше=) В любом случае многое зависит от собеседников и их опыта.
Вы же сами понимаете, что такие обзоры только поднимают планку в требованиях к знаниям и опыту для обоих собеседников.
П.С. Описанные выше вопросы применимы в основном к уровням синьйор (макс. тим лид) и ниже. Для более высоких уровней они будут другими.
Поскольку статья понравилась, прочитал рекомендуемую книгу Грокаем Алгоритмы.

При осознании смысловой составляющей волосы зашевелились. Огромное количество ошибок как в повествовании, так и в приведенных алгоритмах, о которых рассказывает автор. С 6 главы (там где графы) автор явно начинает плавать в теории, и к 8 главе полностью перестает понимать, о чем это, собственно, он пишет. Второе переиздание не исправило положение.
Почитал первоисточник, вижу, что перевод великолепен, насчитал всего несколько ошибок перевода. Переводчик Е.Матвеев здорово поработал, но спасти эту книгу от провала только хорошим переводом — невозможно. На хабре есть отзывы про первое русское издание этой книги.

pawlissimo спасибо за сборник, только мне кажется, восторженная рекомендация подобной литературы не играет тебе на руку.
Спасибо за отзыв!
Вы правы, в книге есть опечатки (у меня в планах написать автору письмо). Я в восторге от того, каким образом автору удалось (как на мой взгляд) обьяснить суть работы некоторых алгоритмов и дать общее представление о них и о реализации. Согласен — последние главы ни о чём, НО цель ведь была немного в другом. Обьяснить нематематику алгоритмы, про которые ему на лекциях сказали по пару предложений, не очень простая задача. Конечно, для работы с алгоритмами нужно читать совсем другие книги. Да и цель моего обзора немного другая.
Уже написал. Он очень переживает в комментариях на Амазоне, а на его собственном сайте adit.io оставить комментарий нельзя, только письмо. В errata.html он извиняется за ошибки, но там исправлены только базовые погрешности (типа 0.7 вместо 0.07 на 94 странице). Сами алгоритмы лежат на GIT неисправленными.
Цели каждой главы приведены в начале каждой главы книги, я наивно полагал, что именно эти цели планировалось достичь. :(
На гит-репозиторий не смотрел, поскольку все алгоритмы набирал вручную. Да и не вижу смысла копировать такие кусочки кода. Касательно тех, что были в книге, кажется. я только 3 очипатки нашёл. Возможно, мне (как математику, который учил фундамент и доказательства всех изложенных алгоритмов) всё показалось не таким страшным?
В любом случае, он попытался изложыть доступным язиком=) Надеюсь, желающие помочь исправят его ошибки.
Плюсануть хабр уже не позволяет (сроки истекли), поэтому просто напишу здесь респект автору за сие обширное руководство. :)

Предпочитаю избегать паттерна синглтон, но раз вы упомянули его — расскажите, пожалуйста, а какие реально проблемы синглтона через декоратор для тестирования? И почему самое лучшее — через метакласс, а не тупо глобальная переменная в экзепмляром в модуле?

Sign up to leave a comment.

Articles

Change theme settings