IT Stack | Technologies – Telegram
IT Stack | Technologies
33 subscribers
74 photos
37 links
От нуля к единице. Как создаются большие приложения. Все о технологиях и IT компаниях. Актуальные новости в мире IT.

Связь:
@ruslan_kuyanets
Download Telegram
🧑‍💻 Вопросы с собесов для Node.js Разработчика

1. Расскажите о генераторах и итераторах в JavaScript и приведите пример их использования.
Итераторы — это объекты, которые реализуют метод next() и возвращают значение на каждой итерации. Генераторы — это функции, которые создают итераторы с помощью function* и yield. Генераторы позволяют контролировать выполнение кода и возвращать значения по мере необходимости, что упрощает работу с большими или бесконечными наборами данных.

2. Что такое дескрипторы свойств объектов в JavaScript и как их можно использовать на практике?
Дескрипторы свойств — это специальные объекты, которые описывают атрибуты свойства объекта, такие как возможность его изменения, перечисления или удаления. Используя дескрипторы, можно точно контролировать, как свойства объекта будут вести себя. Например, можно сделать свойство неизменяемым или скрыть его от перебора через цикл.

3. Что такое ArrayBuffer и в чем разница между типами Uint32Array и Float32Array?
ArrayBuffer — это объект, который хранит фиксированное количество байт данных в памяти. Он используется для работы с бинарными данными. Uint32Array и Float32Array — это типизированные массивы, которые представляют разные типы данных: Uint32Array работает с беззнаковыми целыми числами, а Float32Array — с числами с плавающей точкой. Основное различие между ними — в типе данных, который они хранят.

4. Назовите несколько способов создания неизменного объекта в JavaScript.
Существуют несколько способов сделать объект неизменным. Один из самых популярных — это метод Object.freeze(), который запрещает добавление, удаление и изменение свойств объекта. Также можно использовать Object.seal(), который позволяет изменять существующие свойства, но не добавлять новые. Для глубоких объектов применяют рекурсивное замораживание.

5. Объясните разницу между последовательным и параллельным выполнением асинхронных функций. Как работают Promise.all() и Promise.allSettled()?
Последовательное выполнение асинхронных функций означает, что каждая следующая функция начинается только после завершения предыдущей, тогда как параллельное выполнение позволяет нескольким функциям выполняться одновременно.

Метод Promise.all() запускает несколько промисов параллельно и возвращает результат, когда все они успешно завершатся, а Promise.allSettled() возвращает результат независимо от того, завершился ли каждый промис успехом или ошибкой.

#функция #yield #next #объекты #defineproperty #байт #данные #arraybuffer #freeze #объект #seal #promise #асинхронность
🧑‍💻 Вопросы с собесов для Node.js Разработчика

1. Виды тестов и их различия
Основные виды тестов: unit (проверка отдельных компонентов), integration (проверка взаимодействия компонентов), e2e (проверка всей системы). Они различаются scope, скоростью выполнения и сложностью setup.

2. Pick, Omit, Partial в TS
Pick, Omit и Partial — это утилитарные типы TypeScript для работы с объектными типами. Pick создает тип из выбранных свойств исходного типа. Omit создает тип, исключая указанные свойства. Partial делает все свойства типа необязательными.

3. Что такое "всплытие" (hoisting) в контексте переменных и функций?
Hoisting (всплытие) - это механизм в JavaScript, при котором объявления переменных и функций "поднимаются" в начало своей области видимости. Объявления функций поднимаются полностью, а переменные, объявленные через var - только объявление, но не инициализация. let и const также всплывают, но не инициализируются до фактического объявления.

4. Представь есть очень толстый сложный запрос (загрузка видео или в бд). Что делать в Node.js? А если в SQL?
В Node.js для тяжелых операций используйте асинхронную обработку, потоки и очередь задач. Для SQL-запросов оптимизируйте запросы, добавляйте индексы и используйте пагинацию. В обоих случаях важно не блокировать event loop и эффективно использовать ресурсы.

5. Какие бывают транспорты между микросервисами (синхронный подход (REST, gRPC) и асинхронный (kafka, rabbitMQ, NATS))
Для коммуникации микросервисов используются синхронные (REST, gRPC) и асинхронные (Kafka, RabbitMQ, NATS) транспорты. Синхронные требуют immediate response, асинхронные используют message brokers для декаплингования сервисов.

