Онлайн-стажування на React + Node.js з подальшим працевлаштуванням (подія в архіві)

Відбулось
25 березня 2024 (понеділок)
Дедлайн реєстрації
25 березня 2024
Місце
Online
Вартість
Безкоштовно

Хочеш стати веб-розробником на React та Node.js? Записуйся на безкоштовне онлайн стажування в Radency з можливістю подальшого працевлаштування.

React та Node.js — можливо, найбільш затребувані технології на ринку на даний момент. Напевно, ти вже щось пробував, але інформації забагато, і складно об’єднати це все в своєму коді. Приходь до нас, аби навчитися створювати і фронтенд, і бекенд складних додатків.

Що всередині:

  1. Досвід створення повноцінного фулстек проєкту з нуля в команді. TypeScript, React, Redux, Node.js/NestJS, PostgreSQL, Docker.
    Ось перелік технологій і підходів, досвід роботи з якими ти отримаєш на стажуванні.
  2. Менторство досвідчених розробників — зідзвони, код ревью та фідбек.
  3. Рядок в резюме та класний проєкт в портфоліо.
  4. Найкращих випускників ми працевлаштуємо в Radency.

Це для тебе, якщо ти:

  • Хочеш навчитися створювати складні веб додатки.
  • Розбираєшся в технологіях React, Node.js, TypeScript.
  • Вже пробував писати веб додатки, і в тебе щось виходило.
  • Готовий вкласти багато часу в свій розвиток (Мінімум 8 годин на день протягом місяця), аби стати професіоналом.
  • Маєш вищу технічну освіту або ще навчаєшся на ІТ спеціальності.
  • Володієш базовою розмовною англійською.

Як потрапити до нас:

  1. Ми даємо тобі тестове завдання на JS.
  2. Якщо завдання зроблене ок, додаємо в загальний slack стажування. Далі ти отримуєш завдання на розробку індивідуального проєкту, який буде складатись з двох етапів — базової і розширеної версії. Це буде твоя підготовка до командного проєкту.
  3. Якщо впораєшся добре, проводимо інтерв’ю. І вуаля — ти з нами.

Реєструйся за посиланням: forms.gle/uFcLnSbmg6A83EgH7

Дати стажування: 15.04 — 17.05.2024

Реєстрація триватиме до 25.03.2024

Підписуйтеся на Telegram-канал @junior_dou_ua, щоб дізнаватися про найактуальніші можливості для початківців.

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Доброго дня, я пройшла 1й єтап 25.03, висвітилось повідомлення, що успішно пройдено очікуйте на 2й єтап, листа на пошту не було, я самостійно написала лист — теж відповіді не було. Як отримати доступ до 2го єтапу?

вас должны в слак канал добавить. Там простое приложение тудушка, так шё не переживайте...

На жаль виникли обставини. Залишив третю останню спробу на кінець. Але сьогодні спробував і довго думала і не дала ніякого результату. Чи можна узнати в чому причина?

Андрію, вітаю! Ви скористалися останньою спробою вчора (26.03), а дедлайн набору був 25.03. Думаю, причина в цьому.

Хлопєц знизу, у мене пройшов тест на 115

Спасибо, бо жалко попытки палить, их там только 3...

Хлопцы еще такое запытанячко, так что нужно возвращать, 42 или 115? Вопрос к тем у кого тесты все прошли... Извините за глупый вопрос.

Останні дні розбирався як інтегрувати усі ці бібліотеки останніх версій тулкітів, роутерів і т.д. разом, і навіть ще до rtkquery не дійшов, а тут тобі якась гора і клітинки. Це мені щось нагадує оті шкільні і університетські задачі які я потім ніколи в житті не використовував.
Напевне я пас щодо цих курсів. Там і так вистачає головного болю з 100500 бібліотеками.

Кусайся бодайся, но никогда не сдавайся! Тем более хлопцы, там уже готовое решение выложили. Честно, код я не до конца понял, но знающие люди вроде сказали что норм...Зайюзайте и айда! Мой бы код кто то прокомментировал, там все норм, или нужно что то исправить?

Та це завдання для тих хто натренований на таких задачках) Я цей хитромудрий цикл за дві години точно не додумав би, у мене були думки щодо рекурсій, генераторів і бінарних чисел і бінарних операцій. Так що чесно скажу що не впорався, а шкода зараз би попрактикуватись з якимось додатком. Піду далі курити документації redux і router, успіхів усім

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

Я графи і їх обходи не вивчав, і взагалі алгоритми розглядав тільки поверхово, хотів згори перебрати масив, а згори треба або якісь лічильники ще додавати, або генератор напевне. Якщо роботодавець вказує цю вимогу то для чогось їм те потрібно і я їм не підходжу. Чесно кажучи в голові утримати весь масив інформації по фронту і бекенду з купою бібліотек і так важко, почекаю простіших вимог і займуся поки власним проектом

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

