Тру-Джава
137 subscribers
31 photos
79 links
блог начинающего Java-программиста

Чат: https://t.me/trujavachat
Download Telegram
Всем привет!

С прошлой недели меня поставили помогать разгрузить техлида и одного сеньора и теперь я gateway по багам. Приходится разбираться, где проблема на бэке или фронте (иногда это не очевидно для меня) и переназначать, или брать в работу.

С каждым днем после того, как поставили, ко мне все больше и чаще стали приходить тестировщики и фронтендеры с вопросами. Поэтому мои задачки, что были в бэклоге, теперь похоже отложены в долгий ящик до тех пор, пока видимо всё не устаканится))

А из таких задач у меня были задачи на добавление второго профиля в микросервисы, как подготовка к миграции на другую базу данных. Один микросервис только успела перевести) Но надо сказать, что это достаточно монотонное дело. В этом плане поиск и исправление багов поинтереснее, но есть какое-то напряжение с ними)
🔥16👍3
Всем привет!

Сегодня занималась интересной проблемой / багом.

У нас на обучении об этом не говорили, например, но есть ограничения в запросах в базу данных, которые содержат конструкцию where что-то in (варианты).

У нас на проекте с самого начала подход разбивать такие запросы на партиции (дробить большой запрос в базу данных на несколько мелких).

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

Пришёл запрос, который попадал под это ограничение и выдавал сервис 500. Сегодня разделила его на партиции и покажу, как это может выглядеть в коде.

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

Например, мы ищем игрушки, id фирм которых находятся в условии in, тогда запрос в базу данных выглядит так:

Select t.* from toys t 
where t.brand_id >= :minId
and t.brand_id <= :maxId
and t.brand_id in (:ids)


А в коде, под синтаксис 21 джавы:

Collections.sort(brandIds);
ListUtils.partition(brandIds, maxSize).stream()
.map(partition -> repository.findByBrandIds(partition, partition.getFirst(), partition.getLast()))
.toList();


Переменная maxSize это задаваемое значение максимального размера партиции, оно не должно быть слишком большим, но и слишком маленький размер будет слишком долго обрабатываться, если список брендов будет доходить под несколько десятков тысяч.
👍10🔥5
Всем привет!

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

Лучше всего эту статью прочитать полностью, но в нескольких словах перескажу основную мысль и поделюсь наблюдениями применения этой идеи.

В статье противопоставляется поставление и достижение цели, - а зачастую расстройство от не достижения ее - и субъективная оценка по своим критериям.

Приведу детский пример, у меня перед глазами недавно происходил. Сын играл в игру, где нужно было достигать стадий, чем больше стадия, тем ты круче в игре. С каждой стадией время радости сокращалось и начиналось грустное осознание, что есть цель выше и до нее снова нужно идти. Со временем, игрой он "перегорел".

Цитата из статьи - "смартировать свою жизнь — самый эффективный способ, чтобы перестать улыбаться".

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

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

Получается что нет стресса, что нужно что-то достичь, но есть критерий "узнала что-то новое в программировании", который постоянно поддерживает и подталкивает изучать новое и развиваться.
🔥12👍6
Всем привет!

В понедельник у меня начался отпуск. Сегодня утром мне уже стало скучновато без работы 😁

До отпуска у меня было несколько параллельных активностей. Примерно в одно время (2 месяца назад) я записалась на тренировку по алгоритмам и интенсив по джаве.

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

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

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

Зато проверила в работе ИИ в качестве писателя юнит тестов (правда локальную слабоватую модель) и он с задачей не справился. Пришлось за ним искать и исправлять ошибки. 🤷‍♂

Сейчас в планах дочитать книжку Head First по паттернам (осталось меньше половины) и заново начать "кабанчика", потому что до этого половину прослушала чисто в аудио и не очень усвоилось и отложилось, может быть устрою челлендж себе прочитать ее до нового года, чтобы закрыть долги за этот год💪
🔥9
Всем привет!

Сегодня практически дочитала "Head First. Паттерны проектирования" (остался Appendix с кратким описанием нескольких паттернов).

