YeaHub Tech
412 subscribers
343 photos
15 videos
2 files
449 links
Новые технологии, советы и обучающие материалы

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
🧑‍💻 5 сложных вопросов для Python разработчиков

1. Как избежать утечек памяти в Python-приложениях?
Утечки памяти в Python чаще всего связаны с удержанием ссылок на объекты. Нужно следить за глобальными структурами, кэшами и замыканиями. Важно корректно закрывать ресурсы и использовать контекстные менеджеры. Регулярный мониторинг памяти помогает выявлять проблемы рано. Сам по себе сборщик мусора не гарантирует отсутствие утечек.

2. Что делать, если один из параллельных процессов не завершился успешно?
Сначала нужно определить, является ли ошибка критичной для всего процесса. Далее либо останавливают остальные задачи, либо продолжают работу в деградированном режиме. Часто применяют таймауты и retry. Важно зафиксировать состояние и причину сбоя. Поведение должно быть заранее определено архитектурой.

3. Какие риски возникают при проектировании универсальных endpoint’ов?
Универсальные endpoint’ы выглядят гибко, но быстро теряют прозрачность. Они усложняют валидацию, документацию и тестирование. Поведение становится зависимым от множества флагов и параметров. Ошибки труднее диагностировать, а изменения чаще становятся breaking. В итоге поддержка такого API дороже, чем у специализированных endpoint’ов.

4. Как вы бы организовали взаимодействие backend-сервиса с ML-моделью?
Обычно ML-модель выносят в отдельный сервис с чётким API. Backend обращается к нему синхронно или асинхронно в зависимости от latency. Контракт фиксирует формат входных данных и результата. Важно учитывать версионирование моделей и обработку ошибок. Такой подход упрощает масштабирование и обновление модели.

5. Как проектировать API для внешних потребителей без UI?
API без UI проектируют как самостоятельный продукт с чётким контрактом. Важны стабильные эндпоинты, понятные форматы данных и предсказуемые ошибки. Документация должна быть частью API, а не отдельным артефактом. Версионирование и обратная совместимость критичны. Клиент не должен догадываться о бизнес-логике по косвенным признакам.

#memory #leak #reference #parallel #execution #universal #endpoint #ml #service #api #design
👍1
#podcast #фичи
📚 Язык Rust: компиляция, крутые фичи, синтаксис, система сборки, библиотеки

Всё, что вы хотели знать о Rust. Глубокое погружение в язык, который годами возглавляет рейтинги разработчиков. Разбираем его сильные стороны (безопасность, производительность), экосистему, подводные камни и главный вопрос: действительно ли он заменит C++?

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
#video #история
📚 Программист из 80-х / История появления интернета и программирования в СССР / Всё о Go

Интервью с ведущим разработчиком Juno Романом Губаревым может понравиться людям, которые давно занимаются разработкой, привыкли к своему языку и хотят, но боятся что-то менять.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #event #loop
🤔 Почему setTimeout может выполниться позже указанного времени?

💬 Кратко:

setTimeout может выполниться позже, потому что после истечения времени callback попадает в очередь задач и ждёт своей очереди. Если основной поток занят синхронным кодом, выполнение откладывается. Также задержку увеличивают microtask, рендер и обработка событий. В фоне браузер может специально замедлять таймеры. Поэтому задержка может стать заметно больше, чем указанное значение.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
🧑‍💻 5 вопросов с собесов Frontend разработчиков

1. Чем глобальный контекст в браузере отличается от Node.js?
В браузере глобальным объектом является window, а в Node.js — global. В браузере код ориентирован на работу с DOM и Web API, а в Node.js — на файловую систему и серверные задачи. Кроме того, в Node.js каждый файл имеет собственный модульный контекст, а не общий глобальный scope, как в браузере. Это влияет на область видимости переменных и поведение this.

2. Как происходит приведение типов при нестрогом сравнении?
При нестрогом сравнении == JavaScript пытается привести операнды к одному типу. Правила зависят от типов значений: строки могут превращаться в числа, null и undefined считаются равными друг другу, а объекты приводятся к примитивам. Эти преобразования не всегда очевидны, из-за чего сравнение может вести себя неожиданно. Именно поэтому в большинстве случаев рекомендуют использовать ===.

3. Что произойдёт при использовании var в цикле с асинхронным кодом?
При использовании var в цикле все асинхронные колбэки будут ссылаться на одну и ту же переменную. К моменту выполнения асинхронного кода цикл уже завершится, и переменная будет иметь финальное значение. В результате вместо ожидаемых разных значений выводится одно и то же. Это происходит из-за функциональной, а не блочной области видимости var.