Вивчаю все сам) Програмування в університеті було символічне під інженерні задачі. Хоча мій додаток приносить невеликий прибуток, але думаю в компанії працювати мій рівень недостатній. Та й вимоги виросли ніж колись, в іншій сфері сходу 30к білої ЗП пропонують, а тут і безкоштовно не влаштуєшся))) Навіть і не знаю чи є взагалі в мене шанси)

Еще такой вопрос хлопцы, если я правильно понял на тесты будут валиться на всем кроме 115. Если кто сделал, можете подсказать?

Обход графа для задачи спуска с горы

Задача:

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

Граф:

Граф, который представляет собой гору,можно представить как матрицу смежности.
В этой матрице:

Строки и столбцы соответствуют вершинам графа (клеткам на горе).
Значение на пересечении строки i и столбца j равно разнице высот между клетками i и j, если они являются соседями, и Infinity, если они не являются соседями.

Пример:

Для графа с параметрами [[6],[7,10],[12,11,9],[90,25,13,14]]
матрица смежности будет иметь следующий вид:

[
[0, 1, 6, 84],
[1, 0, 5, 83],
[6, 5, 0, 77],
[84, 83, 77, 0]
]

Алгоритм:

Для нахождения максимально возможного количества очков
можно использовать алгоритм Дийкстры.
Этот алгоритм находит кратчайший путь
от одной вершины графа до другой.

Обход графа:

Начальная вершина:
Начинаем обход с вершины 0 (первая клетка на горе).

Поиск соседних вершин:

Для каждой соседней вершины j вычисляем приведенную высоту:

reducedHeight = height[i] — adjacencyMatrix[i][j]

Сохраняем найденные приведенные высоты вместе с вершинами в очередь приоритетов. Очередь приоритетов должна быть отсортирована по возрастанию приведенных высот.

Итерация:

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

Математика:

Матрица смежности:

A = [
[0, a_12, ..., a_1n],
[a_21, 0, ..., a_2n],
...,
[a_n1, a_n2, ..., 0]
]

Приведенная высота:

reducedHeight = height[i] — a_ij

Длина пути:

pathLength = sum(a_ij) for all edges (i, j) in the path

Максимальное количество очков:

maxPoints = height[0] — minPathLength

Результат:

При применении алгоритма Дейкстры к графу
с параметрами [[6],[7,10],[12,11,9],[90,25,13,14]]
будет получен кратчайший путь от вершины 0
до вершины 3.
Длина этого пути будет равна 112.
Максимальное количество очков
будет равно 6 — 112 = −106.
Необходимо  отметить, что в данном примере максимальное количество очков является отрицательным. Это означает, что спуск с горы невозможен без потери очков.  Вопрос, что это за число 42? Максимальное количество очков, которе должно быть получено во время спуска с горы должно быть равно 42 Можете пояснить, возможно я не совсем правильно понял условия задания?function findPatch(mountain){return42}

ви кудись не туди заїхали, у вас вже в завданні вказано «набір гори» і який правильний результат для неї, і 2 приклади розрахунку для неї, один неправильний один правильний.

Это просто начальный код — function findPatch(mountain){return42} . 42 — просто рандомное число. Вернуть нужно правильный результат и для массива [[6],[7,10],[12,11,9],[90,25,13,14]] он равен 115.

Спасибо, дело в том хлопцы, но при анализе путей важно учитывать не только высоту вершин, но и разницу высот между ними. В данном примере путь 0-2-3. Путь 0-2-3 является оптимальным и максимизирует набор очков. Набор очков для пути 0-2-3 составляет 42.путь 6,7,12,90. Он не является оптимальным, т.к. содержит крутой спуск с высоты 90. Я думал в этом дело...

Если вернуть 115 код тесты проходит?

звичайно ні бо там з десяток тестів

Обычно оно выводит на каких значениях падает, можете сделать скрин, что бы числа были видны?

це все що вивело, ти закидуєш внутряк функції, return що треба і оце тобі показує, в мене просто нічого не впало. а нову спробу вже недає

а почему у меня всего одна галочка, а у вас 10? prnt.sc/Ka0oBZM3zoz0

У вас обзор просто закрыт попуп окном.

вроде написал, хлопцы, можете покритиковать jsfiddle.net/Sevgen/gz8ecxw0/1

Так вы отправляли это решение?

Жду пока хлопцы отзывы напишут, если что не так...

Там есть 3 попытки, думаю одну можна потратить и узнать правильное ли решение))

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

зато вот тесты написал, поэтому про числа и спрашивал:

function testFindPath() {
const mountain = [
[6],
[7, 10],
[12, 11, 9],
[90, 25, 13, 14]
];

const expected = 115; // Очікуваний результат

const actual = findPath(mountain);

if (actual === expected) {
console.log("Тест пройшов успішно! Результат:", actual);
} else {
console.error("Тест не пройшов. Очікуваний результат:“, expected, “Отриманий результат:”, actual);
}
}

testFindPath();

Вітаю, а коли відправляєте початкове тестове?
Все, знайшов проблему)