Мне очень тяжело давалась она в начале, после одного паттерна (Команда) даже отложила книгу в очень далекий ящик.

Недавно вспомнила про нее и решила, что буду читать хотя бы по паре страниц в день. Не каждый день я про это вспоминала, но потом мне неожиданно понравилось 🤓

Чем дальше, тем интереснее было читать, а сегодня даже стало немного грустно от того, что книжка почти закончилась.

Особенно понравилось читать про Шаблонный метод, паттерн Состояния, Прокси и MVC (Model View Controller).

На работе как-то в одной из задач применяла шаблонный метод (сеньор подсказал идею как сделать, но не сказал, что это паттерн, об этом напишу отдельно с примерами).

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

В общем, рекомендую! 🔥
🔥10👍1
Всем привет!

Сегодня расскажу про забавный случай кривых рук 👍

Связан он с классом ZipInputStream, который используется для чтения и дальнейшей работы с архивами с расширением ".zip".

Код из примера по приложенной ссылке:

try(ZipInputStream zin = new ZipInputStream(new FileInputStream("output.zip"))) {
    ZipEntry entry;
    String name;
            while((entry=zin.getNextEntry())!=null){
// работа с архивом

Тестировала я его работу и всё-то у меня не попадало в цикл с получением nextEntry у класса, всё null да null у меня было.

Думаю, архив-то у меня валидный, открывается, называется красиво "test.zip".

Уже и погуглила и ИИ поспрашивала, какие могут быть причины, что архив с файлом есть, а ZipInputStream его читать не хочет.

Направил в нужную сторону меня ответ ИИ, что валидный zip всегда имеет признак - первые 2 буквы PK - и в байтах, это значение 50 и 4В, а у меня был 55 и дальше другие значения (это я проверяла дебаггером, что у меня возвращает file.getBytes()).

Решила я получить свой файл через эндпоинт и случайно забыла в постмане выбрать отправить и сохранить, и мне пришел ответ в разных не особо читаемых символах в теле ответа. Первые символы были "7z".

Тут я вспомнила как я создавала свой тестовый архив - я добавила файл к архиву, сохранила не глядя в 7z и подумала, что я расширение что-ли не сменю? И вручную поменяла 7z на zip. 🤦‍♀

Он, конечно, у меня отлично открывался и сохранялся в разных системах, только внутри он себя ассоцировал с 7z архивом, а не zip.

Мораль - не надо лениться😅
😁11
Всем привет!

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

Первым делом, написала небольшой сервис (product-service), который использует реактивную NoSQL базу данных (MongoDb).

Пока в нем обычный CRUD стандартных операций. Кому интересно, сделала открытый репозиторий на гитхабе.

Следующим шагом будет добавить второй модуль, это будет order-service, который будет работать с реактивной PostgreSQL.

На эти два шага у меня есть примеры с одного индусского курса. Но мне кажется в этой серии статей на хабре тоже будет много хороших примеров.

Планирую тоже теоретическую часть почитать побольше, потому что индусы объясняют примерно так: "Это не будет работать, потому что нужно подписаться, и если я напишу вот так, то компилятор теперь счастлив, понятно? Двигаемся дальше" 😁

Третим шагом, я запланировала сделать gateway-service, который будет использовать Redis для кэширования сессии и не пропускать неавторизованных пользователей.
🔥11👍3👏1
Всем привет!

Подходит к концу год, хочется возможно выделить какие-то события или цели на следующий год.

Где-то осенью со мной поделились ссылкой на бесплатный курс по алгоритмам от Яндекса, я до сих пор его не прошла.

Разговаривали недавно с коллегой и оказалось, что он тоже хочет подкачать алгоритмы, но все не хватает чего-то, чтобы начать. Решили помочь друг другу и пройти этот курс вместе, чтобы можно было возможно обсудить какие-то задачки.

Присоединяйтесь, кому тоже интересно, будем вместе потом обсуждать. 🤗

В тему, одной из самых запомнившихся задач, была задача написать рекурсивный алгоритм для проверки не является ли метод модифицирующим, если он помечен @Transactional(readOnly = true) (archunit тест).

Также, понравилось применять паттерны проектирования - стратегия для импорта и экспорта объектов через файлы и шаблонный метод (про него будет потом пост).

На следующий год, хочу "прочувствовать" алгоритмы, наконец, чтобы увидев один я могла сказать: "А, нужно использовать два указателя", или, "Хм, здесь отлично подойдет "разделяй и властвуй!" и суметь правильно применить и решить задачи легкого и среднего уровня с leetcode.

Также, нужно, наконец, дочитать Designing Data-intensive applications (кабанчик).

А у вас какие планы на следующий год?

Всех с Наступающим!
👍6🔥3
Всем привет!

Всех с наступившим Новым годом! 🎄

Пусть все мечты сбываются!🎁

Я в этом году, думаю, буду писать здесь пореже, только когда будет появляться что-то действительно интересное или буду узнавать что-то новое.

Я пока начала тот курс с яндекса по алгоритмам, он от одного из плохо объясняющих преподавателей. Одно время проходила курс на степике, в написании которого он принимал участие. Тогда остались пробелы, а здесь ещё хуже объяснения и задачи.

Поэтому курс не особо рекомендую, но сама постараюсь допройти и перейти потом к книжке Грокаем алгоритмическое собеседование.

Ещё в планах, скорее мечтах, написать что-нибудь по Spring Security с актуализацией на все изменения синтаксиса, на все возможные варианты - базовая, с токеном jwt и AOuth2. И оформить это в какой-то бесплатный курс на степике.

Эта идея у меня давно, я даже пыталась сделать здесь регулярную серию по Spring Security, но здесь не очень формат для этого подходит, легко по темам не перескочить, а хэштеги я никогда не добавляла) Поэтому думаю платформа Stepik для этого идеально подойдёт)
🔥10
Всем привет!)

