MiddleData Analyst > SQL и данные > Статистика и теория вероятностей
Короткий ответ Смещение выжившего возникает, когда анализ строится только на «выживших» объектах (активных пользователях, успешных проектах), а исчезнувшие/отвалившиеся из выборки не учитываются — это приводит к завышенно оптимистичным выводам о факторах успеха. Как это работает подробнее если анализировать особенности только тех пользователей, кто остался активен спустя полгода, можно ошибочно заключить, что определённое поведение «приводит к удержанию», хотя на самом деле это поведение просто характерно для оставшихся, а не является его причиной — ушедшие с похожим поведением просто не попали в выборку. Пример кода Что использовать на практике На практике. классический пример — анализ «успешных» долгосрочных клиентов для поиска паттернов успеха без сравнения с ушедшими клиентами с похожими стартовыми характеристиками. Чтобы избежать смещения, нужно анализировать полную когорту с самого начала (включая тех, кто отвалился), а не только финальных «выживших», и явно сравнивать выживших с невыжившими. Для более
cohort-analysisproduct-analytics
MiddleData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Если считать среднюю накопленную выручку (LTV) только по пользователям, которые всё ещё активны сегодня, то оценка будет завышена, потому что в выборку не попадают пользователи, которые уже ушли и в среднем принесли меньше денег — это классический survivorship bias. Как это работает подробнее "выжившие" пользователи — это, по определению, те, кто не ушёл; они систематически отличаются от общей когорты (дольше используют продукт, обычно больше платят), поэтому расчёт LTV только по ним — это оценка LTV "хороших" пользователей, а не всей когорты целиком. Пример кода Что использовать на практике Практика. корректный расчёт LTV когорты должен включать всех пользователей, когда-либо входивших в когорту, включая уже ушедших (их вклад в выручку просто перестаёт расти после ухода), а не фильтровать по признаку "активен сейчас"; для ещё не завершивших свой жизненный цикл пользователей нужно либо ждать, либо использовать методы прогнозирования (например, модели типа BG/NBD), явно отмечая, что это оценка,
cohortsltv
JuniorDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ Снапшот — точечный, обычно инкрементальный образ состояния блочного диска на момент времени; из снапшота можно создать новый диск и восстановить данные, но это резервная копия на уровне инфраструктуры, а не замена логического бэкапа приложения. Как это работает подробнее первый снапшот копирует все занятые блоки диска, последующие — только изменившиеся блоки, что экономит место и время; снапшот можно сделать по расписанию через политику автоматизации. Пример кода Что использовать на практике Рекомендация. снапшоты дисков БД делают консистентными, либо приостанавливая запись на короткое время, либо используя поддержку СУБД для flush перед снимком, иначе можно получить неконсистентные данные. Проверка. статус снапшота переходит из pending в completed, после чего из него можно создать новый том в той же или другой зоне доступности. Подводные камни Риск. считать снапшот полноценной заменой логическому бэкапу базы данных Риск. не проверять снапшоты восстановлением (непроверенный бэкап равносилен его
backupcloud-storage
MiddlePython Developer > Основы Python > Очереди и события
Короткий ответ В событийно-ориентированной архитектуре сервисы публикуют события о факте произошедшего изменения, а подписчики реагируют асинхронно, что снижает прямую связанность между отправителем и получателями, но усложняет отслеживание сквозного потока обработки. Как это работает подробнее Вместо того, чтобы Order Service явно вызывал Notification, Inventory и Analytics по отдельности, он публикует событие «order.created», а каждый заинтересованный сервис сам решает, как реагировать. Пример кода Что использовать на практике Практика. Плюсы — издатель не зависит от набора и доступности подписчиков, естественная буферизация нагрузки; минусы — сложнее отследить сквозной бизнес-процесс, нужно явно решать вопросы идемпотентности и порядка доставки. Подводные камни Риск. Использовать события там, где нужен немедленный синхронный ответ; не вкладываться в наблюдаемость (трассировка событий через сервисы).
event-drivenmessage-queues
JuniorJava Developer > Java Core > ООП
Короткий ответ Спецификаторы (модификаторы) доступа определяют, из каких мест программы видны классы, поля, методы и конструкторы. В Java четыре уровня: private, package-private (по умолчанию, без модификатора), protected и public. Это практическая реализация инкапсуляции: наружу остаётся только безопасный публичный интерфейс. Как это работает подробнее Уровни доступа перечисляют по нарастанию видимости. private. Самый строгий: член доступен только внутри того же класса; ни наследники, ни другие классы его не видят. package-private (по умолчанию). Модификатор не пишется: член доступен всем классам внутри того же пакета и не виден за его пределами. protected. Член доступен внутри пакета, а также наследникам класса из других пакетов. public. Доступен отовсюду — из любого класса любого пакета, при условии что доступен сам класс. Классы верхнего уровня. Для них применимы только public и package-private: класс не может быть private или protected. Пример кода Что использовать на практике Начинать с private и открыв
access-modifiersencapsulation
JuniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Спецпроект — это разовая крупная инициатива с отдельной идеей, форматом и, как правило, отдельным бюджетом (флэшмоб, коллаборация, серия материалов к юбилею бренда), в отличие от регулярного контента, который повторяется по рубрикам на постоянной основе. Как это работает подробнее спецпроект обычно имеет собственные цели, срок проведения и метрики успеха, отдельные от повседневного контент-плана, и встраивается в план как временная вставка. Что использовать на практике На практике. спецпроект планируют заранее (бриф, сроки согласования, ресурсы), чтобы он не мешал регулярным рубрикам, а дополнял их в конкретный период. Пример. Кофейня к годовщине открытия запускает недельный спецпроект «7 дней — 7 историй сотрудников» с отдельной рубрикой и финальным розыгрышем. Проверка: отдельная строка в отчёте по спецпроекту с охватом, вовлечённостью и числом участников розыгрыша, не смешанная с обычной статистикой аккаунта. Подводные камни Частые ошибки. называть спецпроектом любой чуть более креативный об
content-strategysocial-media-marketing
JuniorData Analyst > SQL и данные > Статистика и теория вероятностей
Короткий ответ Средневзвешенное учитывает разный «вес» (значимость, объём) каждого значения при усреднении; его стоит использовать, когда группы, по которым усредняются показатели, имеют разный размер — иначе простое среднее по группам исказит общий результат. Как это работает подробнее средневзвешенное = сумма(значение × вес) / сумма(весов). Простое среднее — частный случай, где все веса равны. Такой расчёт особенно важен при объединении данных из разных источников с разным охватом и надёжностью. Пример кода Что использовать на практике На практике: классический пример — усреднение конверсии по нескольким каналам трафика: если просто усреднить конверсии каналов без учёта их объёма, маленький канал с аномальной конверсией исказит общий показатель. Средневзвешенное по объёму трафика (или количеству заказов) даёт корректную общую конверсию. На практике также полезно явно указывать используемые веса в отчёте, чтобы коллеги могли воспроизвести расчёт и понять, почему он отличается от простого среднего. Проверка:
aggregationaverage
JuniorPython Developer > Основы Python > Основы Python
Короткий ответ Срез извлекает часть последовательности по правилу sequence[start:stop:step]: start включается, stop не включается, а step задаёт шаг выборки. Механизм работает со строками, списками, кортежами и объектами range. Как это работает подробнее Срез можно задать квадратными скобками или функцией slice(), а опущенные параметры получают значения по умолчанию. Границы. Начальный индекс включается в результат, конечный — нет, поэтому длина результата зависит от разности границ и шага. Значения по умолчанию. При пропуске start берётся 0, stop — длина последовательности, step — 1. Частые приёмы. s[:3] — первые три элемента, s[3:] — всё после четвёртого, s[::2] — каждый второй, s[::-1] — разворот. Копия. Срез списка создаёт новый список, а не «окно» над исходным, поэтому изменения в срезе не затрагивают оригинал. Пример кода Что использовать на практике Крайние части. Бери начало и конец последовательности срезами s[:n] и s[-n:], не вычисляя длину. Разворот. Разворачивай последовательность срезом s[::-1].
indicespython
JuniorRecruiter > Процесс найма > Оценка кандидатов
Одинаковые вопросы и заранее описанные критерии делают сравнение кандидатов возможным.
ИнтервьюНайм
JuniorDevOps Engineer > Контейнеры и доставка > Инженерные практики и взаимодействие с командами
Короткий ответ Инфраструктурный техдолг — уже принятый компромисс, который удорожает следующие изменения и повышает эксплуатационный риск. Примеры: ручные ресурсы вне IaC, drift, неподдерживаемые версии, секреты или адреса в конфигурации. Как это работает подробнее Долг приложения чаще обнаруживают review, тесты и анализаторы. Инфраструктурный долг может годами не проявляться, пока ресурс не потребуется воспроизвести, обновить или восстановить после сбоя. Воспроизводимость. Ручное состояние нельзя надёжно восстановить в другом окружении. Изменяемость. Устаревшие версии и связанные конфигурации блокируют безопасные обновления. Риск. Цена долга проявляется во время инцидента, когда времени на исследование меньше всего. Пример кода Что использовать на практике Учёт. Создать отдельную задачу с владельцем, риском, стоимостью исправления и сроком пересмотра. Приоритизация. Сначала устранять долг, который угрожает данным, безопасности, поддержке или ближайшим изменениям. Погашение. Импортировать ручные ресурсы в sta
automationconfiguration-drift