4. Как влияют скрипты на блокировку рендеринга?
Скрипты могут блокировать рендеринг, потому что браузер должен остановить парсинг HTML, загрузить и выполнить JavaScript. Это нужно, так как скрипт может изменить DOM или CSS. Пока синхронный скрипт не выполнен, браузер не продолжает строить DOM и не может корректно рендерить страницу. Атрибуты defer и async позволяют уменьшить или убрать эту блокировку.

5. Как обычно организуется архитектура фронтенд-приложения
Фронтенд-архитектура обычно строится вокруг разделения по слоям или фичам. Часто используют feature-based подход, где каждая фича изолирована. Общие части выносятся в shared-слой. Архитектура должна упрощать поддержку, тестирование и масштабирование.

#global #object #type #coercion #var #closure #loop #render #blocking #frontend #architecture
👍1
#course #начинающие
📚 Твой Golang

Твой Golang — это идеальный старт для освоения языка. Простые и понятные объяснения помогут быстро разобраться в основах Go, даже если вы новичок. Вы научитесь создавать эффективные приложения и получите практические навыки для реальных проектов.
Изучать Go — значит инвестировать в свое будущее!

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#book #начинающие
📚 Программирование на Rust

Книгу написали создатели языка: Стив Клабник – руководитель группы разработчиков Rust в Mozilla, отвечающий за официальную документацию; и Кэрол Николс – один из членов команды Rust. Авторы затронули все важные темы: от установки необходимого софта до создания надежных и масштабируемых программ. Книга содержит множество примеров кода, а также помогает новичкам сделать 3 учебных проекта: игру по угадыванию чисел, реализацию инструмента командной строки на Rust и многопоточный сервер.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
#Собес #event #driven
🤔 Как организуется backend-архитектура для управления большим количеством устройств?

💬 Кратко:

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

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#repository #bestpractices #androidtools
📚 Best practices in Android development

Это свод рекомендаций и проверенных практик разработки Android‑приложений от компании Futurice, охватывающий ключевые аспекты проектирования, кодирования, тестирования и сопровождения ПО; в нём систематизированы советы по архитектуре, работе с ресурсами, управлению зависимостями, оптимизации производительности и безопасности, а также приведены примеры типичных ошибок и способы их избежания, что делает его полезным справочником для Android‑разработчиков разного уровня.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#repository #стиль #чистый #код
📚 Swift style guide

Руководство по стилю кодирования от Raywenderlich. Содержит рекомендации по форматированию кода, именованию переменных и другим аспектам, что способствует написанию читаемого и консистентного кода

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #pipeline #ci #stage
🤔 Что происходит при автоматической сборке feature-ветки на stage-окружение?

💬 Кратко:

При автоматической сборке feature-ветки код собирается и деплоится в stage-окружение без ручного вмешательства. Запускаются сборка, тесты и линтеры. Результат доступен для проверки командой и QA. Это позволяет выявить проблемы до merge в основную ветку. Stage обычно максимально приближен к production.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#channel #mvc #опытные #начинающие
📚 Dmitry Afanasyev

Дмитрий Афанасьев ведёт, пожалуй, один из самых популярных и старых каналов в рунете по программированию на PHP. Он не обошёл вниманием как начинающих программистов, посвятив им несколько плейлистов по изучению PHP и созданию интернет-магазина, так и более опытных, записав туториал по созданию собственного MVC-приложения, изучению October CMS, Laravel и Zend Framework 2. Раньше эти курсы были платными, однако теперь автор выложил их в открытый доступ, так что теперь у вас есть эксклюзивные уроки на PHP.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#podcast #тенденции
📚 Heavy Tech

В этом подкасте мы погружаемся в мир программирования, IT и технологий, с акцентом на Ruby. Ведущий, Сергей Удалов, ruby-тимлид и опытный спикер, делится своими знаниями и опытом, иногда приглашая интересных гостей, а иногда ведя шоу в одиночку.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #environment #deployment #production
🤔 Как работать с тестовыми стендами? (Dev, QA, Prod)

💬 Кратко:

Тестовые стенды (environments) обеспечивают изоляцию этапов разработки. Dev - для активной разработки, QA - для тестирования, Prod - рабочий. Каждый стенд имеет свою конфигурацию, базы данных, и внешние сервисы. Развертывание происходит последовательно через pipeline. Ключевые принципы: идентичность конфигураций, версионность, и минимальные различия между стендами.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
🧑‍💻 5 сложных вопросов для Python разработчиков

1. Что такое threading?
Threading (многозадачность с потоками) — это возможность выполнять несколько потоков внутри одного процесса. Каждый поток выполняет свою задачу, но все они разделяют общую память и данные, что делает работу с потоками более эффективной для задач с блокирующими операциями, такими как чтение файлов или работа с сетью.

