- •2. Поменять местами значение двух переменных
- •20. Декоратор @property
- •21. Что происходит если свойство не найдено?
- •27. Какие есть решения для синхронизации данных при работе с потоками?
- •28. Что такое итераторы?
- •38. Что такое middleware?
- •39. Как сделать сообщение с трейсбеком при ошибке(500.Html недостаточно)?
- •40. Какие типы отношений между таблицами бывают в Django-orm?
- •41. Как реализовать отношение ManyToMany без orm?
- •42. Какие встроенные сигналы бывают в Django?
- •43. Что такое mod_wsgi?
- •44. Что такое fixtures?
- •Outer join
- •56. Что такое git rebase?
- •61. Какие есть способы обхода дерева?
- •62. Что такое doctype в html?
- •63. Что такое meta в html?
- •Мета-тег Description, Generator, Keyword, Robots, Content-Language и т д
27. Какие есть решения для синхронизации данных при работе с потоками?
Эта проблема имеет два основных варианта решения. Первый — отказ от совместного использования изменяемых данных и вызовов внешнего кода. При этом данные дублируются в потоках и необходимость обеспечения их синхронизации (если таковая нужна) лежит на программисте[57]. Этот подход ведёт к увеличению потребления оперативной памяти (однако не настолько сильно, как при использовании процессов в Windows — так как для Unix это не критично, процессы небольшие).
Второй подход — обеспечение более гранулированной синхронизации — для отдельных структур данных. В этом случае падает производительность вследствие увеличения числа освобождений/захватов блокировок.
Если необходимо параллельное исполнение нескольких потоков Python кода, то можно воспользоваться процессами, например, модулем processing[58], который имитирует семантику стандартного модуля threading, но использует процессы вместо потоков.
28. Что такое итераторы?
Итератор - это объект, имеющий метод
„next (), который при каждом вызове возвращает
очередной элемент и возбуждает исключение Stoplteration
после исчерпания всех элементов.
Итератор применяется к итерируемому объекту, объекту, элементы которого можно перебрать по одному, то есть он имеет метод __iter__
29. Что такое генераторы?
Генератор - это выражение и цикл с дополнительным
условием, заключенное в скобки, в котором цикл используется
для создания элементов последовательности.
30. Что такое list comprehensions?
Генерация списков
res = [x**2 for x in range(1, 25, 2)]
31. Что быстрее встроенные функции map reduce filter или аналогичный код просто через for? Почему?
Встроенные функции быстрее. Так как они написаны на си и оптимизированы.
32. Что значит ключевое слово global?
Когда внутри функции создаются новые переменные, они имеют локальную область видимости. То есть такие переменные определены только в пределах тела функции, и они уничтожаются, когда функция возвращает управление вызывающей программе. Чтобы иметь возможность изменять глобальные переменные внутри функции, эти переменные следует определить в теле функции с помощью инструкции global
33. Какие особенности областей видимости в Python?
под термином область видимости подразумевается пространство имен: то есть место в программном коде, где имени было присвоено значение, определяет область видимости этого имени для программного кода.
Поиск переменных: локальная область видимости - глобальная - встроенная
34. Зачем нужен код исключения?
Нет такого
35. Что такое lambda?
Анонимная функция. лямбда-функция — небольшая функция, возвращающуая результат одного выражения. Преимущество лямбда-функции в том, что она является выражением и может быть использована внутри другого выражения
Пример:
numbers = [1,2,3,4,5] squares = map(lambda x: x*x, numbers)
DJANGO
36. Какой основной шаблон проектирования лежит в основе фреймверка?
Модель – представление – отображение, MVT
Программный код взаимодействия с базой данных представляет собой отдельную область, которая называется «моделью». Бизнес-логика выделяется в область, которая называется «представлением» в MVT. А внешний интерфейс выделяется в область, которая называется «шаблоном», отображением в MVT.
Проще говоря, бизнес-логика — это реализация предметной области в информационной системе.
Бизнес логика – производственная логика, обработка данных, вычисления.
37. Что пошагово происходит, когда пользователь нажал на ссылку? от браузера до приложения и обратно.
1. ОС смотрит в файл hosts и если там нет такого имени, то производит DNS-запрос к DNS-серверу провайдера.
2. DNS-сервер провайдера запрашивает у корневых DNS-серверов, те указывают какие DNS-сервера ответственны за эту зону,
3. DNS-сервер провайдера обращается напрямую к ответственным за эту зону DNS-серверам
4. ОС клиента получает эту информацию и передаёт браузеру.
5. Далее браузер инициирует TCP подключение по ip-адресу
DJANGO
6. На сервере изначально после получение запроса в файле settings проверяется значение переменной ROOT_URLCONF, чаще всего это файл urls.py в корне нашего проекта.
7. В файле привязок (urls), проверяет каждый шаблон сверху вниз и как только будет найдено первое соответствие, DJANGO вызывает функцию представления, ассоциированную с данным шаблоном, передавая ей объект HttpRequest
8. Функция возвращает объект HttpResponse
9. DJANGO преобразует HttpResponse в соответствующий HTTP отклик, который реализует страницу
10. Машина клиента получает данные и движок браузера рендерит HTTP ответ
