C/C++ | LeetCode
Kanalga Telegram’da o‘tish
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish3 204
Obunachilar
+124 soatlar
-57 kun
-2630 kun
Postlar arxiv
3 205
#easy
Задача: 746. Min Cost Climbing Stairs
Вам дан целочисленный массив cost, где cost[i] - стоимость i-й ступеньки на лестнице. После оплаты стоимости вы можете подняться на одну или две ступеньки. Вы можете начать со ступеньки с индексом 0 или со ступеньки с индексом 1. Верните минимальную стоимость достижения вершины этажа.
Пример:
Input: cost = [10,15,20] Output: 15👨💻 Алгоритм: 1⃣Создать массив dp, где dp[i] хранит минимальную стоимость достижения i-й ступеньки. 2⃣Инициализировать dp[0] и dp[1] как cost[0] и cost[1] соответственно. Заполнить dp используя минимальную стоимость подъема с предыдущих ступенек. 3⃣Вернуть минимальную стоимость достижения вершины. 😎 Решение:
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n = cost.size();
vector<int> dp = cost;
for (int i = 2; i < n; i++) {
dp[i] += min(dp[i - 1], dp[i - 2]);
}
return min(dp[n - 1], dp[n - 2]);
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
UserGate Open Conf 17 / 04 / 2025
⚡ ИТ-конференция про защиту в открытую.
Здесь мы создаем площадку для открытого диалога между заказчиками, партнерами, экспертами и специалистами в сфере продуктов, технологий и услуг информационной безопасности.
Что мы готовим для вас:
- аналитические данные исследования рынка информационной безопасности;
- обзор новых видов и эволюции киберугроз с разбором кейсов по борьбе с ними;
- планы внедрения новых фич и обновлений продуктов экосистемы UserGate;
- 30+ продуктовых, партнерских и клиентских докладов;
- нетворкинг, продуктовые демо, обмен опытом и консультации экспертов ИБ;
- ответы на любые вопросы и сбор обратной связи о работе продуктов и устройств UserGate.
Зарегистрироваться
#реклама
openconf.usergate.com
О рекламодателе
3 205
#hard
Задача: 745. Prefix and Suffix Search
Создайте специальный словарь, в котором поиск слов осуществляется по префиксу и суффиксу. Реализуйте класс WordFilter: WordFilter(string[] words) Инициализирует объект со словами в словаре. f(string pref, string suff) Возвращает индекс слова в словаре, которое имеет префикс pref и суффикс suff. Если существует более одного допустимого индекса, возвращается наибольший из них. Если в словаре нет такого слова, возвращается -1.
Пример:
Input: letters = ["c","f","j"], target = "a" Output: "c"👨💻 Алгоритм: 1⃣Сохраните слова и их индексы в словаре. 2⃣Создайте объединенные ключи, состоящие из префиксов и суффиксов для всех возможных комбинаций. 3⃣Реализуйте функцию поиска, которая ищет наибольший индекс слова по префиксу и суффиксу. 😎 Решение:
class WordFilter {
public:
WordFilter(vector<string>& words) {
for (int index = 0; index < words.size(); ++index) {
string word = words[index];
int length = word.length();
for (int prefixLength = 1; prefixLength <= length; ++prefixLength) {
for (int suffixLength = 1; suffixLength <= length; ++suffixLength) {
string prefix = word.substr(0, prefixLength);
string suffix = word.substr(length - suffixLength);
string key = prefix + "#" + suffix;
prefixSuffixMap[key] = index;
}
}
}
}
int f(string pref, string suff) {
string key = pref + "#" + suff;
return prefixSuffixMap.count(key) ? prefixSuffixMap[key] : -1;
}
private:
unordered_map<string, int> prefixSuffixMap;
};
Ставь 👍 и забирай 📚 Базу знаний3 205
Реальный кейс: создание REST API движка на С++
История, полная ошибок и боли белорусских разработчиков, которая поможет вам избежать типичных проблем при создании REST API.
Узнайте, стал ли этот проект успешным, на бесплатном вебинаре «Движок REST API на C++. Кейс компании СКБ Радиотехпроект (SKB RTP)».
Разберём:
1. Зачем писать свой движок REST
2. Swagger в C++ как fail
3. Почему Rest это не просто url — это философия
📆Когда: 25 марта в 19:00
Спикер: Юрий Вашинко, Tech Lead/Lead Developer
👉 Занять место на вебинаре — через бота.
В конце вебинара — подарок🎁
Вебинар проходит в рамках курса «Разработчик С++20».
#реклама
О рекламодателе
erid: 2W5zFHDLWYp
3 205
Системный администратор Linux с нуля
Бесплатный курс от Selectel
Старт — 1 марта
Освойте администрирование Linux на SelectOS.
После курса вы сможете:
- управлять инфраструктурой на базе Linux;
- работать с командной строкой и основными утилитами;
- управлять пользователями, файлами и правами доступа;
- настраивать сети, SSH-соединения и мониторинг системы;
- управлять пакетами и обновлениями программного обеспечения;
- анализировать логи и устранять инциденты.
Смотреть
#реклама 16+
promo.selectel.ru
О рекламодателе
3 205
#easy
Задача: 1360. Number of Days Between Two Dates
Напишите программу для подсчета количества дней между двумя датами.
Даты даны в виде строк в формате YYYY-MM-DD, как показано в примерах.
Пример:
Input: date1 = "2019-06-29", date2 = "2019-06-30" Output: 1👨💻 Алгоритм: 1⃣Преобразование строк в даты Используйте встроенные функции для преобразования строковых представлений дат в объекты дат. 2⃣Вычисление разницы в днях Вычислите разницу между двумя объектами дат в днях. 3⃣Возвращение результата Верните абсолютное значение разницы в днях для получения положительного числа. 😎 Решение:
#include <iostream>
#include <string>
#include <cmath>
#include <ctime>
class Solution {
public:
int daysBetweenDates(std::string date1, std::string date2) {
std::tm tm1 = {}, tm2 = {};
strptime(date1.c_str(), "%Y-%m-%d", &tm1);
strptime(date2.c_str(), "%Y-%m-%d", &tm2);
std::time_t time1 = std::mktime(&tm1);
std::time_t time2 = std::mktime(&tm2);
return std::abs((time2 - time1) / (60 * 60 * 24));
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
#easy
Задача: 744. Find Smallest Letter Greater Than Target
Нам дан массив символов letters, отсортированный в неубывающем порядке, и символ target. В массиве letters есть как минимум два разных символа. Возвращается наименьший символ в letters, который лексикографически больше target. Если такого символа не существует, возвращается первый символ в буквах.
Пример:
Input: letters = ["c","f","j"], target = "a" Output: "c"👨💻 Алгоритм: 1⃣Использовать бинарный поиск для нахождения позиции первого символа в letters, который лексикографически больше target. 2⃣Если найденный символ существует, вернуть его. 3⃣Если такого символа не существует, вернуть первый символ в letters. 😎 Решение:
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
int left = 0, right = letters.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (letters[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return letters[left % letters.size()];
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
Курс по Java-разработке с junior до middle
Несколько фактов о нашем курсе:
- личный ментор/наставник;
- помогаем решать твои текущие задачи;
- доучиваем после онлайн-школы;
- ведем от уровня junior до middle
Уже во время обучения наши ученики зарабатывают от 60 000 рублей.
Хватит тратить деньги, покупая не оправдывающие себя курсы
Забронируй курс по специальной цене!
Узнать больше
#реклама 16+
ykul.ru
О рекламодателе
3 205
#medium
Задача: 743. Network Delay Time
Дана сеть из узлов, помеченных от 1 до n. Также дано times - список времен прохождения сигнала в виде направленных ребер times[i] = (ui, vi, wi), где ui - исходный узел, vi - целевой узел, а wi - время прохождения сигнала от источника до цели. Мы пошлем сигнал из заданного узла k. Верните минимальное время, которое потребуется всем узлам, чтобы получить сигнал. Если все узлы не могут получить сигнал, верните -1.
Пример:
Input: times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2 Output: 2👨💻 Алгоритм: 1⃣Представьте граф в виде списка смежности. 2⃣Используйте алгоритм Дейкстры для нахождения кратчайших путей от узла k до всех других узлов. 3⃣Найдите максимальное значение среди кратчайших путей к узлам. Если какой-либо узел недостижим, верните -1. 😎 Решение:
class Solution {
public:
int networkDelayTime(vector<vector<int>>& times, int n, int k) {
unordered_map<int, vector<pair<int, int>>> graph;
for (int i = 1; i <= n; ++i) {
graph[i] = vector<pair<int, int>>();
}
for (auto& time : times) {
graph[time[0]].emplace_back(time[1], time[2]);
}
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> minHeap;
minHeap.emplace(0, k);
unordered_map<int, int> minTime;
for (int i = 1; i <= n; ++i) {
minTime[i] = INT_MAX;
}
minTime[k] = 0;
while (!minHeap.empty()) {
auto [time, node] = minHeap.top(); minHeap.pop();
for (auto& [neighbor, t] : graph[node]) {
int newTime = time + t;
if (newTime < minTime[neighbor]) {
minTime[neighbor] = newTime;
minHeap.emplace(newTime, neighbor);
}
}
}
int maxTime = *max_element(minTime.begin(), minTime.end());
return maxTime == INT_MAX ? -1 : maxTime;
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
Крупнейший университет искусственного интеллекта
Временные ряды — это данные, упорядоченные во времени, например, трафик на дорогах, изменения температуры или спрос на товары. С помощью AI можно предсказывать тренды, выявлять аномалии и оптимизировать процессы.
Получите полный доступ к курсу по временным рядам на сайте. Это абсолютно бесплатно.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя среди наших студентов!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
3 205
#medium
Задача: 742. Closest Leaf in a Binary Tree
Если задан корень бинарного дерева, в котором каждый узел имеет уникальное значение, а также задано целое число k, верните значение ближайшего к цели k узла листа дерева. Ближайший к листу узел означает наименьшее количество ребер, пройденных бинарным деревом, чтобы достичь любого листа дерева. Кроме того, узел называется листом, если у него нет дочерних узлов.
Пример:
Input: root = [1,3,2], k = 1 Output: 2👨💻 Алгоритм: 1⃣Пройдите дерево, чтобы найти путь от корня до узла k и сохранить его в список. 2⃣Найдите все листья и минимальное расстояние до них, используя BFS, начиная с найденного узла k. 3⃣Верните значение ближайшего листа. 😎 Решение:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
int findClosestLeaf(TreeNode* root, int k) {
vector<TreeNode*> path;
unordered_map<TreeNode*, int> leaves;
findPath(root, k, path);
findLeaves(root, leaves);
queue<pair<TreeNode*, int>> q;
q.push({path.back(), 0});
set<TreeNode*> visited;
while (!q.empty()) {
auto [node, dist] = q.front(); q.pop();
if (leaves.count(node)) return node->val;
visited.insert(node);
if (node->left && !visited.count(node->left)) q.push({node->left, dist + 1});
if (node->right && !visited.count(node->right)) q.push({node->right, dist + 1});
if (path.size() > 1) q.push({path.back(), dist + 1}), path.pop_back();
}
return -1;
}
private:
bool findPath(TreeNode* node, int k, vector<TreeNode*>& path) {
if (!node) return false;
path.push_back(node);
if (node->val == k) return true;
if (findPath(node->left, k, path) || findPath(node->right, k, path)) return true;
path.pop_back();
return false;
}
void findLeaves(TreeNode* node, unordered_map<TreeNode*, int>& leaves) {
if (!node) return;
if (!node->left && !node->right) leaves[node] = 0;
findLeaves(node->left, leaves);
findLeaves(node->right, leaves);
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
Крупнейший университет искусственного интеллекта
Учим использовать ChatGPT в профессиональных целях, создавать нейро-сотрудников и зарабатывать на искусственном интеллекте.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя в наших рядах!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
3 205
#hard
Задача: 741. Cherry Pickup
Вам дана сетка n x n, представляющая поле вишен. Каждая клетка - одно из трех возможных целых чисел. 0 означает, что клетка пуста, и вы можете пройти через нее, 1 означает, что клетка содержит вишню, которую вы можете сорвать и пройти через нее, или -1 означает, что клетка содержит шип, который преграждает вам путь. Верните максимальное количество вишен, которое вы можете собрать, следуя следующим правилам: Начиная с позиции (0, 0) и достигая (n - 1, n - 1) путем перемещения вправо или вниз через допустимые клетки пути (клетки со значением 0 или 1).
После достижения (n - 1, n - 1) вернитесь в (0, 0), двигаясь влево или вверх по клеткам с действительными путями. Проходя через клетку пути, содержащую вишню, вы поднимаете ее, и клетка становится пустой клеткой 0. Если между (0, 0) и (n - 1, n - 1) нет действительного пути, то вишни собрать нельзя.
Пример:
Input: grid = [[0,1,-1],[1,0,-1],[1,1,1]] Output: 5👨💻 Алгоритм: 1⃣Используйте динамическое программирование для подсчета максимального количества вишен, которые можно собрать при движении от (0, 0) до (n - 1, n - 1). 2⃣Примените еще один проход с использованием динамического программирования для движения обратно от (n - 1, n - 1) до (0, 0), чтобы учитывать вишни, собранные на обратном пути. 3⃣Объедините результаты двух проходов, чтобы найти максимальное количество вишен, которые можно собрать. 😎 Решение:
class Solution {
public:
int cherryPickup(vector<vector<int>>& grid) {
int n = grid.size();
vector<vector<vector<int>>> dp(n, vector<vector<int>>(n, vector<int>(2 * n - 1, INT_MIN)));
dp[0][0][0] = grid[0][0];
for (int k = 1; k < 2 * n - 1; ++k) {
for (int i1 = max(0, k - n + 1); i1 <= min(n - 1, k); ++i1) {
for (int i2 = max(0, k - n + 1); i2 <= min(n - 1, k); ++i2) {
int j1 = k - i1, j2 = k - i2;
if (j1 < n && j2 < n && grid[i1][j1] != -1 && grid[i2][j2] != -1) {
int maxCherries = INT_MIN;
if (i1 > 0 && i2 > 0) maxCherries = max(maxCherries, dp[i1 - 1][i2 - 1][k - 1]);
if (i1 > 0) maxCherries = max(maxCherries, dp[i1 - 1][i2][k - 1]);
if (i2 > 0) maxCherries = max(maxCherries, dp[i1][i2 - 1][k - 1]);
maxCherries = max(maxCherries, dp[i1][i2][k - 1]);
if (maxCherries != INT_MIN) {
dp[i1][i2][k] = maxCherries + grid[i1][j1];
if (i1 != i2) dp[i1][i2][k] += grid[i2][j2];
}
}
}
}
}
return max(0, dp[n - 1][n - 1][2 * (n - 1)]);
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
#medium
Задача: 740. Delete and Earn
Вам дан целочисленный массив nums. Вы хотите максимизировать количество очков, выполнив следующую операцию любое количество раз: Выберите любой элемент nums[i] и удалите его, чтобы заработать nums[i] очков. После этого вы должны удалить каждый элемент, равный nums[i] - 1, и каждый элемент, равный nums[i] + 1. Верните максимальное количество очков, которое вы можете заработать, применив вышеуказанную операцию некоторое количество раз.
Пример:
Input: nums = [3,4,2] Output: 6👨💻 Алгоритм: 1⃣Подсчитайте количество каждого числа в массиве nums. 2⃣Используйте динамическое программирование для расчета максимальных очков, которые можно заработать, используя накопленный результат для чисел, меньших текущего. Добавьте текущий день в стек. 3⃣Для каждого числа num в nums, учитывайте два случая: не брать число или взять число и добавить его очки. 😎 Решение:
class Solution {
public:
int deleteAndEarn(vector<int>& nums) {
unordered_map<int, int> count;
for (int num : nums) {
count[num]++;
}
vector<int> uniqueNums;
for (const auto& p : count) {
uniqueNums.push_back(p.first);
}
sort(uniqueNums.begin(), uniqueNums.end());
int avoid = 0, using = 0, prev = -1;
for (int num : uniqueNums) {
if (num - 1 != prev) {
int newAvoid = max(avoid, using);
using = num * count[num] + max(avoid, using);
avoid = newAvoid;
} else {
int newAvoid = max(avoid, using);
using = num * count[num] + avoid;
avoid = newAvoid;
}
prev = num;
}
return max(avoid, using);
}
};et(num) + Math.max(avoid, using);
avoid = newAvoid;
} else {
int newAvoid = Math.max(avoid, using);
using = num * count.get(num) + avoid;
avoid = newAvoid;
}
prev = num;
}
return Math.max(avoid, using);
}
}
Ставь 👍 и забирай 📚 Базу знаний3 205
Самое время создать и продвинуть свой сайт!
💻Веб-студия "ADM" - лаборатория, где разрабатываются методики, за счет которых путь к успеху будет быстрым, не дорогим, а главное - быстроокупаемым💰. Наши знания и 10 летний опыт работы помогут создать проект, приносящий прибыть с первого дня.⚡
⚡Скидка по промокоду TELEGRAM 10% на все услуги!⚡
Услуги
- разработка корпоративных сайтов, интернет-магазинов, информационных порталы, лендингов,
- seo-продвижение,
- контекстная реклама,
- разработка логотипов,
- веб-доработка,
- хостинг,
- настройки всех видов интернет рекламы,
- бренд-буки,
- разработка каталога,
- разработка фирменного стиля.
https://adm-lab.ru
Узнать больше
#реклама
adm-lab.ru
О рекламодателе
3 205
#medium
Задача: 739. Daily Temperatures
Задав массив целых чисел temperature, представляющих дневные температуры, верните массив answer, такой, что answer[i] - это количество дней, которые нужно подождать после i-го дня, чтобы температура стала теплее. Если в будущем не существует дня, для которого это возможно, сохраните answer[i] == 0.
Пример:
Input: temperatures = [73,74,75,71,69,72,76,73] Output: [1,1,4,2,1,1,0,0]👨💻 Алгоритм: 1⃣Создайте стек для хранения индексов дней с температурами, для которых еще не найден более теплый день. 2⃣Пройдите по массиву температур и для каждого дня: Пока текущая температура больше температуры дня на вершине стека, обновляйте массив ответов и удаляйте вершину стека. Добавьте текущий день в стек. 3⃣Возвращайте массив ответов. 😎 Решение:
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
int n = T.size();
vector<int> answer(n, 0);
stack<int> stack;
for (int i = 0; i < n; i++) {
while (!stack.empty() && T[i] > T[stack.top()]) {
int j = stack.top();
stack.pop();
answer[j] = i - j;
}
stack.push(i);
}
return answer;
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
#medium
Задача: 738. Monotone Increasing Digits
Целое число имеет монотонно возрастающие цифры тогда и только тогда, когда каждая пара соседних цифр x и y удовлетворяет x <= y. Задав целое число n, верните наибольшее число, которое меньше или равно n с монотонно возрастающими цифрами.
Пример:
Input: n = 10 Output: 9👨💻 Алгоритм: 1⃣Преобразуйте число в строку для удобства обработки. 2⃣Найдите позицию, где последовательность перестает быть монотонной. 3⃣Уменьшите соответствующую цифру и установите все последующие цифры в 9. 😎 Решение:
class Solution {
public:
int monotoneIncreasingDigits(int N) {
string digits = to_string(N);
int marker = digits.size();
for (int i = digits.size() - 1; i > 0; i--) {
if (digits[i] < digits[i - 1]) {
marker = i;
digits[i - 1]--;
}
}
for (int i = marker; i < digits.size(); i++) {
digits[i] = '9';
}
return stoi(digits);
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
Узнайте, какая профессия в IT вам подходит. Бесплатно!
Пройдите тест на профессию и забирайте:
✅ Бесплатную карьерную консультацию с экспертом
✅ Доступ к чат-боту с гайдами по профессиям и заданиями для самопроверки
✅ Мини-курсы для погружения в IT и дизайн, чтобы точнее выбрать направление
✨130 000 человек уже прошли профтестирование и выбрали перспективную профессию в IT или дизайне
Пройдите тест за 5 минут!
Начать
#реклама 16+
free.skillfactory.ru
О рекламодателе
3 205
#medium
Задача: 737. Sentence Similarity II
Мы можем представить предложение в виде массива слов, например, предложение "I am happy with leetcode" можно представить как arr = ["I", "am",happy", "with", "leetcode"].
Даны два предложения sentence1 и sentence2, каждое из которых представлено в виде массива строк, и массив пар строк similarPairs, где similarPairs[i] = [xi, yi] указывает, что два слова xi и yi похожи. Возвращается true, если предложения sentence1 и sentence2 похожи, или false, если они не похожи. Два предложения похожи, если: у них одинаковая длина (т.е, Заметьте, что слово всегда похоже само на себя, также обратите внимание, что отношение сходства является транзитивным. Например, если слова a и b похожи, а слова b и c похожи, то a и c похожи.
Пример:
Input: sentence1 = ["great","acting","skills"], sentence2 = ["fine","drama","talent"], similarPairs = [["great","good"],["fine","good"],["drama","acting"],["skills","talent"]] Output: true👨💻 Алгоритм: 1⃣Проверить, одинаковой ли длины предложения sentence1 и sentence2. Если нет, вернуть false. 2⃣Построить граф схожести слов с использованием словаря. 3⃣Использовать поиск в глубину (DFS) для проверки транзитивной схожести слов в предложениях. 😎 Решение:
class Solution {
public:
bool areSentencesSimilar(vector<string>& sentence1, vector<string>& sentence2, vector<vector<string>>& similarPairs) {
if (sentence1.size() != sentence2.size()) {
return false;
}
unordered_map<string, vector<string>> graph;
for (const auto& pair : similarPairs) {
graph[pair[0]].push_back(pair[1]);
graph[pair[1]].push_back(pair[0]);
}
for (size_t i = 0; i < sentence1.size(); ++i) {
if (sentence1[i] != sentence2[i] && !dfs(sentence1[i], sentence2[i], graph, unordered_set<string>())) {
return false;
}
}
return true;
}
private:
bool dfs(const string& word1, const string& word2, unordered_map<string, vector<string>>& graph, unordered_set<string> visited) {
if (word1 == word2) {
return true;
}
visited.insert(word1);
for (const string& neighbor : graph[word1]) {
if (visited.find(neighbor) == visited.end() && dfs(neighbor, word2, graph, visited)) {
return true;
}
}
return false;
}
};
Ставь 👍 и забирай 📚 Базу знаний3 205
Ты готов к ИТ-собеседованию?
Бесплатный воркшоп 20 марта
Приглашаем айтишников на воркшоп "Искусство продавать себя или как подготовиться к собесу на все 100"
Рекрутер раскроет все карты! Записывайся на воркшоп, чтобы первым узнать:
— Как подготовиться к собеседованию
— Как презентовать свой опыт так, чтобы тебя запомнили
— Как проверяют hard skills и как к этому подготовиться
— Как произвести хорошее впечатление, запомниться рекрутеру и сделать так, чтобы захотели работать именно с тобой
Дата: 20 марта, 18:00
Где: Онлайн
Регистрируйся, чтобы получить полезные знания и быть готовым к следующему собеседованию на 100%
Зарегистрироваться
#реклама 16+
my.mts-link.ru
О рекламодателе
