Потраченный код
1.58K subscribers
37 photos
4 files
54 links
Это канал про ИТ | Менторство: codewaste.ru | Отзывы: @codewaste_feedback | Запись: @gardiys_support | Мой аккаунт: @gardiys | Личный канал: @scherbakanton | YouTube: https://www.youtube.com/@codewaste
ИП Щербак А.О.
ОГРНИП 324237500502901
Download Telegram
Шу мертв... ☠️

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

Что теперь есть внутри:
🟢Удобный роудмап с наглядными дедлайнами
🟢Загрузка и просмотр собесов прямо на платформе
🟢Карточки с вопросами из реальных интервью
🟢Встроенная база знаний со всеми нужными статьями

Наша киллер фича - ИИ-анализ собесов. Работает так: менти закидывает запись собеса, а нейронка полностью его потрошит. Она сама оценивает ход разговора, вытаскивает все заданные вопросы и дает подробный фидбек по каждому ответу

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

Как-то так. А если хотите стать разработчиком и пощупать всё это дело вживую - пишите для записи сюда: @gardiys_support
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤3🤔22
⚡️ Запускаем новую рубрику - Вопросы С Собесов!

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

Стек: Python

И первый на очереди вопрос с собеса в Сбер:

«asyncio, threading или multiprocessing — что, когда и зачем?»


Ответ:


asyncio применяю для большого числа I/O-bound операций, когда используемые библиотеки поддерживают async/await: например, HTTP-запросы, работа с БД или обработка множества сетевых соединений. Один поток управляет задачами кооперативно, поэтому нельзя выполнять внутри event loop длительный блокирующий или CPU-bound код.

threading подходит для I/O-bound задач с блокирующими библиотеками, которые нельзя или нецелесообразно заменить на async. Для CPU-bound Python-кода потоки обычно не дают параллелизма из-за GIL, хотя могут быть полезны, если тяжёлая работа выполняется в C-коде, освобождающем GIL.

multiprocessing выбираю для CPU-bound вычислений: отдельные процессы имеют собственный интерпретатор и GIL, поэтому могут использовать несколько ядер. Минусы — более дорогой запуск, передача данных между процессами и необходимость сериализации.

На практике я бы, например, использовал asyncio в FastAPI-сервисе для асинхронных внешних запросов, а тяжёлую обработку данных вынес бы в отдельный процесс или очередь задач.


Пиши свой вариант ответа в комментарии👇
👍21🔥5
ТОП навыков и ключевые слова.pdf
820.8 KB
Почему вы получаете одни отказы, хотя знаете Python? 🧐

Вы отправляете сотни откликов, но в ответ — тишина или автоотказы.

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

Если вас не зовут на интервью, ваши технические навыки ещё никто не проверял. Проблема не в вашем коде, а в том, что алгоритмы и ИИ-фильтры платформ отсеивают вас ещё на этапе автоматического поиска.

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

Внутри — как исправить размытое позиционирование, убрать «информационный шум» из резюме и сделать так, чтобы рынок вас наконец-то увидел.

👀 Видео на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
Потраченный код
ТОП навыков и ключевые слова.pdf
Топ_навыков_и_ключевых_слов_для_Go_разработчика.pdf
843.7 KB
Добавили навыки и ключевые слова для Go-разработчика

Для чего и как использовать рассказал в видео тык
🔥6
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Вопрос:
«Что такое Docker? Для чего он нужен? В чём его преимущества?»

Стек: Python

Ответ:

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

Изоляция: Контейнеры работают независимо и изолированно друг от друга. Никаких конфликтов версий.
Удобство: Контейнер можно поднять одной командой, так как вся среда и инструкции по запуску уже зашиты внутри.
Одинаковая работа везде: Забудешь фразу «а на моём компе всё работало». Контейнер легко и идентично запускается на любых машинах


Пиши свой вариант ответа в комментарии 👇
❤10
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Стек: Go

Вопрос:
«В чем разница между массивом и слайсом?»

Ответ:

Массив (Array) - это структура данных строго фиксированного размера. Его длина определяется при создании и является неотъемлемой частью самого типа (например,
[3]int и [5]int - это два абсолютно разных типа). Массив нельзя изменить в размере после создания.

Слайс (Slice) - это динамический заголовок (обертка), который ссылается на нижележащий базовый массив. Он не хранит данные сам по себе, а содержит только три поля: указатель на первый элемент массива, текущую длину (len) и вместимость (cap). В отличие от массива, слайс может динамически расти в размере (например, при использовании функции
append).

Пиши свой вариант ответа в комментарии 👇
👍5🔥5
Бесконечно учишь Python, но так и не ищешь работу? 🧐

Ты сделал пет-проект и разобрался с FastAPI, но открываешь вакансии - а там требуют Kafka, Kubernetes и микросервисы.