2. Что такое GIL?
GIL (Global Interpreter Lock) — это механизм, который ограничивает выполнение нескольких потоков Python в один момент времени. Он гарантирует, что только один поток может исполнять байт-код Python, что делает многозадачность в Python с потоками неэффективной для вычислительно интенсивных задач.

3. Что такое мультипроцессинг?
Мультипроцессинг — это способ выполнения нескольких процессов параллельно, каждый в своём отдельном адресном пространстве. Это полезно для задач, которые сильно зависят от процессора, таких как вычисления или обработки данных.

4. Что знаешь про ORM?
ORM (Object-Relational Mapping) — это метод, который позволяет работать с базами данных с помощью объектно-ориентированного подхода. Вместо написания SQL-запросов, разработчик работает с объектами, а ORM автоматически преобразует их в SQL-запросы для взаимодействия с базой данных.

5. Что знаешь про Singleton?
Singleton — это паттерн проектирования, который гарантирует, что класс будет иметь только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру. Он используется, когда необходимо управлять единственным состоянием в приложении, например, для работы с конфигурациями или подключениями.

#threading #gil #multithreading #multiprocessing #parallelism #orm #database #singleton #oop
👍1
#course #ооп #алгоритмы
📚 Бесплатный открытый онлайн-курс Хельсинкского университета

Бесплатный открытый онлайн-курс Хельсинкского университета (МООК) по объектно-ориентированному программированию на Java на английском языке. Курс затрагивает основы компьютерного программирования, а также алгоритмы и основы ООП, содержит много упражнений и подходит для обучения с нуля.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#tool #гит
📚 Хочешь изучить Git, не рискуя своей локальной установкой?

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

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #javascript #dom #events
🤔 Как подписаться на событие клика кнопки в DOM?

💬 Кратко:

Используйте метод addEventListener для подписки на событие click:
document.querySelector('button').addEventListener('click', () => {
console.log('Кнопка нажата!');
});


📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
🧑‍💻 Сложные вопросы с собесов на Java разработчика

1. Является ли операция ++ атомарной для volatile переменной?
Нет, операция ++ не является атомарной, даже если переменная объявлена как volatile. volatile гарантирует видимость изменений между потоками, но не защищает составные операции. Инкремент состоит из нескольких шагов: чтение, увеличение и запись. Между этими шагами другой поток может вмешаться. Поэтому volatile не решает проблему гонок данных.

2. Как можно избежать deadlock?
Deadlock возникает, когда потоки навсегда ждут освобождения ресурсов друг от друга. Чтобы его избежать, нужно соблюдать единый порядок захвата блокировок, минимизировать синхронизацию и избегать вложенных lock. Также помогают таймауты, неблокирующие структуры данных и высокоуровневые concurrency-абстракции. Проектирование играет ключевую роль. Deadlock проще предотвратить, чем обнаружить.

3. Как обеспечить атомарность операций в многопоточном коде?
Атомарность обеспечивается с помощью синхронизации, блокировок или атомарных классов. Самый простой способ — synchronized. Более гибкий вариант — Lock. Для счётчиков и простых операций лучше использовать классы из java.util.concurrent.atomic. Выбор подхода зависит от задачи и требований к производительности.

4. Что такое virtual threads и в чём их идея?
Virtual threads — это лёгкие потоки, управляемые JVM, а не операционной системой. Они позволяют создавать миллионы потоков без серьёзных накладных расходов. Идея заключается в том, чтобы упростить конкурентный код, сохранив привычную модель потоков. Virtual threads особенно эффективны для задач с большим количеством блокирующих операций. Они появились в рамках Project Loom.

5. Что значит синхронизация на мониторе объекта?
Синхронизация на мониторе объекта означает, что потоки конкурируют за внутренний монитор конкретного объекта. Только один поток может владеть монитором в каждый момент времени. Пока монитор захвачен, другие потоки вынуждены ждать. Это обеспечивает взаимное исключение и корректную видимость изменений.

#volatile #atomicity #deadlock #concurrency #synchronization #virtual #thread #monitor
👍1
#book #php #sql
📚 PHP глазами хакера, Михаил Фленов

Самая противоречивая книга рейтинга: её часто критикуют за поверхностный подход, поэтому специалистам она вряд ли будет полезна. Зато новичкам может подойти как лёгкое, мотивирующее чтение для первого знакомства с темой.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#book #памятка
📚 Памятка PHP/GoLang разработчику для подготовки к собеседованиям

Это методичка(краткий справочник) по темам, знание которых может понадобиться при собеседовании на бэкендера (с уклоном в Golang/PHP) и на работе.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа