Прочитав книги которые наметил для изучение Python и прослушав лекции Тимофея Хирьянова и В.М. Гуровица. Решил проверить себя и попробовать пройти курс «Создание Web-сервисов на Python» сайта coursera, на сайте есть возможность прослушать курс бесплатно без получения сертификата. На первой же неделе я понял, что я еще не готов к прохождению таких курсов, мне очень сильно не хватает навыков решения задачек и решил пока приостановить изучение курса и поискать курсы для начинающих.
Полазив по интернету я обнаружил курсы Яндекса «Аналитик данных» и «Python-разработчик». Первые части курса бесплатные, их то я и прошел по два раза каждый. По результатам, решил продолжит наращивать практику решения задачек. Попробовав несколько курсов, в том числе платных, я понял, что желательно чтобы курс был написан педагогом, курсы написанные программистами ОООООчень сложны для понимания начинающего программиста.
Курсы я нашел на stepik.org:
1. Основы программирования на языке Python в примерах и задачах.(ДВФУ). Отличный курс, сделанный профессиональными педагогами.
2. Программирование на Python. (Института биоинформатики).
3. Введение в ООП для Python разработчиков. (Stepik Academy)
Эти курсы я прошел и рекомендую начинающим программистам. Сейчас прохожу курс «Python: основы и применение» (Института биоинформатики) тоже хороший курс.
Параллельно я искал профессию в которой можно применить полученные знания и если поначалу нацелился на бэкендера, то ознакомившись с требованиями решил начинать тестировщиком. Вот что на мой взгляд входит в необходимый минимум умений для получения работы. Знания языка программирования по умолчанию:
1. Умение работать с распределенной системой управления версиями Git. Бесплатный курс «Git. Базовый курс» я нашел на GeekBrains.
2. Умение работать с базами данных. Курсы я нашел на stepik.org «Интерактивный тренажер по SQL» (ДВФУ), «Введение в базы данных»
3. Как я понял знания HTML и CSS то же лишними не будут. Курс который я собираюсь пройти по этой теме «Веб-разработка для начинающих: HTML и CSS»
4. А по тестированию буду проходить курс «Автоматизация тестирования с помощью Selenium и Python».
Эти курсы пока в планах.
Для «набития руки» в решение задач есть хороший сайт www.codewars.com. На почту приходят задания для решения, по результатам которого, присваивается очередное «звание». На сколько я знаю результаты с этого сайта учитываются при собеседовании в Яндексе.
Кстати вот одна из вакансий Яндекса, асессора-разработчика (ссылка действительна на 28.07.2021) с перечисленными требованиями. Если бы на данный момент я умел бы работать с базами данных, попробовал бы получить эту работу.
На мой взгляд вполне решаемые задания.
Задание 1:
Опишите словами (без кода и псевдокода) алгоритм программы, которая выполняет задачу:
Ввод: массив из строк;
Вывод: массив строк из ввода, которые могут быть напечатаны клавишами из одного ряда клавиатуры
Опишите словами (без кода и псевдокода) алгоритм оптимизированной программы, которая выполняет задачу:
Ввод: сортированный массив из уникальных элементов, конкретный элемент из этого массива.
Вывод: индекс элемента в массиве
Задание 2
Напишите регулярное выражение, чтобы выбирались целые или дробные числа от 0 до 99, содержащие не более 2 символов после точки
Задание 3
Опишите недостатки каждого из представленных решений задачи на языке Python
Оцените вычислительную сложность каждого из решений (О большое каждого из решений)
Опишите алгоритм решения, оптимального по скорости вычислений
Задача:
a, b - [], отсортированы по возрастанию. Вернуть c - содержит только те элементы из a, которые есть в b. Решение должно быть вычислительно эффективным.
Решения:
Вариант 1:
def get_intersection(a, b):
a = set(a)
b = set(b)
c = sorted(list(a&b))
return c
Вариант 2:
def get_list_difference(a, b):
l = []
for i in a:
if i in b:
l.append(i)
return l
Задание 4
Напишите SQL запрос, который выбирает все записи из таблицы "Cities", где значение поля "City" начинается с "M".
Продолжаю учиться.
По ссылкам можно почитать мои конспекты:
Книги и курсы по Python
Книги и курсы по Python год спустя.
Встроенные функции (Built-in)
Методы словаря (Dict methods)
Методы списков (List methods)
Строковые методы (String Methods)
Библиотека os
Спецификаторы
Итерируемый тип данных
Инструкции continue, break и pass
Цикл for … in
Цикл while
Условная инструкция if
Индексация
Переменные
Встроенные функции print() и input()
Оператор присваивания
Основные типы данных
Коротко о языке