StairwayToJava | Блог
30 subscribers
15 photos
14 links
Рассказываю о своём пути в IT и не только.

Итоги недели, полезная информация, конспекты книг и многое другое.

Ссылка для друга: https://t.me/becoder22
Download Telegram
Приветствую всех, в этом посте я расскажу о себе и о планах на этот канал.
Меня зовут Николай, мне 17 лет и в данный момент я учу back-end разработку, чтобы занять позицию джуна.

Немного предыстории: программировать я начал ещё в 14 лет, на курсах в моем городе. Там мы изучали c++ и kotlin, в основном упор был на мобильную и десктоп-разработку. На курсах я научился основам программирования, а также начал понимать принцип написания кода.

После курсов, в 15 лет я начинаю готовиться к ОГЭ, тем самым уделяя программированию меньше и меньше времени. В итоге, в 16 лет я снова начал изучать кодинг.

Мой выбор пал на back-end разработку, тк мне не очень понравилось оформлять страницу на html и css. Языком для разработки стал python, который было очень приятно изучать после c++.

В данный момент я изучил основы языка, потратив в сумме 2 месяца (занимался я по 1 часу, зато каждый день).

Под конец изучения основ я понял, что моя стратегия обучения неэффективна, поэтому я стал уделять больше времени практике, нежели теории.

Сейчас я начал изучать алгоритмы, которые даются мне достаточно легко, но вся тема ещё остаётся расплывчатой.

В этом канале я буду рассказывать свою историю становления программистом, а также всето разбавлять жизненными ситуациями и факапами.
👍3👀2
Channel name was changed to «Путь Джуна»
StairwayToJava | Блог pinned «Приветствую всех, в этом посте я расскажу о себе и о планах на этот канал. Меня зовут Николай, мне 17 лет и в данный момент я учу back-end разработку, чтобы занять позицию джуна. Немного предыстории: программировать я начал ещё в 14 лет, на курсах в моем…»
Channel photo updated
Продвижение за сегодня 🔥

Итак, этот день был непростым:

1. Я изучил алгоритм сортировки выбором.
Суть сортировки заключается в том, чтобы за каждый проход по массиву выбрать минимальный элемент и поменять его местами с первым элементом.
Сам алгоритм легчайший и проблем у меня не вызвал
Изучаю я алгоритмы по книге "Грокаем алгоритмы"

2. Я решил 2 проблемы на LeetCode уровня Easy и 2 задачи на Codewars уровня 5 kyu
Задачи на LeetCode оказались намного сложнее, чем на Codewars

Первая задача была проходной - даётся не отсортированный список чисел и число. Нужно найти такие два элемента, сумма которых будет равна данному числу. По сложности 4/10.

А вот со второй задачей пришлось попотеть - нужно было выяснить является ли число палиндромом.
В общем и целом решил я её с 4 попытки, переведя число в строку и перевернув его.

Задачки на Codewars были такими:
1. Переместить в конец все нули в списке
2. Написать функцию, которая шифрует данную строку при помощи ROT13.

С ними проблем не возникло.

Желаю всем продуктивного дня!
👍2
Рекурсия и римские цифры 😱

Сегодня мне предстояло понять что такое рекурсия. На это и на выполнение одной задачи на LeetCode у меня ушло около 1.5 часов.

1. Рекурсия - это вызов функцией самой себя. Используется она для облегчения чтения кода.

1) Каждая рекурсивная функция состоит из базового и рекурсивного случая.
2) В рекурсивном случае функция вызывает сама себя, в базовом предотвращает бесконечный цикл.
3) При рекурсии, вызывающая функция приостанавливается в частично завершенном состоянии.
4) Сильно расходует память.

2. Также я изучил понятие стека и стека вызовов:

Стек
- добавление элемента в начало и удаление элемента, который находиться в начале. Поддерживает занесение и извлечение.

Стек вызовов - Используется во внутренней памяти компьютера. В нём сохраняются все вызовы функций.