#testing #unit #integration #type_utility #pick #omit #hoisting #performance_optimization #streams #sql_optimization #microservices #communication
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. Какие методы уменьшения объема Docker-образа ты знаешь?
Основные методы: использование многоступенчатой сборки (multi-stage build), выбор минимального базового образа (например, alpine), объединение команд RUN в одну для уменьшения слоёв, использование файла .dockerignore и удаление кэша пакетного менеджера в том же слое, где он использовался.

#docker #image_optimization
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. Как в Go реализовать middleware?
Middleware — это функция, которая оборачивает http.Handler и добавляет дополнительную логику до и после вызова ServeHTTP.

2. Как устроен Outbox-паттерн и зачем он нужен?
Outbox-паттерн сохраняет сообщение в таблицу вместе с изменением состояния, а потом отдельный процесс (consumer) читает и отправляет их в Kafka. Это обеспечивает атомарность между БД и очередью.

3. Что такое transactional outbox и зачем он нужен?
Transactional outbox — это способ гарантированной доставки сообщений между сервисами. Он сохраняет сообщение в БД в рамках бизнес-транзакции, а затем отправляет его асинхронно.

4. Как предотвратить списание средств с баланса при гонке транзакций?
Нужно использовать транзакции с блокировкой строк (SELECT FOR UPDATE), чтобы избежать одновременного изменения баланса разными транзакциями.

5. Что такое палиндром и как его определить в Go?
Палиндром — это строка, которая читается одинаково слева направо и справа налево. В Go важно учитывать работу с рунами, а не байтами, особенно для кириллицы. Также часто приводят символы к нижнему регистру для корректного сравнения.

#middleware #http #decorator #outbox #transactional_messaging #kafka #pattern #transaction #locking #balance #string #palindrome
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. RabbitMQ использует базу данных?
RabbitMQ не использует базу данных для хранения сообщений. Вместо этого оно записывает сообщения на диск в двух случаях: если сообщение имеет delivery_mode=2 (устойчивое сообщение) или при недостатке оперативной памяти, чтобы освободить её для других задач.

2. Что такое Erlang?
Erlang — это функциональный язык программирования, разработанный для создания распределённых и отказоустойчивых систем. RabbitMQ разработан на Erlang и использует его платформу Open Telecom Platform (OTP) для кластеризации и обеспечения высокой доступности.

3. Какой протокол использует RabbitMQ?
RabbitMQ использует AMQP (Advanced Message Queuing Protocol) — открытый стандарт для передачи сообщений через сеть. Он обеспечивает надежную, масштабируемую и стандартизированную коммуникацию между системами.

4. Что такое pub/sub?
Pub/sub (publish/subscribe) — это асинхронная модель взаимодействия, где производитель публикует сообщение на определённую тему, и все подписчики этой темы получают его одновременно. Этот подход часто используется в микросервисах для организации событийного взаимодействия.

5. Является ли RabbitMQ устойчивым?
RabbitMQ поддерживает устойчивость сообщений и очередей. Чтобы обеспечить сохранение сообщений при перезапуске сервера, очередь должна быть помечена как durable, а сообщения — как persistent (указанием delivery_mode=2 при публикации). Устойчивые очереди сохраняются между перезапусками сервера, но сами сообщения требуют дополнительного указания их устойчивости.

#rabbitmq #storage #delivery_mode #erlang #otp #amqp #protocol #pub #sub #durability #persistence
#Собес #sql #select #performance

🤔 Middle Java Backend-разработчик в компанию МВидео.

Техническое собеседование. Зима 2025. Просил 250к+. Проект: биллинг (сбор информации по поставщикам). Опыт в резюме: 3 года. Сначала было много вопросов об опыте, стеке, тестах, "почему уходишь с текущего места работы?" и т.д. Был лайкводинг.

💬 Вопросы:

- Как реализовать базовое приложение на Spring Boot?

- Зачем нужен Spring Framework?

- Что такое чистый и поддерживаемый код?

- Какие принципы важны при работе с базой данных?

- Влияет ли количество полей в SELECT на производительность?

👉 Все вопросы из этого собеседования (7)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#video #ошибки
📚 IT-расследование: как ошибка в программе убила людей?

