JuniorJava Developer > Java Core > Исключения
Короткий ответ throw — оператор, который в точке выполнения кода непосредственно выбрасывает исключение: после него указывается объект-исключение, например throw new IllegalArgumentException(). throws — объявление в сигнатуре метода о том, какие исключения метод может выбросить: void read() throws IOException. Первый пишется в теле метода, второй — в его сигнатуре. Как это работает подробнее throw используется внутри тела метода. Бросить можно только объект класса, наследующего Throwable. Один вызов throw бросает ровно одно исключение, после чего управление уходит на поиск подходящего catch или выше по стеку. throws стоит в сигнатуре и сообщает компилятору и вызывающему коду, что метод может выбросить перечисленные исключения. Если метод способен выбросить checked-исключение, он обязан либо перехватить его в try-catch, либо объявить в throws — иначе код не скомпилируется. Для unchecked-исключений (RuntimeException и Error) объявление не обязательно. throw работает с объектом исключения и пишется в теле метода
checked-exceptionsexceptions
JuniorJava Developer > Java Core > Core Java
Константа объявляется с модификатором final: её значение нельзя переприсвоить после инициализации.
Basics
JuniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Пиллар — это крупная тематическая категория контента верхнего уровня (например, «экспертиза»), а рубрика — конкретный повторяющийся формат внутри пиллара (например, «Вопрос эксперту по вторникам»); один пиллар может включать несколько рубрик. Как это работает подробнее пиллары отвечают на вопрос «о чём мы говорим в целом», а рубрики — «в каком регулярном формате мы это подаём». Что использовать на практике На практике. при построении контент-плана сначала фиксируют пиллары, затем под каждый придумывают 1–3 рубрики с понятной периодичностью, чтобы контент не повторялся хаотично. Пример. Пиллар «Продукт» → рубрики «Новинка недели» и «Как выбрать размер». Проверка: в таблице контент-плана у каждой рубрики должен быть указан пиллар-родитель — отсутствие такой привязки говорит об ошибке структуры плана. Подводные камни Частые ошибки. использование терминов как синонимов приводит к путанице в отчётности; создание рубрики без привязки к пиллару делает контент-план несистемным.
content-pillarscontent-strategy
MiddleData Analyst > SQL и данные > Статистика и теория вероятностей
Короткий ответ Пирсон измеряет силу линейной связи между количественными переменными и чувствителен к выбросам; Спирмен считает корреляцию по рангам значений, измеряя силу монотонной (не обязательно линейной) связи, и устойчивее к выбросам и нелинейности. Как это работает подробнее коэффициент Спирмена фактически равен коэффициенту Пирсона, посчитанному не по самим значениям, а по их рангам — это убирает влияние масштаба и формы распределения, оставляя только информацию об относительном порядке. Пример кода Что использовать на практике На практике. Спирмена стоит предпочесть, когда связь между переменными явно нелинейная, но монотонная (например, логарифмическая зависимость выручки от числа показов рекламы), когда в данных есть выбросы, или когда переменные порядковые, а не честно количественные (например, рейтинг удовлетворённости по шкале 1–5). Пирсон предпочтителен, когда интересует именно линейная зависимость и важна её сила в терминах исходных единиц (для последующего построения линейной регрессии). На п
correlationoutliers
MiddlePython Developer > Основы Python > Основы Python
Короткий ответ Мелкое копирование создаёт новый объект верхнего уровня, но не копирует вложенные объекты: их изменения видны в оригинале. Глубокое копирование рекурсивно дублирует все вложенные объекты и даёт полностью независимую копию. А простое присваивание копией не является вовсе — оно лишь добавляет ссылку. Как это работает подробнее Разница проявляется при работе с вложенными структурами: списками списков, словарями со списками и объектами, содержащими другие объекты. Присваивание. Запись b = a не создаёт копию: обе переменные ссылаются на один и тот же объект, поэтому изменения видны через обе. Мелкая копия. Функция copy.copy() создаёт новый объект верхнего уровня, но копирует только ссылки на вложенные объекты, которые остаются разделяемыми. Глубокая копия. Функция copy.deepcopy() рекурсивно дублирует вложенные объекты, создавая полностью независимую структуру. Плоские структуры. Для структур только из неизменяемых значений мелкая и глубокая копия ведут себя практически одинаково. Пример кода Что исп
copy-moduledeep-copy
MiddleJava Developer > Java Core > Multithreading
sleep() приостанавливает поток и не освобождает монитор, wait() освобождает монитор и ждет notify().
Multithreading
JuniorPython Developer > Основы Python > Коллекции и структуры данных
Короткий ответ Множество — неупорядоченная коллекция уникальных элементов для быстрой проверки вхождения. Словарь — коллекция пар «ключ — значение», дающая быстрый доступ к значению по уникальному ключу и сохраняющая порядок вставки. Как это работает подробнее Структуры похожи синтаксически, но решают разные задачи. Создание. Множество задаётся фигурными скобками или функцией set(), словарь — фигурными скобками с парами «ключ: значение». Пустые скобки. Пустые фигурные скобки {} создают словарь, а не множество: пустое множество создаётся только вызовом set(). Хеш-таблицы. Обе структуры построены на хешировании: у множества хешируются сами элементы, у словаря — ключи, что и обеспечивает высокую скорость поиска. Что использовать на практике Проверка вхождения. Когда нужно узнать, есть ли элемент в коллекции, и исключить дубликаты, используй множество. Соответствие данных. Когда нужно быстро получить значение по ключу, например по идентификатору пользователя, используй словарь. Операции над множествами. Для объед
data-structuresdict
MiddleSMM Manager > Общее > SMM-аналитика и метрики
Короткий ответ Last-click отдаёт всю ценность конверсии последнему каналу перед покупкой, first-click — первому каналу, который привёл пользователя, а linear распределяет ценность равномерно между всеми каналами на пути; выбор зависит от того, что важнее оценить — то, что «закрывает» продажу, или то, что приводит новых пользователей в воронку. Как это работает подробнее каждая модель по-разному распределяет «вес» конверсии между точками касания в пути пользователя (посты, реклама, прямые заходы), используя данные о последовательности взаимодействий из веб-аналитики/рекламных платформ. Пользователь увидел охватное видео в Stories (первое касание), через неделю кликнул на ретаргетинговое объявление в ленте (последнее касание) и купил. При last-click вся заслуга уходит ретаргетингу, при first-click — видео, при linear — делится 50/50. Проверка: прогон одних и тех же данных через разные модели в отчётном инструменте и сравнение, какой канал «теряет» или «выигрывает» ценность в каждой модели. Что использовать на п
attributionmetrics
JuniorPerformance Marketer > Google Ads > Рекламные платформы и форматы
Короткий ответ Уровень кампании хранит общие для групп настройки, например цель и иногда общий бюджет, а уровень группы объявлений — параметры сегмента: аудиторию, ключевые слова, размещения или расписание. Это позволяет управлять общим планом и отдельными сегментами. Как это работает подробнее Разделение позволяет сравнивать сегменты при единой цели. При бюджете кампании платформа может распределять деньги между группами по ожидаемой эффективности; бюджеты групп задаёт специалист. Общий бюджет. Алгоритм перераспределяет расход в пользу ожидаемого результата. Бюджет группы. Даёт более явный контроль над расходами каждого сегмента. Что использовать на практике Используй общий бюджет для сопоставимых сегментов, а отдельные лимиты — когда каждому нужен гарантированный объём. Подводные камни Проверь ограничения родительского уровня: заданные там параметры могут ограничивать дочерние группы.
ad-setcampaign-budget
MiddleSMM Manager > Общее > Рекламные платформы и медиазакупка
Короткий ответ Дневной лимит задаёт верхнюю границу расхода за день, а pacing определяет, как именно бюджет распределяется в течение дня или срока кампании — равномерно (standard) или с ускоренным расходом в первые часы/дни (accelerated) для быстрого набора объёма. Как это работает подробнее равномерный pacing старается растянуть расход бюджета на весь заданный период, ускоренный — тратит бюджет как можно быстрее, что может повысить цену в моменте из-за конкуренции за лучшие показы. Что использовать на практике Подход. равномерный темп подходит для долгих охватных/performance-кампаний, ускоренный — для срочных акций с коротким окном (например, flash-sale на 24 часа), где важна скорость, а не минимальная цена. Пример. Флэш-акция на 12 часов использует ускоренный темп расхода, чтобы максимально охватить аудиторию в узкое окно, несмотря на более высокую среднюю цену за показ, что оправдано срочностью задачи и проверяется по доле бюджета, потраченного в первые 4 часа. Подводные камни Ошибка. использовать ускоренн
campaign-optimizationmedia-planning