Skip to content

Instantly share code, notes, and snippets.

@sairus7
Forked from robenaro/exam.txt
Last active September 7, 2021 16:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sairus7/5d72da1a60516b02dc5371293a8fd28c to your computer and use it in GitHub Desktop.
Save sairus7/5d72da1a60516b02dc5371293a8fd28c to your computer and use it in GitHub Desktop.
Exam
"""
======================================================================
1. Система типов: приведение к типам,
конкретные и абстрактные типы,
множественная диспетчеризация
"""
"""
что происходит?
"""
a = 1
b = 2.0
c = a + b
"""
написать тип, параметризованный другим типом
"""
"""
написать функцию для двух аругментов, не указывая их тип
и функцию для двух аргментов с конкретными типами, запустить их
"""
"""
абстрактный тип - ключевое слово?
примитивный тип - ключевое слово?
композитный тип - ключевое слово?
"""
"""
написать один абстрактный тип и два его подтипа (1 и 2)
написать функцию над абстрактным типом, и функцию над её подтипом-1
выполнить функции над объектами подтипов 1 и 2 и объяснить результат
(функция выводит произвольный текст в консоль)
"""
"""
======================================================================
2. Функции: лямбды и
обычные функции,
переменное количество аргументов,
аргументы ключ-значение,
кортежи
"""
"""
пример обычной функции
"""
"""
пример лямбда-функции
"""
"""
пример функции с переменным количеством аргументов
"""
"""
пример функции с именованными аргументами
"""
"""
функции с переменным кол-вом именованных аргументов
"""
"""
передать кортеж в функцию, которая принимает на вход несколько аргументов
присвоить кортеж результату функции, которая возвращает несколько аргументов
деструктуризация кортежа - в набор переменных
"""
"""
======================================================================
3. loop fusion, broadcast, filter, map, reduce
"""
"""
перемножить все элементы массива
с помощью reduce
"""
"""
написать функцию от одного аргумента и запустить ее по всем элементам массива
с помощью точки
c помощью map
"""
"""
перемножить вектор-строку [1 2 3] на вектор-столбец [10,20,30] и объяснить результат
"""
"""
в одну строку выбрать из массива [1, -2, 2, 3, 4, -5, 0] только четные и положительные числа
"""
"""
в одну строку выбрать из массива [1, -2, 2, 3, 4, -5, 0] только четные и положительные числа
"""
"""
======================================================================
4. Свои типы данных на общих интерфейсах, в частности AbstractArray
"""
"""
можно объяснить на примерах готовых пакетов:
StructArrays, CircularBuffers, OffsetBuffers
"""
"""
======================================================================
5. Тесты: как проверять функции?
"""
"""
написать тест для функции
"""
"""
======================================================================
6. Дебаг: как отладить функцию по шагам?
"""
"""
написать и отладить функцию по шагам
"""
"""
======================================================================
7. Профилировщик: как оценить производительность функции?
"""
"""
оценить производительность функции
"""
"""
======================================================================
8. Отличия от матлаба: приращение массива и предварительная аллокация?
"""
"""
написать функцию, которая аллоцирует новый массив
"""
"""
написать функцию, которая пишет в предварительно аллоцированный массив
"""
"""
написать код, который добавляет элементы в конец массива, в начало массива, в середину массива
"""
"""
======================================================================
9. Модули и функции: зачем оборачивать функции внутрь модуля, как их экспортировать и пользоваться вне модуля?
"""
"""
написать модуль с двумя функциями,
экспортировать одну из них,
воспользоваться обеими функциями вне модуля
"""
"""
======================================================================
10. Зависимости, окружение и пакеты
"""
"""
что такое environment, как задать его, как его поменять во время работы?
"""
"""
что такое пакет (package), как добавить новый пакет?
"""
"""
как начать разрабатывать чужой пакет?
"""
"""
как создать свой пакет? (сложный вопрос, поэтому необязательно)
"""
"""
======================================================================
11. Аргументы запуска Julia
"""
"""
Как задать окружение при запуске?
"""
"""
Как задать скрипт, который будет выполняться при з-апуске:
а) из файла .jl
б) из текста команды? (см. флаг -e)
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment