40

Что стоит знать junior developer'y (python)

UPD: #comment_211858676

здесь есть более свежая и развернутая дока, следует использовать ее
https://docs.google.com/document/d/1Yl2WAqG5zmivO1LDP1N7Iu3x...

______________________________________

Я тут в комментах предложил написать список того, что следует знать джуну-питонисту, ходя на собеседования. Получилось обширно, решил сделать пост. Сам я пишу под django, но его в этом посте не затрагиваю.

@nataha123 это тебе)


Данные собраны по посещению примерно 13 собеседований (включая по удаленке) в Питере за 2 последних года. (искал работу трижды, последний раз 3 недели назад)

Собственно, сам список:

1) Для начала типы данных - как использовать, как хранятся, что делает функция id, изменяемые-не изменяемые. Надо понимать почему не стоит использовать конструкцию вида def foo(bar=[])


2) Потом декораторы. Их любят вообще все. Советую не просто почитать что это, а написать парочку, а потом написать декоратор который еще и аргументы принимает)


3) Что такое итераторы и генераторы, чем отличаются и как задать и тот и другой


4) Знать что делают методы класса типа __call__, __srt__, __init__, __next__ и т.д.

Почитать про то, какие есть базовые декораторы (property, staticmethod..)


Дальше общие вопросы, не связанные с питоном.

5) Следует знать про асимптотику функций, уметь расчитывать сложность. Почитать про популярные алгоритмы сортировки, особенно про то, что есть базово в питоне)


4) Почитать про популярные способы хранения информации и как (и за сколько) в них совершается поиск


5) Любят спрашивать про SQL, особенно про индексы. Мне с SQL помогли разобраться задачки на составление запросов, гугл выдает много сайтов, найти что-нить для себя не трудно


6) Про ООП следует понимать как работает механизм наследования классов, знать что такое mixin и как это применить. Про инкапсуляцию/наследование/полиморфизм меня спрашивали только 1 раз, но знать будет не лишним)



Вроде ничего не забыл)


Несколько раз мне встречалась задачки про взвешивания (Что то типа даны весы с 2 чашами и 8 монеток. Одна из них фальшивая и легче. За сколько взвешеваний можно найти монетку?)

Еще было пару раз задание накодить следующее: дана строка, содержащая скобки (), {} и []. Необходимо определить валидна ли эта строка (т.е. (а+{в-с}) валидна, а {а×(в+с}) нет.)


И еще мне нравится задачка: человек находится в поезде, замкнутым по кругу. Все окна заколочены, никаких меток ставить нельзя, паттерны тоже использовать запрещено - количество вагонов конечно, но вполне может стремиться к бесконечности) Можно только включать или выключать свет. Изначально в каждом вагоне рандомное состояние света. Задача - посчитать сколько всего вагонов)