Нашел для вас интересное видео про баг в аппарате Therac-25 и почему он стоил людям жизни.

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

👉 База вопросов 👉 Новости
🧑‍💻 Подборка из 5 вопросов для Golang разработчиков

1. Можно ли передать функцию как параметр другой функции?
Да, в Go функции можно передавать как параметры другим функциям. Это позволяет создавать гибкие и переиспользуемые блоки логики. Такие функции называются функциями первого класса.

 

2. Какова алгоритмическая сложность доступа по ключу для map?


Доступ по ключу в map в Go выполняется за амортизированное время O(1). Это означает, что операции получения, вставки и удаления обычно очень быстры.

 

3. Что происходит, когда в коде просят выделить 1 КБ памяти?


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

 

4. Как реализовать транзакции через SQL-запросы?


Используются команды BEGIN, COMMIT, ROLLBACK.

5. Почему поиск в B-tree работает быстрее полного перебора данных?


Потому что B-tree отсеивает ненужные данные, двигаясь по дереву, а не проверяя каждую строку таблицы.

 

#function #first_class #parameter #map #hash_table #complexity #memory_allocation #heap #pointer #begin #commit #rollback #b-tree #binary_search #index
#Собес #grpc #middleware #concurrency

🤔 Middle+ Golang Backend-разработчик в Ozon

Техническое собеседование. Лето 2025. Вилка 290к+. Проект: мультисервисная платформа для работы с заказами и аналитикой в Ozon. Опыт в резюме — 3.5 года. Вопросы по конкурентности, работе с HTTP, базам данных, Kafka, паттерну Outbox, архитектуре и SQL.

💬 Вопросы:

- Зачем использовать UUID вместо автоинкрементного ID в распределённой системе?

- Что такое transactional consistency в контексте Outbox?

- Что такое transactional outbox и зачем он нужен?

- Что такое паттерн Strategy и зачем он нужен?

- Как реализовать worker pool в Go?

👉 Все вопросы из этого собеседования (15)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#article #инструменты #ии
📚 AI уже тут: в какие инструменты уже интегрирован ИИ

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

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

👉 База вопросов 👉 Новости
#podcast #кейсы #проекты
📚 Machine Learning: Нейросети и машинное обучение

Подкаст "Machine Learning" — это захватывающее путешествие в мир нейросетей, машинного обучения и искусственного интеллекта, созданное для всех, кто хочет разобраться в технологиях, меняющих мир! Каждую неделю мы погружаемся в актуальные темы: от новейших архитектур нейросетей, таких как трансформеры, до применения ИИ в медицине, финансах, играх и творчестве. Вместе с ведущими экспертами, исследователями и практиками мы обсуждаем, как алгоритмы учатся, почему большие языковые модели вроде GPT революционизируют обработку данных, и какие этические дилеммы стоят за развитием ИИ.

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

👉 База вопросов 👉 Новости
🧑‍💻 5 вопросов с собесов Frontend разработчиков

1. Что такое Сравнение (Diffing) и Патчинг?
Сравнение (Diffing) — это процесс, при котором React сравнивает старое и новое представление виртуального DOM, чтобы определить, какие изменения необходимо внести в реальный DOM. Патчинг — это этап, на котором React вносит эти изменения, обновляя только те элементы, которые изменились, а не перерисовывая всё дерево компонентов.

2. Что такое React Reconciliation (Этап согласования)?
React Reconciliation — это процесс, с помощью которого React обновляет интерфейс, определяя, какие изменения необходимо внести в виртуальный DOM и как это отразить на реальном DOM. Этот процесс включает сравнение старого и нового виртуального DOM, что позволяет React эффективно обновлять только те компоненты, которые изменились, а не перерисовывать всё приложение.

3. Что такое реактивность?
Реактивность — это подход к программированию, при котором интерфейс автоматически обновляется при изменении данных или состояния. В React это реализуется через систему состояния и пропсов, позволяющую разработчикам легко управлять изменениями в приложении и обеспечивать согласованность между данными и отображением.

