- Saved searches
- Use saved searches to filter your results more quickly
- ruslanushka/junior-python-developer-coding-task-master
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Python: вопросы на собеседовании. Часть I. Junior
- Вопросы
- Вопросы с кодом
- Saved searches
- Use saved searches to filter your results more quickly
- Vlad2030/python-junior-task
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
ruslanushka/junior-python-developer-coding-task-master
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
ОСНОВНОЙ ФАЙЛ main.py После запуска основного файла, в каталоге создадутся два файла с расширением .tsv Вспомогательные файлы находятся в папке python_file
Задание для потенциальных кандидатов на позицию Junior-девелоперов. Представляет из себя проcтой ETL с разными форматами файлов.
Код решения задания должен соответствовать PEP8
Задание состоит из двух блоков:
- Basic — основная задача (обязателльна для выполнения)
- Advanced — дополнение к основной задаче (желательно сделать)
Использовать можно только средства стандартной библиотеки Python. Во всех случаях программа должна запускаться из терминала.
Для проверки работы программы предоставлются входные данные и результаты в виде 6 файлов:
- входные данные:
- csv_data_1.csv
- csv_data_2.csv
- json_data.json
- xml_data.xml
- basic_results.tsv
- advanced_results.tsv
Есть четыре файла: два .csv , один .json и один . xml файл.
Первый .csv имеет следующую структуру:
D1 D2 . Dn M1 M2 . Mn s s . s i i . i . . . . . . . . Второй .csv имеет следующую структуру:
D1 D2 . Dn M1 M2 . Mn . Mz s s . s i i . i . i . . . . . . . . . . Внимание! Порядок колонок может несовпадать. В обоих файлах есть заголовки.
.json файл имеет следуующую структуру:
< "fields": [ < "D1": "s", "D2": "s", . "Dn": "s", "M1": i, . "Mp": i, >, . ] >
.xml файл сожержит в себе следующую структуру:
objects> object name="D1"> value>svalue> object> object name="D2"> value>svalue> object> . object name="Dn"> value>svalue> object> object name="M1"> value>ivalue> object> object name="M2"> value>ivalue> object> . object name="Mn"> value>ivalue> object> objects>
Файлы нужно будет трансформировать в один .tsv файл со следующей структурой:
D1 D2 . Dn M1 M2 . Mn s s . s i i . i . . . . . . . . Он должен быть отсортирован по колонке D1 и содержать даннные из всех четырёх файлов.
Файлы нужно будет трансформировать в один .tsv файл со следующей структурой:
D1 D2 . Dn MS1 MS2 . MSn s s . s i i . i . . . . . . . . В колонках MS1. MSn должны находиться суммы знаений соответствующих M1. Mn из 4 файлов сгруппированные по уникальнным значениям комбинаций строк из D1. Dn.
Содржимое .tsv файла с данными из 4 файлов:
D1 D2 M1 M2 M3 a a 0 0 0 a a 1 0 1 a a 0 2 1 a b 1 1 1 c c 7 7 7 Ожидаемый результат:
D1 D2 M1 M2 M3 a a 1 2 2 a b 1 1 1 c c 7 7 7 Нужно попытаться учесть несколько фактов:
- правльно решенная задача, это не главный критреий оценки. ОЧЕНЬ важно не забывать про другие характеристики кода, такие как поддерживаемость, читаемость, расширяемость.
- в дальнейшем использовании программы возможно появление требования для работы с другими типами файлов, например .yaml .
- входные файлы могут быть больших размеров
- возможность обработки строк с некорректными значениями без прекращения выполнения программы с информированием пользователя об ошибках в конце её выполнения
- подумать об организации тестирования программы
Python: вопросы на собеседовании. Часть I. Junior
Начинаем серию статей со списками вопросов, которые задают на технических собеседованиях питонистам. Разумеется, в эти списки войдут не все возможные вопросы, а некоторые из них могут показаться странными или даже тупыми, но все же стоит быть готовым к тому, что вам их зададут.
Вопросы
- Что такое Python?
- Что такое lambda в Python?
- Что означает pass в Python?
- Что обозначают *args и **kwargs при определении функции в Python?
- Что такое docstring в Python?
- Какие в Python существуют встроенные типы данных? Какие из них изменяемые, а какие неизменяемые?
- В чем разница между списками и кортежами?
- Какие ключевые слова могут быть использованы вместе с ключевым словом for ?
- Какие могут быть ключи в словарях Python?
- В чем разница между globals() , locals() , и vars() ?
- Что такое PEP8?
- Как работают срезы в Python?
- Что значит отрицательный индекс в Python?
- Что такое модуль __init__.py ? Для чего он нужен?
- Как можно поменять значения двух переменных в Python?
- Как можно посмотреть все методы объекта?
- Как можно получить документацию по методам объекта Python?
- Что такое модуль в Python? Что такое пакет в Python? В чем разница между пакетом и модулем?
- Можете ли вы написать многопоточное приложение в Python? В чем разница между мнгопоточностью (multithreading) и многопроцессностью (multiprocessing)?
- Что такое декораторы в Python? Как создать свой собственный декоратор?
- Что такое @classmethod , @staticmethod , @property ?
- В чем разница между @classmethod и @staticmethod ?
- Поддерживает ли Python в полной мере объектно-ориентированное программирование?
- Что такое атрибут __dict__ объекта Python?
- Что значит self ?
- Что делают функции __init__ ?
- Расскажите, как сделать исполняемый скрипт Python в операционной системе Unix.
- Что такое сериализация (pickling) и десериализация (unpickling) в Python?
Вопросы с кодом
- Как преобразовать строку, содержащую бинарный код ( 0 или 1 ), в число (целого типа)? Напишите программу, которая будет это делать.
- Как проверить, что кортеж A содержит в себе все элементы кортежа B? Напишите программу, которая это будет выполнять.
- Какой будет результат выполнения следующего кода:
def f(): x = 15 print(x) x = 12 f()
- Как преобразовать строку в число, состоящее из ASCII-кодов? Напишите программу для этой операции.
- Как удалить пустые строки (длиной 0) из списка строк? Напишите программу для этого.
- Создайте строку из чисел от 0 до 100 следующего вида: «0123456789101112. «
- Преобразуйте список, где есть повторяющиеся элементы, в список, где все элементы уникальны.
- Создайте список всех простых чисел, лежащих в диапазоне от 0 до 100 .
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
test assignment for employment
Vlad2030/python-junior-task
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Необходимо разработать REST API для ведения учета питомцев (собак и кошек).
Требуется использовать: Python3.Х, FastAPI, SQLite (можно использовать свою fakedb на базе словаря или класса) и Docker.
P.S. Решил вместо SQlite использовать PostgreSQL + SQLALchemy, вместо обычного Docker – Docker-compose. Также в планах сделать автотесты (pytest) и миграции (alembic)
Результат задания нужно залить на публичный git.
Необходимо реализовать следующие endpoint’ы:
< // нужно спроектировать (спроектировано) "name": "boy", "age": 7, "type": "dog" >
< "id": 1, "name": "boy", "age": 7, "type": "dog", "created_at": "2021-05-18T19:10:17" >
limit: integer (optional, default=20)
< "count": 2, "items": [ < "id": 1, "name": "boy", "age": 7, "type": "dog", "created_at": "2021-05-18T19:10:17" >, < "id": 2, "name": "girl", "age": 3, "type": "cat", "created_at": "2021-04-11T22:39:58" > ] >
< "deleted": 2, "errors": [ < "id": 1, "error": "Pet with the matching ID was not found." > ] >
Необходимо контейнеризировать полученное приложение.
Написать Dockerfile , который:
- скачивает базовый образ с DockerHub
- копирует приложение внутрь образа
- устанавливает необходимые пакеты и зависимости (БД, requirements.txt, и т.д.)
- производит настройку всех необходимых компонентов для работы приложения
- запускает приложение на 3000 порту
На ПК с установленным Docker должна быть возможность склонировать репозиторий с исходными кодами приложения.
После выполнения команд docker build и docker run приложение должно отвечать на вызовы api по адресу 127.0.0.1:3000
About
test assignment for employment