Будущее потихоньку наступает? 🙃

В последнее время, много новостей по новым ИИ моделям или прогрессу старых. Что вольно-невольно появляется некоторое беспокойство к чему это всё приведёт.

Недавно проводила небольшое демо и пока ждали всех, немного обсудили новость, что Марк Цукерберг заявил, что они собираются заменить мидл-разработчиков на ИИ. Тогда пошутила, успею ли я вырасти до сеньора при таком ИИ😅

Тимлид и техлид, которые застали разные перемены в айти-сфере, сказали, что ИИ останется инструментом, но не заменой. А работающий в той компании человек заметил, что у них в целом не так много мидл-специалистов работает. (Кстати, вот его интересный пост про то, заменит ли программистов ИИ.)

У нас на работе тоже появляется интерес к использованию локального ИИ, рассматривали разные интересные возможности, по типу таких.

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

А сегодня попалась статья об обратной стороне медали. Вкратце, она о том, что многие начинают лениться думать сами и сразу идут по любому поводу к ИИ для решения проблем / багов и разных "затупов". Интересная статья, мне кажется полезный совет там дается, сначала попробовать решить самому.

А вы что про всё про это думаете? 🤗
🔥6👏1
Всем привет!

Продолжаю тренировать алгоритмы. Недавно нашла хороший плейлист с лекциями для 8 (!) классников-олимпиадников, там очень хорошо объясняются алгоритмы с самых азов, с примерами и задачами, которые я на паузе тоже решаю)

После "Гроккаем алгоритмы" объяснения хорошо ложаться, а сортировки я оказывается многие знаю (на джаве смогу написать 3 вида, а на питоне плюс ещё один вид), но на алгоритмическое собеседование в какой-нибудь Яндекс это даже не спросят😁 Возможно мне это для чего-то пригодится, конечно))

А ещё на днях был небольшой моральный подъем, случайно с другого аккаунта на литкоде вышла на задачу, которую решила в прошлом году. Там нужно было использовать метод поиска наибольшего общего делителя.