4. Как работает реактивность под капотом и как реализовать её?
Реактивность в React работает через использование состояния и хуков, таких как useState и useEffect. Когда состояние изменяется, React автоматически инициирует перерисовку компонентов, которые зависят от этого состояния, обеспечивая согласованность между данными и интерфейсом. Реактивность достигается через механизм подписки на изменения состояния и виртуальный DOM, который минимизирует обновления реального DOM.

5. Что такое AbortController и как он используется в JavaScript для отмены асинхронных операций?
AbortController — это встроенный объект в JavaScript, который позволяет отменять асинхронные операции, такие как запросы через fetch. Он работает вместе с AbortSignal, который передаётся в асинхронную операцию. Если вы вызываете метод abort() у контроллера, операция прерывается, и её результат больше не будет обработан.

#virtual_dom #optimization #dom #реактивность #abort #fetch
#Собес #reducer #redux #solid

🤔 Middle Frontend разработчик (React) в компанию X5

Техническое собеседование. Весна 2025. Вилка: 300к+. Опыт в резюме: 4 года. Были вопросы на понимание принципа работы БД, вопросы про шардирование..

💬 Вопросы:

- Где хранить кэшированные данные? (LocalStorage, IndexedDB). Что делать, если IndexedDB не поддерживается?

- Как управлять версионностью зависимостей (например, React) между микрофронтами?

- Какие проблемы возникают в микрофронтенд-архитектуре?

- Как интерпретировать принцип замены Лисков (L в SOLID) во фронтенде (на примере React)?

- Как реализовать кэширование данных без библиотек?

👉 Все вопросы из этого собеседования (28)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
#documentation #база
📚 База знаний школы Systems Education

Большая база ссылок на статьи по различным темам: от работы с требованиями до протокола WebSocket.

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

👉 База вопросов 👉 Новости
#course #ии
📚 «Введение в Data Science и машинное обучение»

Data Scientist is The Sexiest Job of the 21st Century, а машинное обучение и анализ данных - это захватывающие области, знакомство с которыми точно не оставит вас равнодушными! Мы начнем с самого начала, разберем центральные понятия и темы. Познакомимся с такими методами машинного обучения как деревья решений и нейронные сети. Практическая часть курса будет посвящена знакомству с наиболее популярными библиотеками для анализа данных, используя язык программирования Python — Pandas и Scikit-learn.

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

👉 База вопросов 👉 Новости
#Собес #scaling #optimization #performance
🤔 Как отправить 10 000 запросов за короткое время – подходы и оптимизация?

💬 Кратко:

Для отправки 10 000 запросов используйте асинхронный подход с ограничением параллелизма через Semaphore. Группируйте запросы с помощью asyncio.gather() в батчах, используйте connection pooling и настраивайте таймауты для избежания блокировок.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🧑‍💻 5 сложных вопросов для Python разработчиков

1. Что такое конструктор класса / Как создается объект?
Конструктор класса — это специальный метод __init__, который вызывается при создании нового объекта. Он используется для инициализации атрибутов объекта и выполнения других начальных действий.

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

3. Что такое асинхронное программирование?
Асинхронное программирование позволяет выполнять несколько задач одновременно, не блокируя основной поток программы. В Python для этого используются ключевые слова async и await, которые позволяют запускать корутины и управлять асинхронными операциями.

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

5. Какая есть связь между хеш-функцией и изменяемостью/неизменяемостью?
Хеш-функция используется для получения уникального значения для объекта, которое представляет его состояние. В Python объекты, которые изменяются после создания, не могут быть хешируемыми, потому что их хеш-значение может измениться, что нарушит работу хеш-таблиц (например, словарей). Неизменяемые объекты, такие как строки и кортежи, можно хешировать, потому что их состояние не меняется.

 

#constructor #class #init #parallelism #concurrency #multiprocessing #async #await #behavioral #pattern #software #hash #immutable #mutable
#podcast #сравнение
📚 Пятиминутка PHP

Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Помимо PHP поднимаем темы про инфраструктуру, администрирование Linux и DevOps подходы, сравниваем PHP с другими языками программирования, например с Go, Rust и даже Erlang.

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

👉 База вопросов 👉 Новости
1
#article #тренажер
📚 Тренажеры для тестировщика. Где взять практику?

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

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

👉 База вопросов 👉 Новости
#Собес #oop #slots #memory_optimization
🤔 Что такое __slots__

💬 Кратко:

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

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал