mvsil

Interview

Dec 20th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.45 KB | None | 0 0
  1. Базовые понятия
  2. Переменная - поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным и изменять значение в ходе выполнения программы.
  3. Имя переменной - это строка символов, которая отличает ее от других переменных и объектов программы (элементов управления).
  4. Объект — это сущность, которой можно посылать сообщения и которая может на них реагировать, используя свои данные. Объект — это экземпляр класса, базовый элемент ООП.
  5. У объекта есть состояние, поведение и идентичность; структура и поведение подобных объектов определены в их общем классе ». Некоторые вещи не являются объектами, но являются атрибутами; например возраст, цвет.
  6. Класс - под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Класс определяет для объекта контракт, то есть правила, с помощью которых с объектом могут работать другие объекты (обычно это делается с помощью определения методов класса).
  7.  
  8. Принципы ООП
  9. Абстра́кция — в объектно-ориентированном программировании это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.
  10. Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход: инкапсуляция, полиморфизм или наследование. Например, при необходимости обратиться к скрытым данным объекта, следует воспользоваться инкапсуляцией, создав, так называемую, функцию доступа или свойство.
  11. Инкапсуля́ция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (что у него внутри?), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только спецификация (интерфейс) объекта.
  12. Наследование — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
  13. Полиморфи́зм — возможность объектов с одинаковой спецификацией иметь различную реализацию.
  14. Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования[1].
  15. Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».
  16.  
  17. Остальное
  18. Concurrency means multiple tasks which start, run, and complete in overlapping time periods, in no specific order. Parallelism is when multiple tasks OR several part of a unique task literally run at the same time, e.g. on a multi-core processor.
  19. Декоратор в Python – это функция, которая принимает другую функцию в качестве аргумента. Декоратор модифицирует или повышает принятую функцию и выдает измененную. Это значит, что когда вы вызываете декорированную функцию, вы получите функцию, которая может иметь небольшие отличия, в виде дополнительных функций, совмещенных с базовым определением.
  20. При передаче аргументов по ссылке - мы манипулируем самим объектом, по значению - его "коппией".
  21.  
  22. Python
  23. Список всех атрибутов - dir<obj> /* _ - protected, __ - private */
  24. Всех публичных - [attr for attr in dic<obj> if not attr.startswitch('__')
  25. Список методов - [arg for arg in dir<obj> if callable (getattr(<obj>, arg)]
  26. help хранится в <obj>.__doc__
  27. Типы даных: Изм - list, set, dict, custum classes; не изм - int, float, complex, str, tupple.
  28. Cп. каталогов, в которых py ищет модули - import sys, sys.path
  29. Как раб. змея? - Лекс анализ, парсинг, компиляция, интерпретация
  30. __init__.py нужен чтобы пайтон рассматривал каталоги, как содержащие пакеты
  31. __name__ == '__main__' для определения был ли файл импортирован или запущен
  32. Путь импортированого модуля - <module>.__file__
  33. *args, **kwargs - когда невозможно понять сколько аргументов принимает ф-ия
  34. self - договоренность
  35. venv - Каждый проект может иметь свои собственные зависимости вне зависимости от того, какие зависимости у другого проекта. Изолированная вирт. среда.
  36.  
  37. SoftServe будет +
  38. SQL vs noSQL - В реляционных СУБД данные представлены в виде таблиц, в то время как в нереляционных — в виде документов, пар «ключ-значение», графов или wide-column хранилищ.
  39. MVC - Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние[1].
  40. Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели[1].
  41. Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений[1].
  42. SOLID - S SRP[5]
  43. Принцип единственной ответственности (The Single Responsibility Principle)
  44. Каждый класс выполняет лишь одну задачу.
  45. O OCP[6]
  46. Принцип открытости/закрытости (The Open Closed Principle)
  47. «программные сущности … должны быть открыты для расширения, но закрыты для модификации.»
  48. L LSP[7]
  49. Принцип подстановки Барбары Лисков (The Liskov Substitution Principle)
  50. «объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы.» См. также контрактное программирование.
  51. Наследующий класс должен дополнять, а не изменять базовый.
  52.  
  53. I ISP[8]
  54. Принцип разделения интерфейса (The Interface Segregation Principle)
  55. «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения.»[9]
  56. D DIP[10]
  57. Принцип инверсии зависимостей (The Dependency Inversion Principle)
  58. «Зависимость на Абстракциях. Нет зависимости на что-то конкретное.»[9]
Add Comment
Please, Sign In to add comment