Первая мысль - «я пока не готов, вот ещё немного поучусь, и тогда начну». Но правда в том, что состояния идеальной, стопроцентной готовности к рынку просто не существует.

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

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

👀 Видео на YouTube
❤12👍32
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Стек: Go

Вопрос:
«Как реализовать множество через мапу?»

Ответ:

Его реализуют через мапу, где ключами выступают уникальные элементы множества.
Идиоматичный паттерн — использовать пустую структуру:
map[T]struct{}.

Почему не
map[T]bool? Всё дело в оптимизации. Пустая структура struct{} в Go весит ровно 0 байт. А тип bool занимает 1 байт. Когда в вашем множестве сотни тысяч или миллионы элементов, использование struct{} позволяет сэкономить значительный объем оперативной памяти, при этом сохраняя скорость поиска элемента за О(1).

Пиши свой вариант ответа в комментарии 👇
🔥22❤1
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Вопрос:
«В чём отличие корутин от future и task?»

Стек: Python

Ответ:

Корутина - это объект, возвращаемый асинхронной функцией. Она может выполняться асинхронно, приостанавливать и возобновлять своё выполнение при встрече с ключевым словом await.

Future - это низкоуровневый объект, который представляет собой «обещание» получить результат операции в будущем. Он хранит состояние асинхронной задачи: незавершённое, завершённое с результатом или завершённое с ошибкой. Future используется для передачи результатов между частями асинхронного кода, и его тоже можно ждать через await.

Task - это подкласс Future. Главное отличие в том, что при создании Task вы напрямую планируете выполнение корутины в цикле событий (Event Loop), а её результат уже сохраняется как Future.

💡 Краткий вывод: Корутина описывает логику асинхронных операций (что делать), Future представляет результат этих операций (что получилось), а Task является оберткой, которая планирует и запускает корутину в работу.


Пиши свой вариант ответа в комментарии 👇
❤4👍1
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Стек: Go

Вопрос:
«Как работает sync.WaitGroup и зачем нужен метод Done()?»

Ответ:
sync.WaitGroup - это потокобезопасный счетчик, который нужен для того, чтобы дождаться завершения группы горутин.

Как он работает под капотом:
Add(n) - увеличивает внутренний счетчик на n (обычно вызывается перед запуском горутин).
Done() - уменьшает счетчик на 1. Фактически, под капотом это просто синоним вызова Add(-1). Чаще всего его вызывают через defer внутри самой горутины, чтобы гарантировать уменьшение счетчика при любом исходе.
Wait() — блокирует выполнение текущей горутины (например, main), пока счетчик не опустится до нуля.
Как только все запущенные горутины отработают и вызовут Done(), счетчик станет равен 0, блокировка снимется, и программа продолжит работу.

Пиши свой вариант ответа в комментарии 👇
❤2
Ходишь по техническим собеседованиям, но в ответ получаешь только «к сожалению, мы выбрали другого»? 🧐

Типичный сценарий: сходил на интервью, где-то поплыл, получил отказ. По привычке открыл «топ-500 вопросов», освежил базы данных, пошёл на следующее — и снова всё повторилось.
Проблема в том, что хаотичная зубрёжка теории между собесами ничего не меняет. Ты просто переносишь одни и те же незамеченные ошибки с одной встречи на другую.

В новом видео мы разобрали системный 6-этапный алгоритм подготовки, который превращает любой пройденный собес в понятный план действий:

— Как готовиться под конкретную компанию, а не читать всё подряд
— Зачем записывать встречи через OBS и переводить в текст через Whisper
— Как искать реальные пробелы в знаниях с помощью нейросетей
— Как правильно отрабатывать ошибки на практике и проверять себя перед следующим шагом

👀 Смотреть видео на YouTube
🔥5👍1
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Вопрос:
«Почему нельзя указывать в функции аргумент по умолчанию как пустой изменяемый объект (например, список или словарь)?»

Стек: Python

Ответ:

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

💡 Как делать правильно: использовать None в качестве значения по умолчанию, а внутри тела функции делать проверку и создавать новый пустой список или словарь.


Пиши свой вариант ответа в комментарии 👇
🔥6
⚡️Вопросы с собесов

Сначала отвечай сам и только потом проверяй ответ 👇

Стек: Go

Вопрос:
«В чем главные подводные камни функции append при работе со слайсами?»

Ответ:

Слайс - это лишь «обертка» над базовым массивом. Главный подводный камень заключается в том, что если несколько слайсов ссылаются на один и тот же массив, изменение элементов через один слайс затронет и все остальные.

Но ситуация резко меняется при вызове
append. Если при добавлении элемента текущая вместимость (capacity) слайса превышена, Go выделит в памяти новый массив, скопирует туда данные и добавит новый элемент.

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


Пиши свой вариант ответа в комментарии 👇