среда, 18 апреля 2012 г.

По мотивам собеседований

Итак, перед тем как пойти на собеседование ответь про себя на следующие вопросы:

1. Python

Какие бывают типы данных в Python?
Чем отличается list от tuple?
Что такое immutable объекты? Какие Вы знаете? В чем особенность?
Что такое dict? Что может являться ключом? Что не может являться ключом? Каким образом нужно изменить класс что бы он смог быть ключом?

Что такое декораторы?
В какой момент вызывается декоратор?
Может ли декоратор НЕ возвращать декорируемую им функцию?
Можно ли декорировать класс?
Может ли класс быть декоратором?

Что такое новые классы? чем отличаются от старых классов?
Чем отличается @staticmethod от @classmethod? 
Что происходит при обращении к property b экземпляра класса А? Как ищутся properties/methods класса?
Что происходит если property не найдено?
Что такое MRO? алгоритм решения проблемы?
Что такое metaclass?
Как создать metaclass?
Как сделать класс использующий metaclass?

Что такое процессы и потоки в Python? Какие возникают проблемы?
Какие есть решения для синхронизации данных при работе с потоками?
Что такое GIL?

Что такое итераторы?
Что такое генераторы?
Что такое list comprehensions?
Что быстрее встроенные функции map reduce filter или аналогичный код просто через for? Почему?

Что значит ключевое слово global?
Какие особенности областей видимости в Python?
Зачем нужен код исключения?
Что такое lambda?

2. Django

Какой основной шаблон проектирования лежит в основе фреймверка?
Что пошагово происходит когда пользователь нажал на ссылку? от браузера до приложения и обратно.
Что такое middleware?
Как сделать сообщение с трейсбеком при ошибке(500.html недостаточно)?
Какие типы отношений между таблицами бывают в Django-ORM?
Как реализовать отношение ManyToMany без ORM?
Какие встроенные сигналы бывают в Django?
Основные способы развертывания приложений?
Что такое mod_wsgi?
Что такое fixtures?

3. SQL

Что такое внешний ключ и зачем он нужен?
Что такое GROUP BY?
Что такое ORDER BY?
Что обозначает ключевое слово HAVING?
Что в чем отличие между LEFT JOIN, RIGHT JOIN и INNER JOIN?

4. Unix

Можно ли сделать ssh подключение к другому компьютеру с компа, к которому ты итак уже подключен через ssh? как это сделать?

5. SCM

Можно ли удалить коммиты из репозитория в git? Как?
Можно ли восстановить коммиты?
В чем отличие веток git от веток в svn?
Что такое git reset?
Что такое git rebase?
Чем git rebase отличается от git merge?

6. Алгоритмы

Что такое сложность алгоритмов? Как вычисляется?
Какова сложность алгоритма 
for i in x:
    for j in y:
        i*j
Какие алгоритмы сортировки знаете?
Какие есть способы обхода дерева?

7. Прочее

Что такое doctype в html?
Что такое meta в html?
Что значит переменная g в Flask?