Вітаю. Не зовсім зрозуміло. На сусідні ступеньки — це лише 0 та останнній індекс? Бокові сторони трикутника?

Если я правильно понял, то для графа [[6], [7, 10], [12, 11, 9], [90, 25, 13, 14]]
При использовании алгоритм поиска пути с учетом набора очков будет получен путь 0-2-3
с максимальным количеством очков 42.
Сложность алгоритма:
Время: O(E log V), где E — количество ребер, V — количество вершин.
Память: O(V^2).

вот математика:
Расчет набора очков для пути 0-2-3

1. Высота вершин:

h(v_0) = 6
h(v_1) = 7
h(v_2) = 12
h(v_3) = 90

2. Разница высот:

a(v_0, v_1) = h(v_0) — h(v_1) = 6 — 7 = −1
a(v_1, v_2) = h(v_1) — h(v_2) = 7 — 12 = −5
a(v_2, v_3) = h(v_2) — h(v_3) = 12 — 90 = −78

3. Набор очков:

s(v_0) = h(v_0) = 6
s(v_1) = s(v_0) + a(v_0, v_1) = 6 — 1 = 5
s(v_2) = s(v_1) + a(v_1, v_2) = 5 — 5 = 0
s(v_3) = s(v_2) + a(v_2, v_3) = 0 — 78 = −78

4. Путь:

P(v_3) = (v_0, v_2, v_3)

5. Набор очков для пути:

s(v_3) = h(v_0) — sum(a(u, v) for all (u, v) in P(v_3))
s(v_3) = 6 — (-1 — 5 — 78) = 42
хлопцы не кидайте сильно помидорами за псевдокод, бо я со 122, а не с 113, написал как мог, если шё не так дайте знать!

const arr = [[a],[b,c],[d,e,f],[g,h,i,j]];
Может так будет понятнее:
[
[a],
[b,c],
[d,e,f]
[g,h,i,j] ]
Т.е. ближайшие — свой индекс или следующий +1
Для b(индекс — 0) ближайшие — d(индекс — 0) и e(индекс — 1).
Для c(индекс — 1) ближайшие — e(индекс — 1) и f(индекс — 2).
И так далее.

Получается, что это задача поиска гамильтонового пути, причём она NP-полная? Если нужен точный алгоритм при небольшом (максимум в районе 20) количестве вершин, то есть решение с помощью динамического программирования, который работает быстрее перебора: codeforces.ru/blog/entry/337
При кол-ве вершин 1000 и более задача лучше решаеться с использованием приближенными (жадными, «муравьиными») алгоритмами?: например как описано тут habrahabr.ru/post/160077

це завдання для трейнішок, я сумніваюся що завдання потребує глибоких знань алгоритмів, мені просто цікаво ви пробуєте робити завдання чи просто цікавитесь?)

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

Вы имеете ввиду для решения данной задачи насчитаем высоту каждой горы и сохраним её в массиве h[], где h[j] равно высоте j-й горы. Для этого обойдём заданную матрицу, и, если элемент, стоящий в строке i и в столбце j (строки и столбцы 0-индексированы), равен звёздочке, обновим высоту j-й горы: h[j] = max(h[j], n — i). Осталось просто проитерироваться по столбцам от 0 до m — 2 включительно и, если текущий столбец равен j, обновить величину максимального подъёма или максимального спуска величиной |h[j + 1] — h[j]|.

Получилось помоему, проще чем вы предлагате
.function maxPathSum(triangle) {
if (!triangle || triangle.length === 0) return 0;

// Починаємо з другого рядка трикутника
for (let i = triangle.length — 2; i >= 0; i—) {
for (let j = 0; j < triangle[i].length; j++) {
// Обираємо максимум з двох можливих шляхів вниз
triangle[i][j] += Math.max(triangle[i + 1][j], triangle[i + 1][j + 1]);
}
}

// Вершина трикутника містить максимальну суму
return triangle[0][0];
}

// Приклад:
const triangle = [
[6],
[7, 10],
[12, 11, 9],
[90, 25, 13, 14]
];

console.log(maxPathSum(triangle)); // Результат: 115

А вот тесты, как у студента,моделирующие поведение программы для различных случаев, просили различные цифры, так вот они .
function runTests() {
// Тести
const tests = [
{
input: [[6], [7, 10], [12, 11, 9], [90, 25, 13, 14]],
expected: 115
},
{
input: [[1], [2, 3], [4, 5, 6], [7, 8, 9, 10]],
expected: 20
},
{
input: [[1]],
expected: 1
}
];

tests.forEach((test, index) => {
const result = maxPathSum(test.input);
console.log(`Test ${index + 1}: ${result === test.expected ? ’Passed’ : ’Failed’}`);
});
}

runTests();

Круто. У меня было подобное решение. В предыдущем комментарии я показал один и тот же массив, но изменив его представление, чтобы человек мог понять какие ступеньки являются соседними))

Нашел ошибку, перед словом

.function

удалите точку.

Підписатись на коментарі