В прошлом году решила длинно, не сильно читаемо и по времени в статистике литкод среди меньшего количества за 3 ms, вместо более популярного решения за 2 ms.

Попробовала решить с полученными знаниями с курса по ссылке и попала в статистику большинства 🥳

Буду продолжать дальше, ещё бы кто-нибудь подпинывал делать регулярно, как делают курсы.)) Но бесплатный курс с Я.Практикума для этого не годится, возможно все-таки возьму их платную версию..
🔥13👍2
Всем привет!)

Всех причастных с праздником! 🥳

А я сегодня сдалась и записалась на платный курс по алгоритмам в Я. Практикум 🤓

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

В последнее время что-то зачастила с постами про алгоритмы, но почему-то сейчас ничего другого сильно не увлекает. 🤔

Вчера, когда отдавала задачи на проверку, некоторые мои решения выпадали на 10-80 мс за лимит по времени выполнения. И было очень интересно думать, как можно ускорить решение.

Там ещё были открытые тестовые данные, очень понравилось, не знаю, конечно, будет ли так дальше.

Учеба у меня начнется с 6 марта, потом поделюсь впечатлениями)
🔥13
Всем привет!

Сегодня я снова студент) У меня официально начался курс по алгоритмам) Правда первый спринт откроется в понедельник и пока задания закрыты. Но уже началось движение в учебных чатах.

Несколько людей там имеют опыт работы в разработке более 15 лет😱 Но есть также фронтендеры, автотестеры и люди из других смежных сфер.

Программу первого спринта (первые 2 недели курса) немного приоткрыли и стало немножко боязно 🫣 - там 24 урока плюс финальное задание, которое будет проверять ревьюер. Пока не представляю, как оно будет выглядеть)

По работе последнее время приходят интересные задачки. Вчера занималась настройкой одного кастомного бина, который не хотел работать в тестовой среде. В итоге помог разобраться только сеньор, но зато научилась новому)

А завтра, если ничего не поменяется, буду изучать Kotlin dsl на предмет возможности применения в проекте.
🔥12👍2
Всем привет!

Сегодня будет несколько новостей и щенячих восторгов) Во-первых, попрактиковала вчера интересный use case для ИИ. Сказала ему, что вот ты мой ментор, хочешь меня научить, сразу мне правильный ответ не говоришь, а подсказываешь, задаешь может быть наводящие вопросы.

И пришла к нему с задачкой с курса, говорю, вот нужно это найти, я делаю так, но это слишком медленно, как по-другому мне не представляется реальным.

И он таки подвел меня к решению) День-полтора у меня заняло, конечно, на осмысление его подсказок, пробовала и так и сяк, в конце концов решение прошло и я отправила его на ревью. Интересно будет посмотреть, как оно будет выглядеть.

Так что курс пока у меня идет в темпе предыдущего, на первой неделе спринта я сделала его финальное задание (2 задачи, одна из них не сложная). Оно пока не принято, но это не главное 😅 Ещё один из плюсов, тут оказалось можно идти вперёд, уроки не блокируются календарем, чего мне очень не хватало на джавистком курсе)

Ещё одна интересная вещь, у нас на работе появится несколько человек, кто будет в большинстве заниматься различными улучшениями кода и внедрением новых технологий и я попросилась в их число💃

А у вас как дела?)
🔥10👏31
Всем привет!

У меня на курсе закончился 2 спринт (по календарю только 1й). Но если вы подумаете, что это быстро, то я скажу, что, как минимум 1 человек, уже решает задачки 4го спринта. Многие на 3м были еще на прошлой неделе, но есть и те, кто "ползет", как я. Что меня немного успокаивает 😁

За последнюю неделю заметила несколько интересных вещей. Во-первых, очень многие теоретические моменты объясняются примерами из "Грокаем алгоритмы". Несколько задач я встретила с курса для олимпиадников (о нем рассказывала тут). Их решила легко по памяти, потому что идеи хорошо отложились.