3. Сегодня я решил лишь одну задачу, но зато какую.
Суть задачи - вернуть число, которое будет являться расшифровкой римских чисел.
(https://leetcode.com/problems/roman-to-integer/description/)

Решил я её таким способом:
В словарь записал пару ключ-значение символов и их значений.
Прошелся циклом по строке и при помощи условия (не является ли число первым и если следующее за ним число больше его, то мы отнимаем от результата наше число.
Иначе мы прибавляем.

В общем и целом я доволен этим днём, надеюсь завтрашний будет ещё лучше!
👍4
Линейный поиск, сортировка пузырьком и отмена LeetCode 😢

Четверг дал мне неплохое испытание, которое застало меня врасплох. Всё по порядку...

В плане теории сегодняшний день ничем сложным не выделялся.

Я изучил 2 темы:
1) Линейный поиск. Проходит по всему массиву и проверят, является ли значение переменной цикла нужным нам числом. Время выполнения O(n).
2) Сортировка пузырьком. За каждый проход по массиву сравнивает текущее и следующее число и в случае, если предыдущее больше меняет их местами. Время выполнения O(n2)

А теперь к самому главному: отмене LeetCode.
Задачи хоть на этом сервисе хоть и хорошие, но для моего уровня пока слишком сложные. Я решил остановится на Codewars, пока не наберусь опыта или как минимум не изучу алгоритмы. В голове что-то появляется, но до конечного решение все не доходит.
Всем хорошего вечера!
👍3
Быстрая сортировка и задача про улитку 🐌

Сегодняшняя теория было достаточно простой, я разобрал алгоритм быстрой сортировки.

Суть быстрой сортировки - берётся некоторое число из массива (обычно то, что посередине) и массив делится на два подмассива: первый содержит числа меньшие, чем среднее, а второй содержит большие. Далее посредством рекурсии эти массивы делятся на такие же подмассивы, пока длинна массива не будет равна 1.

Время выполнения: O(log2n(n))

Алгоритм достаточно прост в реализации, так что останавливаться на нём не будем.

А вот задача про улитку была настоящей пыткой, которую я хоть и с костылями из StackOverflow, но решил.
Суть задачи: отсортировать матрицу способом улитки (На картинке). Для начала - это мой первый опыт работы с матрицами, все было очень сложно. Спасибо гуглу, что он существует. Решение скидывать не буду, т.к. оно займет слишком много места, но скажу, что циклов в решении 5)
👍3
Основы HTML
Сегодня я решил подкрепить свою базу по Front-end разработке, т.к она обязательно пригодится мне на работе.

Я изучил основные теги - div, span, p, h и другие. Завтра планирую полностью повторить весь HTML и перейти CSS.
👍3
Продвинутый HTML
Итак, сегодня я повторил оставшиеся теги в HTML.
Вспомнил как писать формы (<form>), таблицы (<table>), как вставлять картинки (<img>) и ссылки (<a>).

Завтра возьмусь за CSS и порешаю задачки на CodeWars
👍3
Основы CSS и странная задача с LeetCode
CSS дался мне очень просто, ведь у меня уже был опыт работы с ним. Особо говорить нечего, подкрепил знания.

А вот с задачей не всё так просто.
Суть проблемы: отсортировать сумму двух списков.
В редакторе кода все замечательно и все работает, а вот LeetCode не хочет принимать ответ. Меня сильно раздражают тесты и стиль их выполнения на этом сайте. Пока что его я трогать не буду.
👍5
Bootstrap
За эти 3 дня я выучил основы фреймворка Bootstrap, который упрощает вёрстку сайта. Я научился ориентироваться в документации и выучил систему Grid, по которой Bootstrap делает адаптив.

На следующей неделе приступлю к изучению ООП
👍2👎1
Возвращение к практике и планы на следующий месяц
Итак, 2 задачи на кодварсе не были сложными и их можно не упоминать.

В феврале я бы хотел изучить ООП на питоне, а также начать знакомство с django
👍2👎1
#итоги
ООП и метод __str__
Сегодня я изучил основные принципы ООП, а именно: классы, объекты, наследование, полиморфизм, инкапсуляция.

Наследование позволяет использовать методы родительского класса.

Полиморфизм позволяет работать одному куску кода с разными данными.

Инкапсуляция позволяет скрывать данные, чтобы они не были доступны в методах.

Метод str позволяет сделать вывод объекта читабельным.
👍2👎1