Вторая мысль с этим связанная, что если есть самодисциплина на то, чтобы заниматься на leetcode, пожалуй "Грокаем алгоритмы" и задачи с leetcode будет вполне достаточно, чтобы хорошо освоить алгоритмы. У меня регулярно там решать задачи настолько не получалось, что выработался рефлекс - открывается страница leetcode - ноги поднимаются со стула и ведут меня куда-нибудь подальше😅

Поэтому для меня leetcode пока не работает, но надеюсь это изменится со временем.

И последнее чем хотела поделиться - самое понятное объяснение, что такое стек. Обычно сравнивают со стопкой тарелок/документов/тетрадок на проверку. Но для меня это никогда не было чем-то финальным. Я очень много раз забирала вещи из середины стопки и видела, как учителя так делают с тетрадками, если они вдруг захотели что-то проверить вне очереди.

В курсе для олимпиадников сравнили стек с тубусом для теннисных мячей. Вот уж где точно не подлезешь ни в начало, ни в середину, не достав верхний мяч.🎾
🔥75👍2😁2
Всем привет!

Сегодня я дошла ровно до 50 процентов курса по алгоритмам (сдала финальные задачи 3го спринта).

Этот спринт стал ощутимо сложнее двух предыдущих, главными темами были рекурсия и сортировка.

Первый раз решала задачу с комбинациями через рекурсию, рабочее решение вышло чуть ли не в 3 строчки, но до этого метод был почти на 50 строк😅 По итогу этими задачами осталась довольна)

Одна задача на отрезки почти повергла меня в отчаяние🙈 Там нужно было вывести соединенные отрезки или, наоборот, непересекающиеся (например, если даны 2-3, 6-10, 7-8, 7-8, то правильный ответ 2-3 и 6-10). Так сказать геометрия и визуализация не самые мои лучшие друзья, чертила, рисовала, пыталась решить.

Не помню сколько над ней просидела, но реально приходили мысли в голову бросить всё и уйти в водители автобуса (шучу 😁). Когда ее решила был такой выброс дофамина, что потом пару дней вообще что-то перетрудилась решая задачи и в итоге, наконец, устала и решила немного таймаут взять до понедельника)

Но видели бы вы, конечно, мой код в процессе решения😁 Настоящий путь самурая на костылях)

А ещё на днях, 28 марта, у меня был день рождения канала) 2 года👶💪
🔥202
Всем привет!

На этой неделе углублялась в тему хешей и хеш-таблиц (тема 4го спринта на курсах по алгоритмам).

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

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

В следующем спринте начнется тема с деревьями, видимо будут учить нас их крутить вертеть туда-сюда. Немного страшно 😁

Но официально 5й спринт стартует аж 5 мая, так что пока дорешаю необязательные задачки)

На работе период относительно скучных задач, самое сложное в которых понять формулировки ТЗ 😁

А у вас как дела?)
🔥92👍2😁1
Всем привет!)

Всех с прошедшими праздниками, успели ли отдохнуть?🤗

У меня идет потихоньку курс по алгоритмам к концу, вчера закрыла 5й спринт по деревьям и начала 6й по графам. Осталось 3 спринта, вместе с 6.

Деревья приятно удивили, я что-то до этого не лезла внутрь смотреть, как они устроены и работают, теперь немного получше их понимаю. Думаю после курса еще немного потренирую разные темы, почитаю книжки/статьи с разборами. Может к следующим тренировкам по алгоритмам смогу их решать быстро)

Не рассказывала, но не очень давно проходила собеседование для тренировки. Говорят полезно периодически практиковать этот навык и вообще узнать, как сейчас на рынке труда обстоят дела)

Совпало достаточно забавно, одним из вопросов меня попросили рассказать, как устроена хеш-мапа, а я как раз примерно днем раньше сдала свою кастомную реализацию хеш-мапы на 4м спринте с первой попытки)

В остальном, вопросы были вполне стандартные: ArrayList vs LinkedList, немного было вопросов с подвохом, где были кусочки кода и нужно было сказать, отработает или нет, что выведет на экран, немного на многопоточку было среди них.

Например, стандартный подвох на стримы:

List<Integer> list = Arrays.asList(0, 2, 4, 6, 8, 10);
list.stream().peek(System.out::println);


где подвох в том, что peek не терминальная операция и ничего не будет выведено на экран, так как стримы ленивые.
👍9🔥52
Всем привет!

Последние две недели осваиваю графы. Если с деревьями решала задачи, в основном, с помощью рекурсии, то задачи на графы решаю симуляцией рекурсии😀

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

Потому что с деревьями, решив некоторые запутанные задачи рекурсией, оставалось небольшое ощущение, что магия какая-то происходит 😁

Хотя, конечно, перерисовав дерево можно было отследить ход алгоритма, но все-таки, в цикле мне намного понятнее отслеживать что происходит. Ощущение, что я полностью контролирую процесс, а не программа сама что-то себе придумывает 😁

Графы закончу и останется всего 2 спринта, динамическое программирование и алгоритмы на строки. Мне почему-то кажется, что на строки будут самые легкие задачи.

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

А у вас что нового? 🤗
🔥12👍32
Всем привет!

С началом лета! 🌞

Я все ещё прохожу курс по алгоритмам и сижу на финальных двух задачках 6го спринта. Первую решала всю прошлую неделю, теперь начала вторую решать. Что-то сложно 😅

Был на прошлой неделе созвон однокурсников с наставником, что-то в стиле ретро, где обсуждали у кого как идет, какие сложности и тому подобное.

Я поделилась, что немного побаиваюсь следующего спринта, там будет тема динамическое программирование.

На это наставник меня утешил и сказал: "Ты знаешь, динамика она либо дается, либо нет", мол, что ты переживаешь в самом деле, ну😂 Только мне кажется, что я больше ко вторым отношусь)

Последние полтора месяца мне осталось, потом уж не буду тут частить про алгоритмы 😁

Мысленно выбираю следующую жертву для погружения и изучения, думаю в сторону system design или углубиться ли в CI/CD, потренировать строить всякие пайплайны на гитлабе, а то я только на гитхабе это делала и уже относительно много времени прошло с последнего эксперимента, надо освежить в памяти)
🔥8👍32😁21
Всем привет!

Сегодня решила поделиться тем, что мне поднадоели алгоритмы 😁

Так как я уже почти прошла этот курс (осталось уже меньше месяца), могу поделиться впечатлениями о курсе в целом.

Мой вердикт: слишком интенсивно.

Если держаться в расписании 2х недельных спринтов, надо примерно на первой неделе решить 7-8 не самых легких, а иногда и самооценку-разрушающих сложных задач, чтобы перейти к решению финальных задач ко второй недели.

Они тоже очень варьируются по сложности. В одном спринте к финальным задачам был буквально псевдокод-решение, которое чуть подредактировать и проходило все тесты. Причем это дается раньше, чем сами задачи, то есть нельзя сначала попробовать решить самостоятельно, ведь сначала дается объяснение с подробным решением пусть немного не в полном синтаксисе, в стиле псевдокода.

Но все равно, пока разбираешься, откладывается и когда уже дойдешь до финального задания будет не сложно решить. А некоторые задачи прямо вообще отрываются от сложности типичных задач спринта куда-то в небеса (как было с финальными задачами на графы). После них, кстати, я какое-то время разочаровалась в своих способности вообще) Хотя все спринтовые задачки решила с легкостью.

В общем, такие качели в сложности. В объяснениях многие вещи хорошо поданы, но в теме с деревьями не очень.

В целом курс рекомендую, но думаю, что некоторые сложные спринты бы хорошо было растянуть на 3 недели. Потому что усталость накапливается и сейчас уже хочется в отпуск после этого курса 😅 (хорошо что он у меня скоро😁) Из плюсов, разобралась в темах, которые до этого сильно отпугивали (например, графы и деревья).

Еще из плюсов, должен быть под конец курса тренировочный собес на алгоритмы. Думаю скоро у меня уже будет, тогда поделюсь как все пройдет.
🔥12👏62👍1😁1