<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>ILDM</title><author><name>ILDM</name></author><id>https://teletype.in/atom/ildm</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/ildm?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@ildm?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/ildm?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-05T08:45:37.282Z</updated><entry><id>ildm:G2HIiwhF8yf</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/G2HIiwhF8yf?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>Go (Golang). Средний уровень.</title><published>2025-10-11T21:55:48.914Z</published><updated>2025-10-11T21:55:48.914Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/2e/23/2e23838f-6d83-45ca-ab2c-7445da4d32f6.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b7/45/b7454960-3863-4e1e-bfc0-bbf6ebd552c5.png&quot;&gt;Дальше — про практику сервиса. Тест проверяет, как вы работаете с памятью и конкурентностью в реальных задачах. Типичные темы: указатели и приёмники методов, влияние срезов на массив, буферизация каналов и дедлоки, роутинг net/http, пул воркеров, ограничения httptest, проверка Origin в WebSocket, рефлексия, контекст, строки, gRPC-паттерны.</summary><content type="html">
  &lt;p id=&quot;Va55&quot;&gt;Дальше — про практику сервиса. Тест проверяет, как вы работаете с памятью и конкурентностью в реальных задачах. Типичные темы: указатели и приёмники методов, влияние срезов на массив, буферизация каналов и дедлоки, роутинг net/http, пул воркеров, ограничения httptest, проверка Origin в WebSocket, рефлексия, контекст, строки, gRPC-паттерны.&lt;/p&gt;
  &lt;figure id=&quot;ByM3&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b7/45/b7454960-3863-4e1e-bfc0-bbf6ebd552c5.png&quot; width=&quot;975&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Sdrs&quot;&gt;&lt;strong&gt;Вопрос 1. Какой из следующих вариантов корректно выделяет код в функцию для увеличения значения поля структуры на заданное число?&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;yArC&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9c/25/9c25f69c-aa83-4085-ac74-c3020de0f40b.png&quot; width=&quot;487&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;G2fl&quot;&gt;Варианты ответов&lt;br /&gt; A) func increment(n int, c Counter) {}&lt;br /&gt; B) func increment(c Counter, n int) {}&lt;br /&gt; C) func (c Counter) increment(n int) {}&lt;br /&gt; D) func (c *Counter) increment(n int) {}&lt;br /&gt; E) func increment(c *Counter, n int) {}&lt;/p&gt;
  &lt;p id=&quot;hijl&quot;&gt;В main вызов — increment(&amp;amp;c, 5), значит функция принимает &lt;strong&gt;указатель на Counter&lt;/strong&gt; и число. Так мы меняем исходную структуру, а не копию. Сигнатура должна быть функцией (не методом) и первым параметром — *Counter.&lt;/p&gt;
  &lt;p id=&quot;nWCc&quot;&gt;Варианты C/D — это методы, их бы вызывали c.increment(5). Варианты A/B берут Counter по значению — изменения не сохранятся. Остаётся единственный подходящий — функция с *Counter.&lt;/p&gt;
  &lt;p id=&quot;mbqn&quot;&gt;&lt;strong&gt;Выбранныйответ: E) func increment(c *Counter, n int) {}&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Xas3&quot;&gt;&lt;strong&gt;Вопрос 2 Какой будет результат выполнения следующей программы?&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;J1x5&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/46/1e/461e340b-3139-47ff-a2db-56006912862f.png&quot; width=&quot;286.5&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;fDQV&quot;&gt;Варианты ответов&lt;br /&gt; A) [1 10 3]&lt;br /&gt; B) [1 2 3]&lt;br /&gt; C) [1 2 10]&lt;br /&gt; D) [10 10 3]&lt;br /&gt; E) [10 2 3]&lt;/p&gt;
  &lt;p id=&quot;dTVt&quot;&gt;arr — массив [1 2 3]. s := arr[1:] — срез, указывающий на тот же базовый массив, начиная с элемента с индексом 1 ([2 3]). Изменение s[0] = 10 меняет arr[1] на 10. Печатаем исходный массив — получаем [1 10 3].&lt;/p&gt;
  &lt;p id=&quot;PdgN&quot;&gt;Ключ — помнить, что срезы не копируют данные, а «смотрят» в исходный массив. Изменения через срез отражаются в массиве. Поэтому меняется только средний элемент.&lt;/p&gt;
  &lt;p id=&quot;hRq3&quot;&gt;&lt;strong&gt;Выбранный ответ: A) [1 10 3]&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;m3gO&quot;&gt;&lt;strong&gt;Вопрос 3.  Вы разрабатываете библиотеку коллекций. Нужно спроектировать интерфейс и структуры стека и очереди, работающие с элементами любого типа. Какой подход наиболее правильный?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;g9HU&quot;&gt;Варианты ответов&lt;br /&gt; A) Использовать дженерики (generics) для создания типобезопасных реализаций стека и очереди&lt;br /&gt; B) Создать отдельные реализации для каждого типа (IntStack, StringStack, …)&lt;br /&gt; C) Создать интерфейс Collection с методами Add()/Remove(), который будут реализовывать Stack и Queue&lt;br /&gt; D) Использовать пустой интерфейс interface{} как тип элементов&lt;br /&gt; E) Использовать встроенные типы (слайсы/мапы) без отдельных структур и интерфейсов&lt;/p&gt;
  &lt;p id=&quot;UlyC&quot;&gt;Generics в Go позволяют параметризовать тип элемента: Stack[T any], Queue[T any]. Это даёт и универсальность, и &lt;strong&gt;типобезопасность&lt;/strong&gt; без приведения типов и без копипаста реализаций. Вариант с interface{} теряет типобезопасность и требует приведения/проверок во время выполнения. Отдельные реализации для каждого типа — дублирование кода. Обычный интерфейс без параметров не решает типизацию элементов. Использование «просто слайсов» — не библиотека и не скрывает инварианты структуры данных.&lt;/p&gt;
  &lt;p id=&quot;PT0Z&quot;&gt;Цель — «любой тип» плюс удобный API и безопасность типов. После Go 1.18 единственно зрелое решение — дженерики. Всё остальное — либо боль с приведениями, либо размножение однотипного кода.&lt;/p&gt;
  &lt;p id=&quot;3ELG&quot;&gt;&lt;strong&gt;Выбранный ответ: A) Использовать дженерики (generics) для создания типобезопасных реализаций стека и очереди&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;kEZb&quot;&gt;&lt;strong&gt;Вопрос 4.  Вам нужно реализовать сервер, который маршрутизирует по разным путям (/users, /orders). Какой инструмент пакета net/http корректен для этой задачи?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;cVrx&quot;&gt;Варианты ответов&lt;br /&gt; A) Использовать http.HandleFunc для регистрации разных обработчиков по разным путям&lt;br /&gt; B) Использовать http.ListenAndServe без регистрации обработчиков&lt;br /&gt; C) Использовать http.ServeFile для всех путей&lt;br /&gt; D) Использовать только один обработчик и вручную разбирать путь из r.URL.Path&lt;br /&gt; E) Использовать http.ServeMux без регистрации обработчиков, ожидая, что маршруты создадутся автоматически&lt;/p&gt;
  &lt;p id=&quot;Fw2N&quot;&gt;В стандартной библиотеке маршрутизация решается регистрацией обработчиков на пути. http.HandleFunc(pattern, handler) регистрирует функцию-обработчик на DefaultServeMux (или вы можете создать свой ServeMux и вызывать mux.HandleFunc). Это ровно то, что нужно для разных маршрутов. ListenAndServe только запускает сервер. ServeFile — для выдачи файлов. Один общий обработчик с ручным парсингом пути — костыль. ServeMux без регистрации ничего не сделает.&lt;/p&gt;
  &lt;p id=&quot;lq9p&quot;&gt;Когда нужны простые маршруты — не тянуть сторонний роутер, достаточно HandleFunc/ServeMux. Это читаемо и прозрачно: по коду сразу видно, какой путь к какому хендлеру привязан.&lt;/p&gt;
  &lt;p id=&quot;1i76&quot;&gt;&lt;strong&gt;Выбранный ответ: A) Использовать http.HandleFunc для регистрации разных обработчиков по разным путям&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;mHfK&quot;&gt;&lt;strong&gt;Вопрос 5. У вас есть несколько горутин, которые одновременно записывают данные в общую структуру. Какой примитив синхронизации выбрать, чтобы предотвратить гонку данных?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;KOs8&quot;&gt;Варианты ответов&lt;br /&gt; A) sync.WaitGroup&lt;br /&gt; B) sync.Pool&lt;br /&gt; C) sync.Once&lt;br /&gt; D) sync.Mutex&lt;br /&gt; E) sync.Cond&lt;/p&gt;
  &lt;p id=&quot;Wuu9&quot;&gt;Для защиты общего ресурса нужен примитив взаимного исключения — чтобы только одна горутина в момент времени выполняла критическую секцию записи. В Go для этого предназначен sync.Mutex (или специализированный sync.RWMutex для разделения чтения/записи).&lt;br /&gt; WaitGroup лишь ждёт завершения горутин, гонки не предотвращает. Pool — кэш объектов. Once выполняет код один раз. Cond — механизм оповещения/ожидания, но сам по себе данные не защищает.&lt;/p&gt;
  &lt;p id=&quot;iITD&quot;&gt;Смотрю на формулировку «одновременно записывают» — ключевое слово «взаимное исключение». Из перечисленного прямой ответственный за это только мьютекс; всё остальное — про учёт, кэширование или сигнализацию.&lt;/p&gt;
  &lt;p id=&quot;pdFm&quot;&gt;&lt;strong&gt;Выбранный ответ: D) sync.Mutex&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;SiYr&quot;&gt;&lt;strong&gt;Вопрос 6. Почему программа с ch := make(chan int); ch &amp;lt;- 1 «зависает» и не завершается?&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;Hdqp&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b8/c4/b8c44958-cf1d-4f2c-8cab-20fc40f3f73e.png&quot; width=&quot;238.5&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Y5UV&quot;&gt;Варианты ответов&lt;br /&gt; A) Проблема в том, что значение не было считано из канала, поэтому оно теряется&lt;br /&gt; B) Проблема в том, что отправка в небуферизованный канал блокируется, если нет получателя&lt;br /&gt; C) Проблема в том, что канал был объявлен как односторонний&lt;br /&gt; D) Проблема в том, что канал был закрыт до отправки значения&lt;br /&gt; E) Проблема в том, что канал был объявлен как буферизованный, но буфер заполнен&lt;/p&gt;
  &lt;p id=&quot;KHyA&quot;&gt;Канал создан без буфера (make(chan int)). Отправка в такой канал блокируется, пока другая горутина не выполнит чтение. Получателя нет — главная горутина залипает на ch &amp;lt;- 1, до Println не доходит. Решения: добавить буфер make(chan int, 1) или организовать чтение/запись в разных горутинах.&lt;/p&gt;
  &lt;p id=&quot;2Tor&quot;&gt;Код без go и без чтения — классический deadlock на небуферизованном канале. Если бы канал был буферизован, отправка одного значения прошла бы; если бы он был закрыт — паника, а не «висение».&lt;/p&gt;
  &lt;p id=&quot;W3k7&quot;&gt;&lt;strong&gt;Выбранный ответ: B) Проблема в том, что отправка в небуферизованный канал блокируется, если нет получателя&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;VP8q&quot;&gt;&lt;strong&gt;Вопрос 7. Есть ли в фрагменте кода гонка данных и каким примитивом синхронизации её устранить?&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;D9xO&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/06/a7/06a7f20a-c53a-4f42-a30d-23511545b7c1.png&quot; width=&quot;410&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;43Ii&quot;&gt;Варианты ответов&lt;br /&gt; A) Гонка данных присутствует, устранить с помощью sync.Mutex&lt;br /&gt; B) Гонка данных присутствует, устранить с помощью sync.Once&lt;br /&gt; C) Гонка данных присутствует, устранить с помощью sync.Pool&lt;br /&gt; D) Гонка данных отсутствует, код корректен&lt;br /&gt; E) Гонка данных присутствует, устранить с помощью sync.Cond&lt;/p&gt;
  &lt;p id=&quot;wk9v&quot;&gt;Несколько горутин одновременно выполняют counter++. Это две операции (чтение → инкремент → запись), которые без защиты могут переписать друг друга — типичная гонка. WaitGroup только ждёт завершения, но не защищает доступ. Для безопасной записи нужен мьютекс: mu.Lock(); counter++; mu.Unlock() (или атомики, но их нет в вариантах).&lt;/p&gt;
  &lt;p id=&quot;3DzA&quot;&gt;Смотрю на признак гонки: общий изменяемый счётчик плюс параллельные инкременты. Любые ответы про Once/Poll/Cond не решают взаимоисключение. Остаётся мьютекс как прямой и корректный способ.&lt;/p&gt;
  &lt;p id=&quot;Usds&quot;&gt;&lt;strong&gt;Выбранный ответ: A) Гонка данных присутствует, устранить с помощью sync.Mutex&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;qKBz&quot;&gt;&lt;strong&gt;Вопрос 7. Нужно протестировать GetUser без использования реальной базы данных. Какой подход выбрать?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;2uQj&quot;&gt;Варианты ответов&lt;br /&gt; A) Добавить в GetUser условную логику, определяющую тестовый режим&lt;br /&gt; B) Использовать глобальные переменные для тестовых данных и переключения режимов&lt;br /&gt; C) Изменить GetUser, добавив параметр «тестовый режим»&lt;br /&gt; D) Создать временную БД для тестов и использовать её вместо основной&lt;br /&gt; E) Создать реализацию интерфейса UserRepository, возвращающую предопределённые данные для тестов (мок)&lt;/p&gt;
  &lt;p id=&quot;QFZu&quot;&gt;В коде репозиторий вынесен в интерфейс UserRepository и передаётся в UserService через конструктор. Это специально сделано для подмены зависимостей. В тесте создаём мок-реализацию UserRepository (или стаб), который возвращает фиксированные данные, и передаём его в NewUserService. Так мы изолируем логику сервиса от БД и получаем быстрые, детерминированные unit-тесты.&lt;/p&gt;
  &lt;p id=&quot;gAMX&quot;&gt;Флаги «тестовый режим» и глобальные переменные усложняют код и ломают изоляцию. Временная БД — это уже интеграционные тесты: медленно и не то, что спрашивают («без реальной БД»). Интерфейс+мок — каноничный путь для юнит-тестов в Go.&lt;/p&gt;
  &lt;p id=&quot;0Taq&quot;&gt;&lt;strong&gt;Выбранный ответ: E) Создать реализацию интерфейса UserRepository, возвращающую предопределённые данные для тестов (мок)&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;65Cz&quot;&gt;&lt;strong&gt;Вопрос 8. Что наиболее точно описывает рефлексию?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;9rPi&quot;&gt;Варианты ответов&lt;br /&gt; A) Рефлексия — это инструмент отладки, выводящий доп. информацию&lt;br /&gt; B) Рефлексия — это параметр профилирования через goprof&lt;br /&gt; C) Рефлексия — это техника для создания UI через отображение поведения объекта&lt;br /&gt; D) Рефлексия — это метод оптимизации, изменяющий внутреннее устройство объекта&lt;br /&gt; E) Рефлексия — это механизм, позволяющий программе анализировать и изменять свою структуру и поведение во время выполнения&lt;/p&gt;
  &lt;p id=&quot;qAxL&quot;&gt;Рефлексия в Go — это пакет reflect, который позволяет в рантайме смотреть на тип и значение (type/value), а также, где это допускается, изменять значения через отражение. Это не про отладку, не про профилирование и не про «ускорение кода».&lt;/p&gt;
  &lt;p id=&quot;TVrI&quot;&gt;Ищу формулировку про «исследовать/менять во время выполнения» — это сущность reflection. Остальные ответы путают с логированием, профайлингом или оптимизациями.&lt;/p&gt;
  &lt;p id=&quot;lUQB&quot;&gt;&lt;strong&gt;Выбранный ответ: E) Рефлексия — это механизм, позволяющий программе анализировать и изменять свою структуру и поведение во время выполнения&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;CheD&quot;&gt;&lt;strong&gt;Вопрос 9. Какое из следующих утверждений о gRPC является &lt;/strong&gt;неверным&lt;strong&gt;?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;66Jk&quot;&gt;Варианты ответов&lt;br /&gt; A) gRPC позволяет сгенерировать серверный и клиентский код на основе файлов .proto&lt;br /&gt; B) gRPC позволяет определять сервисы и методы в файлах с расширением .proto&lt;br /&gt; C) gRPC поддерживает двунаправленную потоковую передачу данных&lt;br /&gt; D) gRPC использует Protocol Buffers (protobuf) для сериализации данных&lt;br /&gt; E) gRPC поддерживает только синхронные вызовы&lt;/p&gt;
  &lt;p id=&quot;zWwU&quot;&gt;gRPC по умолчанию работает поверх HTTP/2 и поддерживает четыре вида вызовов: unary, server-streaming, client-streaming и bidirectional streaming. Это означает наличие асинхронного взаимодействия; ограничение “только синхронные вызовы” неверно. Остальные пункты описывают стандартный рабочий процесс: описываем сервисы/сообщения в .proto и генерируем код, обычно с protobuf.&lt;/p&gt;
  &lt;p id=&quot;5Ca6&quot;&gt;Ключевой маркер — «только синхронные». gRPC славится потоками и стримингом, значит утверждение противоречит сути технологии. Остальное — привычные факты про .proto и генерацию.&lt;/p&gt;
  &lt;p id=&quot;H3Jm&quot;&gt;&lt;strong&gt;Выбранный ответ: E) gRPC поддерживает только синхронные вызовы&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;UFBs&quot;&gt;&lt;strong&gt;Вопрос 10. Какой из следующих вариантов наиболее корректно описывает назначение контекста (context)?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;PLHS&quot;&gt;Варианты ответов&lt;br /&gt; A) Контекст применяется только для тестирования&lt;br /&gt; B) Контекст необходим для сериализации данных в JSON&lt;br /&gt; C) Контекст предназначен для хранения пользовательских данных между функциями&lt;br /&gt; D) Контекст используется для передачи сигналов отмены, и метаданных между горутинами&lt;br /&gt; E) Контекст используется только для логирования ошибок&lt;/p&gt;
  &lt;p id=&quot;hygO&quot;&gt;context.Context несёт дедлайны/таймауты, сигнал отмены и request-scoped значения через границы вызовов и между горутинами. Это помогает корректно завершать операции и пробрасывать техметаданные (trace-id, locale и т. п.). Он не про JSON, не только про логи и не «контейнер для пользовательских данных».&lt;/p&gt;
  &lt;p id=&quot;rCTu&quot;&gt;Ищу формулировку, где есть «отмена/дедлайн + значения». Только вариант D покрывает этот смысл. Пункт C опасен: контекст не должен хранить бизнес-данные — только небольшие метаданные.&lt;/p&gt;
  &lt;p id=&quot;bQEo&quot;&gt;&lt;strong&gt;Выбранный ответ: D) Контекст используется для передачи сигналов отмены, и метаданных между горутинами&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;lQaE&quot;&gt;&lt;strong&gt;Вопрос 12. Какое из следующих утверждений о строках является верным?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Jx5F&quot;&gt;Варианты ответов&lt;br /&gt; A) Строка — это срез рун&lt;br /&gt; B) Строка всегда состоит из символов Unicode&lt;br /&gt; C) Строка представляет собой неизменяемую последовательность байт&lt;br /&gt; D) Строка может быть изменена напрямую&lt;br /&gt; E) Строка всегда заканчивается нулевым байтом&lt;/p&gt;
  &lt;p id=&quot;LjOf&quot;&gt;В Go строка — это отдельный тип, хранящий &lt;strong&gt;неизменяемую&lt;/strong&gt; последовательность байт. Обычно это UTF-8, но технически в строке могут быть любые байты (в т. ч. невалидный UTF-8). Поэтому строка — не срез рун, менять её «на месте» нельзя, нулевым байтом она не завершается.&lt;/p&gt;
  &lt;p id=&quot;uAaT&quot;&gt;Проверяю признаки: «неизменяемость» и «байты» — ключ к строкам в Go. Любые формулировки про «срез рун», «всегда Unicode» или «нулевой байт» — это про другие языки/модели.&lt;/p&gt;
  &lt;p id=&quot;Fr3G&quot;&gt;&lt;strong&gt;Выбранный ответ: C) Строка представляет собой неизменяемую последовательность байт&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;eJXQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/53/07534462-c760-458e-ba19-aa3d84b5d6d7.png&quot; width=&quot;973&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7hnq&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;br /&gt; Средний уровень — умение видеть последствия. Где нужен мьютекс, где — канал; как правильно прокинуть context; почему «зелёный» тест не означает стабильный прод. Вы принимаете решения, исходя из модели рантайма и поведения библиотек, а не из привычки. Проектируете безопасный и предсказуемый код, учитываете среду выполнения.&lt;/p&gt;

</content></entry><entry><id>ildm:LaU6KZvbiqg</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/LaU6KZvbiqg?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>Go (Golang): Базовый уровень.</title><published>2025-10-11T21:53:11.379Z</published><updated>2025-10-11T21:53:11.379Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/d7/65/d765468f-3da9-41e6-b35e-0a7f55e45b97.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c2/fa/c2fa610b-a63d-4a9e-85cc-14368f4caae8.png&quot;&gt;Начинаем с фундамента. Задачи простые по форме, но требуют понимания моделей Go. Зачем проходить тест? Чтобы проверить, как вы читаете код и предсказываете поведение без запуска. Часто встречаются вопросы про константы и типы, срезы и карты, цикл for … range, интерфейсы, указатели, минимальный HTTP-сервер, горутины и базовые тесты.</summary><content type="html">
  &lt;p id=&quot;Ni7y&quot;&gt;Начинаем с фундамента. Задачи простые по форме, но требуют понимания моделей Go. Зачем проходить тест? Чтобы проверить, как вы читаете код и предсказываете поведение без запуска. Часто встречаются вопросы про константы и типы, срезы и карты, цикл for … range, интерфейсы, указатели, минимальный HTTP-сервер, горутины и базовые тесты.&lt;/p&gt;
  &lt;figure id=&quot;z7WZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c2/fa/c2fa610b-a63d-4a9e-85cc-14368f4caae8.png&quot; width=&quot;975&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;QLgg&quot;&gt;&lt;strong&gt;Вопрос 1. Какой из следующих вариантов не является корректным объявлением константы?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;0aof&quot;&gt;Варианты ответов&lt;br /&gt; A) const y = 5&lt;br /&gt; B) const y int = 5&lt;br /&gt; C) const header = []byte{1,2,3}&lt;br /&gt; D) const y float64 = 3.14&lt;br /&gt; E) const y = &amp;quot;hello&amp;quot;&lt;/p&gt;
  &lt;p id=&quot;Xob5&quot;&gt;В Go константами могут быть только значения, известные на этапе компиляции: числа, строки, руны, булевы. Срезы, мапы, функции и т. п. — это НЕ константы. Литерал []byte{1,2,3} создаёт срез (runtime-значение), поэтому с const он недопустим. Остальные варианты — корректные числовые/строковые константы (типизированные и нет).&lt;/p&gt;
  &lt;p id=&quot;uEEm&quot;&gt;Критерий простой: «компиляторное значение или нет». Срез — всегда динамическая структура, значит отпадает. Числа/строки — ок, даже с явным типом.&lt;/p&gt;
  &lt;p id=&quot;scb1&quot;&gt;&lt;strong&gt;Выбранный ответ: C) constheader = []byte{1,2,3}&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Rn1K&quot;&gt;&lt;strong&gt;Вопрос 2. Какое из следующих утверждений верно описывает назначение и использование указателей в языке Go?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;jmiQ&quot;&gt;Варианты ответов&lt;br /&gt; A) Указатели используются для работы с сетевыми соединениями и предоставляют удобный интерфейс для обработки HTTP-запросов&lt;br /&gt; B) Указатели автоматически создаются для каждой переменной, и разработчик не управляет ими вручную&lt;br /&gt; C) Указатели — это ключевое слово, определяющее область видимости переменной в программе&lt;br /&gt; D) Указатели позволяют напрямую изменять значение переменной, переданной в функцию, без её копирования&lt;br /&gt; E) Указатели в Go используются только для взаимодействия с внешними библиотеками на C через cgo&lt;/p&gt;
  &lt;p id=&quot;HdBQ&quot;&gt;Указатель — это значение, хранящее адрес другой переменной. Передавая в функцию указатель (а не копию значения), можно менять исходные данные и избегать лишнего копирования. Остальные формулировки неверны: указатели не «для HTTP», не создаются автоматически для каждой переменной, не связаны с областью видимости и, разумеется, используются далеко не только в cgo.&lt;/p&gt;
  &lt;p id=&quot;s4dY&quot;&gt;Ключевой сигнал — слова «изменять значение… без копирования». Это базовый мотив использования указателей в Go. Остальные варианты либо путают области (сеть, cgo), либо описывают механики, которых в языке нет (автосоздание, «ключевое слово» про видимость).&lt;/p&gt;
  &lt;p id=&quot;vOi8&quot;&gt;&lt;strong&gt;Выбранный ответ: D) Указатели позволяют напрямую изменять значение переменной, переданной в функцию, без её копирования&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;eiYJ&quot;&gt;&lt;strong&gt;Вопрос 3. Какой из следующих вариантов корректно реализует функцию для перебора элементов среза?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;mCTZ&quot;&gt;Варианты ответов&lt;br /&gt; A) index, fruit in range&lt;br /&gt; B) for index, fruit in range fruits&lt;br /&gt; C) index, fruit := range fruits&lt;br /&gt; D) fruits.Each(index, fruit)&lt;br /&gt; E) for index, fruit := range fruits&lt;/p&gt;
  &lt;p id=&quot;p7V6&quot;&gt;В Go перебор среза делается через for ... range. Нужны три вещи: ключевое слово for, операция := для объявления переменных индекса и значения, и объект после range. Итоговый шаблон:&lt;br /&gt; for index, fruit := range fruits { ... }&lt;br /&gt; Варианты с in — это синтаксис не из Go; без for — тоже ошибка; вызов Each — не часть стандартного языка.&lt;/p&gt;
  &lt;p id=&quot;Esmm&quot;&gt;Смотрю на ключевые маркеры Go: for + range + :=. Только вариант с ними тремя совпадает с тем, как я пишу циклы в коде ежедневно. Остальные — явные «замены» из других языков или неполные конструкции.&lt;/p&gt;
  &lt;p id=&quot;AWF9&quot;&gt;&lt;strong&gt;Выбранный ответ: E) forindex, fruit := rangefruits&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;A471&quot;&gt;&lt;strong&gt;Вопрос 4. Нужно реализовать функцию, которая принимает срез строк и возвращает новый срез только с уникальными значениями. Какой способ будет наиболее эффективным по времени?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;5PqI&quot;&gt;Варианты ответов&lt;br /&gt; A) Использовать map для отслеживания уже встреченных значений&lt;br /&gt; B) Использовать массив фиксированной длины для хранения уникальных значений&lt;br /&gt; C) Создать новый срез и добавлять в него только уникальные элементы, проверяя наличие через цикл&lt;br /&gt; D) Использовать рекурсивную функцию для поиска уникальных значений&lt;br /&gt; E) Сортировать срез и удалять дубликаты в цикле&lt;/p&gt;
  &lt;p id=&quot;F29k&quot;&gt;map[string]struct{} даёт амортизированное O(n) по времени: один проход, проверка наличия — O(1).&lt;br /&gt; Сортировка — O(n log n) и ломает исходный порядок.&lt;br /&gt; Линейная проверка наличия в новом срезе — O(n²).&lt;br /&gt; Массив фиксированной длины неприменим (не знаем размер и поиск линейный).&lt;br /&gt; Рекурсия здесь не даёт выигрыша и усложняет код.&lt;/p&gt;
  &lt;p id=&quot;LFZl&quot;&gt;Критерий — минимизировать асимптотику. В проде обычно делаю seen := map[string]struct{} и добавляю в результирующий срез только новые элементы — быстро и сохраняет порядок появления. Сортировку беру лишь если порядок не важен и нужно постобработать.&lt;/p&gt;
  &lt;p id=&quot;YiGJ&quot;&gt;&lt;strong&gt;Выбранный ответ: A) Использовать map для отслеживания уже встреченных значений&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Qlnk&quot;&gt;&lt;strong&gt;Вопрос 5. Какое из следующих утверждений о интерфейсах является верным?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;1WQN&quot;&gt;Варианты ответов&lt;br /&gt; A) Интерфейсы позволяют определять набор методов, которые должны реализовать типы&lt;br /&gt; B) Интерфейсы не могут быть использованы для передачи поведения между типами&lt;br /&gt; C) Интерфейсы автоматически реализуются только структурами, объявленными с ключевым словом interface&lt;br /&gt; D) Интерфейсы используются для хранения только примитивных типов данных&lt;br /&gt; E) Интерфейсы необходимы только для работы с внешними библиотеками&lt;/p&gt;
  &lt;p id=&quot;yYk0&quot;&gt;В Go интерфейс — это контракт: набор методов. Любой тип, у которого есть эти методы, &lt;strong&gt;неявно&lt;/strong&gt; удовлетворяет интерфейсу. Это основа полиморфизма в Go (пример: io.Reader, fmt.Stringer). Остальные варианты неверны: интерфейсы как раз и передают поведение, их реализуют не только структуры, они могут хранить значения любых типов, и их применение далеко не ограничено внешними библиотеками.&lt;/p&gt;
  &lt;p id=&quot;cBWJ&quot;&gt;Ключевая идея Go — “согласие по методу, а не по объявлению”. Я смотрю, где описан именно «набор методов». Остальные ответы либо путают назначение (про поведение), либо приписывают интерфейсам ограничения, которых нет.&lt;/p&gt;
  &lt;p id=&quot;FTCk&quot;&gt;&lt;strong&gt;Выбранный ответ: A) Интерфейсы позволяют определять набор методов, которые должны реализовать типы&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;TQVt&quot;&gt;&lt;strong&gt;Вопрос 6. Какое из утверждений о срезах (slices) верное?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ItOG&quot;&gt;Варианты ответов&lt;br /&gt; A) Функция append() никогда не изменяет емкость (capacity) исходного среза&lt;br /&gt; B) Срезы в Go имеют фиксированную длину, которая не может быть изменена после создания&lt;br /&gt; C) Срезы в Go могут содержать элементы разных типов данных&lt;br /&gt; D) При передаче среза в функцию всегда создаётся его полная копия с копированием всех элементов&lt;br /&gt; E) Срезы в Go являются ссылочным типом данных и указывают на базовый массив&lt;/p&gt;
  &lt;p id=&quot;Phcy&quot;&gt;Срез — это «описатель» поверх массива: он хранит указатель на базовый массив, длину и ёмкость. Поэтому изменения через срез обычно затрагивают тот же массив. append возвращает &lt;strong&gt;новый&lt;/strong&gt; срез; при нехватке capacity он аллоцирует новый массив — значит утверждение «никогда не изменяет» неверно. Длина среза не фиксирована (меняется через append/реслайсинг). Срезы типизированы — элементы одного типа. Передача среза в функцию копирует только описатель, а не все элементы.&lt;/p&gt;
  &lt;p id=&quot;R2fu&quot;&gt;Ключ к задаче: понять природу среза — это не контейнер с копиями, а «окно» в массив. Отсюда сразу отпадают варианты про фиксированную длину, полную копию и «никогда не меняется capacity». Про разные типы — в Go контейнеры гомогенные.&lt;/p&gt;
  &lt;p id=&quot;4opU&quot;&gt;&lt;strong&gt;Выбранный ответ: E) Срезы в Go являются ссылочным типом данных и указывают на базовый массив&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;3E5a&quot;&gt;&lt;strong&gt;Вопрос 7. Какой из следующих шагов НЕ является обязательным при создании и запуске HTTP-сервера?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;pldc&quot;&gt;Варианты ответов&lt;br /&gt; A) Создать функцию-обработчик, которая принимает параметры http.ResponseWriter и *http.Request&lt;br /&gt; B) Зарегистрировать функцию-обработчик с помощью http.HandleFunc&lt;br /&gt; C) Запустить сервер с помощью http.ListenAndServe&lt;br /&gt; D) Создать структуру для хранения состояния сервера и передать её в функцию-обработчик&lt;br /&gt; E) Импортировать пакет net/http&lt;/p&gt;
  &lt;p id=&quot;qLWj&quot;&gt;Базовый сервер в Go требует: импорт net/http, наличие обработчика (функции или типа с ServeHTTP), регистрацию маршрута (через HandleFunc/Handle или передачу собственного mux) и запуск (ListenAndServe или эквивалент). Отдельная структура состояния — это удобный паттерн, но не обязательный шаг.&lt;/p&gt;
  &lt;p id=&quot;fpVE&quot;&gt;Смотрю, что является «ритуальными» минимальными действиями для hello-world сервера. Структура для состояния — это про дизайн и тестируемость; сервер запустится и без неё.&lt;/p&gt;
  &lt;p id=&quot;G4dJ&quot;&gt;&lt;strong&gt;Выбранный ответ: D) Создать структуру для хранения состояния сервера и передать её в функцию-обработчик&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;uOmE&quot;&gt;&lt;strong&gt;Вопрос 8. Какое из следующих утверждений о горутинах является неверным?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;GCFJ&quot;&gt;Варианты ответов&lt;br /&gt; A) Горутины могут взаимодействовать друг с другом с помощью каналов&lt;br /&gt; B) Горутины — это легковесные потоки, которые управляются рантаймом Go&lt;br /&gt; C) Горутины могут выполняться параллельно на нескольких ядрах, если программа запущена на многоядерной системе&lt;br /&gt; D) Горутины всегда завершаются в том порядке, в котором они были запущены&lt;br /&gt; E) Горутины создаются с помощью ключевого слова go, за которым следует вызов функции&lt;/p&gt;
  &lt;p id=&quot;g7S0&quot;&gt;Рантайм Go планирует горутины независимо; порядок их завершения не гарантируется. Каналы — штатный механизм взаимодействия. Параллелизм возможен на многоядерной системе (см. GOMAXPROCS). Создание горутины — оператор go f().&lt;/p&gt;
  &lt;p id=&quot;mztF&quot;&gt;Вопрос про свойства планировщика: если бы завершение шло строго по порядку запуска, конкуренции как таковой не было бы. На практике горутины стартуют и заканчиваются в произвольном порядке — это базовый принцип.&lt;/p&gt;
  &lt;p id=&quot;fgZB&quot;&gt;&lt;strong&gt;Выбранный ответ: D) Горутины всегда завершаются в том порядке, в котором они были запущены&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;JrAO&quot;&gt;&lt;strong&gt;Вопрос 9. Какое из следующих утверждений о sync.Mutex верное?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;qfIr&quot;&gt;Варианты ответов&lt;br /&gt; A) sync.Mutex используется только для синхронизации каналов&lt;br /&gt; B) sync.Mutex не требует явного вызова методов для блокировки и разблокировки&lt;br /&gt; C) sync.Mutex может быть использован только внутри функции main&lt;br /&gt; D) sync.Mutex автоматически завершает работу всех горутин&lt;br /&gt; E) sync.Mutex обеспечивает взаимное исключение при доступе к разделяемым данным&lt;/p&gt;
  &lt;p id=&quot;qu3p&quot;&gt;sync.Mutex — примитив взаимного исключения: Lock() блокирует, Unlock() разблокирует. Он нужен, чтобы защищать общий ресурс от одновременной записи/чтения несколькими горутинами. Он не имеет отношения к каналам, не завершает горутины и не «срабатывает сам по себе» без явных вызовов.&lt;/p&gt;
  &lt;p id=&quot;u8Uq&quot;&gt;Ключ — что делает мьютекс: лишь «один заходит — остальные ждут». Варианты про каналы и автозавершение — мимо. Про main — искусственное ограничение; мьютекс — обычный тип, где угодно.&lt;/p&gt;
  &lt;p id=&quot;troe&quot;&gt;&lt;strong&gt;Выбранный ответ: E) sync.Mutex обеспечивает взаимное исключение при доступе к разделяемым данным&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;rIVi&quot;&gt;&lt;strong&gt;Вопрос 10. Какое из следующих утверждений о написании тестов верное?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;XRMb&quot;&gt;Варианты ответов&lt;br /&gt; A) Тестовые функции могут иметь произвольное имя&lt;br /&gt; B) Тестовые функции должны начинаться с префикса Test&lt;br /&gt; C) Тестовые функции должны возвращать значение типа bool&lt;br /&gt; D) Тестовые функции не могут использовать методы t.Error и t.Fail&lt;br /&gt; E) Тестовые функции должны быть объявлены в пакете main&lt;/p&gt;
  &lt;p id=&quot;LxGs&quot;&gt;В Go тесты — это функции вида func TestXxx(t *testing.T) в файлах *_test.go. Имя обязательно начинается с Test, возвращаемых значений нет, а для фиксации ошибок как раз используются методы t.Error, t.Fail, t.Fatalf и т. п. Тесты обычно пишут в том же пакете, что и код (или в package name_test), но не обязаны быть в main.&lt;/p&gt;
  &lt;p id=&quot;T83k&quot;&gt;Ищу «ритуальное» правило распознавания тестов раннером go test. Это именно префикс Test и сигнатура с *testing.T. Остальные варианты либо добавляют несуществующие требования (возвращать bool, пакет main), либо прямо противоречат практике (про произвольное имя и запрет t.Error/t.Fail).&lt;/p&gt;
  &lt;p id=&quot;boSX&quot;&gt;&lt;strong&gt;Выбранный ответ: B) Тестовые функции должны начинаться с префикса Test&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;MPma&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/18/d2/18d2984e-b10e-4b1b-ada0-89bfa6ac7fd3.png&quot; width=&quot;973&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;JF8B&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;br /&gt; Базовый уровень — это не про синтаксис, а про ментальные опоры: «срез — окно в массив», «интерфейс — контракт по методам», «канал — обмен и синхронизация», «константа — значение компилятора». Если это щёлкает в голове, вы пишете предсказуемый код и меньше дебажите. Понимаете основные абстракции Go и не наступаете на простые грабли.&lt;/p&gt;

</content></entry><entry><id>ildm:00nEEP4sO8F</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/00nEEP4sO8F?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>C++. Средний уровень</title><published>2025-10-11T21:51:06.990Z</published><updated>2025-10-11T21:51:06.990Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/1b/a3/1ba3d5d1-fe2c-48fd-b6e3-3a50b14809ad.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/32/f0/32f063f0-63c3-4351-9ce6-aa01ad7c0abc.png&quot;&gt;Дальше — не о синтаксисе, а об аккуратном пользовании стандартной библиотекой. Здесь спрашивают про итераторы и их валидность, компараторы в sort, умные указатели, исключения и RAII, шаблоны и перегрузки, базовые отношения между классами.</summary><content type="html">
  &lt;p id=&quot;kwVK&quot;&gt;Дальше — не о синтаксисе, а об аккуратном пользовании стандартной библиотекой. Здесь спрашивают про итераторы и их валидность, компараторы в sort, умные указатели, исключения и RAII, шаблоны и перегрузки, базовые отношения между классами.&lt;/p&gt;
  &lt;figure id=&quot;GRgo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/32/f0/32f063f0-63c3-4351-9ce6-aa01ad7c0abc.png&quot; width=&quot;975&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Vw9W&quot;&gt;&lt;strong&gt;Вопрос 1. Выберите правильный формат для объявления динамического массива A из float, размерностью n.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;qhNF&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;YEQx&quot;&gt;1.     float **A = new float[n]&lt;/p&gt;
  &lt;p id=&quot;qmx4&quot;&gt;2.     float A* = new(n)&lt;/p&gt;
  &lt;p id=&quot;2lnt&quot;&gt;3.     float A = new float[n]&lt;/p&gt;
  &lt;p id=&quot;s0i6&quot;&gt;4.     float A[n]&lt;/p&gt;
  &lt;p id=&quot;u4fO&quot;&gt;5.     float *A = new float[n]&lt;/p&gt;
  &lt;p id=&quot;k7fx&quot;&gt;Нужен динамический массив — значит, указатель на первый элемент и new [].&lt;br /&gt; — (1) указатель на указатель — лишний уровень.&lt;br /&gt; — (2) синтаксис неверный, похоже на placement new, но записано неправильно.&lt;br /&gt; — (3) слева float, а справа — адрес из new → несовместимо.&lt;br /&gt; — (4) это автоматический массив (и VLA в стандарте C++ нет) — не динамическая аллокация.&lt;br /&gt; — (5) корректный указатель на float с выделением n элементов. Не забыть delete[] A; после использования.&lt;/p&gt;
  &lt;p id=&quot;pZ9B&quot;&gt;&lt;strong&gt;Выбранный ответ: №5 — float *A = new float[n]&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;CtOM&quot;&gt;&lt;strong&gt;Вопрос 2. Как правильно прочитать строку с пробелами?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;B9Gy&quot;&gt;std::string line;&lt;/p&gt;
  &lt;p id=&quot;wuDU&quot;&gt;____;&lt;/p&gt;
  &lt;p id=&quot;OfHL&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;phvE&quot;&gt;1.     std::cin.read(line)&lt;/p&gt;
  &lt;p id=&quot;hH3a&quot;&gt;2.     std::cin &amp;gt;&amp;gt; line&lt;/p&gt;
  &lt;p id=&quot;EmqY&quot;&gt;3.     std::cout &amp;gt;&amp;gt; line&lt;/p&gt;
  &lt;p id=&quot;Fw60&quot;&gt;4.     std::cout &amp;lt;&amp;lt; line&lt;/p&gt;
  &lt;p id=&quot;eoUM&quot;&gt;5.     std::getline(std::cin, line)&lt;/p&gt;
  &lt;p id=&quot;xe3U&quot;&gt;Нужно считать всю строку, включая пробелы.&lt;br /&gt; — Оператор &amp;gt;&amp;gt; (вариант 2) читает только до первого пробела — потеряем остаток.&lt;br /&gt; — std::cin.read (1) работает с сырым буфером (char* и количеством байт), не со std::string.&lt;br /&gt; — Варианты с std::cout (3, 4) — это вывод, а не ввод.&lt;br /&gt; — std::getline (5) читает всю строку до &amp;#x27;\n&amp;#x27;, как раз то, что нужно. На практике помню про нюанс: если до этого читали числа через &amp;gt;&amp;gt;, нужно сначала съесть оставшийся &amp;#x27;\n&amp;#x27;.&lt;/p&gt;
  &lt;p id=&quot;Yiao&quot;&gt;&lt;strong&gt;Выбранныйответ: std::getline(std::cin, line)&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;iBx4&quot;&gt;&lt;strong&gt;Вопрос 3. Для хранения номеров заказов клиентов нужна структура данных, которая позволяет хранить уникальные элементы и быстро проверять их наличие. Какой контейнер выбрать?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dftU&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;DJO8&quot;&gt;1.     std::stack&lt;/p&gt;
  &lt;p id=&quot;sDhe&quot;&gt;2.     std::unordered_set&lt;/p&gt;
  &lt;p id=&quot;tSTc&quot;&gt;3.     std::vector&lt;/p&gt;
  &lt;p id=&quot;zcwD&quot;&gt;4.     std::list&lt;/p&gt;
  &lt;p id=&quot;gqX9&quot;&gt;5.     std::deque&lt;/p&gt;
  &lt;p id=&quot;EtPu&quot;&gt;Нужны уникальные значения и быстрый поиск/вставка.&lt;br /&gt; На что обращаю внимание:&lt;br /&gt; — std::unordered_set — хеш-таблица: автоматом обеспечивает уникальность, среднее O(1) на insert/find.&lt;br /&gt; — vector, list, deque требуют линейного поиска O(n) для проверки наличия.&lt;br /&gt; — stack — это обёртка LIFO без произвольного поиска.&lt;/p&gt;
  &lt;p id=&quot;SgCo&quot;&gt;Вывод: оптимально хеш-множество.&lt;/p&gt;
  &lt;p id=&quot;2x50&quot;&gt;&lt;strong&gt;Выбранный ответ: №2 — std::unordered_set&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;pxZz&quot;&gt;&lt;strong&gt;Вопрос 4. Какой тип связи используется между Teacher и Student?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Zbvp&quot;&gt;class Teacher;&lt;/p&gt;
  &lt;p id=&quot;Fjlo&quot;&gt;class Student {&lt;/p&gt;
  &lt;p id=&quot;LYKK&quot;&gt;public:&lt;/p&gt;
  &lt;p id=&quot;2ck7&quot;&gt;void attendClass(Teacher* teacher) {&lt;/p&gt;
  &lt;p id=&quot;jXlC&quot;&gt;std::cout &amp;lt;&amp;lt; &amp;quot;Attending class by teacher &amp;quot; &amp;lt;&amp;lt; teacher;&lt;/p&gt;
  &lt;p id=&quot;ntJN&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;y65B&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;WsSo&quot;&gt;class Teacher {&lt;/p&gt;
  &lt;p id=&quot;m7DC&quot;&gt;public:&lt;/p&gt;
  &lt;p id=&quot;lSJv&quot;&gt;void teach(Student* student) {&lt;/p&gt;
  &lt;p id=&quot;gu9s&quot;&gt;std::cout &amp;lt;&amp;lt; &amp;quot;Teaching student &amp;quot; &amp;lt;&amp;lt; student;&lt;/p&gt;
  &lt;p id=&quot;cZZF&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;YCp4&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;2TTI&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;SSIh&quot;&gt;1.     Композиция&lt;/p&gt;
  &lt;p id=&quot;alZm&quot;&gt;2.     Ассоциация&lt;/p&gt;
  &lt;p id=&quot;rzZ4&quot;&gt;3.     Наследование&lt;/p&gt;
  &lt;p id=&quot;qFuB&quot;&gt;4.     Инкапсуляция&lt;/p&gt;
  &lt;p id=&quot;BtOQ&quot;&gt;5.     Агрегация&lt;/p&gt;
  &lt;p id=&quot;pZ1c&quot;&gt;Классы не хранят друг друга как поля, а лишь принимают указатель в параметрах методов.&lt;br /&gt; На что обращаю внимание? Передача указателя на время вызова — это «знает/взаимодействует», без владения и без жизненного цикла. Для композиции/агрегации нужен член-объект; наследования здесь нет; «инкапсуляция» — не тип связи между классами.&lt;br /&gt; Какой вывод? Это обычная ассоциация: объекты могут ссылаться друг на друга при взаимодействии, но не владеют.&lt;/p&gt;
  &lt;p id=&quot;aRNz&quot;&gt;&lt;strong&gt;Выбранный ответ: №2 — Ассоциация&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;MgQf&quot;&gt;Вопрос 5.&lt;strong&gt; Программист, разрабатывая класс UserManager, добавил функции, которые работают на разном уровне абстракции. Какаяфункциялишняяв UserManager?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;kJs7&quot;&gt;class User {&lt;/p&gt;
  &lt;p id=&quot;dAxh&quot;&gt;public:&lt;/p&gt;
  &lt;p id=&quot;riL7&quot;&gt;string name;&lt;/p&gt;
  &lt;p id=&quot;IuDn&quot;&gt;string email;&lt;/p&gt;
  &lt;p id=&quot;LQKA&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;ZOld&quot;&gt;class UserManager {&lt;/p&gt;
  &lt;p id=&quot;dQTv&quot;&gt;public:&lt;/p&gt;
  &lt;p id=&quot;3SXc&quot;&gt;void addUser(User user) { /* добавление */ }&lt;/p&gt;
  &lt;p id=&quot;MoGn&quot;&gt;void deleteUser(int id) { /* удаление */ }&lt;/p&gt;
  &lt;p id=&quot;8Lyc&quot;&gt;void sendEmail(User user) { /* рассылка */ }&lt;/p&gt;
  &lt;p id=&quot;bUiU&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;ld21&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;jQ7Y&quot;&gt;1.     Хранение данных пользователя&lt;/p&gt;
  &lt;p id=&quot;24x9&quot;&gt;2.     Обработка данных пользователя&lt;/p&gt;
  &lt;p id=&quot;Hzsv&quot;&gt;3.     Рассылка сообщений&lt;/p&gt;
  &lt;p id=&quot;uGGG&quot;&gt;4.     Удаление пользователей&lt;/p&gt;
  &lt;p id=&quot;yBDd&quot;&gt;5.     Добавление пользователей&lt;/p&gt;
  &lt;p id=&quot;zLeH&quot;&gt;UserManager выполняет операции управления — добавить/удалить. Отправка писем — это другая ответственность (сервис уведомлений). По хорошему дизайну и принципу единственной ответственности, рассылка не должна жить в менеджере пользователей. Её стоит вынести в EmailService/Notifier, а UserManager максимум вызывает тот сервис, но сам письма не шлёт.&lt;/p&gt;
  &lt;p id=&quot;QB5S&quot;&gt;«рассылка сообщений» — лишняя функция для UserManager.&lt;/p&gt;
  &lt;p id=&quot;xSIS&quot;&gt;&lt;strong&gt;Выбранный ответ: №3 — Рассылка сообщений&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;BpKs&quot;&gt;&lt;strong&gt;Вопрос 6. Вам нужно передать объект по указателю в функцию, при этом важно обеспечить отсутствие других указателей на этот же объект. Какой тип указателей подходит для этих целей?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;YINH&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;z5tR&quot;&gt;1.     std::single_ptr&lt;/p&gt;
  &lt;p id=&quot;WRaw&quot;&gt;2.     std::shared_ptr&lt;/p&gt;
  &lt;p id=&quot;GyFK&quot;&gt;3.     std::unit_ptr&lt;/p&gt;
  &lt;p id=&quot;MRIk&quot;&gt;4.     std::unique_ptr&lt;/p&gt;
  &lt;p id=&quot;AaWo&quot;&gt;5.     std::weak_ptr&lt;/p&gt;
  &lt;p id=&quot;bpID&quot;&gt;Требуется гарантия единственного владельца.&lt;br /&gt; На что обращаю внимание:&lt;br /&gt; — std::unique_ptr именно это и даёт — эксклюзивное владение, копировать нельзя, только move. Значит, других «живых» владельцев быть не может.&lt;br /&gt; — std::shared_ptr допускает много владельцев — не подходит.&lt;br /&gt; — std::weak_ptr не владеет объектом вообще.&lt;br /&gt; — std::single_ptr и std::unit_ptr в стандартной библиотеке отсутствуют.&lt;/p&gt;
  &lt;p id=&quot;FCWl&quot;&gt;Нужен умный указатель с эксклюзивным владением.&lt;/p&gt;
  &lt;p id=&quot;ogZF&quot;&gt;&lt;strong&gt;Выбранный ответ: №4 — std::unique_ptr&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;76YV&quot;&gt;&lt;strong&gt;Вопрос 7. Проанализируйте код и выберите утверждение, верное относительно возможной утечки памяти.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;UlUJ&quot;&gt;struct Player {&lt;/p&gt;
  &lt;p id=&quot;06AC&quot;&gt;std::shared_ptr&amp;lt;Player&amp;gt; companion;&lt;/p&gt;
  &lt;p id=&quot;dtot&quot;&gt;~Player() { std::cout &amp;lt;&amp;lt; &amp;quot;~Player\n&amp;quot;; }&lt;/p&gt;
  &lt;p id=&quot;GX5d&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;gObu&quot;&gt;int main() {&lt;/p&gt;
  &lt;p id=&quot;JzRl&quot;&gt;std::shared_ptr&amp;lt;Player&amp;gt; A = std::make_shared&amp;lt;Player&amp;gt;();&lt;/p&gt;
  &lt;p id=&quot;8VkF&quot;&gt;std::shared_ptr&amp;lt;Player&amp;gt; B = std::make_shared&amp;lt;Player&amp;gt;();&lt;/p&gt;
  &lt;p id=&quot;ZGr0&quot;&gt;A-&amp;gt;companion = B;&lt;/p&gt;
  &lt;p id=&quot;vePM&quot;&gt;B-&amp;gt;companion = A;&lt;/p&gt;
  &lt;p id=&quot;zF8j&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;Ppwo&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Fzwc&quot;&gt;1.     В коде есть проблема утечки памяти, и ее можно решить с помощью std::weak_ptr&lt;/p&gt;
  &lt;p id=&quot;Xzfc&quot;&gt;2.     В коде утечек памяти нет, но при использовании std::weak_ptr они появятся&lt;/p&gt;
  &lt;p id=&quot;H8W9&quot;&gt;3.     В коде есть проблема утечки памяти, но решить ее заменой на другой умный указатель невозможно&lt;/p&gt;
  &lt;p id=&quot;brGI&quot;&gt;4.     В коде есть проблема утечки памяти, и ее можно решить с помощью std::unique_ptr&lt;/p&gt;
  &lt;p id=&quot;FvL6&quot;&gt;5.     В коде утечек памяти нет и не будет при использовании любого умного указателя&lt;/p&gt;
  &lt;p id=&quot;PVbW&quot;&gt;Два объекта Player владеют друг другом через std::shared_ptr. Получается цикл владения: A держит B, B держит A. Счётчики ссылок никогда не станут нулём — деструкторы не вызовутся (строка ~Player\n не напечатается). Это типичный пример утечки из-за цикла shared_ptr.&lt;br /&gt; На что обращаю внимание: разорвать цикл можно, если одна из ссылок не будет владеть объектом — для этого и существует std::weak_ptr. Он не увеличивает счётчик владения.&lt;br /&gt; Почему не unique_ptr: взаимная ссылка unique_ptr невозможна (эксклюзивное владение); переработка модели возможна, но прямой заменой здесь проблему не решишь.&lt;/p&gt;
  &lt;p id=&quot;Tzy9&quot;&gt;&lt;strong&gt;Выбранный ответ: №1 — В коде есть проблема утечки памяти, и ее можно решить с помощью std::weak_ptr&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;sF82&quot;&gt;&lt;strong&gt;Вопрос 8. Какое выражение нужно вставить на место пропусков в коде ниже, чтобы обеспечить безопасность при исключении?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;sZdw&quot;&gt;#include &amp;lt;memory&amp;gt;&lt;/p&gt;
  &lt;p id=&quot;7xVp&quot;&gt;void process() {&lt;/p&gt;
  &lt;p id=&quot;0AaY&quot;&gt;auto ptr = std::make_unique&amp;lt;int&amp;gt;(42);&lt;/p&gt;
  &lt;p id=&quot;7oJy&quot;&gt;_____&lt;/p&gt;
  &lt;p id=&quot;XrsA&quot;&gt;throw std::runtime_error(&amp;quot;Error&amp;quot;);&lt;/p&gt;
  &lt;p id=&quot;CJbF&quot;&gt;_____&lt;/p&gt;
  &lt;p id=&quot;2yXo&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;kb49&quot;&gt;int main() {&lt;/p&gt;
  &lt;p id=&quot;lnoZ&quot;&gt;try { process(); } catch(...) {}&lt;/p&gt;
  &lt;p id=&quot;Gkxi&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;gUFm&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ul7S&quot;&gt;1.     ptr.erase(nullptr)&lt;/p&gt;
  &lt;p id=&quot;vLOI&quot;&gt;2.     std::lock_guard&amp;lt;std::mutex&amp;gt; и lock(mutex)&lt;/p&gt;
  &lt;p id=&quot;eK6u&quot;&gt;3.     ptr.reset(nullptr)&lt;/p&gt;
  &lt;p id=&quot;tswm&quot;&gt;4.     unique_ptr уже обеспечивает безопасность&lt;/p&gt;
  &lt;p id=&quot;hQiD&quot;&gt;5.     try { } catch(...) { delete ptr; }&lt;/p&gt;
  &lt;p id=&quot;SWlV&quot;&gt;Ресурс обёрнут в std::unique_ptr. По правилу RAII его деструктор вызовется при выходе из функции, даже если происходит throw. Значит, память освободится автоматически.&lt;br /&gt; На что обращаю внимание:&lt;br /&gt; — erase у unique_ptr не существует.&lt;br /&gt; — reset(nullptr) лишний: освобождение и так произойдёт при выходе из области видимости.&lt;br /&gt; — lock_guard не к месту.&lt;br /&gt; — Вариант с delete в catch неверен и не компилируется: ptr вне области видимости catch.&lt;/p&gt;
  &lt;p id=&quot;8tfj&quot;&gt;Вывод: ничего добавлять не нужно — уже безопасно.&lt;/p&gt;
  &lt;p id=&quot;80fP&quot;&gt;&lt;strong&gt;Выбранный ответ: №4 — unique_ptr уже обеспечивает безопасность&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;QW52&quot;&gt;Вопрос 9.&lt;strong&gt; Что выведет программа ниже?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;27Tb&quot;&gt;#include &amp;lt;iostream&amp;gt;&lt;/p&gt;
  &lt;p id=&quot;FwDd&quot;&gt;using namespace std;&lt;/p&gt;
  &lt;p id=&quot;v4vJ&quot;&gt;int test(int x) {&lt;/p&gt;
  &lt;p id=&quot;w4cQ&quot;&gt;static int y = 2;&lt;/p&gt;
  &lt;p id=&quot;1nzg&quot;&gt;y += x;&lt;/p&gt;
  &lt;p id=&quot;lotI&quot;&gt;return y;&lt;/p&gt;
  &lt;p id=&quot;gSZz&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;5aLU&quot;&gt;int main() {&lt;/p&gt;
  &lt;p id=&quot;UnVB&quot;&gt;cout &amp;lt;&amp;lt; test(3) &amp;lt;&amp;lt; test(4);&lt;/p&gt;
  &lt;p id=&quot;OTMm&quot;&gt;return 0;&lt;/p&gt;
  &lt;p id=&quot;jBap&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;KzQE&quot;&gt;&lt;strong&gt;Вариантыответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;GAlY&quot;&gt;1.     59&lt;/p&gt;
  &lt;p id=&quot;iab8&quot;&gt;2.     34&lt;/p&gt;
  &lt;p id=&quot;26vA&quot;&gt;3.     54&lt;/p&gt;
  &lt;p id=&quot;gfHx&quot;&gt;4.     39&lt;/p&gt;
  &lt;p id=&quot;LEOI&quot;&gt;5.     95&lt;/p&gt;
  &lt;p id=&quot;WnGT&quot;&gt;В test есть статическая переменная y, она инициализируется один раз (2) и сохраняет значение между вызовами.&lt;br /&gt; На что обращаю внимание: выражение cout &amp;lt;&amp;lt; test(3) &amp;lt;&amp;lt; test(4) вычисляется слева направо — сначала печатаем результат test(3), затем test(4), без пробелов между ними.&lt;br /&gt; Считаю:&lt;br /&gt; — первый вызов: y = 2 + 3 = 5, печатаем 5;&lt;br /&gt; — второй вызов: y = 5 + 4 = 9, печатаем 9.&lt;br /&gt; &lt;strong&gt;Выбранный ответ: 59&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Y8K6&quot;&gt;&lt;strong&gt;Вопрос 10. Проанализируйте код ниже. Каков будет результат выполнения кода?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;eJ8E&quot;&gt;template&amp;lt;typename T&amp;gt;&lt;/p&gt;
  &lt;p id=&quot;1yoJ&quot;&gt;T f(T a, T b)&lt;/p&gt;
  &lt;p id=&quot;vtSV&quot;&gt;{&lt;/p&gt;
  &lt;p id=&quot;1UPd&quot;&gt;return a &amp;gt; b ? a : b;&lt;/p&gt;
  &lt;p id=&quot;ijdv&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;LNYp&quot;&gt;int main() {&lt;/p&gt;
  &lt;p id=&quot;ZWz6&quot;&gt;cout &amp;lt;&amp;lt; f(5, 3.5);&lt;/p&gt;
  &lt;p id=&quot;ZS1Y&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;SjRo&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;FYpU&quot;&gt;1.     Ошибка компиляции: неоднозначность вывода типа T&lt;/p&gt;
  &lt;p id=&quot;l8DD&quot;&gt;2.     Выведет 5.0&lt;/p&gt;
  &lt;p id=&quot;v4Up&quot;&gt;3.     Ошибка компиляции: нельзя сравнивать разные типы&lt;/p&gt;
  &lt;p id=&quot;m9dI&quot;&gt;4.     Выведет 5&lt;/p&gt;
  &lt;p id=&quot;dZLJ&quot;&gt;5.     Выведет 5.4&lt;/p&gt;
  &lt;p id=&quot;A2Rd&quot;&gt;Шаблон требует, чтобы оба параметра имели один и тот же тип T.&lt;br /&gt; На что обращаю внимание: вызываем f(5, 3.5) — первый аргумент int, второй double. При выводе шаблонного параметра компилятор пытается вывести T из каждого аргумента: получается T=int и T=double одновременно — это конфликт. Шаблон так вызвать нельзя без явного указания типа (например, f&amp;lt;double&amp;gt;(5, 3.5) тогда бы вывело 5.0).&lt;br /&gt; Вывод: тип T по аргументам вывести нельзя, получаем ошибку компиляции.&lt;/p&gt;
  &lt;p id=&quot;bOr5&quot;&gt;&lt;strong&gt;Выбранный ответ: №1 — Ошибка компиляции: неоднозначность вывода типа T&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;xqMt&quot;&gt;Вопрос 11.&lt;strong&gt; Какой из вариантов вызовет перемещение (move semantics), а не копирование?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;RBKk&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;m0u5&quot;&gt;1.     std::string s1 = s2&lt;/p&gt;
  &lt;p id=&quot;uvtI&quot;&gt;2.     std::string s1 = std::move(s2)&lt;/p&gt;
  &lt;p id=&quot;1wNy&quot;&gt;3.     std::string s1 = new String(s2)&lt;/p&gt;
  &lt;p id=&quot;ciyq&quot;&gt;4.     std::string s1 = const_cast&amp;lt;const std::string&amp;amp;&amp;gt;(s2)&lt;/p&gt;
  &lt;p id=&quot;BVNj&quot;&gt;5.     std::string s1 = &amp;amp;s2&lt;/p&gt;
  &lt;p id=&quot;GAle&quot;&gt;Чтобы сработал move-конструктор, источником должен быть rvalue (временный/«перемещаемый» объект).&lt;br /&gt; — Вариант 1: s2 — lvalue → копирование.&lt;br /&gt; — Вариант 2: std::move(s2) превращает s2 в rvalue → сработает перемещение.&lt;br /&gt; — Вариант 3: new String(s2) возвращает указатель и ещё и тип String — не подходит.&lt;br /&gt; — Вариант 4: получаем const std::string&amp;amp; — константная lvalue-ссылка, значит копирование.&lt;br /&gt; — Вариант 5: &amp;amp;s2 — это указатель, типы несовместимы.&lt;/p&gt;
  &lt;p id=&quot;uAw6&quot;&gt;&lt;strong&gt;Выбранныйответ: №2 — std::string s1 = std::move(s2)&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ggg2&quot;&gt;&lt;strong&gt;Вопрос 12. &lt;/strong&gt;После добавления элемента в std::vector какие итераторы останутся валидными?&lt;/p&gt;
  &lt;p id=&quot;Cc2O&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;V840&quot;&gt;1.     Только end()&lt;/p&gt;
  &lt;p id=&quot;GFQW&quot;&gt;2.     Только итераторы на добавленные элементы&lt;/p&gt;
  &lt;p id=&quot;cjN2&quot;&gt;3.     Только cbegin()&lt;/p&gt;
  &lt;p id=&quot;g8qv&quot;&gt;4.     Все итераторы станут невалидными&lt;/p&gt;
  &lt;p id=&quot;Cjed&quot;&gt;5.     Все итераторы&lt;/p&gt;
  &lt;p id=&quot;voRd&quot;&gt;При добавлении элемента vector может перераспределить память (reallocation). Если это происходит, &lt;strong&gt;инвалидируются все итераторы и ссылки&lt;/strong&gt;, в том числе end(). Бывают случаи без перераспределения (часть итераторов остаётся валидной), но задача спрашивает про гарантии — в общем случае нужно считать, что всё сломается.&lt;/p&gt;
  &lt;p id=&quot;GJM1&quot;&gt;&lt;strong&gt;Выбранный ответ: Все итераторы станут невалидными&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;wKvV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/53/07534462-c760-458e-ba19-aa3d84b5d6d7.png&quot; width=&quot;973&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;lT0W&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;i0KI&quot;&gt; Думайте о владении ресурсом и жизненном цикле объектов. Избегайте слайсинга и циклов владения, всегда пишите предикат в cv.wait, помните: модификация vector может инвалидировать все итераторы. Шаблоны требуют видимости деклараций — объявляйте до использования.&lt;/p&gt;
  &lt;p id=&quot;cx1m&quot;&gt;Средний уровень — это дисциплина владения ресурсами и знание «острых углов» STL и многопоточности.&lt;/p&gt;

</content></entry><entry><id>ildm:QaibPQWYAbu</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/QaibPQWYAbu?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>C++. Базовый уровень</title><published>2025-10-11T21:49:18.557Z</published><updated>2025-10-11T21:49:18.557Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/4e/bd/4ebdf4f9-5dff-4fcb-ae00-0a4e24c7956a.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b8/55/b8556998-a92c-4189-a6ea-9cd7a30bd684.png&quot;&gt;Эта проверка — быстрый способ убедиться, что база в порядке. Синтаксис, типы, массивы и файлы. Частые вопросы: индексация с нуля, корректный for, чтение строки с пробелами, разница между ifstream и ofstream, динамическая память и выход за границы.</summary><content type="html">
  &lt;p id=&quot;IoXK&quot;&gt;Эта проверка — быстрый способ убедиться, что база в порядке. Синтаксис, типы, массивы и файлы. Частые вопросы: индексация с нуля, корректный for, чтение строки с пробелами, разница между ifstream и ofstream, динамическая память и выход за границы.&lt;/p&gt;
  &lt;figure id=&quot;LxN3&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b8/55/b8556998-a92c-4189-a6ea-9cd7a30bd684.png&quot; width=&quot;975&quot; /&gt;
  &lt;/figure&gt;
  &lt;h1 id=&quot;jLsP&quot;&gt;&lt;strong&gt;Вопрос 1. Какой формат цикла for правильно перебирает массив A из n элементов?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;uG3K&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;7NOv&quot;&gt;1.     for (int i = 1; i &amp;lt;= n; i++)&lt;/p&gt;
  &lt;p id=&quot;S9ji&quot;&gt;2.     for (int i = 0; i &amp;lt; n; i++)&lt;/p&gt;
  &lt;p id=&quot;KiCY&quot;&gt;3.     for (int i = 1; i &amp;lt;= n; i--)&lt;/p&gt;
  &lt;p id=&quot;2ys9&quot;&gt;4.     foreach (auto x : A)&lt;/p&gt;
  &lt;p id=&quot;ghYN&quot;&gt;5.     for (int i = 0; i &amp;lt;= n; i++)&lt;/p&gt;
  &lt;p id=&quot;Qqzi&quot;&gt;Нужно перебрать массив из n элементов. Обычно в C++ массивы индексируются с нуля: первый элемент — A[0], последний — A[n-1]. Значит, цикл должен идти от 0 до n-1.&lt;/p&gt;
  &lt;ul id=&quot;8JaN&quot;&gt;
    &lt;li id=&quot;s604&quot;&gt;Вариант 1 (i = 1; i &amp;lt;= n) — тут начало с 1, значит первый элемент A[0] вообще пропускается. Ошибка.&lt;/li&gt;
    &lt;li id=&quot;na5t&quot;&gt;Вариант 2 (i = 0; i &amp;lt; n) — это как раз то, что нужно: с нуля до n-1. Всё правильно.&lt;/li&gt;
    &lt;li id=&quot;Bgwn&quot;&gt;Вариант 3 (i = 1; i &amp;lt;= n; i--) — бесконечный цикл, потому что i-- идёт вниз, а условие &amp;lt;= n всегда будет верным. Абсурд.&lt;/li&gt;
    &lt;li id=&quot;xSWd&quot;&gt;Вариант 4 (foreach (auto x : A)) — в C++ действительно можно использовать range-based for. Это тоже корректный способ, он работает для массивов. Но вопрос звучит так, как будто хотят классический формат for.&lt;/li&gt;
    &lt;li id=&quot;LJtJ&quot;&gt;Вариант 5 (i = 0; i &amp;lt;= n) — тут цикл пойдёт от 0 до n, включая n. Но индекс A[n] не существует (последний A[n-1]), будет выход за границу. Ошибка.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;A29r&quot;&gt;Вывод: два способа технически правильные — это 2 и 4. Но если ориентироваться на «правильный классический формат перебора массива» (судя по формулировке), то ожидается именно &lt;strong&gt;вариант 2&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;Bafi&quot;&gt;&lt;strong&gt;Выбранныйответ: for (int i = 0; i &amp;lt; n; i++)&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;YkgK&quot;&gt;&lt;strong&gt;Вопрос 2. Как правильно открыть файл для чтения в C++?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;PPSH&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;665f&quot;&gt;1.     ifstream file(&amp;quot;input.txt&amp;quot;)&lt;/p&gt;
  &lt;p id=&quot;kemS&quot;&gt;2.     ofstream file(&amp;quot;input.txt&amp;quot;)&lt;/p&gt;
  &lt;p id=&quot;Pmmw&quot;&gt;3.     instream(file, &amp;quot;input.txt&amp;quot;)&lt;/p&gt;
  &lt;p id=&quot;k1f4&quot;&gt;4.     fstream file(&amp;quot;input.txt&amp;quot;, ios::out)&lt;/p&gt;
  &lt;p id=&quot;aWtF&quot;&gt;5.     FILE* file = fopen(&amp;quot;input.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;/p&gt;
  &lt;p id=&quot;cCSm&quot;&gt;Спрашивают про открытие для чтения именно в C++. Базовый современный способ — поток ввода std::ifstream, который по умолчанию открывает файл в режиме чтения (ios::in).&lt;br /&gt; — (1) корректно: ifstream и путь к файлу — стандартный вариант для чтения.&lt;br /&gt; — (2) ofstream — это для записи, не подходит.&lt;br /&gt; — (3) instream в стандартной библиотеке нет — неверно.&lt;br /&gt; — (4) fstream можно использовать, но здесь указан режим ios::out (запись), а не чтение — неверно; для чтения нужно было бы ios::in.&lt;br /&gt; — (5) fopen(...,&amp;quot;r&amp;quot;) — рабочий C-подход, в C++ тоже возможен, но вопрос, как правило, ожидает ответ со стандартными C++ потоками.&lt;/p&gt;
  &lt;p id=&quot;VDTQ&quot;&gt;Вывод: выбираю классический C++-вариант с ifstream.&lt;/p&gt;
  &lt;p id=&quot;ykCp&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;ifstream file(&amp;quot;input.txt&amp;quot;)&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;8uEN&quot;&gt;&lt;strong&gt;Вопрос 3. Какое утверждение верно для данной функции?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;9gJj&quot;&gt;int f(int p) {&lt;/p&gt;
  &lt;p id=&quot;XyNH&quot;&gt;int i = 25;&lt;/p&gt;
  &lt;p id=&quot;XBC3&quot;&gt;if (i == p) {&lt;/p&gt;
  &lt;p id=&quot;F63L&quot;&gt;std::cout &amp;lt;&amp;lt; &amp;quot;cpp\n&amp;quot;;&lt;/p&gt;
  &lt;p id=&quot;r6Im&quot;&gt;int k = f(p);&lt;/p&gt;
  &lt;p id=&quot;wxZL&quot;&gt;return -1;&lt;/p&gt;
  &lt;p id=&quot;93WE&quot;&gt;} else&lt;/p&gt;
  &lt;p id=&quot;maIr&quot;&gt;return 0;&lt;/p&gt;
  &lt;p id=&quot;zVYZ&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;Icqk&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;r3J2&quot;&gt;1.     Функция возвращает ноль для всех значений p, больших 25&lt;/p&gt;
  &lt;p id=&quot;7qNw&quot;&gt;2.     Функция выводит «cpp» бесконечно, когда p = 25, пока стек не заполнится&lt;/p&gt;
  &lt;p id=&quot;a4GP&quot;&gt;3.     Функция выводит «cpp» бесконечно для всех значений p, кроме 25, пока стек не заполнится&lt;/p&gt;
  &lt;p id=&quot;Sava&quot;&gt;4.     Функция возвращает -1, когда p = 25&lt;/p&gt;
  &lt;p id=&quot;uHoo&quot;&gt;5.     Функция возвращает ноль для всех значений p, меньших 25&lt;/p&gt;
  &lt;p id=&quot;PKsn&quot;&gt;Локальная i всегда равна 25. Если p == 25, печатаем &amp;quot;cpp&amp;quot;, сразу же вызываем f(p) снова и базового случая нет — рекурсия не заканчивается. Возврат -1 теоретически стоит после рекурсивного вызова, но до него никогда не дойдём: стек будет расти, пока не переполнится. Если p != 25, ветка else мгновенно возвращает 0.&lt;/p&gt;
  &lt;p id=&quot;IDLU&quot;&gt;Ключевой эффект функции — бесконечная рекурсия при p == 25. Возвраты нуля при других значениях — верно, но это вторично по сравнению с «сломом» при 25.&lt;/p&gt;
  &lt;p id=&quot;VbyV&quot;&gt;&lt;strong&gt;Выбранный ответ: «Функция выводит “cpp” бесконечно, когда p = 25, пока стек не заполнится»&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;jEwj&quot;&gt;&lt;strong&gt;Вопрос 4. Что произойдёт после выполнения инкрементации итератора?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;ubgo&quot;&gt;std::vector&amp;lt;int&amp;gt; vec = {1,2,3};&lt;/p&gt;
  &lt;p id=&quot;oCIg&quot;&gt;auto i = vec.begin();&lt;/p&gt;
  &lt;p id=&quot;ayxQ&quot;&gt;++i;&lt;/p&gt;
  &lt;p id=&quot;LGrp&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;5mkm&quot;&gt;1.     Итератор увеличится на 2&lt;/p&gt;
  &lt;p id=&quot;Q8n7&quot;&gt;2.     Произойдёт ошибка&lt;/p&gt;
  &lt;p id=&quot;u9Ow&quot;&gt;3.     Итератор будет указывать на следующий элемент&lt;/p&gt;
  &lt;p id=&quot;GCbt&quot;&gt;4.     Итератор уменьшится на 1&lt;/p&gt;
  &lt;p id=&quot;gpLX&quot;&gt;5.     Итератор станет не валидным&lt;/p&gt;
  &lt;p id=&quot;M8az&quot;&gt;У нас std::vector&amp;lt;int&amp;gt; из трёх элементов. begin() даёт итератор на первый элемент (1). Оператор ++i — это префиксный инкремент итератора, который продвигает его на один шаг вперёд.&lt;br /&gt; На что обращаю внимание: вектор не менялся, границы не нарушены — следующий элемент есть (это 2). Ошибки и инвалидности итератора не будет; «на 2» итератор не прыгает — для этого нужно было бы i += 2.&lt;/p&gt;
  &lt;p id=&quot;TI5z&quot;&gt;После ++i итератор укажет на элемент со значением 2, то есть на следующий.&lt;/p&gt;
  &lt;p id=&quot;3sZX&quot;&gt;&lt;strong&gt;Выбранный ответ: Итератор будет указывать на следующий элемент&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;VdRC&quot;&gt;&lt;strong&gt;Вопрос 5. Программа 3D-моделирования должна хранить объекты в векторно-полигональной модели (набор координат вершин) большого размера: миллион вершин или больше. С объектами требуется выполнять различные операции, например масштабирование или перемещение. Какой STL-контейнер будет эффективен для хранения и обработки таких данных?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;3fJI&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;cYVr&quot;&gt;1.     std::vector&lt;/p&gt;
  &lt;p id=&quot;TPlF&quot;&gt;2.     std::list&lt;/p&gt;
  &lt;p id=&quot;jMZX&quot;&gt;3.     std::queue&lt;/p&gt;
  &lt;p id=&quot;ChKm&quot;&gt;4.     std::unordered_map&lt;/p&gt;
  &lt;p id=&quot;OJIc&quot;&gt;5.     std::unordered_set&lt;/p&gt;
  &lt;p id=&quot;iCQ7&quot;&gt;Нужно хранить очень много однотипных числовых данных (вершины) и быстро проходиться по ним для операций наподобие масштабирования/перемещения. Тут важны компактность, кэш-локальность и быстрый последовательный обход.&lt;br /&gt; На что обращаю внимание:&lt;br /&gt; — std::vector держит элементы подряд в памяти → быстрый линейный проход, случайный доступ O(1), хорошо для SIMD.&lt;br /&gt; — std::list хранит узлы по указателям → лишняя память на указатели и плохая кэш-локальность.&lt;br /&gt; — std::queue ограничивает доступ концами и построен поверх другого контейнера — не подходит.&lt;br /&gt; — unordered_map/unordered_set — ассоциативные контейнеры с хеш-структурами и накладными расходами; нам не нужно хранить пары ключ-значение или уникальность по ключу.&lt;/p&gt;
  &lt;p id=&quot;Rg2b&quot;&gt;Для массивов вершин большого размера наилучший базовый выбор — динамический массив.&lt;/p&gt;
  &lt;p id=&quot;aJQ4&quot;&gt;&lt;strong&gt;Выбранный ответ: std::vector&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;fl9l&quot;&gt;&lt;strong&gt;Вопрос 6. Выберите верное утверждение для абстрактного класса.&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;nygI&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3cmH&quot;&gt;1.     Должен содержать чисто виртуальную функцию, определенную вне класса&lt;/p&gt;
  &lt;p id=&quot;l1Py&quot;&gt;2.     Должен содержать дружественный метод&lt;/p&gt;
  &lt;p id=&quot;6z18&quot;&gt;3.     Не может содержать чисто виртуальных функций&lt;/p&gt;
  &lt;p id=&quot;3u9H&quot;&gt;4.     Должен содержать только чисто виртуальные функции&lt;/p&gt;
  &lt;p id=&quot;aBHv&quot;&gt;5.     Должен содержать хотя бы одну чисто виртуальную функцию&lt;/p&gt;
  &lt;p id=&quot;4MJI&quot;&gt;Спрашивают базовое определение абстрактного класса в C++. Абстрактный — это класс, у которого есть хотя бы одна чисто виртуальная функция (= 0) либо унаследованная, не реализованная.&lt;br /&gt; На что обращаю внимание:&lt;br /&gt; — Никаких требований к «дружественным методам» нет — пункт 2 лишний.&lt;br /&gt; — Пункт 3 противоречит определению.&lt;br /&gt; — Пункт 4 чрезмерно строг: в абстрактном классе могут быть обычные методы и поля.&lt;br /&gt; — Пункт 1 некорректно сужает: чисто виртуальная может иметь реализацию вне класса, но абстрактность не требует именно такого определения.&lt;br /&gt; Логичный вариант — «хотя бы одна чисто виртуальная».&lt;/p&gt;
  &lt;p id=&quot;I5j4&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Должен содержать хотя бы одну чисто виртуальную функцию&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;ctii&quot;&gt;&lt;strong&gt;Вопрос 7. Как нужно объявить переменную count на месте пропуска в классе Player, чтобы на экран было выведено 2?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;zPe3&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;jktm&quot;&gt;1.     int static count&lt;/p&gt;
  &lt;p id=&quot;Fk1D&quot;&gt;2.     friend int count&lt;/p&gt;
  &lt;p id=&quot;kCEv&quot;&gt;3.     int count&lt;/p&gt;
  &lt;p id=&quot;QFuv&quot;&gt;4.     int const count&lt;/p&gt;
  &lt;p id=&quot;xtfA&quot;&gt;5.     static int count&lt;/p&gt;
  &lt;p id=&quot;Qrga&quot;&gt;Нужно общее для всех объектов поле-счётчик, чтобы оба созданных Player инкрементировали одну и ту же переменную. Такое поле объявляется как static. В коде уже есть внешнее определение int Player::count = 0; и статический метод getCount(), который может обращаться только к статическим полям.&lt;br /&gt; friend — не про хранение данных, int count (нестатическое) не скомпилируется со статическим методом, const изменять нельзя. int static count синтаксически допустимо, но обычно ожидают форму static int count.&lt;/p&gt;
  &lt;p id=&quot;KNi6&quot;&gt;&lt;strong&gt;Выбранный ответ: static int count&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;9OG5&quot;&gt;&lt;strong&gt;Вопрос 8. Проанализируйте код ниже. Какие поля есть у класса C?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;LJbq&quot;&gt;class A{&lt;/p&gt;
  &lt;p id=&quot;E6X0&quot;&gt;public:&lt;/p&gt;
  &lt;p id=&quot;vF4i&quot;&gt;int a;&lt;/p&gt;
  &lt;p id=&quot;wv74&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;85Sj&quot;&gt;class B{&lt;/p&gt;
  &lt;p id=&quot;vMtd&quot;&gt;private:&lt;/p&gt;
  &lt;p id=&quot;m97w&quot;&gt;int b;&lt;/p&gt;
  &lt;p id=&quot;0ecw&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;wdf6&quot;&gt;class C: public A, public B{&lt;/p&gt;
  &lt;p id=&quot;MEV4&quot;&gt;private:&lt;/p&gt;
  &lt;p id=&quot;WUeQ&quot;&gt;int c;&lt;/p&gt;
  &lt;p id=&quot;BV69&quot;&gt;};&lt;/p&gt;
  &lt;p id=&quot;ao4V&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;1cHI&quot;&gt;1.     a, b&lt;/p&gt;
  &lt;p id=&quot;dAt5&quot;&gt;2.     c&lt;/p&gt;
  &lt;p id=&quot;48v0&quot;&gt;3.     a, c&lt;/p&gt;
  &lt;p id=&quot;gu6Q&quot;&gt;4.     a, b, c&lt;/p&gt;
  &lt;p id=&quot;uE9i&quot;&gt;5.     a&lt;/p&gt;
  &lt;p id=&quot;eWXt&quot;&gt;C публично наследуется от A и B. У A есть поле a (public), у B — поле b (private), у самого C — поле c (private).&lt;br /&gt; На что обращаю внимание: модификатор private в базовом классе влияет на доступ, а не на наличие поля в объекте-наследнике. То есть объект C содержит под-объект A с полем a, под-объект B с полем b и своё поле c. Доступ к b из кода C запрещён, но само поле в памяти есть. У класса C присутствуют все три поля — a, b, c.&lt;/p&gt;
  &lt;p id=&quot;SJlo&quot;&gt;&lt;strong&gt;Выбранный ответ: 4) a, b, c&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;SB9Z&quot;&gt;&lt;strong&gt;Вопрос 9. Выражение const int* wsk означает:&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;I8Ob&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;YYwR&quot;&gt;1.     Указатель на константный объект&lt;/p&gt;
  &lt;p id=&quot;2Qy6&quot;&gt;2.     Указатель на объект&lt;/p&gt;
  &lt;p id=&quot;XAlU&quot;&gt;3.     Константный указатель&lt;/p&gt;
  &lt;p id=&quot;QC9V&quot;&gt;4.     Константный указатель на константный объект&lt;/p&gt;
  &lt;p id=&quot;Ygk5&quot;&gt;5.     Обычный указатель&lt;/p&gt;
  &lt;p id=&quot;fFl0&quot;&gt;const стоит слева от типа, а звёздочка рядом с int. Это читается как «указатель на const int». Значит, менять значение по адресу нельзя (*wsk = 5; — ошибка), но сам указатель можно переназначать (wsk = другой_адрес; — можно).&lt;br /&gt; На что обращаю внимание: «константный указатель» был бы int* const wsk — здесь const после *. Комбинация «константный указатель на константный объект» выглядела бы как const int* const wsk. Вывод: это именно указатель на константный объект.&lt;/p&gt;
  &lt;p id=&quot;JTsp&quot;&gt;&lt;strong&gt;Выбранный ответ: Указатель на константный объект&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h1 id=&quot;oeJn&quot;&gt;&lt;strong&gt;Вопрос 10.&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Что произойдёт после выполнения этого кода?&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;uEBL&quot;&gt;int* func() {&lt;/p&gt;
  &lt;p id=&quot;GdpL&quot;&gt;int* x = new int(42);&lt;/p&gt;
  &lt;p id=&quot;ReYp&quot;&gt;return x;&lt;/p&gt;
  &lt;p id=&quot;REt5&quot;&gt;}&lt;/p&gt;
  &lt;p id=&quot;IeYS&quot;&gt;int* ptr = func();&lt;/p&gt;
  &lt;p id=&quot;c9p1&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;sa3Z&quot;&gt;1.     Возникнет утечка памяти, так как new не сбалансирован с delete&lt;/p&gt;
  &lt;p id=&quot;lyLd&quot;&gt;2.     Указатель ptr будет валидным&lt;/p&gt;
  &lt;p id=&quot;mt5c&quot;&gt;3.     Указатель ptr будет невалидным&lt;/p&gt;
  &lt;p id=&quot;VfqX&quot;&gt;4.     Память автоматически освободится после выхода из func&lt;/p&gt;
  &lt;p id=&quot;gIel&quot;&gt;5.     Программа завершится с ошибкой из-за двойного освобождения&lt;/p&gt;
  &lt;p id=&quot;4Sa8&quot;&gt;Внутри func памяти выделяется через new — это куча, она не освобождается сама по себе при выходе из функции. Мы возвращаем адрес в ptr. Сам ptr указывает на корректно выделенную память, но в коде нет соответствующего delete.&lt;br /&gt; На что обращаю внимание: без delete ptr; эта память останется висеть до конца жизни ptr/программы — это классическая утечка. Варианты про автоматическое освобождение и двойное освобождение не подходят. Фраза «ptr валиден» технически верна, но тест обычно проверяет именно проблему управления памятью.&lt;/p&gt;
  &lt;p id=&quot;2KSi&quot;&gt;Код создаёт утечку, потому что new не сопровождается delete (нужно либо явно удалить, либо использовать std::unique_ptr).&lt;/p&gt;
  &lt;p id=&quot;hHx0&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Возникнет утечка памяти, так как new не сбалансирован с delete&lt;/p&gt;
  &lt;figure id=&quot;yA8M&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3a/cc/3acc1c48-8143-423c-9dc0-4dcff9bbc0bf.png&quot; width=&quot;973&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WXoy&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;kta2&quot;&gt;Заключение&lt;/h3&gt;
  &lt;p id=&quot;Lyil&quot;&gt; Если спотыкаетесь на границах массива, вводе-выводе и указателях — вернитесь к простым задачам и пишите код руками. Пользуйтесь стандартными контейнерами, проверяйте условия цикла, закрывайте new парой delete, не путайте const T* и T* const.&lt;/p&gt;

</content></entry><entry><id>ildm:CLrdF7Vz3mO</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/CLrdF7Vz3mO?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>HR-аналитика: базовый уровень. От отклика до оффера анализ воронки найма и эффективности рекрутинга</title><published>2025-09-14T20:25:54.049Z</published><updated>2025-09-14T20:35:15.996Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/7f/04/7f04e12f-d57a-4568-b264-b7f3dc92a903.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/8e/7b/8e7bc8b7-25ec-4ca5-8a75-fa47ca50c80e.png&quot;&gt;HR-аналитика — это не набор скучных таблиц. Это способ понять, что происходит с людьми в компании и как это влияет на бизнес. Даже если вы никогда не работали в HR, но хотите войти в эту сферу, важно знать, что аналитика здесь — это инструмент для управленцев, рекрутеров и самих специалистов по персоналу. Она показывает, где компании теряют людей и деньги, а где — приобретают.</summary><content type="html">
  &lt;figure id=&quot;i8rB&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8e/7b/8e7bc8b7-25ec-4ca5-8a75-fa47ca50c80e.png&quot; width=&quot;921&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pnlJ&quot;&gt;HR-аналитика — это не набор скучных таблиц. Это способ понять, что происходит с людьми в компании и как это влияет на бизнес. Даже если вы никогда не работали в HR, но хотите войти в эту сферу, важно знать, что аналитика здесь — это инструмент для управленцев, рекрутеров и самих специалистов по персоналу. Она показывает, где компании теряют людей и деньги, а где — приобретают.&lt;/p&gt;
  &lt;p id=&quot;uBJX&quot;&gt;В этой статье разберём базовый тест по HR-аналитике. Пройдём шаг за шагом все вопросы и объясним, почему выбран именно этот вариант ответа. Это полезно тем, кто хочет работать рекрутером, HR-аналитиком или руководителем подразделения, где важны показатели по персоналу.&lt;/p&gt;
  &lt;figure id=&quot;xELr&quot;&gt;
    &lt;iframe src=&quot;https://t.me/ildmy/77?embed=1&amp;userpic=1&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;5HtP&quot;&gt;Вопрос 1. Выберите НЕВЕРНЫЙ вариант определения HR-метрики.&lt;/h2&gt;
  &lt;p id=&quot;0ULf&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;8hMF&quot;&gt;1.     Индикатор сравнения HR-результатов компании с рынком труда&lt;/p&gt;
  &lt;p id=&quot;urN6&quot;&gt;2.     Показатель, который помогает оценить работу того или иного HR-процесса&lt;/p&gt;
  &lt;p id=&quot;L5Wr&quot;&gt;3.     Коэффициент влияния HR-процессов на бизнес-результаты&lt;/p&gt;
  &lt;p id=&quot;rl5W&quot;&gt;4.     Параметр, позволяющий спрогнозировать наступление HR-события&lt;/p&gt;
  &lt;p id=&quot;tCUJ&quot;&gt;5.     Показатель для премирования сотрудника за заслуги в HR-направлении&lt;/p&gt;
  &lt;p id=&quot;Ajtu&quot;&gt;HR-метрики — это цифры, показатели или индексы, которые помогают оценить и анализировать HR-деятельность: например, сколько сотрудников уходит, сколько времени занимает закрытие вакансии, сколько стоит привлечение одного нового сотрудника.&lt;br /&gt; Все перечисленные определения (кроме одного) говорят о сравнении, прогнозировании, анализе HR-процессов и их влияния на бизнес, что и является задачей HR-метрик.&lt;/p&gt;
  &lt;p id=&quot;CSrT&quot;&gt;А вот «показатель для премирования сотрудника за заслуги в HR-направлении» — это уже скорее не HR-метрика, а инструмент мотивации (премия, KPI для начисления бонусов). Такой показатель может использовать HR-метрики в расчетах, но само определение HR-метрики через «для премирования» — это ошибка.&lt;/p&gt;
  &lt;p id=&quot;AbZN&quot;&gt;HR-метрики — это просто такие цифры, по которым видно, как работает отдел кадров: быстро ли закрывают вакансии, много ли увольняются. А вот начисление премий — это уже не сама метрика, это решение, что делать с этими цифрами. Так что этот вариант тут не подходит.&lt;/p&gt;
  &lt;p id=&quot;7VjE&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Показатель для премирования сотрудника за заслуги в HR-направлении&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;F7Ix&quot;&gt;Вопрос 2. Выберите пункт, содержащий ТОЛЬКО те метрики, которые помогают оценить процесс подбора персонала.&lt;/h2&gt;
  &lt;p id=&quot;vAJw&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;VInD&quot;&gt;1.     Стоимость найма, конверсия воронки подбора, текучесть, коэффициент абсентеизма, среднесписочная численность&lt;/p&gt;
  &lt;p id=&quot;zrzJ&quot;&gt;2.     Укомплектованность, конверсия воронки подбора, производительность рекрутера, текучесть на испытательном сроке, эффективность источников найма&lt;/p&gt;
  &lt;p id=&quot;ehsJ&quot;&gt;3.     Штатная численность, доля закрытых вакансий в срок, доля принявших оффер, доля новых сотрудников, коэффициент стабильности персонала&lt;/p&gt;
  &lt;p id=&quot;PJwS&quot;&gt;4.     Качество найма, средний срок закрытия, доля расходов на персонал, укомплектованность, средний стаж&lt;/p&gt;
  &lt;p id=&quot;nJBZ&quot;&gt;5.     Скорость найма, отсев на адаптационном периоде, доля обученных, индекс лояльности, добровольная текучесть&lt;/p&gt;
  &lt;p id=&quot;meIx&quot;&gt;Чтобы проверить, какие показатели действительно &lt;strong&gt;относятся только к процессу подбора&lt;/strong&gt;, надо вспомнить — подбор персонала это:&lt;/p&gt;
  &lt;ul id=&quot;sEb4&quot;&gt;
    &lt;li id=&quot;lSQQ&quot;&gt;поиск кандидатов,&lt;/li&gt;
    &lt;li id=&quot;oIh9&quot;&gt;оценка и отбор,&lt;/li&gt;
    &lt;li id=&quot;P47L&quot;&gt;доведение их до выхода на работу.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;8LkN&quot;&gt;А значит, сюда &lt;strong&gt;точно относятся&lt;/strong&gt; такие вещи как:&lt;/p&gt;
  &lt;ul id=&quot;D41n&quot;&gt;
    &lt;li id=&quot;8FqG&quot;&gt;&lt;strong&gt;конверсия воронки подбора&lt;/strong&gt; (сколько из приглашённых пришли на интервью и сколько из них приняли оффер),&lt;/li&gt;
    &lt;li id=&quot;z5NE&quot;&gt;&lt;strong&gt;стоимость найма&lt;/strong&gt; (сколько денег уходит на закрытие вакансии),&lt;/li&gt;
    &lt;li id=&quot;Q0hR&quot;&gt;&lt;strong&gt;производительность рекрутера&lt;/strong&gt; (сколько вакансий закрыл за месяц),&lt;/li&gt;
    &lt;li id=&quot;2PK5&quot;&gt;&lt;strong&gt;текучесть на испытательном сроке&lt;/strong&gt; (люди, которых только что наняли, быстро увольняются — значит проблема в подборе),&lt;/li&gt;
    &lt;li id=&quot;9SW4&quot;&gt;&lt;strong&gt;эффективность источников найма&lt;/strong&gt; (какие сайты или агентства приводят лучших кандидатов).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Ve8o&quot;&gt;Если же в вариантах появляются &lt;strong&gt;коэффициент абсентеизма&lt;/strong&gt; (прогулы), &lt;strong&gt;среднесписочная численность&lt;/strong&gt;, &lt;strong&gt;индекс лояльности&lt;/strong&gt;, &lt;strong&gt;средний стаж&lt;/strong&gt; — это уже про общую HR-аналитику или удержание, а не чисто про подбор.&lt;/p&gt;
  &lt;p id=&quot;ozUD&quot;&gt;С этой точки зрения, единственный вариант, который содержит &lt;strong&gt;только метрики подбора&lt;/strong&gt; — это:&lt;/p&gt;
  &lt;p id=&quot;cPsX&quot;&gt;Тут выбрали только те цифры, которые помогают понять, как хорошо ищут и нанимают сотрудников. Всё остальное — про то, сколько людей работает, как долго и насколько они довольны, но это уже не про сам подбор.&lt;/p&gt;
  &lt;p id=&quot;vaSi&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;2. Укомплектованность, конверсия воронки подбора, производительность рекрутера, текучесть на испытательном сроке, эффективность источников найма&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;wZiN&quot;&gt;Вопрос 3. Выберите формулу, по которой можно рассчитать текучесть персонала.&lt;br /&gt; (Где: Тп — текучесть, Ку — количество уволенных, ССЧ — среднесписочная численность.)&lt;/p&gt;
  &lt;p id=&quot;FdUs&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;AZJ3&quot;&gt;1.     Тп = (ССЧ – Ку) / 100%&lt;/p&gt;
  &lt;p id=&quot;UMwn&quot;&gt;2.     Тп = Ку / ССЧ * 100%&lt;/p&gt;
  &lt;p id=&quot;Mutf&quot;&gt;3.     Тп = (Ку + ССЧ) / 100%&lt;/p&gt;
  &lt;p id=&quot;pgrF&quot;&gt;4.     Тп = Ку * 100% / (ССЧ – Ку)&lt;/p&gt;
  &lt;p id=&quot;5g7C&quot;&gt;5.     Тп = (ССЧ + Ку) * 100%&lt;/p&gt;
  &lt;p id=&quot;yrLd&quot;&gt;Текучесть показывает, &lt;strong&gt;сколько людей уволилось за период относительно общего количества работников в среднем за этот же период&lt;/strong&gt;. Это важный показатель: если текучесть высокая, значит сотрудники часто увольняются, а компания теряет деньги на их замене.&lt;/p&gt;
  &lt;p id=&quot;UMpx&quot;&gt;Формула простая и её часто показывают так:&lt;/p&gt;
  &lt;p id=&quot;l192&quot;&gt;&lt;strong&gt;Текучесть = (Количество уволенных / Среднесписочная численность) × 100%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;aL9Q&quot;&gt;То есть делим, сколько человек уволились, на то, сколько всего людей в среднем работало, и умножаем на 100%, чтобы получить процент.&lt;/p&gt;
  &lt;p id=&quot;5mFR&quot;&gt;Остальные формулы здесь — либо складывают/вычитают показатели так, что получается нелепость, либо не имеют смысла (например, (ССЧ – Ку) вообще покажет, сколько осталось после увольнений, а не отношение).&lt;/p&gt;
  &lt;p id=&quot;vyzd&quot;&gt;Чтобы узнать, насколько часто люди увольняются, берём число уволенных и делим на общее среднее количество сотрудников. Потом умножаем на 100 — получаем процент текучести.»&lt;/p&gt;
  &lt;p id=&quot;z6ea&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt; &lt;strong&gt;Тп = Ку / ССЧ * 100%&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;xMJU&quot;&gt;Вопрос 4. Выберите набор метрик, относящихся к воронке подбора.&lt;/h2&gt;
  &lt;p id=&quot;YVpi&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;sgbB&quot;&gt;1.     Количество открытых вакансий, количество откликов, количество рабочих часов рекрутера, количество собеседований, количество тестовых заданий&lt;/p&gt;
  &lt;p id=&quot;j93o&quot;&gt;2.     Количество собеседований, доля офферов, доля нерелевантных кандидатов, индекс вежливости, укомплектованность&lt;/p&gt;
  &lt;p id=&quot;AVCf&quot;&gt;3.     Количество откликов, доля офферов, доля нерелевантных кандидатов, индекс вежливости рекрутера, стоимость одного нанятого&lt;/p&gt;
  &lt;p id=&quot;0JM1&quot;&gt;4.     Количество открытых вакансий, количество рабочих часов рекрутера, количество собеседований, стоимость одного нанятого, время до выдачи оффера&lt;/p&gt;
  &lt;p id=&quot;xeCz&quot;&gt;5.     Количество откликов, количество собеседований, количество выполненных тестовых заданий, доля офферов, текучесть на испытательном сроке&lt;/p&gt;
  &lt;p id=&quot;MbBd&quot;&gt;Воронка подбора — это путь кандидата от отклика до выхода на работу. На каждом шаге &lt;strong&gt;часть людей отсеивается&lt;/strong&gt;, и мы измеряем, сколько осталось на следующем этапе. Типичные метрики воронки:&lt;/p&gt;
  &lt;ul id=&quot;SJOy&quot;&gt;
    &lt;li id=&quot;4l97&quot;&gt;&lt;strong&gt;Количество откликов&lt;/strong&gt; — сколько человек прислали резюме.&lt;/li&gt;
    &lt;li id=&quot;HUxG&quot;&gt;&lt;strong&gt;Количество собеседований&lt;/strong&gt; — сколько из них пригласили и пришли на интервью.&lt;/li&gt;
    &lt;li id=&quot;vbfg&quot;&gt;&lt;strong&gt;Количество выполненных тестовых заданий&lt;/strong&gt; — кто прошёл следующий этап.&lt;/li&gt;
    &lt;li id=&quot;qxBA&quot;&gt;&lt;strong&gt;Доля офферов&lt;/strong&gt; — сколько в итоге получили предложение о работе.&lt;/li&gt;
    &lt;li id=&quot;lasa&quot;&gt;А также немного реже, но полезно — &lt;strong&gt;текучесть на испытательном сроке&lt;/strong&gt;: показывает, хорошо ли подобрали (не ушёл ли человек сразу).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;JQl9&quot;&gt;А вот рабочие часы рекрутера, индекс вежливости и стоимость нанятого — это про &lt;strong&gt;эффективность рекрутера или HR-бренд&lt;/strong&gt;, а не про саму воронку кандидатов.&lt;/p&gt;
  &lt;p id=&quot;wuFL&quot;&gt;Поэтому правильный вариант — там, где собраны &lt;strong&gt;все этапы движения кандидата по воронке&lt;/strong&gt;: от отклика до оффера и первых месяцев работы.&lt;/p&gt;
  &lt;p id=&quot;d6Wz&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;5. Количество откликов, количество собеседований, количество выполненных тестовых заданий, доля офферов, текучесть на испытательном сроке&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;EHFr&quot;&gt;Вопрос 5. Вам необходимо проанализировать ситуацию по длительно не закрывающимся вакансиям, хотя кандидаты на эти позиции были представлены заказчикам. Какие данные для этого вам понадобятся? Выберите вариант, в котором указаны ТОЛЬКО необходимые данные.&lt;/h2&gt;
  &lt;p id=&quot;pEQ2&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;vlww&quot;&gt;1.     Список вакансий, количество нерелевантных кандидатов, количество проведенных собеседований, стоимость размещения одной вакансии, дата публикации вакансии&lt;/p&gt;
  &lt;p id=&quot;j5Dp&quot;&gt;2.     Количество входящих откликов, количество проведенных собеседований с заказчиком, обратная связь от заказчиков, текучесть на испытательном сроке, список заказчиков&lt;/p&gt;
  &lt;p id=&quot;W16e&quot;&gt;3.     Список вакансий, количество проведенных собеседований, даты открытия вакансий, этапы и причины отказа кандидатов, обратная связь от заказчиков&lt;/p&gt;
  &lt;p id=&quot;fh3F&quot;&gt;4.     Список вакансий, нормативный срок закрытия вакансий, количество отклоненных офферов, количество используемых источников, численность рекрутеров&lt;/p&gt;
  &lt;p id=&quot;kW1f&quot;&gt;5.     Список рекрутеров, список вакансий, количество откликов, количество отработанных рекрутерами часов, численность сотрудников&lt;/p&gt;
  &lt;p id=&quot;5cIm&quot;&gt;Тебе нужно понять &lt;strong&gt;почему вакансии долго не закрываются&lt;/strong&gt;, хотя кандидатов уже показывали заказчикам.&lt;br /&gt; Значит понадобятся именно данные, которые показывают:&lt;/p&gt;
  &lt;ul id=&quot;pptd&quot;&gt;
    &lt;li id=&quot;Jk32&quot;&gt;&lt;strong&gt;что за вакансии&lt;/strong&gt; (список вакансий),&lt;/li&gt;
    &lt;li id=&quot;cfAn&quot;&gt;&lt;strong&gt;как давно они открыты&lt;/strong&gt; (даты открытия),&lt;/li&gt;
    &lt;li id=&quot;Ipr6&quot;&gt;&lt;strong&gt;что происходило на каждом этапе&lt;/strong&gt; (количество собеседований, этапы и причины отказа),&lt;/li&gt;
    &lt;li id=&quot;aJpL&quot;&gt;&lt;strong&gt;что думает заказчик&lt;/strong&gt; (его обратная связь).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;31fI&quot;&gt;Все остальные данные вроде стоимости размещения, текучести на испытательном сроке, количества откликов и численности рекрутеров — &lt;strong&gt;не про саму причину долгого закрытия после представления кандидатов&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;cNw1&quot;&gt;Поэтому правильный вариант — там, где указаны &lt;strong&gt;только такие данные&lt;/strong&gt;, которые помогут отследить путь кандидата и выявить, на каком этапе или почему процесс стопорится.&lt;/p&gt;
  &lt;p id=&quot;g2kk&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;3. Список вакансий, количество проведенных собеседований, даты открытия вакансий, этапы и причины отказа кандидатов, обратная связь от заказчиков&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;NCzy&quot;&gt;Вопрос 6. Для расчета какой метрики может быть использована приведённая таблица с сырыми данными?&lt;/h2&gt;
  &lt;p id=&quot;CGQr&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;PHiD&quot;&gt;1.     Укомплектованность&lt;/p&gt;
  &lt;p id=&quot;QArJ&quot;&gt;2.     Конверсия этапов подбора&lt;/p&gt;
  &lt;p id=&quot;06CS&quot;&gt;3.     Эффективность источников подбора&lt;/p&gt;
  &lt;p id=&quot;LrBn&quot;&gt;4.     Эффективность рекрутера&lt;/p&gt;
  &lt;p id=&quot;Q2TG&quot;&gt;5.     Индекс удовлетворенности заказчика&lt;/p&gt;
  &lt;p id=&quot;iNoK&quot;&gt;Смотрим на таблицу:&lt;/p&gt;
  &lt;ul id=&quot;xBeQ&quot;&gt;
    &lt;li id=&quot;iogn&quot;&gt;есть &lt;strong&gt;имена рекрутеров&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;5L7H&quot;&gt;&lt;strong&gt;вакансии&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;V2YZ&quot;&gt;&lt;strong&gt;даты открытия и закрытия&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;NCI4&quot;&gt;&lt;strong&gt;количество кандидатов&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;v44p&quot;&gt;&lt;strong&gt;закрыта ли вакансия в срок&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;IFMv&quot;&gt;а также статус — &lt;strong&gt;закрыта или в работе&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;dhaI&quot;&gt;Это даёт возможность посчитать:&lt;/p&gt;
  &lt;p id=&quot;O7OT&quot;&gt;1.       Сколько вакансий каждый рекрутер вел&lt;/p&gt;
  &lt;p id=&quot;BcsA&quot;&gt;2.       Сколько закрыл вовремя&lt;/p&gt;
  &lt;p id=&quot;a59O&quot;&gt;3.       Сколько вообще закрыл&lt;/p&gt;
  &lt;p id=&quot;xXBj&quot;&gt;4.       Среднюю скорость закрытия&lt;br /&gt; — то есть всё, что связано с &lt;strong&gt;эффективностью работы самого рекрутера&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;hdfz&quot;&gt;А для укомплектованности нужны данные о штатах и фактическом числе сотрудников.&lt;br /&gt; Для конверсии этапов подбора нужна статистика о прохождении этапов (отклики → собесы → офферы).&lt;br /&gt; Для источников подбора нужны данные откуда пришли кандидаты (hh, рекомендации и т.д.).&lt;br /&gt; Для индекса удовлетворенности заказчика — опросы или оценки самих заказчиков.&lt;/p&gt;
  &lt;p id=&quot;tciG&quot;&gt;По этой таблице видно кто из рекрутеров сколько вакансий закрыл и успел ли вовремя. Это значит, можно понять, кто работает быстрее и качественнее.&lt;/p&gt;
  &lt;p id=&quot;ZEaw&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;Эффективность рекрутера&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;438O&quot;&gt;Вопрос 7. Выберите вариант, в котором корректно соотнесены метрики и их тип.&lt;/h2&gt;
  &lt;p id=&quot;rgkP&quot;&gt;Метрики:&lt;/p&gt;
  &lt;p id=&quot;LzIT&quot;&gt;1.     Срок закрытия вакансии&lt;/p&gt;
  &lt;p id=&quot;EEXo&quot;&gt;2.     Удовлетворенность заказчика&lt;/p&gt;
  &lt;p id=&quot;ZO08&quot;&gt;3.     Выполнение плана подбора&lt;/p&gt;
  &lt;p id=&quot;GjJ9&quot;&gt;4.     Средняя стоимость закрытия вакансии&lt;/p&gt;
  &lt;p id=&quot;YEhM&quot;&gt;Типы метрик:&lt;br /&gt; А — Финансовая&lt;br /&gt; Б — Время&lt;br /&gt; В — Качественная&lt;br /&gt; Г — Количественная&lt;/p&gt;
  &lt;p id=&quot;3cDH&quot;&gt;&lt;strong&gt; Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ny9r&quot;&gt;·        &lt;strong&gt;1 - Г, 2 - B, 3 - А, 4 – Б&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;csHB&quot;&gt;·        &lt;strong&gt;1 - В, 2 - А, 3 - Б, 4 - Г&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;HZ4w&quot;&gt;·        &lt;strong&gt;1 - А, 2 - Г, 3 - В, 4 – Б&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;nMGY&quot;&gt;·        &lt;strong&gt;1 - Б, 2 - В, 3 - Г, 4 - А&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;pEmo&quot;&gt;·        &lt;strong&gt;1 - Б, 2 - B, 3 - А, 4 - Г&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;2Oom&quot;&gt;&lt;strong&gt; 1. Срок закрытия вакансии&lt;/strong&gt; — это явно &lt;strong&gt;про время&lt;/strong&gt;, сколько дней закрывали.&lt;/p&gt;
  &lt;p id=&quot;w8AU&quot;&gt;&lt;strong&gt;2. Удовлетворенность заказчика&lt;/strong&gt; — это субъективная оценка, значит &lt;strong&gt;качественная&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;BvBX&quot;&gt;&lt;strong&gt;3. Выполнение плана подбора&lt;/strong&gt; — сколько сделано от плана, значит &lt;strong&gt;количественная&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;hzFu&quot;&gt;&lt;strong&gt;4. Средняя стоимость закрытия вакансии&lt;/strong&gt; — явно &lt;strong&gt;финансовая&lt;/strong&gt;, сколько в деньгах.&lt;/p&gt;
  &lt;p id=&quot;ruzR&quot;&gt;&lt;strong&gt;Значит сопоставление такое:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;K2BL&quot;&gt;1 → Б (время)&lt;/p&gt;
  &lt;p id=&quot;nylq&quot;&gt;2 → В (качественная)&lt;/p&gt;
  &lt;p id=&quot;Z3Wu&quot;&gt;3 → Г (количественная)&lt;/p&gt;
  &lt;p id=&quot;n0hF&quot;&gt;4 → А (финансовая)&lt;/p&gt;
  &lt;p id=&quot;YCmv&quot;&gt;&lt;strong&gt;Смотрим варианты и находим:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;1 — Б, 2 — В, 3 — Г, 4 — А&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;D2bC&quot;&gt;&lt;strong&gt;Выбранный ответ: 1 — Б, 2 — В, 3 — Г, 4 — А&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;8ztR&quot;&gt;Вопрос 8. Вам необходимо рассчитать и проанализировать NPS кандидата. Посмотрите набор данных и выберите ВСЕ необходимые операции, которые нужно выполнить ПЕРЕД началом анализа.&lt;/h2&gt;
  &lt;figure id=&quot;ytCh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a2/67/a267dd76-beba-4952-b728-9722f4a783ee.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FjTF&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;e4P6&quot;&gt;1.       Перевести столбцы в строки, посчитать сумму по столбцу «Оценка», поменять формат записи даты, убрать дубли&lt;/p&gt;
  &lt;p id=&quot;gqrb&quot;&gt;2.       Убрать дубли, исправить орфографию в ответах, выставить ответы в хронологическом порядке, убрать аномальные значения&lt;/p&gt;
  &lt;p id=&quot;vSHl&quot;&gt;3.       Убрать пустые строки, перевести столбцы в строки, убрать аномальные значения, удалить столбец с номером&lt;/p&gt;
  &lt;p id=&quot;WNTf&quot;&gt;4.       Исправить формат данных, исправить орфографию в ответах, посчитать сумму по столбцу «Оценка», убрать пустые строки&lt;/p&gt;
  &lt;p id=&quot;DLSn&quot;&gt;5.       Убрать дубли, убрать пустые строки, убрать аномальные значения, исправить формат данных&lt;/p&gt;
  &lt;p id=&quot;M2YX&quot;&gt;Сначала посмотрим на таблицу, сразу отметим проблемы:&lt;/p&gt;
  &lt;p id=&quot;WSeY&quot;&gt;Ø &lt;strong&gt;Дубли:&lt;/strong&gt; дважды кандидат №2 дал одинаковые оценки.&lt;/p&gt;
  &lt;p id=&quot;J6dr&quot;&gt;Ø &lt;strong&gt;Аномалии:&lt;/strong&gt; оценка 100 — слишком большая для шкалы 0–10.&lt;/p&gt;
  &lt;p id=&quot;NSC9&quot;&gt;Ø &lt;strong&gt;Пустые строки:&lt;/strong&gt; есть строка 6, где вообще нет данных.&lt;/p&gt;
  &lt;p id=&quot;Rgm7&quot;&gt;Ø &lt;strong&gt;Формат даты:&lt;/strong&gt; «2023 ноябрь» у 7-го кандидата, это нужно привести к виду 11/7/2023.&lt;/p&gt;
  &lt;p id=&quot;LjeX&quot;&gt;Ø &lt;strong&gt;Формат текста:&lt;/strong&gt; в отзывах орфография не принципиальна для расчета NPS, но может быть важна для качественного анализа.&lt;/p&gt;
  &lt;p id=&quot;cMgA&quot;&gt;Для расчёта NPS нам важно только:&lt;/p&gt;
  &lt;p id=&quot;PPWC&quot;&gt;1.       убрать мусор (пустые строки),&lt;/p&gt;
  &lt;p id=&quot;umvh&quot;&gt;2.       убрать дубли,&lt;/p&gt;
  &lt;p id=&quot;IEdk&quot;&gt;3.       привести числа к норме и убрать аномальные значения,&lt;/p&gt;
  &lt;p id=&quot;mnVg&quot;&gt;4.       исправить даты (если будем смотреть динамику по времени).&lt;/p&gt;
  &lt;p id=&quot;TsCz&quot;&gt;Здесь сразу четыре важных шага, которые действительно нужны для чистого расчета NPS, и ничего лишнего вроде перевода столбцов в строки или подсчета суммы (для NPS сумма не нужна, нужен процент промоутеров и критиков).&lt;/p&gt;
  &lt;p id=&quot;mwVj&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;«Убрать дубли, убрать пустые строки, убрать аномальные значения, исправить формат данных»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;jb0n&quot;&gt;Вопрос 9. Перед вами график распределения подразделений компании по численности персонала. Как называется такой тип графика?&lt;/h2&gt;
  &lt;p id=&quot;F3S9&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;JzAJ&quot;&gt;1.       Линейчатая гистограмма&lt;/p&gt;
  &lt;p id=&quot;8Wsd&quot;&gt;2.       Рейтинговая шкала&lt;/p&gt;
  &lt;p id=&quot;JbEe&quot;&gt;3.       Гистограмма с накоплением&lt;/p&gt;
  &lt;p id=&quot;gIJf&quot;&gt;4.       Лучевая диаграмма&lt;/p&gt;
  &lt;p id=&quot;RnBn&quot;&gt;5.       Воронка&lt;/p&gt;
  &lt;p id=&quot;NkyT&quot;&gt;На графике показаны горизонтальные полосы (бары), которые отображают количество сотрудников в каждом подразделении. Чем длиннее полоса — тем больше сотрудников.&lt;br /&gt; Это классический пример &lt;strong&gt;горизонтальной столбчатой диаграммы&lt;/strong&gt;, которую часто называют &lt;strong&gt;«линейчатая гистограмма»&lt;/strong&gt; (bar chart с горизонтальными столбцами).&lt;/p&gt;
  &lt;p id=&quot;8fEm&quot;&gt;Остальные варианты:&lt;/p&gt;
  &lt;ul id=&quot;6dXB&quot;&gt;
    &lt;li id=&quot;19iY&quot;&gt;«Рейтинговая шкала» — это обычно для опросов.&lt;/li&gt;
    &lt;li id=&quot;Ir4g&quot;&gt;«Гистограмма с накоплением» — когда столбцы показывают несколько показателей в одном, складывающихся друг на друга.&lt;/li&gt;
    &lt;li id=&quot;pBBJ&quot;&gt;«Лучевая диаграмма» — это паук / радар (круг).&lt;/li&gt;
    &lt;li id=&quot;9q83&quot;&gt;«Воронка» — для последовательного отсева на этапах (например, воронка продаж).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;OHlO&quot;&gt;&lt;strong&gt;Выбранный ответ: Линейчатая гистограмма&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;VUj3&quot;&gt;Вопрос 10. Соотнесите метрики и способы визуализации.&lt;/h2&gt;
  &lt;p id=&quot;lWNF&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;OPiE&quot;&gt;·        &lt;strong&gt;1 - А, 2 - В, 3 - B&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;LisV&quot;&gt;·        &lt;strong&gt;1 - Б, 2 - В, 3 - А&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ik9S&quot;&gt;·        &lt;strong&gt;1 - А, 2 - В, 3 - Б&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;tO5G&quot;&gt;·        &lt;strong&gt;1 - Б, 2 - А, 3 - В&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ifQl&quot;&gt;·        &lt;strong&gt;1 - В, 2 - Б, 3 - А&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;yCbK&quot;&gt;&lt;strong&gt; Метрики и визуализация:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;4P42&quot;&gt;1.     &lt;strong&gt;Укомплектованность персоналом&lt;/strong&gt; — лучше всего показывать с помощью &lt;strong&gt;гистограммы&lt;/strong&gt;, чтобы увидеть сколько сотрудников по отделам или насколько укомплектованы штаты.&lt;/p&gt;
  &lt;p id=&quot;rkMp&quot;&gt;2.     &lt;strong&gt;Связь между эффективностью и удовлетворённостью персонала&lt;/strong&gt; — здесь важно показать взаимозависимость двух переменных, значит подходит &lt;strong&gt;диаграмма рассеяния (scatter plot)&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;Gi9a&quot;&gt;3.     &lt;strong&gt;Доля источников подбора&lt;/strong&gt; — это распределение долей, классический случай для &lt;strong&gt;круговой диаграммы&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;SDps&quot;&gt;&lt;strong&gt;Соответствие:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ivna&quot;&gt;1 → Б (гистограмма)&lt;/p&gt;
  &lt;p id=&quot;ucK5&quot;&gt;2 → А (диаграмма рассеяния)&lt;/p&gt;
  &lt;p id=&quot;4MOa&quot;&gt;3 → В (круговая диаграмма)&lt;/p&gt;
  &lt;p id=&quot;NaXk&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;«1 — Б, 2 — А, 3 — В»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;ikEn&quot;&gt;Вопрос 11. Необходимо проанализировать эффективность источников подбора по периодам. Какие параметры и куда в сводной таблице вы внесёте?&lt;/h2&gt;
  &lt;p id=&quot;V5TK&quot;&gt;&lt;em&gt;&lt;strong&gt;Таблица со столбцами: &lt;/strong&gt;Вакансия, ФИО кандидата, Дата, Источник&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;h0HS&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;LsNu&quot;&gt;1.     СТОЛБЦЫ - Вакансии, СТРОКИ - фамилии ЗНАЧЕНИЕ - сумма по полю Источники, ФИЛЬТРЫ - дата&lt;/p&gt;
  &lt;p id=&quot;M2PY&quot;&gt;2.     СТОЛБЦЫ - пусто, СТРОКИ - источники, ЗНАЧЕНИЕ - количество по полю источники, ФИЛЬТРЫ - вакансии&lt;/p&gt;
  &lt;p id=&quot;0jzP&quot;&gt;3.     СТОЛБЦЫ - Даты, СТРОКИ - источники, ЗНАЧЕНИЕ - Количество по полю ФИО, ФИЛЬТРЫ – пусто&lt;/p&gt;
  &lt;p id=&quot;h0ij&quot;&gt;4.     СТОЛБЦЫ - Источники, СТРОКИ - Вакансии, ЗНАЧЕНИЕ - Сумма по ФИО, ФИЛЬТРЫ - дата&lt;/p&gt;
  &lt;p id=&quot;rmwJ&quot;&gt;5.     СТОЛБЦЫ - ФИО, СТРОКИ - Источники, ЗНАЧЕНИЕ - Вакансии, ФИЛЬТРЫ – Дата&lt;/p&gt;
  &lt;p id=&quot;ZzsW&quot;&gt;Чтобы понять, &lt;strong&gt;какой источник дал сколько кандидатов в разные периоды&lt;/strong&gt;, надо:&lt;/p&gt;
  &lt;p id=&quot;mp1I&quot;&gt;1.     в &lt;strong&gt;СТРОКИ&lt;/strong&gt; добавить &lt;strong&gt;источники&lt;/strong&gt;, чтобы видеть по ним разбивку;&lt;/p&gt;
  &lt;p id=&quot;PjK2&quot;&gt;2.     в &lt;strong&gt;ЗНАЧЕНИЕ&lt;/strong&gt; — поставить &lt;strong&gt;количество по полю источники&lt;/strong&gt; (то есть посчитать сколько раз встречается каждый источник);&lt;/p&gt;
  &lt;p id=&quot;PpZG&quot;&gt;3.     в &lt;strong&gt;ФИЛЬТРЫ&lt;/strong&gt; — период, чтобы можно было посмотреть за нужные даты.&lt;/p&gt;
  &lt;p id=&quot;oR6e&quot;&gt;Это позволит быстро видеть: например, в 2023 году HeadHunter дал 5 кандидатов, а Телереклама — 2.&lt;/p&gt;
  &lt;p id=&quot;qqfr&quot;&gt;Фильтр по вакансиям здесь дан в формулировке задачи как пример разбивки, иногда можно использовать вместо даты; если бы был вариант с фильтром по дате, он был бы ещё лучше.&lt;/p&gt;
  &lt;p id=&quot;7e4U&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt;  &lt;strong&gt;«СТОЛБЦЫ — пусто, СТРОКИ — источники, ЗНАЧЕНИЕ — количество по полю источники, ФИЛЬТРЫ — вакансии»&lt;/strong&gt;.&lt;/p&gt;
  &lt;figure id=&quot;NAmx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5e/71/5e71d419-ea57-4c93-8c29-247553c8c2b5.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Necp&quot;&gt;&lt;strong&gt;Вероятные вопросы, где я допустил ошибку &lt;/strong&gt;— &lt;strong&gt;но это не точно.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;lhi5&quot;&gt;1. &lt;strong&gt;Вопрос про визуализацию метрик (№10)&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;NEBn&quot;&gt;Очень частая ловушка в тестах:&lt;/p&gt;
  &lt;ul id=&quot;KvZO&quot;&gt;
    &lt;li id=&quot;tmAA&quot;&gt;связь между эффективностью и удовлетворенностью нужно показывать точечной диаграммой (scatter plot), но часто путают с гистограммой.&lt;/li&gt;
    &lt;li id=&quot;4nv0&quot;&gt;доля источников подбора — круговая.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;c9y5&quot;&gt;Я выбрал:&lt;/p&gt;
  &lt;ul id=&quot;do1L&quot;&gt;
    &lt;li id=&quot;4ZaK&quot;&gt;укомплектованность — гистограмма&lt;/li&gt;
    &lt;li id=&quot;5z0n&quot;&gt;связь — scatter (А)&lt;/li&gt;
    &lt;li id=&quot;Dpto&quot;&gt;доля источников — круговая.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;XOkI&quot;&gt;Возможно, тут и допущена одна из ошибок.&lt;/p&gt;
  &lt;p id=&quot;mDIg&quot;&gt;2. &lt;strong&gt;Вопрос про сводную таблицу (№11)&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;vaMu&quot;&gt;Я часто путаюсь, куда поставить «Даты» — в фильтры, строки или столбцы. Выбрал самый классический вариант (источники в строках, значение — количество, фильтр по вакансиям).&lt;/p&gt;
  &lt;p id=&quot;4ezA&quot;&gt;Возможно, правильнее было бы фильтр именно по &lt;strong&gt;датам&lt;/strong&gt;, а не вакансиям (так чаще всего делают для анализа по периодам).&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;aOHG&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;HNva&quot;&gt;После прохождения теста и разбора базовых вопросов становится понятно, как HR-аналитика помогает бизнесу экономить ресурсы и лучше управлять людьми. Даже простые цифры по текучести и срокам закрытия вакансий дают руководителю ясную картину.&lt;/p&gt;
  &lt;p id=&quot;09js&quot;&gt;Сегодня тренд очевиден: HR всё больше опирается на данные. Компании хотят видеть обоснованные решения, а не «кажется, нам нужен ещё один менеджер». Знание таких базовых подходов открывает двери для роста: от рекрутера до HR-бизнес-партнера, от помощника аналитика до полноценного HR-директора, который строит политику компании на основе фактов.&lt;/p&gt;
  &lt;p id=&quot;A7nN&quot;&gt;Если вы ответили правильно на все вопросы — напишите в комментариях, где я допустил ошибки и какие ответы должны были быть. Это поможет улучшить разбор для следующих читателей&lt;/p&gt;

</content></entry><entry><id>ildm:WRTlhVwBBcq</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/WRTlhVwBBcq?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>HR-аналитика: средний уровень. От отклика до оффера анализ воронки найма и эффективности рекрутинга</title><published>2025-09-14T20:22:57.270Z</published><updated>2025-09-14T20:29:15.213Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/ec/92/ec92294b-b5ef-4280-93dc-2fa7771a3836.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/fa/8f/fa8f14a9-1fe9-49c3-84b0-1bcb7f8a65c9.png&quot;&gt;HR-аналитика на среднем уровне — это уже не только про то, сколько людей пришло или ушло. Здесь появляются вопросы о воронках подбора, источниках трат, глубокой сегментации персонала и визуализациях, которые позволяют быстро видеть «узкие места».</summary><content type="html">
  &lt;figure id=&quot;HNd2&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fa/8f/fa8f14a9-1fe9-49c3-84b0-1bcb7f8a65c9.png&quot; width=&quot;975&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FzSE&quot;&gt;HR-аналитика на среднем уровне — это уже не только про то, сколько людей пришло или ушло. Здесь появляются вопросы о воронках подбора, источниках трат, глубокой сегментации персонала и визуализациях, которые позволяют быстро видеть «узкие места».&lt;/p&gt;
  &lt;p id=&quot;MWfj&quot;&gt;В статье я пошагово разберу тест среднего уровня. Объясню, почему выбрала именно такие ответы, и как подобные кейсы встречаются в реальной работе. Это пригодится тем, кто хочет углубиться в HR-аналитику или занять руководящую позицию в HR-отделе, где решения уже принимаются на основе сложных данных.&lt;/p&gt;
  &lt;h2 id=&quot;4fzH&quot;&gt;&lt;/h2&gt;
  &lt;figure id=&quot;tjm8&quot;&gt;
    &lt;iframe src=&quot;https://t.me/ildmy/77?embed=1&amp;userpic=1&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;sGiR&quot;&gt;&lt;strong&gt;Вопрос 1. &lt;/strong&gt;Выберите НЕВЕРНОЕ продолжение фразы из списка ниже. Польза от HR-аналитики для бизнеса может заключаться…&lt;/h2&gt;
  &lt;p id=&quot;hQHJ&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;mfYZ&quot;&gt;1.     В повышении удовлетворенности руководителей работой HR подразделения&lt;/p&gt;
  &lt;p id=&quot;33Zl&quot;&gt;2.     В оптимизации затрат на подбор&lt;/p&gt;
  &lt;p id=&quot;qj4B&quot;&gt;3.     В подготовке сводных таблиц с данными по кандидатам и сотрудникам&lt;/p&gt;
  &lt;p id=&quot;L9xG&quot;&gt;4.     В подготовке прогноза по объему найма на период&lt;/p&gt;
  &lt;p id=&quot;YLIW&quot;&gt;5.     В поддержке управленческих решений по подбору для HRD&lt;/p&gt;
  &lt;p id=&quot;h4ew&quot;&gt;HR-аналитика помогает &lt;strong&gt;принимать решения на основе данных&lt;/strong&gt;, а не на глазок.&lt;/p&gt;
  &lt;p id=&quot;sLBA&quot;&gt;Она нужна для:&lt;/p&gt;
  &lt;p id=&quot;x1pB&quot;&gt;1.     &lt;strong&gt;оптимизации затрат&lt;/strong&gt; (понимать, где дорого, где дешевле),&lt;/p&gt;
  &lt;p id=&quot;yjZe&quot;&gt;2.     &lt;strong&gt;прогнозов по найму&lt;/strong&gt; (сколько нужно людей в следующем квартале),&lt;/p&gt;
  &lt;p id=&quot;InoN&quot;&gt;3.     &lt;strong&gt;поддержки управленческих решений&lt;/strong&gt; (например, закрыть проект или нанять больше),&lt;/p&gt;
  &lt;p id=&quot;QgCe&quot;&gt;4.     а также для формирования &lt;strong&gt;сводных таблиц и отчетов&lt;/strong&gt;, которые показывают всю картину по персоналу.&lt;/p&gt;
  &lt;p id=&quot;ROGl&quot;&gt;А вот &lt;strong&gt;«повышение удовлетворенности руководителей работой HR подразделения»&lt;/strong&gt; — это уже &lt;strong&gt;косвенный эффект&lt;/strong&gt;, он не относится напрямую к пользе от самой HR-аналитики для бизнеса. Это скорее эмоциональная реакция руководителей на работу HR, а не функциональный результат аналитики. HR-аналитика не ставит перед собой задачу специально повышать настроение руководителей — она дает данные для решений.&lt;/p&gt;
  &lt;p id=&quot;2X0U&quot;&gt;HR-аналитика нужна, чтобы понимать сколько и когда нанимать людей, сколько это будет стоить, и какие процессы в подборе работают лучше. А вот поднять настроение руководителям — это не её задача.&lt;/p&gt;
  &lt;p id=&quot;dtuY&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;4wL7&quot;&gt;&lt;strong&gt;«В повышении удовлетворенности руководителей работой HR подразделения»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;fXf2&quot;&gt;&lt;strong&gt;Вопрос 2. &lt;/strong&gt;Ниже — таблица с данными по опросу лояльности сотрудников. Рассчитайте eNPS.&lt;/h2&gt;
  &lt;p id=&quot;yxTC&quot;&gt;eNPS (Employee Net Promoter Score) считают так же, как обычный NPS:&lt;/p&gt;
  &lt;ul id=&quot;Q68w&quot;&gt;
    &lt;li id=&quot;kVWc&quot;&gt;кто дал &lt;strong&gt;9-10 баллов&lt;/strong&gt; — это &lt;strong&gt;промоутеры&lt;/strong&gt;, они готовы рекомендовать компанию;&lt;/li&gt;
    &lt;li id=&quot;dyCT&quot;&gt;кто дал &lt;strong&gt;7-8 баллов&lt;/strong&gt; — &lt;strong&gt;нейтралы&lt;/strong&gt;, их не учитываем;&lt;/li&gt;
    &lt;li id=&quot;E76B&quot;&gt;кто дал &lt;strong&gt;0-6 баллов&lt;/strong&gt; — &lt;strong&gt;критики&lt;/strong&gt;, они могут отговаривать.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zATk&quot;&gt;Формула:&lt;/p&gt;
  &lt;p id=&quot;WIgn&quot;&gt;&lt;strong&gt;eNPS = % промоутеров − % критиков&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;6V1c&quot;&gt;&lt;strong&gt;Посчитаем по данным:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;4Cyp&quot;&gt;Всего сотрудников: &lt;strong&gt;11&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Mssl&quot;&gt;Промоутеры (9-10):&lt;/p&gt;
  &lt;ul id=&quot;Iysy&quot;&gt;
    &lt;li id=&quot;Krhx&quot;&gt;Арбузов 9&lt;/li&gt;
    &lt;li id=&quot;uS3B&quot;&gt;Лимонова 9&lt;/li&gt;
    &lt;li id=&quot;GD03&quot;&gt;Мандаринкин 9&lt;/li&gt;
    &lt;li id=&quot;OGAL&quot;&gt;Голубкин 10&lt;/li&gt;
    &lt;li id=&quot;iJEt&quot;&gt;Инжир 10&lt;br /&gt; → всего &lt;strong&gt;5 промоутеров&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;IrMO&quot;&gt;Нейтралы (7-8):&lt;/p&gt;
  &lt;ul id=&quot;9me5&quot;&gt;
    &lt;li id=&quot;3XsZ&quot;&gt;Бананова 7&lt;/li&gt;
    &lt;li id=&quot;Gs8b&quot;&gt;Виноградов 7&lt;/li&gt;
    &lt;li id=&quot;GAb1&quot;&gt;Земляникина 8&lt;br /&gt; → всего &lt;strong&gt;3 нейтрала&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;igi4&quot;&gt;Критики (0-6):&lt;/p&gt;
  &lt;ul id=&quot;ziOf&quot;&gt;
    &lt;li id=&quot;d578&quot;&gt;Глубникин 6&lt;/li&gt;
    &lt;li id=&quot;5Ees&quot;&gt;Ежевикина 5&lt;br /&gt; → всего &lt;strong&gt;2 критика&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;qeHu&quot;&gt;&lt;strong&gt;Считаем проценты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;BU1l&quot;&gt;% промоутеров = (5 / 11) × 100 ≈ &lt;strong&gt;45%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;rGuY&quot;&gt;% критиков = (2 / 11) × 100 ≈ &lt;strong&gt;18%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;XqRj&quot;&gt;&lt;strong&gt;Считаем eNPS: &lt;/strong&gt;eNPS = &lt;strong&gt;45% − 18% = 27%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;fRch&quot;&gt;В тесте таких вариантов нет, но самый близкий из предложенных — &lt;strong&gt;30%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Qcnh&quot;&gt;Это как опрос, готовы ли работники порекомендовать компанию.&lt;br /&gt; Те, кто сказал 9 или 10, прям фанаты, кто 7-8 — просто довольны, а кто меньше — могут отговаривать. Мы смотрим, сколько фанатов минус сколько недовольных — и получаем показатель. Здесь он около 27%, а значит правильнее всего выбрать 30%.»&lt;/p&gt;
  &lt;p id=&quot;NBvP&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;30%&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;snPl&quot;&gt;&lt;strong&gt;Вопрос 3. &lt;/strong&gt;HRD решил пересмотреть систему премирования рекрутеров. KPI должны быть объективны, понятны в расчёте и направлены на повышение результативности подбора. Выберите показатель, который НЕ рекомендуется использовать в качестве нового KPI рекрутера.&lt;/h2&gt;
  &lt;p id=&quot;rzFq&quot;&gt;Чтобы дать премию рекрутеру за работу, важно:&lt;/p&gt;
  &lt;ul id=&quot;YYet&quot;&gt;
    &lt;li id=&quot;1gNm&quot;&gt;чтобы показатель был &lt;strong&gt;объективным&lt;/strong&gt; (по честным данным, а не «по мнению кого-то»),&lt;/li&gt;
    &lt;li id=&quot;5J2g&quot;&gt;легко &lt;strong&gt;считался по выгрузке из систем&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;FVt8&quot;&gt;и напрямую отражал эффективность его труда.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;4bs5&quot;&gt;Разберём варианты:&lt;/p&gt;
  &lt;ul id=&quot;E20u&quot;&gt;
    &lt;li id=&quot;RmPR&quot;&gt;&lt;strong&gt;Стоимость подбора (из Excel-файла финансового аналитика)&lt;/strong&gt; — вполне измеримо, но может зависеть и от внешних условий, но сам расчет объективен.&lt;/li&gt;
    &lt;li id=&quot;ptKS&quot;&gt;&lt;strong&gt;Средний срок закрытия вакансий (из CRM)&lt;/strong&gt; — прямо отражает скорость работы рекрутера.&lt;/li&gt;
    &lt;li id=&quot;5ypj&quot;&gt;&lt;strong&gt;Текучесть на адаптационном сроке (из 1С ЗУП)&lt;/strong&gt; — показывает качество подбора: быстро ли уходят новые сотрудники.&lt;/li&gt;
    &lt;li id=&quot;SsTp&quot;&gt;&lt;strong&gt;Удовлетворенность заказчиков (по письмам в почте HRD)&lt;/strong&gt; — очень субъективно, зависит от эмоций заказчика, из писем нельзя достоверно рассчитать %, да и сами письма могут быть не структурированы.&lt;/li&gt;
    &lt;li id=&quot;eAs9&quot;&gt;&lt;strong&gt;Количество закрытых вакансий (из ATS)&lt;/strong&gt; — прозрачный количественный показатель.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;9k6U&quot;&gt;Тут нельзя ставить в KPI рекрутера то, что измеряется по письмам из почты — это слишком субъективно, зависит от настроения заказчиков, а не от чётких цифр. А премии должны начисляться по понятным и проверяемым данным.&lt;/p&gt;
  &lt;p id=&quot;Z6jG&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;«Удовлетворенность заказчиков подбором, источник — подборка писем в почте HRD»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;hfdj&quot;&gt;&lt;strong&gt;Вопрос 4. &lt;/strong&gt;В компании принято решение оптимизировать бюджет на подбор персонала. Необходимо проанализировать, какие источники подбора стоит оставить, а какие можно сократить.&lt;br /&gt; Выберите вариант, в котором указаны ТОЛЬКО необходимые источники данных для этой задачи.&lt;/h2&gt;
  &lt;p id=&quot;0YuW&quot;&gt;Чтобы понять, какие источники оставить, а какие сократить, нужно всего три вещи:&lt;/p&gt;
  &lt;p id=&quot;aeWt&quot;&gt;1.     &lt;strong&gt;Сколько денег тратим на каждый источник&lt;/strong&gt; — чтобы знать, во сколько обходится реклама вакансий там.&lt;/p&gt;
  &lt;p id=&quot;LcoB&quot;&gt;2.     &lt;strong&gt;Сколько человек привёл этот источник (отклики и нанятые)&lt;/strong&gt; — чтобы оценить отдачу.&lt;/p&gt;
  &lt;p id=&quot;gLAL&quot;&gt;3.     И сравнить: &lt;strong&gt;цена / результат&lt;/strong&gt;, чтобы видеть дорогих и малоэффективных.&lt;/p&gt;
  &lt;p id=&quot;2OFd&quot;&gt;Остальное, типа скидок, исполнения бюджета прошлого года, общего бюджета или просто количество публикаций — &lt;strong&gt;не показывает эффективности конкретных источников&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;6YHV&quot;&gt;&lt;strong&gt;Разбираем варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;8kdH&quot;&gt;
    &lt;li id=&quot;Vx6v&quot;&gt;&lt;strong&gt;Исполнение бюджета прошлого года, количество публикаций, список источников&lt;/strong&gt; — нет данных о нанятых и о стоимости каждого источника.&lt;/li&gt;
    &lt;li id=&quot;oOZl&quot;&gt;&lt;strong&gt;Список источников, количество откликов, общее количество нанятых за прошлый период&lt;/strong&gt; — нет привязки к стоимости конкретного источника.&lt;/li&gt;
    &lt;li id=&quot;uBif&quot;&gt;&lt;strong&gt;Список источников, размер скидки, количество нанятых по реферальной программе&lt;/strong&gt; — скидка — не финальный бюджет, а рефералка — отдельный канал.&lt;/li&gt;
    &lt;li id=&quot;z4HL&quot;&gt;&lt;strong&gt;Список статей бюджета на подбор, стоимость каждого источника, количество привлеченных и нанятых с каждого источника&lt;/strong&gt; — именно то, что нужно для анализа эффективности и оптимизации.&lt;/li&gt;
    &lt;li id=&quot;T8Ot&quot;&gt;&lt;strong&gt;Список источников, общий бюджет на подбор в текущем году, количество откликов&lt;/strong&gt; — не разделено по источникам.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;BIAx&quot;&gt;Если мы хотим сократить расходы на рекламу вакансий, надо посмотреть, где сколько потратили и сколько сотрудников оттуда пришло. Тогда сразу будет видно: например, HeadHunter дорого, но даёт 10 человек, а Газета дешево, но даёт только одного. Вот для этого и нужен именно такой набор данных.»&lt;/p&gt;
  &lt;p id=&quot;f4ml&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;«Список статей бюджета на подбор, стоимость каждого источника, количество привлеченных и количество нанятых с каждого источника»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;sbOA&quot;&gt;&lt;strong&gt;Вопрос 5. &lt;/strong&gt;Как можно получить аналитику о качестве собеседований в разрезе рекрутеров, если доступны данные из таблиц 1 и 2?&lt;/h2&gt;
  &lt;p id=&quot;0Vyt&quot;&gt;Смотрим, что у нас есть:&lt;/p&gt;
  &lt;ul id=&quot;Ogj0&quot;&gt;
    &lt;li id=&quot;d3es&quot;&gt;&lt;strong&gt;Таблица 1&lt;/strong&gt; — результаты опроса кандидатов после собеседования (их впечатления, но без рекрутера).&lt;/li&gt;
    &lt;li id=&quot;Gepz&quot;&gt;&lt;strong&gt;Таблица 2&lt;/strong&gt; — кто собеседовал кандидата (ФИО рекрутера), но тут нет их оценки впечатлений.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Nah4&quot;&gt;Чтобы узнать, кто из рекрутеров как провёл собеседование, надо &lt;strong&gt;связать эти две таблицы&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;oAvu&quot;&gt;&lt;strong&gt;Как это сделать?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;ZF2v&quot;&gt;
    &lt;li id=&quot;rcAs&quot;&gt;По «Дате» связывать нельзя — один кандидат мог проходить несколько этапов в разное время (например, Виноградов).&lt;/li&gt;
    &lt;li id=&quot;PjS6&quot;&gt;Правильнее всего объединять по &lt;strong&gt;ФИО кандидата&lt;/strong&gt;, потому что тогда мы точно знаем, кто что сказал, и кто проводил его собеседование.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;pvaw&quot;&gt;Тут надо просто взять две таблицы и соединить их по фамилии кандидата. Тогда в одной строчке будет сразу и мнение кандидата, и кто из рекрутеров его собеседовал. А значит можно посчитать, у какого рекрутера чаще хорошие или плохие отзывы.»&lt;/p&gt;
  &lt;p id=&quot;cRUH&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;«Объединить таблицы по «ФИО кандидата»»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;FDYr&quot;&gt;&lt;strong&gt;Вопрос 6. &lt;/strong&gt;Проведена оценка сотрудников по 12 компетенциям (4 профессиональных, 4 личностных, 4 управленческих). HRD хочет визуализировать результаты в сравнении с нормативом по подразделениям и компетенциям.&lt;br /&gt; Какой вариант визуализации будет наиболее подходящим?&lt;/h2&gt;
  &lt;p id=&quot;AlAH&quot;&gt;Когда у нас много категорий (здесь — &lt;strong&gt;12 компетенций&lt;/strong&gt;) и надо показать для каждой, как подразделение или человек соответствует стандарту (нормативу), удобнее всего применять:&lt;/p&gt;
  &lt;p id=&quot;EY4q&quot;&gt;&lt;strong&gt;Лепестковую диаграмму (она же «радиальная» или «паучья»)&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Hm2d&quot;&gt;Ø На такой диаграмме каждая компетенция — это луч (ось), и на нём откладывается оценка.&lt;/p&gt;
  &lt;p id=&quot;HHww&quot;&gt;Ø Получается «паук», сразу видно, где «проседают» какие компетенции относительно нормы.&lt;/p&gt;
  &lt;p id=&quot;7iFX&quot;&gt;Ø Можно наложить несколько «пауков» (для подразделений или сотрудников) на один график.&lt;/p&gt;
  &lt;p id=&quot;FdI9&quot;&gt;Остальные:&lt;/p&gt;
  &lt;ul id=&quot;vpFw&quot;&gt;
    &lt;li id=&quot;AD8P&quot;&gt;&lt;strong&gt;Гистограмма с накоплением&lt;/strong&gt; — хорошо для показателей по времени или структурам, но хуже для профилей компетенций.&lt;/li&gt;
    &lt;li id=&quot;7zHB&quot;&gt;&lt;strong&gt;Пузырьковая&lt;/strong&gt; — для 3 показателей сразу (X, Y и размер пузыря).&lt;/li&gt;
    &lt;li id=&quot;7tqj&quot;&gt;&lt;strong&gt;Древовидная&lt;/strong&gt; — для иерархий (например, оргструктура).&lt;/li&gt;
    &lt;li id=&quot;yV30&quot;&gt;&lt;strong&gt;Спиральная&lt;/strong&gt; — для временных трендов (типа календаря).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;M41b&quot;&gt;Когда хотят показать, насколько человек или отдел подходит по разным навыкам сразу, используют диаграмму-паук. Там видно, где выступает хорошо, а где надо подтянуть.»&lt;/p&gt;
  &lt;p id=&quot;1CMq&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Z0my&quot;&gt;&lt;strong&gt;Лепестковая&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;pJWj&quot;&gt;&lt;strong&gt;Вопрос 7. Было собрано 100 анкет кандидатов.&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;VeFb&quot;&gt;Ø  40% их них были отклонены на собеседовании с HR.&lt;/p&gt;
  &lt;p id=&quot;uZ3h&quot;&gt;Ø  Половина из оставшихся дошла до встречи с руководителем.&lt;/p&gt;
  &lt;p id=&quot;qLRK&quot;&gt;Ø  Руководитель отклонил каждого третьего.&lt;/p&gt;
  &lt;p id=&quot;ocNN&quot;&gt;Ø  50% от приглашённых на работу приняли это приглашение.&lt;br /&gt; Какова итоговая конверсия по найму?&lt;/p&gt;
  &lt;p id=&quot;kk0o&quot;&gt;Считаем пошагово:&lt;/p&gt;
  &lt;p id=&quot;Yy4a&quot;&gt;&lt;strong&gt;1. После собеседования с HR:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;8KO0&quot;&gt;
    &lt;li id=&quot;bEC0&quot;&gt;Было 100 кандидатов.&lt;/li&gt;
    &lt;li id=&quot;BQxG&quot;&gt;HR отклонил 40%, осталось &lt;strong&gt;60 человек&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;uqDN&quot;&gt;2. &lt;strong&gt;Дошли до руководителя:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;iNJX&quot;&gt;
    &lt;li id=&quot;Munk&quot;&gt;Половина из оставшихся — это &lt;strong&gt;30 человек&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;NlEj&quot;&gt;3. &lt;strong&gt;После встречи с руководителем:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;8XJa&quot;&gt;
    &lt;li id=&quot;ju2T&quot;&gt;Руководитель отклонил каждого третьего, значит пропустил &lt;strong&gt;2/3&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;2Ymi&quot;&gt;То есть прошло &lt;strong&gt;30 × (2/3) = 20 человек&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;q3oC&quot;&gt;4. &lt;strong&gt;Приняли оффер:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;inyC&quot;&gt;
    &lt;li id=&quot;JPs8&quot;&gt;50% из них приняли предложение → &lt;strong&gt;10 человек&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;49Zx&quot;&gt;&lt;strong&gt;Итоговая конверсия по найму:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;bbb3&quot;&gt;&lt;strong&gt;10 из 100 = 10%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;uJwF&quot;&gt;Из 100 человек только 10 в итоге приняли приглашение на работу. Это значит, что конверсия найма — 10%.»&lt;/p&gt;
  &lt;p id=&quot;2wwc&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;10%&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;tZTG&quot;&gt;&lt;strong&gt;Вопрос 8. &lt;/strong&gt;Конверсия найма по компании снизилась на 12%. Задача аналитика — разобраться в причинах. Расположите действия аналитика в верном порядке.&lt;/h2&gt;
  &lt;p id=&quot;1FXY&quot;&gt;Чтобы найти причину падения показателя, аналитик обычно действует так:&lt;/p&gt;
  &lt;p id=&quot;37EJ&quot;&gt;1. &lt;strong&gt;Сначала собирает общую информацию:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;vBPx&quot;&gt;Смотрит, может это на рынке у всех так (п.1).&lt;/p&gt;
  &lt;p id=&quot;EZ5A&quot;&gt;Расспрашивает рекрутеров, возможно, что-то изменилось внутри компании (п.2).&lt;/p&gt;
  &lt;p id=&quot;atiI&quot;&gt;2. &lt;strong&gt;После этого смотрит в данные:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;mS49&quot;&gt;Делает описательный анализ, ищет, где конкретно просело (п.3).&lt;/p&gt;
  &lt;p id=&quot;cyov&quot;&gt;3. &lt;strong&gt;Дальше выдвигает гипотезы:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3YNL&quot;&gt;Почему это могло случиться (п.4).&lt;/p&gt;
  &lt;p id=&quot;sEEI&quot;&gt;4. &lt;strong&gt;Рассчитывает, что проще или важнее проверить:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;M6H9&quot;&gt;Оценивает трудоёмкость проверки каждой гипотезы (п.6).&lt;/p&gt;
  &lt;p id=&quot;nz6S&quot;&gt;5. &lt;strong&gt;И наконец проверяет:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;yUYy&quot;&gt;Берёт приоритетные гипотезы и тестирует, например через A/B (п.7 или п.5, но здесь п.7 явно про проверку гипотез, а п.5 конкретно про A/B-тест — обычно это один из способов проверки, но не всегда он нужен).&lt;/p&gt;
  &lt;p id=&quot;oHhc&quot;&gt;Где A/B-тест — это частный инструмент, он не всегда универсальный шаг после определения гипотез и оценки их трудоёмкости).&lt;/p&gt;
  &lt;p id=&quot;UFNs&quot;&gt;Сначала нужно узнать, не у всех ли так плохо, потом спросить сотрудников, потом в данные залезть. После этого придумать, почему так случилось, оценить, что проще проверить, и уже потом проверять.&lt;/p&gt;
  &lt;p id=&quot;7N6Z&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;2, 3, 4, 6, 7&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;iRi4&quot;&gt;&lt;strong&gt;Вопрос 9. &lt;/strong&gt;Какой инструмент оптимально выбрать для подготовки данных в виде разового отчета (для усредненного портрета сотрудника с демографией и ценностями)?&lt;/h2&gt;
  &lt;p id=&quot;1OXs&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;I7Ca&quot;&gt;1.     Провести обработку данных с помощью библиотеки Pandas&lt;/p&gt;
  &lt;p id=&quot;qSGA&quot;&gt;2.     Применить статистический пакет PSS Statistics&lt;/p&gt;
  &lt;p id=&quot;Kglf&quot;&gt;3.     Написать SQL-запрос в кадровую систему для получения усредненных данных и оббъединения с данными сводной таблицы&lt;/p&gt;
  &lt;p id=&quot;Dz48&quot;&gt;4.     Подготовить сводную таблицу в Excel с запрашиваемыми данными&lt;/p&gt;
  &lt;p id=&quot;fNSn&quot;&gt;5.     Построить интерактивный дашборд в Bl&lt;/p&gt;
  &lt;p id=&quot;B30Q&quot;&gt;Тут задача — &lt;strong&gt;сделать один отчет&lt;/strong&gt;, не на постоянной основе, а для встречи по итогам года. Нужно просто объединить данные из кадровой системы и из готовой сводной таблицы.&lt;/p&gt;
  &lt;p id=&quot;Xf7y&quot;&gt;Не нужны интерактивные дашборды (BI), сложная статистика (SPSS) или скрипты на Python (Pandas) — это избыточно для задачи, когда можно всё собрать вручную или полуавтоматически.&lt;/p&gt;
  &lt;p id=&quot;dtUo&quot;&gt;Для таких случаев оптимально:&lt;br /&gt;  &lt;strong&gt;Подготовить сводную таблицу в Excel с запрашиваемыми данными&lt;/strong&gt; — можно быстро объединить выгрузку из кадровой системы и готовую таблицу с ценностями, сделать группировки и средние.&lt;/p&gt;
  &lt;p id=&quot;RV0f&quot;&gt;Если нужен просто один отчет для совещания, проще всего открыть Excel, подтянуть данные из кадровой системы и добавить туда табличку с результатами опросов. Так быстро получим средний портрет сотрудника.»&lt;/p&gt;
  &lt;p id=&quot;QNNi&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;«Подготовить сводную таблицу в Excel с запрашиваемыми данными»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;AQY5&quot;&gt;&lt;strong&gt;Вопрос 10.&lt;/strong&gt; Проведен замер NPS. Результат — 60%. До 30% — удовлетворительно, 30-70% — хорошо, выше 70% — отлично.&lt;br /&gt; Какая визуализация из Excel лучше всего подходит для отражения этих данных и каковы шаги ее построения?&lt;/h2&gt;
  &lt;p id=&quot;Cc2J&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ayfB&quot;&gt;1.     Воронка: построить линейчатую диаграмму, настроить обратный порядок отражения шкалы, скрыть отображение дополнительных данных&lt;/p&gt;
  &lt;p id=&quot;wUHQ&quot;&gt;2.     Биржевая: построить диаграмму по данным мин. и макс. шкалы, установить в качестве прогнозного значения показатель результата&lt;/p&gt;
  &lt;p id=&quot;p90D&quot;&gt;3.     Спидометр: построить комбинированную диаграмму (кольцевую по шкале, круговую для стрелки-результата), сместить угол отражения рядов данных, скрыть ненужные области&lt;/p&gt;
  &lt;p id=&quot;OJhi&quot;&gt;4.     Термометр: построить стандартную гистограмму по данным шкалы и дополнить ее линейным графиком с показателем результата&lt;/p&gt;
  &lt;p id=&quot;SAVi&quot;&gt;5.     Диаграмма с областями: построить диаграмму с областями для шкалы, дополнить ее точечной диаграммой с результатом, скрыть ненужные области&lt;/p&gt;
  &lt;p id=&quot;x1HU&quot;&gt;Задача здесь — &lt;strong&gt;показать уровень NPS относительно шкалы и зон&lt;/strong&gt;, где видно, что до 30% плохо, от 30 до 70 хорошо, а свыше 70 отлично.&lt;/p&gt;
  &lt;p id=&quot;GROK&quot;&gt;Самый наглядный инструмент для такой цели — это &lt;strong&gt;«спидометр»&lt;/strong&gt;, который показывает уровень как стрелку на полукруге, где зона до 30 — красная, до 70 — жёлтая, выше — зелёная. Это интуитивно: все привыкли по спидометрам в машине видеть, где норма, где «красная зона».&lt;/p&gt;
  &lt;p id=&quot;g6T0&quot;&gt;Для Excel это обычно делают через &lt;strong&gt;комбинированную диаграмму&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;EMM4&quot;&gt;
    &lt;li id=&quot;rBHv&quot;&gt;кольцевая диаграмма строится как шкала,&lt;/li&gt;
    &lt;li id=&quot;zfAE&quot;&gt;а поверх ставится круговая с одной стрелкой для текущего значения.&lt;/li&gt;
    &lt;li id=&quot;VqO2&quot;&gt;также нужно сместить угол отображения данных и скрыть ненужные сегменты, чтобы осталась только нужная половина круга.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;I6pY&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;«Спидометр: построить комбинированную диаграмму (кольцевую по шкале, круговую для стрелки-результата), сместить угол отображения рядов данных, скрыть ненужные области»&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;0Ayp&quot;&gt;&lt;strong&gt;Вопрос 11. &lt;/strong&gt;Какой вывод по итогу анализа эффективности плана мероприятий можно сделать?&lt;/h2&gt;
  &lt;p id=&quot;JBok&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;9v5Q&quot;&gt;1.     Мероприятия адаптации не связаны с производительностью и не влияют на неё&lt;/p&gt;
  &lt;p id=&quot;oCAs&quot;&gt;2.     Оценка эффективности по итогам опроса сотрудников - субъективный инструмент, на который нельзя полагаться&lt;/p&gt;
  &lt;p id=&quot;4OhI&quot;&gt;3.     Система мероприятий комплексная и работает как на удержание сотрудников, так и на рост производительности&lt;/p&gt;
  &lt;p id=&quot;GRIs&quot;&gt;4.     Вводное обучение и welcome-тренинг дублируют друг друга и можно отказаться от одного из них&lt;/p&gt;
  &lt;p id=&quot;m43D&quot;&gt;5.     Премирование - самый эффективный инструмент роста производительности&lt;/p&gt;
  &lt;p id=&quot;c2D0&quot;&gt;Посмотрим, какие были результаты всех этих мероприятий:&lt;/p&gt;
  &lt;ul id=&quot;W4fj&quot;&gt;
    &lt;li id=&quot;8y2F&quot;&gt;&lt;strong&gt;Снизилась текучесть&lt;/strong&gt; новичков на 5% (значит лучше удерживаем сотрудников).&lt;/li&gt;
    &lt;li id=&quot;Dp6L&quot;&gt;&lt;strong&gt;Производительность новичков выросла на 11%&lt;/strong&gt;, а &lt;strong&gt;брак снизился на 6%&lt;/strong&gt; — значит, новички быстрее выходят на норму работы и делают меньше ошибок.&lt;/li&gt;
    &lt;li id=&quot;veVa&quot;&gt;&lt;strong&gt;Все эти результаты достигнуты не одним действием&lt;/strong&gt;, а сразу целым набором: welcome-тренинг, чат-бот, наставничество, премирование, рейтинги.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;52zJ&quot;&gt;То есть система мероприятий &lt;strong&gt;работает как на удержание, так и на рост производительности&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;BX6U&quot;&gt;Тут видно, что благодаря всей этой системе у новичков и текучесть снизилась, и производительность выросла. Значит, эта программа работает сразу в двух направлениях — помогает людям остаться и работать лучше.»&lt;/p&gt;
  &lt;p id=&quot;zmYd&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;uUYq&quot;&gt;&lt;strong&gt;«Система мероприятий комплексная и работает как на удержание сотрудников, так и на рост производительности».&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;6npC&quot;&gt;&lt;strong&gt;Вопрос 12. &lt;/strong&gt;Какая рекомендация будет самой эффективной для решения задачи по найму?&lt;/h2&gt;
  &lt;p id=&quot;1Por&quot;&gt;&lt;strong&gt;Варианты ответа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;P3iU&quot;&gt;1.     Нанять 800 человек в месяц невозможно ни при каких условиях. Нужно распланировать найм равномерно на 3-4 месяца&lt;/p&gt;
  &lt;p id=&quot;jhbt&quot;&gt;2.     Узкое место воронки - обработка собранных откликов, так как двух рекрутеров недостаточно. Необходимо нанять еще двух на обработку откликов&lt;/p&gt;
  &lt;p id=&quot;ue7H&quot;&gt;3.     Откликов недостаточно для закрытия требуемого количества вакансий. Необходимо расширить количество источников подбора&lt;/p&gt;
  &lt;p id=&quot;T3Br&quot;&gt;4.     Узкое место воронки - обработка собранных откликов, так как рекрутерам не хватает времени. Нужно ускорить обработку, например, через рекрутинговый чат-бот&lt;/p&gt;
  &lt;p id=&quot;6CRe&quot;&gt;5.     Узкое место воронки - собеседование и дальнейшее сопровождение кандидата. Необходимо обучить рекрутеров навыкам экспресс-оценки, чтобы уменьшить время на каждого соискателя&lt;/p&gt;
  &lt;p id=&quot;FFQC&quot;&gt;Давай разберем пошагово:&lt;/p&gt;
  &lt;p id=&quot;nBs3&quot;&gt;&lt;strong&gt;Сколько есть времени:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;UFLc&quot;&gt;
    &lt;li id=&quot;p7wk&quot;&gt;2 рекрутера × 165 часов = &lt;strong&gt;330 часов в месяц&lt;/strong&gt; всего.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;0Eup&quot;&gt;&lt;strong&gt;Сколько уже тратят:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;8gD5&quot;&gt;
    &lt;li id=&quot;IX6x&quot;&gt;На обработку откликов — 69 ч&lt;/li&gt;
    &lt;li id=&quot;6SuS&quot;&gt;На собеседования и дальнейшее сопровождение — 237 ч&lt;/li&gt;
    &lt;li id=&quot;jwgO&quot;&gt;На трудоустройство — 24 ч&lt;/li&gt;
    &lt;li id=&quot;yg5f&quot;&gt;Всего: &lt;strong&gt;330 ч&lt;/strong&gt;, то есть рекрутеры &lt;strong&gt;уже загружены на 100%&lt;/strong&gt; при найме &lt;strong&gt;285 человек&lt;/strong&gt; в месяц.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;0qpD&quot;&gt;&lt;strong&gt;Чтобы нанять 800 человек:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;6Q9f&quot;&gt;Нужно примерно &lt;strong&gt;в 2,8 раза больше времени&lt;/strong&gt; (800 / 285 ≈ 2,8).&lt;/p&gt;
  &lt;p id=&quot;JjZb&quot;&gt;То есть рекрутерам потребуется &lt;strong&gt;330 × 2,8 = 924 часа&lt;/strong&gt;, что физически невозможно вдвоем.&lt;/p&gt;
  &lt;p id=&quot;DAJm&quot;&gt;&lt;strong&gt;Что тогда делать:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;e859&quot;&gt;Можно увеличить срок набора до &lt;strong&gt;3-4 месяцев&lt;/strong&gt;, тогда задача станет реальной:&lt;/p&gt;
  &lt;p id=&quot;5PHn&quot;&gt;800 / 3 ≈ &lt;strong&gt;267 человек в месяц&lt;/strong&gt;, что близко к их текущей производительности.&lt;/p&gt;
  &lt;p id=&quot;b2Zi&quot;&gt;Два рекрутера сейчас и так заняты полностью, а чтобы нанять 800 в месяц, им нужно работать в три раза больше. Значит, правильнее всего просто растянуть процесс на несколько месяцев.&lt;/p&gt;
  &lt;p id=&quot;KW3H&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;«Нанять 800 человек в месяц невозможно ни при каких условиях. Нужно распланировать найм равномерно на 3-4 месяца.»&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;jPJq&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0W3u&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/cb/bd/cbbd3bb4-fc39-4cd3-b287-6e2314419ce9.png&quot; width=&quot;973&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;tHGO&quot;&gt;&lt;strong&gt;Вероятные места ошибок&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;Wli2&quot;&gt;&lt;strong&gt;1. Вопрос про NPS (спидометр)&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;PZ3m&quot;&gt;Часто возникает путаница между «спидометром» и «термометром», здесь важно, показываете ли зоны или просто уровень.&lt;/p&gt;
  &lt;p id=&quot;WcTz&quot;&gt;Некоторые тесты трактуют NPS через термометр (столбиковый индикатор с заливкой), особенно если в задании было сказано «пороговые значения».&lt;/p&gt;
  &lt;p id=&quot;XyvR&quot;&gt;Я выбрала спидометр, так как в большинстве кейсов он нагляднее для зон (до 30, 70, 100).&lt;/p&gt;
  &lt;p id=&quot;179o&quot;&gt;Возможная ошибка: тест засчитал правильным «термометр» (гистограмма + линия).&lt;/p&gt;
  &lt;p id=&quot;Yq3i&quot;&gt;&lt;strong&gt;2.  Вопрос про инструменты для подготовки разового отчета&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;bwpq&quot;&gt;Я выбрала Excel сводную таблицу — классика для разового отчета. Модные инструменты вроде Python и BI могут отвлечь, хотя Excel для разового запроса более оправдан.&lt;/p&gt;
  &lt;p id=&quot;EbDc&quot;&gt;Но если тест был ориентирован на технический бэкграунд, могли считать более правильным вариант &lt;strong&gt;«SQL-запрос + объединение»&lt;/strong&gt;, ведь данные в разных источниках. Однако для HR и классических «портретов сотрудника» обычно выбирают Excel.&lt;/p&gt;
  &lt;p id=&quot;z9ZL&quot;&gt;&lt;strong&gt;3.  Вопрос про пошаговый анализ снижения конверсии&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;oU05&quot;&gt;Возможная ошибка здесь, там было несколько вариантов с близким порядком действий (например с A/B-тестированием в середине).&lt;/p&gt;
  &lt;p id=&quot;OaaI&quot;&gt;Выбрала понятную логику:&lt;/p&gt;
  &lt;p id=&quot;lthT&quot;&gt;1.     изучить рынок и опросить рекрутеров,&lt;/p&gt;
  &lt;p id=&quot;hK0d&quot;&gt;2.     сделать описательный анализ,&lt;/p&gt;
  &lt;p id=&quot;ggWU&quot;&gt;3.     сформулировать гипотезы,&lt;/p&gt;
  &lt;p id=&quot;kUp6&quot;&gt;4.     оценить трудозатраты и проверить.&lt;/p&gt;
  &lt;p id=&quot;Zv5U&quot;&gt;Иногда тесты требуют сразу выдвигать гипотезы после сбора мнений, а только потом строить описательную статистику. Это тонкий методический спор.&lt;/p&gt;
  &lt;p id=&quot;JfAb&quot;&gt;&lt;strong&gt;Вероятные ошибки:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;DDZS&quot;&gt;1.     Спидометр / термометр (визуализация NPS).&lt;/p&gt;
  &lt;p id=&quot;g6Wv&quot;&gt;2.     SQL-запрос против Excel для разового отчета.&lt;/p&gt;
  &lt;p id=&quot;rtmU&quot;&gt;3.     Порядок действий аналитика при снижении конверсии.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;94I7&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;hNn7&quot;&gt;После этого разбора вы начнёте видеть за сухими цифрами реальные процессы HR-аналитики: почему уходят новички, где теряются кандидаты, что мешает закрыть вакансию быстрее.&lt;/p&gt;
  &lt;p id=&quot;m5U8&quot;&gt;Компании всё чаще инвестируют в системы HR-аналитики, BI-панели и автоматизацию отчётов. Но главный драйвер изменений — специалисты, которые умеют ставить правильные вопросы и грамотно интерпретировать данные. Пройдя такие тесты и освоив логику работы с HR-метриками, вы делаете первый шаг к тому, чтобы стать именно таким специалистом.&lt;/p&gt;
  &lt;p id=&quot;tEpx&quot;&gt;👉 Если вы ответили на все вопросы верно, оставьте комментарий: где я, возможно, допустила ошибку в разборе, и какие ответы на ваш взгляд точнее. Так мы вместе сделаем этот материал ещё полезнее.&lt;/p&gt;

</content></entry><entry><id>ildm:y8I2Irt3TLB</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/y8I2Irt3TLB?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>От линейных моделей до ансамблей как оценивать качество ML-моделей и избегать переобучения</title><published>2025-08-16T19:18:01.801Z</published><updated>2025-08-16T19:18:01.801Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/0b/2f/0b2fdaca-bcbc-481a-bc0a-31f472197853.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c2/a1/c2a1a893-c014-4e7b-9497-ca5b79950f37.png&quot;&gt;Машинное обучение умеет больше, чем просто угадывать категории. На продвинутом уровне мы говорим о байесовских подходах, градиентном бустинге, оптимизации гиперпараметров и оценке неопределённости прогнозов. Всё это — инструменты, которые позволяют строить надёжные и интерпретируемые модели для сложных бизнес-задач.</summary><content type="html">
  &lt;figure id=&quot;CkW0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c2/a1/c2a1a893-c014-4e7b-9497-ca5b79950f37.png&quot; width=&quot;911&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Jy4x&quot;&gt;Машинное обучение умеет больше, чем просто угадывать категории. На продвинутом уровне мы говорим о байесовских подходах, градиентном бустинге, оптимизации гиперпараметров и оценке неопределённости прогнозов. Всё это — инструменты, которые позволяют строить надёжные и интерпретируемые модели для сложных бизнес-задач.&lt;/p&gt;
  &lt;p id=&quot;DOVh&quot;&gt;В этой статье мы подробно разберём тест продвинутого уровня и подчеркнём, на чём чаще всего ошибаются даже опытные специалисты.&lt;/p&gt;
  &lt;p id=&quot;qRcq&quot;&gt;Эти знания нужны уже не просто для того, чтобы устроиться в IT, а чтобы претендовать на позиции инженеров машинного обучения, продакт-аналитиков в больших компаниях и специалистов по предиктивной аналитике.&lt;/p&gt;
  &lt;h3 id=&quot;iNGx&quot; data-align=&quot;center&quot;&gt;Вся навигация по материалам в Telegram 👇🏻&lt;/h3&gt;
  &lt;figure id=&quot;uOd4&quot;&gt;
    &lt;iframe src=&quot;https://t.me/ildmy/77?embed=1&amp;userpic=1&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;RRVS&quot;&gt;&lt;strong&gt;Вопрос 1. &lt;/strong&gt;В задаче регрессии функцию потерь, измеряющую отклонение предсказанных значений A(x) от правильных значений y, изменили: вместо квадрата разности (A(x) – y)² стали использовать абсолютное значение разности |A(x) – y|. Как изменится поведение модели при обучении с такой функцией потерь?&lt;/h2&gt;
  &lt;p id=&quot;hewX&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;sAiz&quot;&gt;1.     Малые отклонения будут игнорироваться&lt;/p&gt;
  &lt;p id=&quot;rA6P&quot;&gt;2.     Ухудшится интерпретируемость результата&lt;/p&gt;
  &lt;p id=&quot;nXYw&quot;&gt;3.     Результат ухудшится для целевой переменной с ассиметричным распределением&lt;/p&gt;
  &lt;p id=&quot;TFgk&quot;&gt;4.     Снизится чувствительность к выбросам&lt;/p&gt;
  &lt;p id=&quot;LXlZ&quot;&gt;5.     Выбросы будут влиять сильнее&lt;/p&gt;
  &lt;p id=&quot;3QdS&quot;&gt;Когда мы используем &lt;strong&gt;(A(x) – y)²&lt;/strong&gt; (MSE, среднеквадратичную ошибку), большие ошибки становятся ещё больше (они возводятся в квадрат). Поэтому модель сильно реагирует на выбросы — пытается подогнать предсказания так, чтобы минимизировать эти большие квадраты.&lt;/p&gt;
  &lt;p id=&quot;wFwo&quot;&gt;Когда же используем &lt;strong&gt;|A(x) – y|&lt;/strong&gt; (MAE, среднюю абсолютную ошибку), то большие ошибки не «раздуваются» так сильно — абсолютное отклонение растёт линейно.&lt;br /&gt; В результате:&lt;/p&gt;
  &lt;ul id=&quot;NC6A&quot;&gt;
    &lt;li id=&quot;aRsk&quot;&gt;&lt;strong&gt;Модель меньше «боится» выбросов&lt;/strong&gt;, она не пытается всеми силами подогнать результат под экстремальные значения.&lt;/li&gt;
    &lt;li id=&quot;LFHp&quot;&gt;То есть &lt;strong&gt;чувствительность к выбросам снижается&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zecC&quot;&gt;Теперь проверим варианты:&lt;/p&gt;
  &lt;ul id=&quot;2dS7&quot;&gt;
    &lt;li id=&quot;R8qh&quot;&gt;Малые отклонения не будут игнорироваться — наоборот, они будут влиять так же.&lt;/li&gt;
    &lt;li id=&quot;oNcv&quot;&gt;Интерпретируемость MAE даже проще: это «средняя ошибка в исходных единицах», например рублях.&lt;/li&gt;
    &lt;li id=&quot;ln8l&quot;&gt;Ассиметричность распределения целевой переменной влияет меньше.&lt;/li&gt;
    &lt;li id=&quot;YtH6&quot;&gt;&lt;strong&gt;Снижается чувствительность к выбросам.&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;Seyf&quot;&gt;Не будет так, что выбросы будут влиять сильнее — наоборот, меньше.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;I1xZ&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Снизится чувствительность к выбросам&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;ExW4&quot;&gt;&lt;strong&gt;Вопрос 2. &lt;/strong&gt;Как можно обнаружить проблему недообучения в модели линейной регрессии?&lt;/h2&gt;
  &lt;p id=&quot;vZPS&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Nf4w&quot;&gt;1.     Модель показывает низкую точность как на обучающих, так и на тестовых данных&lt;/p&gt;
  &lt;p id=&quot;Nc3E&quot;&gt;2.     У модели высокий коэффициент детерминации R²&lt;/p&gt;
  &lt;p id=&quot;XGSg&quot;&gt;3.     Ошибки на тестовых данных полностью отсутствуют&lt;/p&gt;
  &lt;p id=&quot;Hiui&quot;&gt;4.     Модель демонстрирует высокую точность на обучающей выборке&lt;/p&gt;
  &lt;p id=&quot;uL88&quot;&gt;5.     Ошибка на тестовых данных значительно выше, чем на обучающих&lt;/p&gt;
  &lt;p id=&quot;C9gU&quot;&gt;Недообучение (underfitting) — это когда модель &lt;strong&gt;слишком простая&lt;/strong&gt;, чтобы уловить закономерности данных.&lt;/p&gt;
  &lt;p id=&quot;AAIu&quot;&gt;Она плохо работает &lt;strong&gt;и на обучающих, и на тестовых данных&lt;/strong&gt; — то есть вообще не справляется с задачей.&lt;/p&gt;
  &lt;p id=&quot;ayi3&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;ul id=&quot;jTfS&quot;&gt;
    &lt;li id=&quot;TkpQ&quot;&gt;&lt;strong&gt;Низкая точность и на обучающих, и на тестовых данных&lt;/strong&gt; — это как раз классическая картина недообучения.&lt;/li&gt;
    &lt;li id=&quot;IB1F&quot;&gt;Высокий R² говорит наоборот о хорошем объяснении вариации.&lt;/li&gt;
    &lt;li id=&quot;Umlk&quot;&gt;Ошибки, полностью отсутствующие на тесте, невозможны (это фантастика).&lt;/li&gt;
    &lt;li id=&quot;bVJg&quot;&gt;Высокая точность на обучающей выборке при низкой на тестовой — это &lt;strong&gt;переобучение&lt;/strong&gt;, а не недообучение.&lt;/li&gt;
    &lt;li id=&quot;4vkI&quot;&gt;Ошибка на тестовых данных значительно выше, чем на обучающих — снова симптом переобучения.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;S38Z&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Модель показывает низкую точность как на обучающих, так и на тестовых данных&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Ec4n&quot;&gt;&lt;strong&gt;Вопрос 3. &lt;/strong&gt;Модель логистической регрессии обучена на выборке с сильным дисбалансом классов (например, 95% одного класса). При этом значение Accuracy оказалось высоким. Какое поведение модели мы можем ожидать в такой ситуации?&lt;/h2&gt;
  &lt;p id=&quot;tDY6&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;lEtY&quot;&gt;1.     Вероятности предсказания будут точно отражать реальные распределения&lt;/p&gt;
  &lt;p id=&quot;xWj1&quot;&gt;2.     Модель автоматически применяет взвешивание классов&lt;/p&gt;
  &lt;p id=&quot;jnzm&quot;&gt;3.     Модель склонна предсказывать преобладающий класс, игнорируя миноритарный&lt;/p&gt;
  &lt;p id=&quot;IcFg&quot;&gt;4.     Логистическая регрессия устойчива к дисбалансу&lt;/p&gt;
  &lt;p id=&quot;Mekw&quot;&gt;5.     Высокая Accuracy подтверждает хорошее качество модели&lt;/p&gt;
  &lt;p id=&quot;gJHA&quot;&gt;Представь, что у тебя 95% пациентов здоровы, а 5% больны. Модель может просто всегда говорить: «пациент здоров», и угадает 95% случаев — Accuracy будет высокой.&lt;br /&gt; Но при этом она &lt;strong&gt;полностью проигнорирует больных&lt;/strong&gt;, то есть меньшинство.&lt;/p&gt;
  &lt;p id=&quot;JBiC&quot;&gt;Это стандартная проблема при дисбалансе классов — Accuracy в таких случаях &lt;strong&gt;обманчиво высока&lt;/strong&gt;, а модель просто «ленится» искать редкие случаи.&lt;/p&gt;
  &lt;p id=&quot;C2uO&quot;&gt;По вариантам:&lt;/p&gt;
  &lt;ul id=&quot;PwUZ&quot;&gt;
    &lt;li id=&quot;wlnx&quot;&gt;Вероятности вряд ли будут хорошо отражать реальные распределения — модель может «сместиться» в сторону преобладающего класса.&lt;/li&gt;
    &lt;li id=&quot;iYjV&quot;&gt;Логистическая регрессия &lt;strong&gt;сама по себе не применяет взвешивание классов&lt;/strong&gt;, это нужно задавать явно.&lt;/li&gt;
    &lt;li id=&quot;g7Nm&quot;&gt;&lt;strong&gt;Скорее всего модель будет предсказывать преобладающий класс&lt;/strong&gt;, почти игнорируя миноритарный.&lt;/li&gt;
    &lt;li id=&quot;4fsG&quot;&gt;Логистическая регрессия не устойчива к дисбалансу.&lt;/li&gt;
    &lt;li id=&quot;VPix&quot;&gt;Высокая Accuracy не всегда означает качество при дисбалансе.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;YD1U&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Модель склонна предсказывать преобладающий класс, игнорируя миноритарный&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;lF3Y&quot;&gt;&lt;strong&gt;Вопрос 4. &lt;/strong&gt;Линейный дискриминантный анализ предполагает, что классы имеют одинаковые ковариационные матрицы. Какие последствия могут возникнуть, если это предположение нарушено?&lt;/h2&gt;
  &lt;p id=&quot;713U&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;pAmn&quot;&gt;1.     Модель начнет объединять схожие классы в один&lt;/p&gt;
  &lt;p id=&quot;AsoE&quot;&gt;2.     Модель автоматически скорректирует ковариации под каждый класс&lt;/p&gt;
  &lt;p id=&quot;qXbZ&quot;&gt;3.     Ошибки классификации будут равномерно распределены между классами&lt;/p&gt;
  &lt;p id=&quot;9sXw&quot;&gt;4.     Модель может построить неэффективную границу, ухудшая классификацию&lt;/p&gt;
  &lt;p id=&quot;PkCM&quot;&gt;5.     LDA начнет вести себя как метод ближайших соседей&lt;/p&gt;
  &lt;p id=&quot;ptbj&quot;&gt;ЛДА строит линейные границы между классами, исходя из предположения, что классы имеют одинаковую «форму» распределения (одинаковые ковариационные матрицы), но разные центры.&lt;/p&gt;
  &lt;p id=&quot;Jwld&quot;&gt;Если на практике это не так (например, один класс вытянут, а другой круглый), то ЛДА &lt;strong&gt;не сможет правильно «подогнать» границу&lt;/strong&gt;, потому что она будет линейной, а данных — нет.&lt;br /&gt; Это значит, что:&lt;/p&gt;
  &lt;ol id=&quot;V3ph&quot;&gt;
    &lt;li id=&quot;nUs6&quot;&gt;модель может построить &lt;strong&gt;неэффективную (неудачную) границу&lt;/strong&gt;, которая плохо отделит классы,&lt;/li&gt;
    &lt;li id=&quot;tpyv&quot;&gt;и качество классификации снизится.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;R3St&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;ul id=&quot;q80O&quot;&gt;
    &lt;li id=&quot;EJOi&quot;&gt;Модель не начнет объединять классы в один.&lt;/li&gt;
    &lt;li id=&quot;zx2I&quot;&gt;ЛДА не скорректирует ковариации автоматически — это сделает QDA (Quadratic Discriminant Analysis), но не LDA.&lt;/li&gt;
    &lt;li id=&quot;aFsU&quot;&gt;Ошибки не будут равномерны, наоборот — в более «неудобных» классах ошибок будет больше.&lt;/li&gt;
    &lt;li id=&quot;NPGL&quot;&gt;&lt;strong&gt;Будет построена неэффективная граница, ухудшающая классификацию.&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;yIUz&quot;&gt;LDA не превратится в k-NN.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;n7RA&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;GTL2&quot;&gt;Модель может построить неэффективную границу, ухудшая классификацию&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;wZoA&quot;&gt;&lt;strong&gt;Вопрос 5. &lt;/strong&gt;Почему деревья решений склонны к переобучению на обучающей выборке, особенно при большой глубине дерева?&lt;/h2&gt;
  &lt;p id=&quot;WTWT&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;gZW3&quot;&gt;1.     Ошибки в обучении происходят из-за недостаточной глубины&lt;/p&gt;
  &lt;p id=&quot;mnly&quot;&gt;2.     Полные деревья могут идеально подстроиться под обучающую выборку, запоминая шум&lt;/p&gt;
  &lt;p id=&quot;uFGt&quot;&gt;3.     Переобучение связано с тем, что деревья плохо обрабатывают числовые признаки&lt;/p&gt;
  &lt;p id=&quot;CNP6&quot;&gt;4.     При большой глубине деревья теряют способность учитывать редкие события&lt;/p&gt;
  &lt;p id=&quot;VvL7&quot;&gt;5.     Глубокие деревья уменьшают переобучение за счёт учёта всех признаков&lt;/p&gt;
  &lt;p id=&quot;ZP4P&quot;&gt;Дерево решений строит последовательные правила, чтобы «разбить» данные на чистые группы.&lt;br /&gt; Если разрешить дереву расти очень глубоко, оно может:&lt;/p&gt;
  &lt;ol id=&quot;NUpi&quot;&gt;
    &lt;li id=&quot;kmBo&quot;&gt;&lt;strong&gt;идеально запомнить обучающую выборку, включая случайные шумы и выбросы&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;pfLw&quot;&gt;о есть просто «зубрить», а не учиться выявлять общие закономерности.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;2OYz&quot;&gt;Такое поведение называется &lt;strong&gt;переобучением (overfitting)&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;DxHl&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;ul id=&quot;XEkR&quot;&gt;
    &lt;li id=&quot;oi7M&quot;&gt;Недостаточная глубина ведёт наоборот к &lt;strong&gt;недообучению&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;FWb3&quot;&gt;&lt;strong&gt;Полные (глубокие) деревья действительно могут идеально подстроиться, запоминая шум&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;lGrd&quot;&gt;Плохая обработка числовых признаков не причина переобучения.&lt;/li&gt;
    &lt;li id=&quot;DGHK&quot;&gt;При большой глубине деревья наоборот слишком точно учитывают даже редкие события.&lt;/li&gt;
    &lt;li id=&quot;d56O&quot;&gt;Глубокие деревья увеличивают, а не уменьшают переобучение.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;atQC&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;lCfU&quot;&gt;Полные деревья могут идеально подстроиться под обучающую выборку, запоминая шум&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;bQwN&quot;&gt;&lt;strong&gt;Вопрос 6. &lt;/strong&gt;Какие последствия могут возникнуть при использовании наивного байесовского классификатора на разреженных данных, содержащих редкие, но значимые признаки?&lt;/h2&gt;
  &lt;p id=&quot;1aVx&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;VMjO&quot;&gt;1.     Метод всегда покажет высокую точность, независимо от распределения признаков&lt;/p&gt;
  &lt;p id=&quot;gUXh&quot;&gt;2.     Классификатор увеличит вероятность редких признаков для повышения их значимости&lt;/p&gt;
  &lt;p id=&quot;bV7n&quot;&gt;3.     Метод не сможет работать с разреженными данными и выдаст ошибку&lt;/p&gt;
  &lt;p id=&quot;UiKi&quot;&gt;4.     Метод полностью проигнорирует редкие признаки, сконцентрировавшись на частых&lt;/p&gt;
  &lt;p id=&quot;yY7b&quot;&gt;5.     Метод может недооценить влияние редких признаков, что приведет к снижению точности классификации&lt;/p&gt;
  &lt;p id=&quot;XzuH&quot;&gt;Наивный байесовский классификатор оценивает вероятность класса исходя из &lt;strong&gt;умножения вероятностей признаков&lt;/strong&gt;.&lt;/p&gt;
  &lt;ul id=&quot;icyr&quot;&gt;
    &lt;li id=&quot;A8ZJ&quot;&gt;Если признаки редкие, то их вероятности малы.&lt;/li&gt;
    &lt;li id=&quot;Jtq3&quot;&gt;При перемножении они могут очень быстро стать &lt;strong&gt;почти нулевыми&lt;/strong&gt;, что приведет к «затиранию» их влияния.&lt;/li&gt;
    &lt;li id=&quot;2e4T&quot;&gt;В реальности метод не полностью их игнорирует, но &lt;strong&gt;сильно недооценивает их влияние&lt;/strong&gt;, что снижает точность.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;gGe3&quot;&gt;Поэтому вариант «полностью проигнорирует» некорректен буквально, а вот «может недооценить влияние редких признаков, что приведет к снижению точности» — максимально точное описание.&lt;/p&gt;
  &lt;p id=&quot;yxgr&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;ul id=&quot;3gGa&quot;&gt;
    &lt;li id=&quot;wAko&quot;&gt;Всегда высокая точность — очевидно неправда.&lt;/li&gt;
    &lt;li id=&quot;OMcO&quot;&gt;Наоборот, не увеличит вероятность редких признаков.&lt;/li&gt;
    &lt;li id=&quot;zCN8&quot;&gt;Метод спокойно работает с разреженными данными (часто используется для текстов).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;lL1O&quot;&gt;«Полностью проигнорирует» — не совсем корректно, скорее он недооценит.&lt;/p&gt;
  &lt;ul id=&quot;KJMZ&quot;&gt;
    &lt;li id=&quot;GOVC&quot;&gt;&lt;strong&gt;Недооценка редких признаков приведет к снижению точности&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ICeA&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;6lUi&quot;&gt;Метод может недооценить влияние редких признаков, что приведет к снижению точности классификации&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;SLuV&quot;&gt;&lt;strong&gt;Вопрос 7. &lt;/strong&gt;При применении k-NN вы заметили, что один из классов доминирует в ближайших соседях из-за его численного превосходства в данных. Какое последствие это может иметь?&lt;/h2&gt;
  &lt;p id=&quot;23Ns&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;XYA8&quot;&gt;1.     Метод скорректирует веса автоматически для балансировки классов&lt;/p&gt;
  &lt;p id=&quot;Nxfs&quot;&gt;2.     Доминирующий класс будет разбит на подклассы&lt;/p&gt;
  &lt;p id=&quot;d4NR&quot;&gt;3.     Это означает, что параметры модели подобраны оптимально&lt;/p&gt;
  &lt;p id=&quot;MGzg&quot;&gt;4.     Это увеличит точность классификации на редких классах&lt;/p&gt;
  &lt;p id=&quot;oP2D&quot;&gt;5.     Модель будет склонна предсказывать более частый класс, игнорируя редкие&lt;/p&gt;
  &lt;p id=&quot;a3LH&quot;&gt;Метод k-NN (k ближайших соседей) работает очень просто:&lt;/p&gt;
  &lt;ul id=&quot;4PiJ&quot;&gt;
    &lt;li id=&quot;Zj98&quot;&gt;смотрит на &lt;strong&gt;k ближайших объектов&lt;/strong&gt; в данных,&lt;/li&gt;
    &lt;li id=&quot;ZOzM&quot;&gt;и отдаёт класс, который встречается среди них чаще всего.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;xXKk&quot;&gt;Если один класс &lt;strong&gt;просто чаще встречается в обучающих данных&lt;/strong&gt;, то он будет &lt;strong&gt;с высокой вероятностью встречаться и среди ближайших соседей&lt;/strong&gt;, даже если входящий объект принадлежит к редкому классу.&lt;br /&gt; В результате модель будет:&lt;/p&gt;
  &lt;ul id=&quot;povu&quot;&gt;
    &lt;li id=&quot;Ugh0&quot;&gt;&lt;strong&gt;склонна отдавать этот частый класс&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;oMgh&quot;&gt;&lt;strong&gt;игнорируя редкие классы&lt;/strong&gt;, у которых мало представителей.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;LBov&quot;&gt;По вариантам:&lt;/p&gt;
  &lt;p id=&quot;tyEI&quot;&gt;1.     Метод сам не балансирует веса (это надо специально задавать).&lt;/p&gt;
  &lt;p id=&quot;sPha&quot;&gt;2.     Не будет дробить класс на подклассы.&lt;/p&gt;
  &lt;p id=&quot;HJwA&quot;&gt;3.     Наоборот, это признак &lt;strong&gt;плохого подбора данных или параметров&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;q4ek&quot;&gt;4.     Это &lt;strong&gt;снизит&lt;/strong&gt;, а не повысит точность на редких классах.&lt;/p&gt;
  &lt;p id=&quot;dMQu&quot;&gt;5.     &lt;strong&gt;Модель склонна предсказывать более частый класс, игнорируя редкие&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;gDfK&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;b0HB&quot;&gt;Модель будет склонна предсказывать более частый класс, игнорируя редкие&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;mZEE&quot;&gt;&lt;strong&gt;Вопрос 8. &lt;/strong&gt;Вы рассматриваете использование метода опорных векторов (SVM) для классификации. Данные содержат много выбросов, а граница между классами размыта. Как можно охарактеризовать поведение метода SVM в такой ситуации?&lt;/h2&gt;
  &lt;p id=&quot;ifa6&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;qaWR&quot;&gt;1.     SVM автоматически удаляет выбросы перед построением гиперплоскости&lt;/p&gt;
  &lt;p id=&quot;Uevh&quot;&gt;2.     Метод чувствителен к шуму, но всегда точно разделяет классы с помощью линейного ядра&lt;/p&gt;
  &lt;p id=&quot;9DMd&quot;&gt;3.     SVM в любом случае строит жёсткую границу, поэтому выбросы не влияют на результат&lt;/p&gt;
  &lt;p id=&quot;VrpS&quot;&gt;4.     Метод с мягким зазором позволяет частично учитывать выбросы и лучше работает при пересечении классов&lt;/p&gt;
  &lt;p id=&quot;Kvtq&quot;&gt;5.     При наличии шумов SVM не применяется, так как требует идеального разделения классов&lt;/p&gt;
  &lt;p id=&quot;6c7Y&quot;&gt;SVM действительно известен своей &lt;strong&gt;чувствительностью к выбросам&lt;/strong&gt;, но именно для этого у него есть так называемый &lt;strong&gt;мягкий зазор (soft margin)&lt;/strong&gt;.&lt;/p&gt;
  &lt;ul id=&quot;CU1O&quot;&gt;
    &lt;li id=&quot;yMZS&quot;&gt;Этот зазор позволяет &lt;strong&gt;немного нарушить идеальное разделение&lt;/strong&gt;, допуская, что некоторые точки окажутся не на той стороне гиперплоскости.&lt;/li&gt;
    &lt;li id=&quot;6895&quot;&gt;Это помогает SVM &lt;strong&gt;лучше работать на данных с шумом или пересекающимися классами&lt;/strong&gt;, чем классический «жёсткий» SVM без допуска.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;E5ud&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;Her6&quot;&gt;1.     SVM не удаляет выбросы автоматически.&lt;/p&gt;
  &lt;p id=&quot;zFYS&quot;&gt;2.     Линейный SVM не всегда может точно разделить шумные данные.&lt;/p&gt;
  &lt;p id=&quot;suK1&quot;&gt;3.     Жёсткая граница без мягкого зазора как раз очень плохо справляется с шумом.&lt;/p&gt;
  &lt;p id=&quot;1av5&quot;&gt;4.     &lt;strong&gt;SVM с мягким зазором учитывает выбросы и может их частично пропускать, что помогает при пересечении классов.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ypbp&quot;&gt;5.     SVM не требует идеального разделения, именно поэтому и был придуман soft margin.&lt;/p&gt;
  &lt;p id=&quot;dT3a&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;xlYg&quot;&gt;Метод с мягким зазором позволяет частично учитывать выбросы и лучше работает при пересечении классов&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Qwhx&quot;&gt;&lt;strong&gt;Вопрос 9. &lt;/strong&gt;Почему интерпретируемость случайного леса (Random Forest) значительно ниже по сравнению с одиночным деревом?&lt;/h2&gt;
  &lt;p id=&quot;8XU1&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;YmuD&quot;&gt;1.     Random Forest требует обязательной стандартизации данных, что усложняет интерпретацию&lt;/p&gt;
  &lt;p id=&quot;J6Yc&quot;&gt;2.     Random Forest игнорирует важные признаки, фокусируясь только на шумовых данных&lt;/p&gt;
  &lt;p id=&quot;WrQA&quot;&gt;3.     Деревья в Random Forest глубже, чем одиночное дерево, поэтому их сложнее визуализировать&lt;/p&gt;
  &lt;p id=&quot;R7o4&quot;&gt;4.     Random Forest использует только линейные комбинации признаков, что делает его менее прозрачным&lt;/p&gt;
  &lt;p id=&quot;3NXc&quot;&gt;5.     Ансамбль из сотен деревьев не дает единой четкой логики принятия решений, усредняя множество сложных правил&lt;/p&gt;
  &lt;p id=&quot;JaiI&quot;&gt;Одиночное дерево решений можно легко «нарисовать» и показать путь принятия решения:&lt;/p&gt;
  &lt;p id=&quot;29wQ&quot;&gt;«если возраст &amp;gt; 30 и доход &amp;gt; 100 тыс, тогда класс 1».&lt;/p&gt;
  &lt;p id=&quot;tupV&quot;&gt;А вот Random Forest состоит из &lt;strong&gt;сотен (или тысяч) деревьев&lt;/strong&gt;, каждое из которых строит свои условия и решения.&lt;/p&gt;
  &lt;ul id=&quot;wTyo&quot;&gt;
    &lt;li id=&quot;f3tC&quot;&gt;Затем все эти деревья &lt;strong&gt;голосуют&lt;/strong&gt;, а итоговое решение — это результат голосования.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;47xn&quot;&gt;Из-за этого:&lt;/p&gt;
  &lt;ul id=&quot;dol7&quot;&gt;
    &lt;li id=&quot;38Kp&quot;&gt;нельзя вывести &lt;strong&gt;единого четкого набора правил&lt;/strong&gt;, как для одного дерева.&lt;/li&gt;
    &lt;li id=&quot;t28c&quot;&gt;мы теряем интерпретируемость — не можем просто так объяснить «почему именно этот клиент попал в этот класс».&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;fZM2&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;2T5f&quot;&gt;1.     Стандартизация для деревьев обычно не требуется.&lt;/p&gt;
  &lt;p id=&quot;pxhe&quot;&gt;2.     Random Forest наоборот снижает влияние шумовых данных.&lt;/p&gt;
  &lt;p id=&quot;VGgD&quot;&gt;3.     Глубина не является причиной низкой интерпретируемости, чаще лес даже из неглубоких деревьев.&lt;/p&gt;
  &lt;p id=&quot;SOZE&quot;&gt;4.     Random Forest не использует только линейные комбинации.&lt;/p&gt;
  &lt;p id=&quot;cJMH&quot;&gt;5.     &lt;strong&gt;Причина в том, что ансамбль из сотен деревьев не даёт единой четкой логики, усредняя множество сложных правил.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;cKWd&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;lb77&quot;&gt;Ансамбль из сотен деревьев не дает единой четкой логики принятия решений, усредняя множество сложных правил&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;xapb&quot;&gt;&lt;strong&gt;Вопрос 10. &lt;/strong&gt;Какой способ поможет улучшить персонализацию рекомендаций в гибридной системе?&lt;/h2&gt;
  &lt;p id=&quot;3YTo&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;1GZA&quot;&gt;1.     Исключение метаданных из анализа&lt;/p&gt;
  &lt;p id=&quot;gyn3&quot;&gt;2.     Применение случайных подвыборок пользователей&lt;/p&gt;
  &lt;p id=&quot;G9VS&quot;&gt;3.     Использование одного метода без дополнительных признаков&lt;/p&gt;
  &lt;p id=&quot;91pg&quot;&gt;4.     Учет только новых объектов в системе&lt;/p&gt;
  &lt;p id=&quot;i7lf&quot;&gt;5.     Совмещение коллаборативной и контентной фильтрации&lt;/p&gt;
  &lt;p id=&quot;DNqX&quot;&gt;Гибридная рекомендательная система — это система, которая &lt;strong&gt;объединяет несколько подходов&lt;/strong&gt; для улучшения рекомендаций.&lt;br /&gt; Обычно берут:&lt;/p&gt;
  &lt;ol id=&quot;xnSC&quot;&gt;
    &lt;li id=&quot;Ao6e&quot;&gt;&lt;strong&gt;контентную фильтрацию&lt;/strong&gt; (рекомендует товары, похожие на те, что тебе уже нравились, по их характеристикам), и&lt;/li&gt;
    &lt;li id=&quot;Vx14&quot;&gt;&lt;strong&gt;коллаборативную фильтрацию&lt;/strong&gt; (смотрит, что любят пользователи с похожим на твой вкус).&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;bxXE&quot;&gt;Объединяя их, система может &lt;strong&gt;давать более персонализированные и качественные рекомендации&lt;/strong&gt;, чем любой из этих методов по отдельности.&lt;br /&gt; Это как если бы твой плейлист формировался одновременно по похожим исполнителям и по тому, что слушают другие люди с твоими интересами.&lt;/p&gt;
  &lt;p id=&quot;vNZz&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;9ag0&quot;&gt;1.     Исключение метаданных только ухудшит качество.&lt;/p&gt;
  &lt;p id=&quot;yL9U&quot;&gt;2.     Случайные подвыборки пользователей не связаны с персонализацией.&lt;/p&gt;
  &lt;p id=&quot;5IO5&quot;&gt;3.     Один метод без дополнительных признаков — наоборот, меньше информации.&lt;/p&gt;
  &lt;p id=&quot;e7DD&quot;&gt;4.     Учет только новых объектов — это узко.&lt;/p&gt;
  &lt;p id=&quot;hHVs&quot;&gt;5.     &lt;strong&gt;Совмещение коллаборативной и контентной фильтрации — классический способ построить гибридную систему для улучшения персонализации.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;lE95&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;BhFo&quot;&gt;Совмещение коллаборативной и контентной фильтрации&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;b9ke&quot;&gt;&lt;strong&gt;Вопрос 11. &lt;/strong&gt;Каким является основное преимущество решетчатого поиска (Grid Search) при оптимизации гиперпараметров?&lt;/h2&gt;
  &lt;p id=&quot;4t1U&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;O1W1&quot;&gt;1.     Возможность гибкого поиска без строгой сетки&lt;/p&gt;
  &lt;p id=&quot;2WyP&quot;&gt;2.     Быстрая обработка больших пространств параметров&lt;/p&gt;
  &lt;p id=&quot;eDfB&quot;&gt;3.     Полное исследование всех возможных комбинаций гиперпараметров&lt;/p&gt;
  &lt;p id=&quot;gzWb&quot;&gt;4.     Низкая вычислительная сложность&lt;/p&gt;
  &lt;p id=&quot;0Tkx&quot;&gt;5.     Эффективность при большом количестве гиперпараметров&lt;/p&gt;
  &lt;p id=&quot;Xe8L&quot;&gt;Grid Search — это такой «тупой, но надёжный» способ подбора гиперпараметров.&lt;br /&gt; Он просто:&lt;/p&gt;
  &lt;ul id=&quot;Y8c1&quot;&gt;
    &lt;li id=&quot;Cx89&quot;&gt; строит &lt;strong&gt;сетку всех возможных комбинаций значений гиперпараметров&lt;/strong&gt;, которые мы указали,&lt;/li&gt;
    &lt;li id=&quot;aUnk&quot;&gt;и перебирает их все, обучая модель на каждом варианте.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;7jkj&quot;&gt;Его основное преимущество в том, что мы &lt;strong&gt;гарантированно проверим все эти комбинации&lt;/strong&gt;, и точно найдем лучшую среди них для заданной сетки.&lt;/p&gt;
  &lt;p id=&quot;NROa&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;odZr&quot;&gt;1.     Нет гибкости без строгой сетки — наоборот, Grid Search работает строго по сетке.&lt;/p&gt;
  &lt;p id=&quot;B5vD&quot;&gt;2.     Он &lt;strong&gt;не быстрый&lt;/strong&gt;, особенно при большом числе параметров (комбинаторный взрыв).&lt;/p&gt;
  &lt;p id=&quot;UU1W&quot;&gt;3.     &lt;strong&gt;Зато он гарантирует полное исследование всех возможных комбинаций&lt;/strong&gt;, заданных в сетке.&lt;/p&gt;
  &lt;p id=&quot;52IH&quot;&gt;4.     Низкой вычислительной сложности нет, наоборот — это главный его минус.&lt;/p&gt;
  &lt;p id=&quot;zIQC&quot;&gt;5.     И при большом числе параметров становится очень неэффективен.&lt;/p&gt;
  &lt;p id=&quot;a9ZO&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;oOgG&quot;&gt;Полное исследование всех возможных комбинаций гиперпараметров&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;vzag&quot;&gt;&lt;strong&gt;Вопрос 12. &lt;/strong&gt;Вы хотите восстановить производную функции по экспериментальным данным, содержащим шум. С помощью какого решения вы сможете это сделать?&lt;/h2&gt;
  &lt;p id=&quot;7vvx&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;7irv&quot;&gt;1.     Использование метода главных компонент (РСA) для уменьшения шума перед вычислением производной&lt;/p&gt;
  &lt;p id=&quot;Bjvz&quot;&gt;2.     Кластеризация данных методом k-средних перед вычислением производной&lt;/p&gt;
  &lt;p id=&quot;NDr7&quot;&gt;3.     Сглаживание данных сплайнами или ядерными методами с последующим численным дифференцированием&lt;/p&gt;
  &lt;p id=&quot;UURe&quot;&gt;4.     Наивное численное дифференцирование (например, метод конечных разностей) без предварительной обработки&lt;/p&gt;
  &lt;p id=&quot;5AAe&quot;&gt;5.     Линейная регрессия на исходные данные с взятием производной от уравнения регрессии&lt;/p&gt;
  &lt;p id=&quot;ff17&quot;&gt;Когда в данных есть шум, а нам нужно найти производную, то прямое численное дифференцирование (например, методом конечных разностей) &lt;strong&gt;очень плохо работает&lt;/strong&gt;. Почему?&lt;br /&gt; Потому что даже малый шум в данных сильно усиливается при вычислении производной. В итоге получим не гладкую кривую, а рваную и скачущую.&lt;/p&gt;
  &lt;p id=&quot;PPaj&quot;&gt;Лучшее, что можно сделать, — сначала &lt;strong&gt;сгладить данные&lt;/strong&gt;, убрав шум, а потом уже взять производную.&lt;br /&gt; Это делается с помощью:&lt;/p&gt;
  &lt;p id=&quot;ytl1&quot;&gt;Ø сглаживания сплайнами (подгоняем плавную кривую),&lt;/p&gt;
  &lt;p id=&quot;Irfz&quot;&gt;Ø или ядровыми методами (например, сглаживающее окно),&lt;br /&gt; после чего вычисляем производную от полученной сглаженной кривой.&lt;/p&gt;
  &lt;p id=&quot;ax3v&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;C0Ll&quot;&gt;1.     Использование PCA перед вычислением производной в первую очередь применяется для уменьшения размерности, но не решает задачу сглаживания в одном временном ряду.&lt;/p&gt;
  &lt;p id=&quot;QBLn&quot;&gt;2.     Кластеризация k-средних не имеет отношения к сглаживанию и нахождению производных.&lt;/p&gt;
  &lt;p id=&quot;3paw&quot;&gt;3.     &lt;strong&gt;Сглаживание данными сплайнами или ядровыми методами — это как раз классическое решение&lt;/strong&gt;, чтобы аккуратно убрать шум и потом безопасно найти производную.&lt;/p&gt;
  &lt;p id=&quot;s20h&quot;&gt;4.     Наивное численное дифференцирование без предварительной обработки только усилит шум.&lt;/p&gt;
  &lt;p id=&quot;oUKt&quot;&gt;5.     Линейная регрессия и нахождение производной от уравнения регрессии подходит для общей трендовой зависимости, но в явном виде это не лучший выбор для шума и локальной производной.&lt;/p&gt;
  &lt;p id=&quot;6Jxm&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; Сглаживание данных сплайнами или ядровыми методами с последующим численным дифференцированием.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;EnZP&quot;&gt;&lt;strong&gt;Вопрос 13. &lt;/strong&gt;Какая часть ошибки в bias-variance decomposition считается неизбежной и не может быть устранена улучшением модели?&lt;/h2&gt;
  &lt;p id=&quot;mNf3&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Cstk&quot;&gt;1.     Ошибка из-за шума в данных (Noise Error)&lt;/p&gt;
  &lt;p id=&quot;tiWS&quot;&gt;2.     Ошибка из-за разброса (Variance Error)&lt;/p&gt;
  &lt;p id=&quot;54GA&quot;&gt;3.     Ошибка в выборе метрики модели&lt;/p&gt;
  &lt;p id=&quot;BdHZ&quot;&gt;4.     Ошибка из-за смещения (Bias Error)&lt;/p&gt;
  &lt;p id=&quot;VBEl&quot;&gt;5.     Сумма смещения и разброса&lt;/p&gt;
  &lt;p id=&quot;DR9L&quot;&gt;Когда мы разлагаем ошибку модели на составляющие (bias-variance decomposition), она обычно представляется так:&lt;/p&gt;
  &lt;ul id=&quot;9MZp&quot;&gt;
    &lt;li id=&quot;nMGN&quot;&gt;&lt;strong&gt;Ошибка из-за смещения (Bias Error)&lt;/strong&gt; — ошибка, связанная с тем, что модель слишком простая и не способна уловить закономерность (например, линейная модель пытается аппроксимировать синус). Ее можно уменьшить, сделав модель более гибкой.&lt;/li&gt;
    &lt;li id=&quot;CErA&quot;&gt;&lt;strong&gt;Ошибка из-за разброса (Variance Error)&lt;/strong&gt; — ошибка, которая возникает из-за того, что модель слишком сильно реагирует на конкретные данные (переобучается). Ее можно уменьшить за счет регуляризации, больше данных или уменьшения сложности.&lt;/li&gt;
    &lt;li id=&quot;aqp3&quot;&gt;&lt;strong&gt;Ошибка из-за шума в данных (Noise Error, Irreducible Error)&lt;/strong&gt; — это часть ошибки, которая связана с &lt;strong&gt;естественной случайностью или ошибками измерений в данных&lt;/strong&gt;, и &lt;strong&gt;она неизбежна&lt;/strong&gt;. Сколько бы мы ни улучшали модель, убрать этот шум невозможно, если он реально есть в природе.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;8GKI&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;JLDB&quot;&gt;1.     Ошибка из-за смещения и ошибка из-за разброса — могут быть уменьшены путем изменения модели.&lt;/p&gt;
  &lt;p id=&quot;EPbB&quot;&gt;2.     Сумма смещения и разброса тоже может изменяться.&lt;/p&gt;
  &lt;p id=&quot;kRM4&quot;&gt;3.     Ошибка в выборе метрики — не часть bias-variance decomposition.&lt;/p&gt;
  &lt;p id=&quot;sO79&quot;&gt;4.     &lt;strong&gt;А вот ошибка из-за шума в данных (Noise Error) — это та самая неизбежная часть&lt;/strong&gt;, которую улучшением модели не устранить.&lt;/p&gt;
  &lt;p id=&quot;YTQg&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; Ошибка из-за шума в данных (Noise Error).&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;NaeO&quot;&gt;&lt;strong&gt;Вопрос 14. &lt;/strong&gt;Вы обучаете модель классификации и хотите выполнить отбор признаков для повышения её обобщающей способности. Какой из предложенных подходов соответствует отбору признаков с использованием модели?&lt;/h2&gt;
  &lt;p id=&quot;rAzk&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3SkA&quot;&gt;1.     Использовать веса коэффициентов линейной модели для оценки важности признаков&lt;/p&gt;
  &lt;p id=&quot;cJBA&quot;&gt;2.     Применить метод главных компонент (РСА) для снижения размерности&lt;/p&gt;
  &lt;p id=&quot;5Yaa&quot;&gt;3.     Удалить признаки с низкой дисперсией&lt;/p&gt;
  &lt;p id=&quot;pCzj&quot;&gt;4.     Исключить признаки, имеющие пропущенные значения&lt;/p&gt;
  &lt;p id=&quot;dtfh&quot;&gt;5.     Стандартизировать все числовые признаки перед обучением&lt;/p&gt;
  &lt;p id=&quot;hLgg&quot;&gt;Есть разные способы отбора признаков:&lt;/p&gt;
  &lt;ul id=&quot;N7Fx&quot;&gt;
    &lt;li id=&quot;zIbT&quot;&gt;&lt;strong&gt;Фильтрационные методы (filter)&lt;/strong&gt; — без использования модели. Например, удаление признаков с низкой дисперсией, удаление признаков с большим количеством пропусков или высокими корреляциями между собой.&lt;/li&gt;
    &lt;li id=&quot;gigI&quot;&gt;&lt;strong&gt;Методы снижения размерности (PCA)&lt;/strong&gt; — тоже не используют модель для отбора признаков, они преобразуют признаки в новые оси.&lt;/li&gt;
    &lt;li id=&quot;nVSg&quot;&gt;&lt;strong&gt;Отбор признаков с использованием модели (embedded или wrapper)&lt;/strong&gt; — когда мы строим модель и по её результатам решаем, какие признаки оставить. Например, смотрим на веса коэффициентов в линейной регрессии или важности признаков в деревьях.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ntWk&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;xHkQ&quot;&gt;1.     Использовать веса коэффициентов линейной модели для оценки важности признаков — &lt;strong&gt;это и есть отбор с использованием модели&lt;/strong&gt; (embedded).&lt;/p&gt;
  &lt;p id=&quot;STCT&quot;&gt;2.     PCA не относится к отбору на основе модели — это метод преобразования.&lt;/p&gt;
  &lt;p id=&quot;NZSA&quot;&gt;3.     Удаление признаков с низкой дисперсией — статистический подход (filter), без обучения модели.&lt;/p&gt;
  &lt;p id=&quot;jj4c&quot;&gt;4.     Исключение признаков с пропущенными значениями — просто предобработка.&lt;/p&gt;
  &lt;p id=&quot;iwW8&quot;&gt;5.     Стандартизация — подготовка признаков, но не их отбор.&lt;/p&gt;
  &lt;p id=&quot;AuWx&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; Использовать веса коэффициентов линейной модели для оценки важности признаков.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;JD1q&quot;&gt;&lt;strong&gt;Вопрос 15. &lt;/strong&gt;Для данных анализов пациентов требуется оценить уверенность прогноза заболевания. Какой метод лучше подходит для этой задачи?&lt;/h2&gt;
  &lt;p id=&quot;K4Tz&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;KGn7&quot;&gt;1.     Логистическая регрессия с L2&lt;/p&gt;
  &lt;p id=&quot;tJJC&quot;&gt;2.     Ensemble из градиентного бустинга и логистической регрессии&lt;/p&gt;
  &lt;p id=&quot;MRDD&quot;&gt;3.     Дерево решений&lt;/p&gt;
  &lt;p id=&quot;JtKK&quot;&gt;4.     Bayesian Neural Network&lt;/p&gt;
  &lt;p id=&quot;D0Qw&quot;&gt;5.     K-Nearest Neighbors&lt;/p&gt;
  &lt;p id=&quot;A3fh&quot;&gt;В этом вопросе важно не просто предсказать класс (болен / не болен), а именно &lt;strong&gt;оценить уверенность прогноза&lt;/strong&gt;, то есть получить &lt;strong&gt;прогноз вместе с вероятностью&lt;/strong&gt; и понять, насколько модель «сомневается».&lt;/p&gt;
  &lt;ul id=&quot;mbJs&quot;&gt;
    &lt;li id=&quot;XnnH&quot;&gt;Логистическая регрессия сразу даёт вероятности принадлежности к классам, но её вероятности часто бывают плохо откалиброваны.&lt;/li&gt;
    &lt;li id=&quot;TeiA&quot;&gt;Ensemble из бустинга и логистической регрессии чаще оптимизирован на точность классификации, но для интерпретации вероятностей не лучший.&lt;/li&gt;
    &lt;li id=&quot;884V&quot;&gt;Деревья решений дают прогнозы классов, но вероятность у них не очень надёжна.&lt;/li&gt;
    &lt;li id=&quot;Aj2Q&quot;&gt;&lt;strong&gt;Bayesian Neural Network (байесовская нейронная сеть)&lt;/strong&gt; специально строится для того, чтобы моделировать &lt;strong&gt;распределение вероятностей&lt;/strong&gt; предсказания, учитывая априорные и апостериорные распределения параметров. Это позволяет не просто сказать: «вероятность болезни 0.7», но и оценить &lt;strong&gt;неопределённость&lt;/strong&gt; этой вероятности.&lt;/li&gt;
    &lt;li id=&quot;widy&quot;&gt;K-NN даёт долю ближайших соседей данного класса, что не даёт строгой вероятности и не учитывает априорную неопределённость.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;VkEr&quot;&gt;Для медицинских прогнозов, где важна именно &lt;strong&gt;оценка уверенности&lt;/strong&gt;, Байесовские методы считаются наиболее подходящими.&lt;/p&gt;
  &lt;p id=&quot;HpMS&quot;&gt;&lt;strong&gt;Выбранныйответ:&lt;/strong&gt;&lt;br /&gt; Bayesian Neural Network.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;figure id=&quot;V1Uu&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ab/50/ab507a54-f729-4d5e-a0b7-af0a7785ea60.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;h1 id=&quot;R8gI&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;SEv3&quot;&gt;После разбора теста продвинутого уровня вам станет легче понимать, почему важна калибровка вероятностей, чем хороши байесовские нейронные сети для оценки уверенности, как устроена оптимизация Grid Search и что делать с разбросом в данных.&lt;br /&gt; Это даёт вам возможность выходить на проекты, где важно не просто «получить модель», а строить обоснованные прогнозы, управлять рисками и давать бизнесу понятные ответы. А значит — открывает путь к высоким позициям и интересным задачам в сфере AI и ML.&lt;/p&gt;

</content></entry><entry><id>ildm:awkyCZmhZ09</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/awkyCZmhZ09?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>Машинное обучение для практиков модели, метрики, ансамбли и рекомендации</title><published>2025-08-16T19:16:39.419Z</published><updated>2025-08-16T19:16:39.419Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/eb/c6/ebc6d9e0-b375-47ad-93d4-d89214e77972.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/2f/a2/2fa2feb9-f4b3-48aa-8951-cacca0b66bcb.png&quot;&gt;Машинное обучение — это не магия и не «чёрный ящик», а строгая математика, которая помогает находить паттерны там, где человек быстро запутается. На среднем уровне знаний появляются вопросы про переобучение, регуляризацию, выбор метрик и работу с несбалансированными классами.</summary><content type="html">
  &lt;figure id=&quot;5oki&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2f/a2/2fa2feb9-f4b3-48aa-8951-cacca0b66bcb.png&quot; width=&quot;862&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;XaSU&quot;&gt;Машинное обучение — это не магия и не «чёрный ящик», а строгая математика, которая помогает находить паттерны там, где человек быстро запутается. На среднем уровне знаний появляются вопросы про переобучение, регуляризацию, выбор метрик и работу с несбалансированными классами.&lt;/p&gt;
  &lt;p id=&quot;X2Ch&quot;&gt;В этой статье мы детально разберём тест второго уровня, объясним, почему деревья решений склонны к переобучению, как влияет bias-variance tradeoff и что делать с шумными данными.&lt;/p&gt;
  &lt;p id=&quot;h2OI&quot;&gt;Эти знания пригодятся аналитикам, дата-специалистам и разработчикам, которые хотят перейти от простых дашбордов к автоматическому прогнозированию или построению рекомендательных систем.&lt;/p&gt;
  &lt;h3 id=&quot;A1eE&quot; data-align=&quot;center&quot;&gt;Вся навигация по материалам в Telegram 👇🏻&lt;/h3&gt;
  &lt;figure id=&quot;gntJ&quot;&gt;
    &lt;iframe src=&quot;https://t.me/ildmy/77?embed=1&amp;userpic=1&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;BeEU&quot;&gt;&lt;strong&gt;Вопрос 1. &lt;/strong&gt;Какое утверждение верно для обучения с учителем (supervised learning), но неверно для обучения без учителя (unsupervised learning)?&lt;/h2&gt;
  &lt;p id=&quot;PtjT&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;QBH5&quot;&gt;1.     Может применяться только для задач классификации&lt;/p&gt;
  &lt;p id=&quot;GeMK&quot;&gt;2.     Не требует разделения данных на обучающую и тестовую выборки&lt;/p&gt;
  &lt;p id=&quot;v8je&quot;&gt;3.     Используется для поиска скрытых закономерностей в данных&lt;/p&gt;
  &lt;p id=&quot;oR41&quot;&gt;4.     Требует одинакового количества примеров для каждого класса&lt;/p&gt;
  &lt;p id=&quot;OyX8&quot;&gt;5.     Модель обучается на размеченных данных, где каждому примеру соответствует целевая переменная&lt;/p&gt;
  &lt;p id=&quot;ZknW&quot;&gt;Обучение с учителем — это когда у нас есть примеры &lt;strong&gt;и мы знаем правильный ответ&lt;/strong&gt; (например: фото собаки и подпись «собака»). Модель учится по этим парам «пример — ответ».&lt;/p&gt;
  &lt;p id=&quot;sJ0V&quot;&gt;Обучение без учителя — это когда мы просто даём кучу примеров &lt;strong&gt;без ответов&lt;/strong&gt; и модель сама ищет закономерности.&lt;/p&gt;
  &lt;p id=&quot;4tEj&quot;&gt;Разберём варианты:&lt;/p&gt;
  &lt;p id=&quot;hZW3&quot;&gt;1.     &lt;strong&gt;Может применяться только для задач классификации&lt;/strong&gt; — неверно, т.к. supervised learning используют также для регрессии (предсказывать числа).&lt;/p&gt;
  &lt;p id=&quot;UAH0&quot;&gt;2.     &lt;strong&gt;Не требует разделения на train/test&lt;/strong&gt; — неверно, supervised обычно требует разделения на обучающую и тестовую выборку для проверки.&lt;/p&gt;
  &lt;p id=&quot;osv2&quot;&gt;3.     &lt;strong&gt;Используется для поиска скрытых закономерностей&lt;/strong&gt; — это как раз цель unsupervised learning, а не supervised.&lt;/p&gt;
  &lt;p id=&quot;7Zwc&quot;&gt;4.     &lt;strong&gt;Требует одинакового числа примеров для каждого класса&lt;/strong&gt; — это вообще не требование supervised learning, можно учить и на несбалансированных выборках (будут другие подходы для борьбы с этим, но не требование).&lt;/p&gt;
  &lt;p id=&quot;wZTb&quot;&gt;5.     &lt;strong&gt;Модель обучается на размеченных данных, где каждому примеру соответствует целевая переменная&lt;/strong&gt; — да, это и есть ключевое различие supervised vs unsupervised. В unsupervised таких целевых переменных нет.&lt;/p&gt;
  &lt;p id=&quot;UObN&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;eHKJ&quot;&gt;Модель обучается на размеченных данных, где каждому примеру соответствует целевая переменная&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;UH5d&quot;&gt;&lt;strong&gt;Вопрос 2. &lt;/strong&gt;Что измеряет метрика Recall (полнота) в задаче бинарной классификации?&lt;/h2&gt;
  &lt;p id=&quot;ajV3&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;JqZp&quot;&gt;1.     Среднюю ошибку модели на тестовой выборке&lt;/p&gt;
  &lt;p id=&quot;Krmd&quot;&gt;2.     Долю истинно положительных предсказаний среди всех объектов, предсказанных как положительные&lt;/p&gt;
  &lt;p id=&quot;8hNX&quot;&gt;3.     Количество ошибок модели на тренировочных данных&lt;/p&gt;
  &lt;p id=&quot;IFy1&quot;&gt;4.     Соотношение ложных срабатываний к общему количеству прогнозов&lt;/p&gt;
  &lt;p id=&quot;lUXq&quot;&gt;5.     Долю истинно положительных предсказаний среди всех фактически положительных объектов&lt;/p&gt;
  &lt;p id=&quot;WyHC&quot;&gt;Представь, что у тебя есть задачи «находить больных» среди всех пациентов.&lt;/p&gt;
  &lt;ul id=&quot;1aJX&quot;&gt;
    &lt;li id=&quot;d7vx&quot;&gt;&lt;strong&gt;Recall (полнота)&lt;/strong&gt; отвечает на вопрос:&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;2gOm&quot;&gt;«Из всех реально больных (положительных случаев) скольких мы нашли?»&lt;/p&gt;
  &lt;p id=&quot;waWw&quot;&gt;Формула:&lt;/p&gt;
  &lt;p id=&quot;5xok&quot;&gt;Recall = TP / (TP+FN​)&lt;/p&gt;
  &lt;p id=&quot;Oo3z&quot;&gt;где:&lt;/p&gt;
  &lt;ul id=&quot;twsz&quot;&gt;
    &lt;li id=&quot;NSiC&quot;&gt;TP — истинно положительные (мы сказали «болен» и он действительно болен),&lt;/li&gt;
    &lt;li id=&quot;hxt3&quot;&gt;FN — пропущенные больные (мы сказали «здоров», а он болен).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;yF1v&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;TCoJ&quot;&gt;·        Средняя ошибка — это скорее MSE / RMSE для регрессии, не для Recall.&lt;/p&gt;
  &lt;p id=&quot;z5Cg&quot;&gt;·        Доля TP среди всех &lt;strong&gt;предсказанных положительных&lt;/strong&gt; — это &lt;strong&gt;Precision&lt;/strong&gt;, а не Recall.&lt;/p&gt;
  &lt;p id=&quot;PELX&quot;&gt;·        Количество ошибок на тренировочных данных — это просто ошибка, не Recall.&lt;/p&gt;
  &lt;p id=&quot;5YcU&quot;&gt;·        Соотношение ложных срабатываний — тоже не Recall.&lt;/p&gt;
  &lt;p id=&quot;JO4e&quot;&gt;·        &lt;strong&gt;Доля истинно положительных предсказаний среди всех фактически положительных объектов&lt;/strong&gt; — идеально описывает Recall.&lt;/p&gt;
  &lt;p id=&quot;AwJS&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Долю истинно положительных предсказаний среди всех фактически положительных объектов&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Nloh&quot;&gt;&lt;strong&gt;Вопрос 3. &lt;/strong&gt;Какой из признаков обязательно должен быть исключён или преобразован перед использованием в линейной регрессии?&lt;/h2&gt;
  &lt;p id=&quot;1q4J&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;yCpS&quot;&gt;1.     Отсутствующие значения, заменённые медианой&lt;/p&gt;
  &lt;p id=&quot;EkCw&quot;&gt;2.     Числовой признак, нормализованный от 0 до 1&lt;/p&gt;
  &lt;p id=&quot;jKyc&quot;&gt;3.     Положительная корреляция между двумя признаками&lt;/p&gt;
  &lt;p id=&quot;1Sqi&quot;&gt;4.     Категориальный признак с несколькими уникальными значениями&lt;/p&gt;
  &lt;p id=&quot;hAvb&quot;&gt;5.     Нормальное распределение целевой переменной&lt;/p&gt;
  &lt;p id=&quot;y1M3&quot;&gt;Представим, что ты строишь модель, чтобы предсказывать цену квартиры.&lt;/p&gt;
  &lt;ul id=&quot;qA9y&quot;&gt;
    &lt;li id=&quot;lfKq&quot;&gt;Линейная регрессия понимает &lt;strong&gt;только числа&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;FZdi&quot;&gt;Если у тебя есть &lt;strong&gt;категориальный признак&lt;/strong&gt;, например «Город» = {Москва, СПб, Казань}, то регрессия просто не сможет с этим работать, пока ты не превратишь это в числа (например, через one-hot encoding).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;pbBw&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;xGWD&quot;&gt;·        Отсутствующие значения, уже заменённые медианой — их уже обработали, линейная регрессия это «ест».&lt;/p&gt;
  &lt;p id=&quot;oIDB&quot;&gt;·        Числовой признак, нормализованный — отлично подходит для регрессии.&lt;/p&gt;
  &lt;p id=&quot;kwzE&quot;&gt;·        Положительная корреляция — это просто зависимость, не мешает напрямую.&lt;/p&gt;
  &lt;p id=&quot;cPyj&quot;&gt;·        &lt;strong&gt;Категориальный признак с несколькими уникальными значениями&lt;/strong&gt; — вот его &lt;strong&gt;обязательно надо кодировать&lt;/strong&gt; (one-hot или label encoding). Если оставить в виде строк, регрессия не сможет их обработать.&lt;/p&gt;
  &lt;p id=&quot;PhZ0&quot;&gt;·        Нормальное распределение целевой переменной не требуется для самой регрессии (требуется нормальность ошибок для доверительных интервалов).&lt;/p&gt;
  &lt;p id=&quot;SpYo&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Категориальный признак с несколькими уникальными значениями&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;bZza&quot;&gt;&lt;strong&gt;Вопрос 4. &lt;/strong&gt;Когда логистическая регрессия применима?&lt;/h2&gt;
  &lt;p id=&quot;M4RG&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;KEK9&quot;&gt;1.     Для кластеризации пользователей по их поведению&lt;/p&gt;
  &lt;p id=&quot;RtlT&quot;&gt;2.     Для восстановления пропущенных пикселей в изображении&lt;/p&gt;
  &lt;p id=&quot;xaN0&quot;&gt;3.     Для прогнозирования стоимости акций через 1 год&lt;/p&gt;
  &lt;p id=&quot;yIrc&quot;&gt;4.     Для предсказания возраста человека по его фотографии&lt;/p&gt;
  &lt;p id=&quot;hm6s&quot;&gt;5.     Для предсказания вероятности дефолта клиента банка&lt;/p&gt;
  &lt;p id=&quot;VSpJ&quot;&gt;Логистическая регрессия — это метод для &lt;strong&gt;предсказания вероятности события&lt;/strong&gt;, которое имеет &lt;strong&gt;два возможных исхода&lt;/strong&gt; (например, «да/нет», «будет дефолт / не будет», «клиент уйдёт / не уйдёт»).&lt;/p&gt;
  &lt;p id=&quot;cOvs&quot;&gt;По вариантам:&lt;/p&gt;
  &lt;p id=&quot;FVZc&quot;&gt;·        &lt;strong&gt;Кластеризация&lt;/strong&gt; — это вообще задача без учителя, логистическая регрессия тут не подходит.&lt;/p&gt;
  &lt;p id=&quot;CsL1&quot;&gt;·        &lt;strong&gt;Восстановление пикселей&lt;/strong&gt; — это задача регрессии или генерации, но не бинарной классификации.&lt;/p&gt;
  &lt;p id=&quot;Ilbh&quot;&gt;·        &lt;strong&gt;Прогноз стоимости акций через год&lt;/strong&gt; — задача регрессии, нужен непрерывный результат.&lt;/p&gt;
  &lt;p id=&quot;0qxy&quot;&gt;·        &lt;strong&gt;Предсказание возраста&lt;/strong&gt; — это тоже регрессия (число лет).&lt;/p&gt;
  &lt;p id=&quot;DCaX&quot;&gt;·        &lt;strong&gt;Предсказание вероятности дефолта&lt;/strong&gt; — это типичная задача для логистической регрессии: «будет дефолт / не будет», плюс модель сразу даёт вероятность.&lt;/p&gt;
  &lt;p id=&quot;SKPM&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Для предсказания вероятности дефолта клиента банка&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;TexO&quot;&gt;&lt;strong&gt;Вопрос 5. &lt;/strong&gt;Вы обучили модель Линейного дискриминантного анализа (LDA) для задачи классификации четырех категорий клиентов. Какое максимальное количество линейно-независимых компонентов (новых признаков) может получить модель после преобразования?&lt;/h2&gt;
  &lt;p id=&quot;r6cC&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;5lgT&quot;&gt;1.     Столько же, сколько исходных признаков&lt;/p&gt;
  &lt;p id=&quot;YWCO&quot;&gt;2.     Четыре компоненты (по числу классов)&lt;/p&gt;
  &lt;p id=&quot;ZlJ1&quot;&gt;3.     Три компоненты (число классов минус один)&lt;/p&gt;
  &lt;p id=&quot;ajf6&quot;&gt;4.     Компоненты не используются в LDA&lt;/p&gt;
  &lt;p id=&quot;mIWp&quot;&gt;5.     Одна компонента&lt;/p&gt;
  &lt;p id=&quot;XJM6&quot;&gt;ЛДА (LDA) — это метод уменьшения размерности, который пытается &lt;strong&gt;максимально отделить классы&lt;/strong&gt;.&lt;br /&gt; Есть важное правило для LDA:&lt;/p&gt;
  &lt;ul id=&quot;NRjB&quot;&gt;
    &lt;li id=&quot;jm9i&quot;&gt;&lt;strong&gt;Максимальное число новых признаков (компонент)&lt;/strong&gt;, которое можно получить после преобразования = &lt;strong&gt;(число классов - 1)&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jkzn&quot;&gt;Это значит:&lt;/p&gt;
  &lt;ul id=&quot;9BqK&quot;&gt;
    &lt;li id=&quot;7zON&quot;&gt;Если есть 4 категории клиентов → максимум можно получить &lt;strong&gt;3 линейно-независимые компоненты&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;gG6Q&quot;&gt;Почему не 4? Потому что при разделении K классов, чтобы их полностью различить в пространстве, достаточно (K-1) направлений.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;HsLz&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Три компоненты (число классов минус один)&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;8CZv&quot;&gt;&lt;strong&gt;Вопрос 6. &lt;/strong&gt;Как называется проблема, при которой дерево решений запоминает все особенности обучающей выборки, включая шум?&lt;/h2&gt;
  &lt;p id=&quot;mfKa&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;zCp4&quot;&gt;1.     Недообучение&lt;/p&gt;
  &lt;p id=&quot;mwYH&quot;&gt;2.     Случайное разбиение&lt;/p&gt;
  &lt;p id=&quot;Mb7g&quot;&gt;3.     Регрессия&lt;/p&gt;
  &lt;p id=&quot;SmA9&quot;&gt;4.     Кластеризация&lt;/p&gt;
  &lt;p id=&quot;cE7V&quot;&gt;5.     Переобучение&lt;/p&gt;
  &lt;p id=&quot;KRkg&quot;&gt;Представь, что дерево решений старается слишком сильно — оно так точно «выучивает» все данные, включая случайные колебания и шум, что на новых данных оно начинает ошибаться.&lt;/p&gt;
  &lt;p id=&quot;YQb0&quot;&gt;Это как если студент заучил билеты дословно, включая ошибки печати, и не может ответить на похожие, но слегка изменённые вопросы.&lt;/p&gt;
  &lt;p id=&quot;Lt1D&quot;&gt;Такое поведение называется &lt;strong&gt;переобучение (overfitting)&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;sP0L&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;TBjA&quot;&gt;·        &lt;strong&gt;Недообучение (underfitting)&lt;/strong&gt; — это когда модель слишком простая и даже на обучающих данных плохо справляется.&lt;/p&gt;
  &lt;p id=&quot;XBjD&quot;&gt;·        &lt;strong&gt;Случайное разбиение&lt;/strong&gt; — это просто процедура разделения данных на train/test, не ошибка модели.&lt;/p&gt;
  &lt;p id=&quot;2RQp&quot;&gt;·        &lt;strong&gt;Регрессия&lt;/strong&gt; и &lt;strong&gt;кластеризация&lt;/strong&gt; — это типы задач, не проблемы модели.&lt;/p&gt;
  &lt;p id=&quot;9qjA&quot;&gt;·        &lt;strong&gt;Переобучение&lt;/strong&gt; — это и есть ситуация, когда дерево запомнило всё, включая шум.&lt;/p&gt;
  &lt;p id=&quot;0cCr&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Переобучение&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;rdeq&quot;&gt;&lt;strong&gt;Вопрос 7. &lt;/strong&gt;Вы планируете использовать наивный байесовский классификатор для классификации отзывов пользователей как положительные или отрицательные. Какое ограничение этого метода следует учитывать при проектировании модели?&lt;/h2&gt;
  &lt;p id=&quot;iOaG&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ozxi&quot;&gt;1.     Он предполагает независимость признаков друг от друга, что редко выполняется на практике&lt;/p&gt;
  &lt;p id=&quot;fbcd&quot;&gt;2.     Он требует предварительного уменьшения размерности&lt;/p&gt;
  &lt;p id=&quot;kJk9&quot;&gt;3.     Он всегда даёт лучшее качество, чем деревья решений&lt;/p&gt;
  &lt;p id=&quot;4I7p&quot;&gt;4.     Он не работает с категориальными признаками&lt;/p&gt;
  &lt;p id=&quot;8f5q&quot;&gt;5.     Он может использовать только числовые признаки&lt;/p&gt;
  &lt;p id=&quot;gmyk&quot;&gt;Наивный байесовский классификатор работает по простой формуле вероятностей, где он считает, что &lt;strong&gt;каждый признак влияет на результат независимо от других признаков&lt;/strong&gt;. Это очень сильное допущение (называется &lt;strong&gt;наивным предположением о независимости&lt;/strong&gt;), которое на практике часто не выполняется, особенно в тексте, где слова связаны между собой.&lt;/p&gt;
  &lt;p id=&quot;eYx1&quot;&gt;По вариантам:&lt;/p&gt;
  &lt;p id=&quot;i7Hm&quot;&gt;·        &lt;strong&gt;Он предполагает независимость признаков друг от друга, что редко выполняется на практике&lt;/strong&gt; — это как раз его ключевое ограничение.&lt;/p&gt;
  &lt;p id=&quot;gdJq&quot;&gt;·        Не требует уменьшения размерности — байес легко работает даже с большим числом признаков (слова в тексте — типичный пример).&lt;/p&gt;
  &lt;p id=&quot;5TlJ&quot;&gt;·        Не всегда даёт лучшее качество, чем деревья решений — наоборот, иногда хуже.&lt;/p&gt;
  &lt;p id=&quot;AvoC&quot;&gt;·        Работает и с категориальными признаками, например в задаче фильтрации спама.&lt;/p&gt;
  &lt;p id=&quot;vxzw&quot;&gt;·        Может использовать категориальные и числовые признаки.&lt;/p&gt;
  &lt;p id=&quot;UZjJ&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;wkat&quot;&gt;Он предполагает независимость признаков друг от друга, что редко выполняется на практике&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;lyr5&quot;&gt;&lt;strong&gt;Вопрос 8. &lt;/strong&gt;Для применения метода k-ближайших соседей на текстовых данных лучшей метрикой расстояния будет:&lt;/h2&gt;
  &lt;p id=&quot;AOkt&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;hFyd&quot;&gt;1.     Евклидово расстояние&lt;/p&gt;
  &lt;p id=&quot;SDZi&quot;&gt;2.     Косинусное расстояние&lt;/p&gt;
  &lt;p id=&quot;kRFU&quot;&gt;3.     Расстояние Махаланобиса&lt;/p&gt;
  &lt;p id=&quot;XKdZ&quot;&gt;4.     Расстояние Хэмминга&lt;/p&gt;
  &lt;p id=&quot;xvoi&quot;&gt;5.     Манхэттенское расстояние&lt;/p&gt;
  &lt;p id=&quot;u7yn&quot;&gt;Когда мы сравниваем тексты, чаще всего представляем их в виде больших векторов (например, частота слов).&lt;/p&gt;
  &lt;ul id=&quot;KKl9&quot;&gt;
    &lt;li id=&quot;N7nx&quot;&gt;&lt;strong&gt;Евклидово&lt;/strong&gt; и &lt;strong&gt;Манхэттенское расстояния&lt;/strong&gt; плохо работают на таких разреженных и высокоразмерных данных (например, векторы словаря могут иметь тысячи нулей).&lt;/li&gt;
    &lt;li id=&quot;dVUG&quot;&gt;&lt;strong&gt;Хэмминг&lt;/strong&gt; используется для бинарных строк одинаковой длины (например, битовые коды), а не для текстов с частотами.&lt;/li&gt;
    &lt;li id=&quot;AXdj&quot;&gt;&lt;strong&gt;Махаланобис&lt;/strong&gt; оценивает расстояние с учетом ковариации признаков, но для текстов и огромных разреженных матриц не применяется.&lt;/li&gt;
    &lt;li id=&quot;PQEg&quot;&gt;&lt;strong&gt;Косинусное расстояние&lt;/strong&gt; (по сути, мера близости углов между векторами) — идеально подходит для текстов, т.к. смотрит не на абсолютную величину, а на то, насколько тексты «направлены» в одну сторону (одни и те же слова встречаются пропорционально).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;tPnG&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Косинусное расстояние&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;nibS&quot;&gt;&lt;strong&gt;Вопрос 9. &lt;/strong&gt;Какова основная идея метода опорных векторов?&lt;/h2&gt;
  &lt;p id=&quot;m3Sv&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;iB7W&quot;&gt;1.     Случайное разбиение выборки&lt;/p&gt;
  &lt;p id=&quot;9DPV&quot;&gt;2.     Построение дерева решений&lt;/p&gt;
  &lt;p id=&quot;v7K4&quot;&gt;3.     Предсказание вероятности события&lt;/p&gt;
  &lt;p id=&quot;uWOm&quot;&gt;4.     Уменьшение размерности данных&lt;/p&gt;
  &lt;p id=&quot;BhnU&quot;&gt;5.     Нахождение гиперплоскости, максимально разделяющей классы&lt;/p&gt;
  &lt;p id=&quot;L1Jc&quot;&gt;Метод опорных векторов (SVM) — это алгоритм, который:&lt;/p&gt;
  &lt;ul id=&quot;yEMu&quot;&gt;
    &lt;li id=&quot;Fwr5&quot;&gt;&lt;strong&gt;ищет линию (или в многомерном пространстве — гиперплоскость)&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;dnuX&quot;&gt;которая &lt;strong&gt;лучше всего разделяет разные классы данных&lt;/strong&gt;,&lt;/li&gt;
    &lt;li id=&quot;nib9&quot;&gt;и делает это так, чтобы расстояние (запас) от ближайших точек до этой линии было &lt;strong&gt;максимальным&lt;/strong&gt; (так модель становится более устойчивой к ошибкам).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;wfF3&quot;&gt;Разберём варианты:&lt;/p&gt;
  &lt;ul id=&quot;kmLY&quot;&gt;
    &lt;li id=&quot;4d85&quot;&gt;Случайное разбиение выборки — это подготовительный этап для обучения/валидации.&lt;/li&gt;
    &lt;li id=&quot;Kamg&quot;&gt;Построение дерева решений — это метод decision tree.&lt;/li&gt;
    &lt;li id=&quot;hAEV&quot;&gt;Предсказание вероятности события — делает логистическая регрессия и другие вероятностные модели.&lt;/li&gt;
    &lt;li id=&quot;ZdB4&quot;&gt;Уменьшение размерности — это PCA или LDA.&lt;/li&gt;
    &lt;li id=&quot;g5Ov&quot;&gt;&lt;strong&gt;Нахождение гиперплоскости, максимально разделяющей классы&lt;/strong&gt; — это и есть суть SVM.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;oLGs&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;RSlb&quot;&gt;Нахождение гиперплоскости, максимально разделяющей классы&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;JcOM&quot;&gt;&lt;strong&gt;Вопрос 10. &lt;/strong&gt;Какой эффект достигается за счёт объединения нескольких деревьев решений в случайный лес?&lt;/h2&gt;
  &lt;p id=&quot;7DhA&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;YK80&quot;&gt;1.     Увеличение переобучения&lt;/p&gt;
  &lt;p id=&quot;aIDC&quot;&gt;2.     Повышение стабильности и точности предсказаний&lt;/p&gt;
  &lt;p id=&quot;dGGR&quot;&gt;3.     Ускорение работы модели&lt;/p&gt;
  &lt;p id=&quot;w8Xk&quot;&gt;4.     Уменьшение количества признаков&lt;/p&gt;
  &lt;p id=&quot;2hsV&quot;&gt;5.     Исключение категориальных переменных&lt;/p&gt;
  &lt;p id=&quot;Tliu&quot;&gt;Случайный лес (Random Forest) — это метод, где строят &lt;strong&gt;много деревьев решений на разных случайных подвыборках данных и признаков&lt;/strong&gt;, а потом усредняют (или берут большинство голосов).&lt;/p&gt;
  &lt;p id=&quot;gSKv&quot;&gt;Зачем?&lt;/p&gt;
  &lt;ul id=&quot;ncws&quot;&gt;
    &lt;li id=&quot;R955&quot;&gt;Одно дерево решений часто &lt;strong&gt;переобучается&lt;/strong&gt; (запоминает данные слишком детально).&lt;/li&gt;
    &lt;li id=&quot;BW4T&quot;&gt;Но если взять много деревьев, каждое «ошибается» по-своему. Когда они голосуют вместе, ошибки взаимно гасятся.&lt;/li&gt;
    &lt;li id=&quot;mQTo&quot;&gt;Это &lt;strong&gt;повышает стабильность и точность предсказаний&lt;/strong&gt;, делает модель менее чувствительной к случайным колебаниям в данных.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;A4wo&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;ul id=&quot;LHUA&quot;&gt;
    &lt;li id=&quot;Pyes&quot;&gt;Увеличение переобучения — наоборот, лес снижает переобучение.&lt;/li&gt;
    &lt;li id=&quot;rtSP&quot;&gt;Повышение стабильности и точности предсказаний — главная цель Random Forest.&lt;/li&gt;
    &lt;li id=&quot;Qxl7&quot;&gt;Ускорение работы — обычно наоборот, медленнее, так как много деревьев.&lt;/li&gt;
    &lt;li id=&quot;d7ZA&quot;&gt;Уменьшение количества признаков — не про лес, хотя он случайно отбирает подмножества признаков.&lt;/li&gt;
    &lt;li id=&quot;vIlY&quot;&gt;Исключение категориальных переменных — не связано напрямую с лесом.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;6Bl4&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;7Sri&quot;&gt;Повышение стабильности и точности предсказаний&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;1fap&quot;&gt;&lt;strong&gt;Вопрос 11. &lt;/strong&gt;Какой тип рекомендательной системы делает предложения на основе предпочтений других пользователей с похожим поведением?&lt;/h2&gt;
  &lt;p id=&quot;r7lR&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;MiWz&quot;&gt;1.     Коллаборативная фильтрация&lt;/p&gt;
  &lt;p id=&quot;eGL2&quot;&gt;2.     Фильтрация по новизне&lt;/p&gt;
  &lt;p id=&quot;8YFd&quot;&gt;3.     Контентная фильтрация&lt;/p&gt;
  &lt;p id=&quot;0fOD&quot;&gt;4.     Гибридная система&lt;/p&gt;
  &lt;p id=&quot;AIHe&quot;&gt;5.     Случайная фильтрация&lt;/p&gt;
  &lt;p id=&quot;BgF7&quot;&gt;Представь, что ты смотришь фильмы на платформе, а она тебе говорит:&lt;/p&gt;
  &lt;p id=&quot;uBwo&quot;&gt;«Пользователи, которые смотрели и полюбили те же фильмы, что и ты, также оценили вот эти фильмы.»&lt;/p&gt;
  &lt;p id=&quot;dEw1&quot;&gt;Это и есть &lt;strong&gt;коллаборативная фильтрация&lt;/strong&gt; — она рекомендует, исходя из &lt;strong&gt;похожести пользователей по их поведению&lt;/strong&gt;, то есть по их оценкам, лайкам, покупкам.&lt;/p&gt;
  &lt;p id=&quot;O8xn&quot;&gt;Разберём остальные варианты:&lt;/p&gt;
  &lt;ul id=&quot;3Lzw&quot;&gt;
    &lt;li id=&quot;Bkex&quot;&gt;&lt;strong&gt;Контентная фильтрация&lt;/strong&gt; — делает предложения на основе характеристик самих объектов («ты любишь драмы — вот ещё драма»), не учитывая других пользователей.&lt;/li&gt;
    &lt;li id=&quot;3yP1&quot;&gt;&lt;strong&gt;Фильтрация по новизне&lt;/strong&gt; — просто показывает новые товары.&lt;/li&gt;
    &lt;li id=&quot;u2ad&quot;&gt;&lt;strong&gt;Гибридная система&lt;/strong&gt; — это сочетание коллаборативной и контентной, но здесь вопрос прямо про «основе предпочтений других пользователей».&lt;/li&gt;
    &lt;li id=&quot;kmfR&quot;&gt;&lt;strong&gt;Случайная фильтрация&lt;/strong&gt; — такого подхода в ML нет.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;LNjY&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Коллаборативная фильтрация&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Asfy&quot;&gt;&lt;strong&gt;Вопрос 12. &lt;/strong&gt;Какой метод оптимизации гиперпараметров позволяет последовательно выбирать новые параметры, основываясь на результатах предыдущих итераций и вероятностной модели качества?&lt;/h2&gt;
  &lt;p id=&quot;Ugn8&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Dkrr&quot;&gt;1.     Градиентный спуск&lt;/p&gt;
  &lt;p id=&quot;1u1X&quot;&gt;2.     Случайный поиск (Random Search)&lt;/p&gt;
  &lt;p id=&quot;Ht27&quot;&gt;3.     Байесовская оптимизация (Bayesian Optimization)&lt;/p&gt;
  &lt;p id=&quot;Kqjq&quot;&gt;4.     Генетический алгоритм&lt;/p&gt;
  &lt;p id=&quot;9QKz&quot;&gt;5.     Решетчатый поиск (Grid Search)&lt;/p&gt;
  &lt;ul id=&quot;vwcE&quot;&gt;
    &lt;li id=&quot;bEKw&quot;&gt;&lt;strong&gt;Grid Search&lt;/strong&gt; и &lt;strong&gt;Random Search&lt;/strong&gt; просто перебирают значения (решётка или случайно), они &lt;strong&gt;не используют результаты прошлых запусков для выбора следующих точек&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;9YJM&quot;&gt;&lt;strong&gt;Градиентный спуск&lt;/strong&gt; используется для обучения самих моделей (настройки весов), но не для поиска гиперпараметров, и точно не строит вероятностные модели.&lt;/li&gt;
    &lt;li id=&quot;0PxS&quot;&gt;&lt;strong&gt;Генетические алгоритмы&lt;/strong&gt; эволюционно отбирают комбинации, но не на основе строгой вероятностной модели ошибки.&lt;/li&gt;
    &lt;li id=&quot;jczI&quot;&gt;&lt;strong&gt;Байесовская оптимизация&lt;/strong&gt; именно для этого и создана:&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zKpE&quot;&gt;она строит &lt;strong&gt;вероятностную модель функции ошибки&lt;/strong&gt;,&lt;/p&gt;
  &lt;p id=&quot;Ebpj&quot;&gt;на её основе выбирает &lt;strong&gt;следующую точку для теста&lt;/strong&gt;,&lt;/p&gt;
  &lt;p id=&quot;oPZF&quot;&gt;постепенно улучшает предсказания о том, где могут быть лучшие гиперпараметры.&lt;/p&gt;
  &lt;p id=&quot;HWIq&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;xZQQ&quot;&gt;Байесовская оптимизация (Bayesian Optimization)&lt;/p&gt;
  &lt;figure id=&quot;pwnC&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/aa/65/aa6523ef-de07-49a7-a82f-141682b0396d.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;h1 id=&quot;srUA&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;x91j&quot;&gt;Вы разобрали задачи среднего уровня сложности и поняли, как вести себя с реальными данными: сглаживать шум, избегать переобучения, правильно подбирать функции потерь и понимать важность разброса и смещения. Теперь вы уже не просто «знаете про машинное обучение», а умеете задавать правильные вопросы к данным и результатам моделей. Это критический навык для того, чтобы расти до позиции дата-сайентиста или тимлида аналитиков и принимать решения, которые влияют на бизнес.&lt;/p&gt;

</content></entry><entry><id>ildm:Y4uW-V5uOZV</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/Y4uW-V5uOZV?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>Основы машинного обучения и метрики оценки моделей</title><published>2025-08-16T19:15:24.996Z</published><updated>2025-08-16T19:15:44.790Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/f4/d8/f4d8b0f2-0896-45b2-947e-be6705c5d3e2.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/22/c7/22c7e636-d538-4447-827b-43b194a4ca8c.png&quot;&gt;Представьте, что компьютер учится распознавать, кто на фото — кот или собака, или предсказывает, пойдет ли завтра дождь. Это и есть машинное обучение: программа ищет закономерности в данных, чтобы потом делать выводы на новых примерах.</summary><content type="html">
  &lt;figure id=&quot;A4cM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/22/c7/22c7e636-d538-4447-827b-43b194a4ca8c.png&quot; width=&quot;985&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ELSL&quot;&gt;Представьте, что компьютер учится распознавать, кто на фото — кот или собака, или предсказывает, пойдет ли завтра дождь. Это и есть машинное обучение: программа ищет закономерности в данных, чтобы потом делать выводы на новых примерах.&lt;/p&gt;
  &lt;p id=&quot;uXNZ&quot;&gt;В этой статье мы разберём тест начального уровня по машинному обучению. &lt;/p&gt;
  &lt;p id=&quot;jJ7a&quot;&gt;Эти базовые знания пригодятся тем, кто работает с данными, хочет автоматизировать рутинные решения или планирует устроиться в IT на позицию аналитика, тестировщика или младшего дата-специалиста.&lt;/p&gt;
  &lt;h3 id=&quot;p2oQ&quot; data-align=&quot;center&quot;&gt;Вся навигация по материалам в Telegram 👇🏻&lt;/h3&gt;
  &lt;figure id=&quot;Cpww&quot;&gt;
    &lt;iframe src=&quot;https://t.me/ildmy/77?embed=1&amp;userpic=1&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5mQN&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;Ad6B&quot;&gt;&lt;strong&gt;Вопрос 1. &lt;/strong&gt;Для каких из следующих задач может быть подходящим алгоритмом кластеризация методом K-средних?&lt;/h2&gt;
  &lt;p id=&quot;C3Tm&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Y9fN&quot;&gt;1.     По профилю пользователя на сайте определить мужчина это или женщина&lt;/p&gt;
  &lt;p id=&quot;IK58&quot;&gt;2.     Для множества электронных писем определить популярные темы&lt;/p&gt;
  &lt;p id=&quot;QECK&quot;&gt;3.     Получив набор новостных статей с различных новостных сайтов, выяснить являются ли они новостями культуры&lt;/p&gt;
  &lt;p id=&quot;1Pbt&quot;&gt;4.     Для множества данных о ценах акций предсказать будущую цену&lt;/p&gt;
  &lt;p id=&quot;ExOO&quot;&gt;5.     Для сортировки элементов массива по возрастанию&lt;/p&gt;
  &lt;p id=&quot;Nusc&quot;&gt;Представь, что у нас есть куча разноцветных шариков, и мы хотим разложить их по кучкам так, чтобы в одной кучке были похожие друг на друга. Вот это и есть идея кластеризации.&lt;/p&gt;
  &lt;p id=&quot;817F&quot;&gt;Метод K-средних («K-means») берёт данные и пытается разбить их на K групп (кластеров), основываясь на том, как они «похожи» между собой.&lt;/p&gt;
  &lt;ul id=&quot;e0ly&quot;&gt;
    &lt;li id=&quot;m6LC&quot;&gt;&lt;strong&gt;K-средних — это алгоритм без учителя.&lt;/strong&gt; То есть ему не говорят заранее, где какие ярлыки (типы, классы), он сам находит «естественные группы» в данных.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;G5sv&quot;&gt;Теперь посмотрим на варианты:&lt;/p&gt;
  &lt;p id=&quot;3y9j&quot;&gt;1.     &lt;strong&gt;Определить мужчина или женщина&lt;/strong&gt; — это задача &lt;strong&gt;классификации&lt;/strong&gt;, где уже есть заранее известные классы (мужчина / женщина). Это не кластеризация.&lt;/p&gt;
  &lt;p id=&quot;9L6C&quot;&gt;2.     &lt;strong&gt;Определить популярные темы писем&lt;/strong&gt; — тут мы не знаем заранее, какие темы будут. Мы хотим, чтобы алгоритм сам нашёл группы похожих писем. Это типичная задача кластеризации.&lt;/p&gt;
  &lt;p id=&quot;tsBI&quot;&gt;3.     &lt;strong&gt;Выяснить, являются ли статьи новостями культуры&lt;/strong&gt; — это классификация (есть или нет), скорее бинарная. Не подходит для K-средних.&lt;/p&gt;
  &lt;p id=&quot;dZwl&quot;&gt;4.     &lt;strong&gt;Предсказать будущую цену акций&lt;/strong&gt; — это регрессия, мы прогнозируем число. Тоже не кластеризация.&lt;/p&gt;
  &lt;p id=&quot;YPGg&quot;&gt;5.     &lt;strong&gt;Сортировка массива&lt;/strong&gt; — это вообще алгоритм упорядочивания данных по числу, не имеет отношения к кластеризации.&lt;/p&gt;
  &lt;p id=&quot;lx86&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;vJ7t&quot;&gt;Для множества электронных писем определить популярные темы.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;etPA&quot;&gt;&lt;strong&gt;Вопрос 2. &lt;/strong&gt;Компания разрабатывает систему предсказания спроса на продукцию в зависимости от сезона и региона. Какой тип задачи машинного обучения здесь применим?&lt;/h2&gt;
  &lt;p id=&quot;4CuX&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;i9sG&quot;&gt;1.     Регрессия&lt;/p&gt;
  &lt;p id=&quot;2kOm&quot;&gt;2.     Поиск аномалий&lt;/p&gt;
  &lt;p id=&quot;6rBf&quot;&gt;3.     Классификация&lt;/p&gt;
  &lt;p id=&quot;CxMI&quot;&gt;4.     Кластеризация&lt;/p&gt;
  &lt;p id=&quot;BxNX&quot;&gt;5.     Поиск ассоциативных правил&lt;/p&gt;
  &lt;p id=&quot;nRKb&quot;&gt;Давай представим, что компания хочет узнать &lt;strong&gt;сколько&lt;/strong&gt; человек купит их товар в июле в Москве. Или в ноябре в Сочи.&lt;/p&gt;
  &lt;p id=&quot;lVge&quot;&gt;То есть они хотят предсказать &lt;strong&gt;конкретное числовое значение спроса&lt;/strong&gt;, опираясь на такие факторы, как сезон и регион.&lt;/p&gt;
  &lt;ul id=&quot;kXmp&quot;&gt;
    &lt;li id=&quot;wekP&quot;&gt;Когда задача сводится к &lt;strong&gt;предсказанию числа (количества, цены, температуры, спроса)&lt;/strong&gt; — это всегда &lt;strong&gt;регрессия&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;QSYX&quot;&gt;Классификация — это когда мы выбираем категорию («купит» или «не купит», «Москва» или «Питер»).&lt;/li&gt;
    &lt;li id=&quot;vMgX&quot;&gt;Кластеризация — это когда нужно найти группы похожих данных без заранее заданных категорий.&lt;/li&gt;
    &lt;li id=&quot;uHgj&quot;&gt;Поиск аномалий — это когда ищут необычные случаи (например, резкий скачок спроса).&lt;/li&gt;
    &lt;li id=&quot;XhEE&quot;&gt;Поиск ассоциативных правил — это вроде «кто купил хлеб, купил и молоко».&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;z5hK&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Регрессия&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;ru1D&quot;&gt;&lt;strong&gt;Вопрос 3. &lt;/strong&gt;Выберите НЕВЕРНОЕ описание метрики.&lt;/h2&gt;
  &lt;p id=&quot;G7Hi&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;2Jxx&quot;&gt;1.     F1-оценка — среднее гармоническое между точностью (Precision) и полнотой (Recall).&lt;/p&gt;
  &lt;p id=&quot;wn90&quot;&gt;2.     Точность (Accuracy) — процент правильно классифицированных объектов среди всех объектов.&lt;/p&gt;
  &lt;p id=&quot;jAq6&quot;&gt;3.     Объем данных — количество примеров в обучающем наборе, используемом для тренировки модели.&lt;/p&gt;
  &lt;p id=&quot;Ooe6&quot;&gt;4.     Матрица ошибок (confusion matrix) — метрика, показывающая среднее количество неверных предсказаний модели.&lt;/p&gt;
  &lt;p id=&quot;qS9s&quot;&gt;5.     Время обучения — количество времени, которое потребовалось модели для завершения процесса обучения.&lt;/p&gt;
  &lt;p id=&quot;WE1j&quot;&gt;Давай разберём каждое утверждение:&lt;/p&gt;
  &lt;p id=&quot;8opM&quot;&gt;·        &lt;strong&gt;F1-оценка&lt;/strong&gt; действительно — это гармоническое среднее между Precision и Recall. Всё верно.&lt;/p&gt;
  &lt;p id=&quot;6Kxp&quot;&gt;·        &lt;strong&gt;Точность (Accuracy)&lt;/strong&gt; — это сколько всего правильно угадали из всех случаев. Тоже правильно.&lt;/p&gt;
  &lt;p id=&quot;gWLt&quot;&gt;·        &lt;strong&gt;Объем данных&lt;/strong&gt; — это просто характеристика набора данных, но &lt;strong&gt;это не метрика качества модели&lt;/strong&gt;. Однако вопрос звучит не про это, а именно про &lt;strong&gt;НЕВЕРНОЕ описание метрики&lt;/strong&gt;. Тут сказано, что это «количество примеров в обучающем наборе» — это по сути правда про объем данных, но &lt;strong&gt;объем данных — вообще не метрика&lt;/strong&gt;, а характеристика данных. Но оставим пока.&lt;/p&gt;
  &lt;p id=&quot;2pDS&quot;&gt;·        &lt;strong&gt;Матрица ошибок (confusion matrix)&lt;/strong&gt; — в описании сказано: «метрика, показывающая среднее количество неверных предсказаний модели». Это неправда.&lt;/p&gt;
  &lt;p id=&quot;CX1j&quot;&gt;Ø &lt;strong&gt;Матрица ошибок&lt;/strong&gt; — это таблица, показывающая &lt;strong&gt;подробно количество верных и неверных предсказаний по классам&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;vgqH&quot;&gt;Ø Она не показывает &lt;strong&gt;среднее число неверных предсказаний&lt;/strong&gt;, а раскладывает ошибки и верные ответы по категориям.&lt;/p&gt;
  &lt;p id=&quot;Esqb&quot;&gt;·        &lt;strong&gt;Время обучения&lt;/strong&gt; — это правда время, затраченное на обучение модели. Его иногда рассматривают как характеристику (скорость), но в ML это вполне нормальная метрика времени обучения.&lt;/p&gt;
  &lt;p id=&quot;lahX&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;JqnI&quot;&gt;Матрица ошибок (confusion matrix) — метрика, показывающая среднее количество неверных предсказаний модели.&lt;br /&gt; (это неверное описание, т.к. confusion matrix показывает &lt;strong&gt;распределение&lt;/strong&gt; предсказаний, а не среднее количество ошибок).&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;lh52&quot;&gt;Вопрос 4. Представлены результаты работы бинарного классификатора:&lt;br /&gt; Истинное значение 0 - Предсказано «0» (96) Предсказано «1» (4)&lt;br /&gt; Истинное значение 1 - Предсказано «0» (8) Предсказано «1» (19)&lt;/h2&gt;
  &lt;p id=&quot;cvsB&quot;&gt;Определите, какое из приведённых значений соответствует метрике accuracy.&lt;/p&gt;
  &lt;p id=&quot;6ux4&quot;&gt;Accuracy (точность по классификации в общем смысле) — это &lt;strong&gt;доля правильных предсказаний от всех предсказаний&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;5ebT&quot;&gt;То есть:&lt;/p&gt;
  &lt;p id=&quot;Rb4O&quot;&gt;Accuracy = TP+TN / TP+TN+FP+FN&lt;/p&gt;
  &lt;p id=&quot;Yhb0&quot;&gt;Где:&lt;/p&gt;
  &lt;p id=&quot;kZIt&quot;&gt;1.     TP (True Positive) = 19 (истинные 1, правильно предсказаны как 1)&lt;/p&gt;
  &lt;p id=&quot;7KOg&quot;&gt;2.     TN (True Negative) = 96 (истинные 0, правильно предсказаны как 0)&lt;/p&gt;
  &lt;p id=&quot;YPiJ&quot;&gt;3.     FP (False Positive) = 4 (истинные 0, ошибочно предсказаны как 1)&lt;/p&gt;
  &lt;p id=&quot;LYQK&quot;&gt;4.     FN (False Negative) = 8 (истинные 1, ошибочно предсказаны как 0)&lt;/p&gt;
  &lt;p id=&quot;6wJY&quot;&gt;&lt;strong&gt;Подставим числа:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;LozO&quot;&gt;Accuracy=96+19 / 96+4+8+19 = 115 / 127 ≈ 0.906&lt;/p&gt;
  &lt;p id=&quot;sZS8&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;0.906&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;xWyJ&quot;&gt;&lt;strong&gt;Вопрос 5. &lt;/strong&gt;Для чего используется линейная регрессия?&lt;/h2&gt;
  &lt;p id=&quot;Vgo9&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;AUSD&quot;&gt;1.     Кластеризация отзывов клиентов&lt;/p&gt;
  &lt;p id=&quot;QJIv&quot;&gt;2.     Предсказание категориальной переменной&lt;/p&gt;
  &lt;p id=&quot;T7r6&quot;&gt;3.     Моделирование нелинейных зависимостей&lt;/p&gt;
  &lt;p id=&quot;HTwO&quot;&gt;4.     Создание векторных представлений&lt;/p&gt;
  &lt;p id=&quot;pHgX&quot;&gt;5.     Предсказание числового значения целевой переменной&lt;/p&gt;
  &lt;p id=&quot;ZO9s&quot;&gt;Линейная регрессия — это один из самых простых инструментов машинного обучения.&lt;br /&gt; Представь, что у тебя есть таблица, где по одной колонке (например, температура) ты хочешь предсказать другую колонку (например, продажи мороженого). Линейная регрессия рисует прямую линию, которая лучше всего подходит к этим данным, и использует её для прогнозов.&lt;/p&gt;
  &lt;p id=&quot;tnuw&quot;&gt;·        Линейная регрессия применяется для &lt;strong&gt;предсказания числового значения&lt;/strong&gt; (сколько? какой рост? какая температура?).&lt;/p&gt;
  &lt;p id=&quot;xkkk&quot;&gt;·        Она не используется для классификации категориальных переменных (типа «красный» или «зелёный»).&lt;/p&gt;
  &lt;p id=&quot;Lgh3&quot;&gt;·        Не для кластеризации (это совсем другая задача).&lt;/p&gt;
  &lt;p id=&quot;tnrZ&quot;&gt;·        Не для создания векторных представлений слов или текстов.&lt;/p&gt;
  &lt;p id=&quot;U0hM&quot;&gt;·        И не для моделирования нелинейных зависимостей (для этого существуют полиномиальная регрессия, решающие деревья и др.).&lt;/p&gt;
  &lt;p id=&quot;TUFq&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Предсказание числового значения целевой переменной&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;SIfx&quot;&gt;&lt;strong&gt;Вопрос 6. &lt;/strong&gt;Вы обучаете модель на основе логистической регрессии. Выберите верное утверждение.&lt;/h2&gt;
  &lt;p id=&quot;MGOY&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;q27t&quot;&gt;1.     Увеличение сложности модели всегда ускоряет процесс обучения&lt;/p&gt;
  &lt;p id=&quot;6y2y&quot;&gt;2.     Добавление нового признака в модель всегда приводит к равной или лучшей производительности на обучающей выборке&lt;/p&gt;
  &lt;p id=&quot;kaJQ&quot;&gt;3.     Введение регуляризации в модель всегда приводит к равной или лучшей производительности на данных, не входящих в обучающий набор&lt;/p&gt;
  &lt;p id=&quot;q2Ns&quot;&gt;4.     Добавление в модель новых признаков помогает предотвратить переобучение обучающей выборки&lt;/p&gt;
  &lt;p id=&quot;atfc&quot;&gt;5.     Введение регуляризации в модель всегда приводит к равной или лучшей производительности на обучающей выборке&lt;/p&gt;
  &lt;p id=&quot;awWs&quot;&gt;·        &lt;strong&gt;Увеличение сложности модели&lt;/strong&gt; обычно наоборот замедляет обучение, т.к. больше параметров.&lt;/p&gt;
  &lt;p id=&quot;v7cb&quot;&gt;·        &lt;strong&gt;Добавление нового признака&lt;/strong&gt; чаще всего улучшает обучение на тренировочной выборке, но не всегда — может даже ухудшить, если шумный.&lt;/p&gt;
  &lt;p id=&quot;3Efz&quot;&gt;·        &lt;strong&gt;Введение регуляризации (например, L1 или L2)&lt;/strong&gt; снижает сложность модели и помогает избежать переобучения, то есть &lt;strong&gt;улучшает или сохраняет производительность на тестовых (не обучающих) данных&lt;/strong&gt;. Это прямо известный факт из машинного обучения — регуляризация помогает бороться с переобучением и обычно повышает качество на новых данных.&lt;/p&gt;
  &lt;p id=&quot;YuLm&quot;&gt;·        Добавление признаков не предотвращает переобучение — наоборот, часто усиливает.&lt;/p&gt;
  &lt;p id=&quot;uhn0&quot;&gt;·        Введение регуляризации на обучающей выборке чаще даже ухудшает точность (так как «штрафует» слишком точное подгоняние), но зато улучшает на новых данных.&lt;/p&gt;
  &lt;p id=&quot;exz6&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Введение регуляризации в модель всегда приводит к равной или лучшей производительности на данных, не входящих в обучающий набор&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;DEaI&quot;&gt;&lt;strong&gt;Вопрос 7. &lt;/strong&gt;Для чего используется линейный дискриминантный анализ (LDA)?&lt;/h2&gt;
  &lt;p id=&quot;0fB8&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Zeuc&quot;&gt;1.     Для уменьшения размерности и классификации данных&lt;/p&gt;
  &lt;p id=&quot;TXxV&quot;&gt;2.     Для увеличения выборки&lt;/p&gt;
  &lt;p id=&quot;ZTRH&quot;&gt;3.     Для поиска аномалий&lt;/p&gt;
  &lt;p id=&quot;AB5C&quot;&gt;4.     Для регрессионного анализа&lt;/p&gt;
  &lt;p id=&quot;JzXA&quot;&gt;5.     Для кластеризации без разметки&lt;/p&gt;
  &lt;p id=&quot;HYin&quot;&gt;Линейный дискриминантный анализ (LDA) используют в двух основных целях:&lt;/p&gt;
  &lt;p id=&quot;1K9t&quot;&gt;1.     &lt;strong&gt;Для уменьшения размерности данных&lt;/strong&gt;, чтобы их можно было легче визуализировать или быстрее обучать модель.&lt;/p&gt;
  &lt;p id=&quot;Sz5U&quot;&gt;2.     &lt;strong&gt;Для классификации&lt;/strong&gt;, т.е. отделения объектов разных классов.&lt;br /&gt; Он специально ищет такие линии или плоскости в данных, которые максимально хорошо разделяют разные классы.&lt;/p&gt;
  &lt;p id=&quot;jkV9&quot;&gt;Это не:&lt;/p&gt;
  &lt;ul id=&quot;x6o2&quot;&gt;
    &lt;li id=&quot;fGlm&quot;&gt;увеличение выборки,&lt;/li&gt;
    &lt;li id=&quot;wrri&quot;&gt;не поиск аномалий,&lt;/li&gt;
    &lt;li id=&quot;bfFL&quot;&gt;не регрессия,&lt;/li&gt;
    &lt;li id=&quot;fqvS&quot;&gt;не кластеризация без разметки (LDA как раз использует метки классов).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;f7qx&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Для уменьшения размерности и классификации данных&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;q3ma&quot;&gt;&lt;strong&gt;Вопрос 8. &lt;/strong&gt;В какой задаче целесообразно использовать деревья решений?&lt;/h2&gt;
  &lt;p id=&quot;W33n&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;1ZNy&quot;&gt;1.     Дешифровка базы данных&lt;/p&gt;
  &lt;p id=&quot;WU1n&quot;&gt;2.     Сжатие изображений&lt;/p&gt;
  &lt;p id=&quot;COGM&quot;&gt;3.     Выделение скрытых тем в текстах&lt;/p&gt;
  &lt;p id=&quot;IpyV&quot;&gt;4.     Классификация клиентов по уровню дохода&lt;/p&gt;
  &lt;p id=&quot;xBf7&quot;&gt;5.     Прогнозирование курса валют&lt;/p&gt;
  &lt;p id=&quot;fCEg&quot;&gt;Деревья решений — это алгоритмы, которые хорошо подходят для:&lt;/p&gt;
  &lt;p id=&quot;I17f&quot;&gt;Ø &lt;strong&gt;классификации&lt;/strong&gt; (определить к какому классу относится объект: например, низкий, средний или высокий доход)&lt;/p&gt;
  &lt;p id=&quot;clZX&quot;&gt;Ø а также для &lt;strong&gt;регрессии&lt;/strong&gt; (предсказывать число), но чаще всего их показывают именно на задачах классификации.&lt;/p&gt;
  &lt;p id=&quot;9nvR&quot;&gt;А теперь разберём по пунктам:&lt;/p&gt;
  &lt;p id=&quot;6FF0&quot;&gt;·        Дешифровка БД — криптографическая задача, деревья решений тут не помогут.&lt;/p&gt;
  &lt;p id=&quot;9AyU&quot;&gt;·        Сжатие изображений — нужна трансформация данных, а не выбор классов по признакам.&lt;/p&gt;
  &lt;p id=&quot;9bkM&quot;&gt;·        Выделение скрытых тем в текстах — это задача тематического моделирования (например LDA, но не деревья решений).&lt;/p&gt;
  &lt;p id=&quot;iqYi&quot;&gt;·        &lt;strong&gt;Классификация клиентов по уровню дохода&lt;/strong&gt; — это типичная задача для деревьев решений, которые на каждом шаге решают: если доход больше/меньше или есть такие-то признаки, то отнести в такой-то класс.&lt;/p&gt;
  &lt;p id=&quot;Ejyq&quot;&gt;·        Прогнозирование курса валют — для этого чаще используют временные ряды (ARIMA, LSTM), а не деревья (хотя можно пробовать и деревья для регрессии, но это менее «целесообразно» для временных зависимостей).&lt;/p&gt;
  &lt;p id=&quot;5bsi&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Классификация клиентов по уровню дохода&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;13gQ&quot;&gt;&lt;strong&gt;Вопрос 9. &lt;/strong&gt;Какая задача подходит для применения наивного байесовского классификатора?&lt;/h2&gt;
  &lt;p id=&quot;cH3z&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;qYkn&quot;&gt;1.     Кластеризация медицинских записей&lt;/p&gt;
  &lt;p id=&quot;Xh71&quot;&gt;2.     Вычисление среднеквадратической ошибки&lt;/p&gt;
  &lt;p id=&quot;B6MX&quot;&gt;3.     Поиск выбросов в данных&lt;/p&gt;
  &lt;p id=&quot;Ague&quot;&gt;4.     Классификация текстов по тональности&lt;/p&gt;
  &lt;p id=&quot;yDAZ&quot;&gt;5.     Прогнозирование стоимости акций&lt;/p&gt;
  &lt;p id=&quot;SGEZ&quot;&gt;Наивный байесовский классификатор — это алгоритм для &lt;strong&gt;классификации&lt;/strong&gt;, который работает особенно хорошо, когда нужно определить категорию на основе частот признаков. Его часто применяют в &lt;strong&gt;обработке текстов&lt;/strong&gt;, например:&lt;/p&gt;
  &lt;p id=&quot;3P7z&quot;&gt;Ø для &lt;strong&gt;определения тональности отзывов&lt;/strong&gt; (положительный/отрицательный),&lt;/p&gt;
  &lt;p id=&quot;RpZK&quot;&gt;Ø для фильтрации спама.&lt;/p&gt;
  &lt;p id=&quot;OMBL&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;4Q4J&quot;&gt;·        Кластеризация — это задача без учителя (unsupervised), а наивный Байес — supervised.&lt;/p&gt;
  &lt;p id=&quot;yp3V&quot;&gt;·        Среднеквадратическая ошибка — это метрика для регрессии.&lt;/p&gt;
  &lt;p id=&quot;sp8A&quot;&gt;·        Поиск выбросов — обычно используют другие методы, такие как локальные аномалии или кластерные подходы.&lt;/p&gt;
  &lt;p id=&quot;vp1J&quot;&gt;·        &lt;strong&gt;Классификация текстов по тональности&lt;/strong&gt; — классический пример для наивного байеса.&lt;/p&gt;
  &lt;p id=&quot;NV2k&quot;&gt;·        Прогнозирование стоимости акций — задача регрессии.&lt;/p&gt;
  &lt;p id=&quot;inMA&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Классификация текстов по тональности&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;YLYo&quot;&gt;&lt;strong&gt;Вопрос 10. &lt;/strong&gt;Какую задачу можно решить с помощью метода k-NN?&lt;/h2&gt;
  &lt;p id=&quot;RWO3&quot;&gt;&lt;strong&gt;Варианты:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;7PMm&quot;&gt;1.     Поиск скрытых тем в текстах&lt;/p&gt;
  &lt;p id=&quot;0F21&quot;&gt;2.     Определение линейной зависимости&lt;/p&gt;
  &lt;p id=&quot;9ssq&quot;&gt;3.     Прогнозирование временных рядов&lt;/p&gt;
  &lt;p id=&quot;WmA6&quot;&gt;4.     Классификация изображений по категориям&lt;/p&gt;
  &lt;p id=&quot;l9Mo&quot;&gt;5.     Кластеризация больших данных&lt;/p&gt;
  &lt;p id=&quot;0N9Q&quot;&gt;Метод k-NN (k ближайших соседей) — это очень интуитивный способ &lt;strong&gt;классификации&lt;/strong&gt;:&lt;/p&gt;
  &lt;p id=&quot;g1M5&quot;&gt;Ø мы смотрим, кто окружает объект в многомерном пространстве признаков,&lt;/p&gt;
  &lt;p id=&quot;tOOP&quot;&gt;Ø если большинство соседей из класса «кот», значит и этот объект — «кот».&lt;/p&gt;
  &lt;p id=&quot;e8at&quot;&gt;Можно также использовать k-NN для регрессии (среднее значение соседей), но чаще всего — для классификации.&lt;/p&gt;
  &lt;p id=&quot;Potm&quot;&gt;Теперь по вариантам:&lt;/p&gt;
  &lt;p id=&quot;lvKZ&quot;&gt;·        Поиск скрытых тем в текстах — тематическое моделирование, например LDA.&lt;/p&gt;
  &lt;p id=&quot;DHqQ&quot;&gt;·        Определение линейной зависимости — это линейная регрессия.&lt;/p&gt;
  &lt;p id=&quot;sYEv&quot;&gt;·        Прогнозирование временных рядов — это ARIMA, LSTM и др.&lt;/p&gt;
  &lt;p id=&quot;gz2r&quot;&gt;·        &lt;strong&gt;Классификация изображений по категориям&lt;/strong&gt; — классический кейс для k-NN.&lt;/p&gt;
  &lt;p id=&quot;pPO5&quot;&gt;·        Кластеризация — это без учителя, а k-NN — метод обучения с учителем.&lt;/p&gt;
  &lt;p id=&quot;h9bm&quot;&gt;&lt;strong&gt;Выбранный ответ: &lt;/strong&gt;Классификация изображений по категориям&lt;/p&gt;
  &lt;hr /&gt;
  &lt;figure id=&quot;xhyH&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e7/2f/e72f34c3-0d51-4630-bc5d-e1117258d4f5.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;h1 id=&quot;0Gfj&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h1&gt;
  &lt;p id=&quot;oOqg&quot;&gt;Теперь вам будет проще ориентироваться в основах машинного обучения: что такое обучение с учителем и без него, как работает классификация и регрессия, почему важны выборки и метрики. После такого разбора вы начнёте понимать, какие задачи можно решать ML-моделями. Это отличный фундамент для роста: дальше можно изучать Python, библиотеки Scikit-learn и пробовать строить первые модели на практике.&lt;/p&gt;

</content></entry><entry><id>ildm:E9q7rIEIZJc</id><link rel="alternate" type="text/html" href="https://teletype.in/@ildm/E9q7rIEIZJc?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=ildm"></link><title>Математическая статистика для продвинутых</title><published>2025-08-16T19:09:02.013Z</published><updated>2025-08-16T19:09:02.013Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/06/0d/060d62c4-f6ea-4e65-b038-096f0386356e.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/46/20/462020fc-ebea-43f6-8753-ed7f03d4203d.jpeg&quot;&gt;Математическая статистика кажется скучной и страшной, пока не поймёшь, для чего она нужна. По сути, это набор инструментов, которые помогают делать выводы из данных, даже если данные неполные или шумные. Благодаря статистике бизнес может предсказать спрос, инженер — проверить качество партии деталей, а врач — оценить эффективность нового лекарства.</summary><content type="html">
  &lt;figure id=&quot;xtQb&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/46/20/462020fc-ebea-43f6-8753-ed7f03d4203d.jpeg&quot; width=&quot;792&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GDJQ&quot;&gt;Математическая статистика кажется скучной и страшной, пока не поймёшь, для чего она нужна. По сути, это набор инструментов, которые помогают делать выводы из данных, даже если данные неполные или шумные. Благодаря статистике бизнес может предсказать спрос, инженер — проверить качество партии деталей, а врач — оценить эффективность нового лекарства.&lt;/p&gt;
  &lt;p id=&quot;Qm4f&quot;&gt;В этой статье мы разбираем тест продвинутого уровня по математической статистике. Пройдём вопросы шаг за шагом, объясним, почему правильный ответ именно этот, а не другой. Даже если вы далеки от математики, поймёте логику рассуждений.&lt;/p&gt;
  &lt;p id=&quot;iYlb&quot;&gt;Эти знания нужны не только аналитикам и дата-сайентистам. Они важны для всех, кто работает в IT, управляет проектами, принимает решения на основе цифр. Чем лучше вы понимаете статистику, тем проще вам проверить гипотезы и не попасться на ложные выводы.&lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;91d3&quot; data-align=&quot;center&quot;&gt;Вся навигация по материалам в Telegram 👇🏻&lt;/p&gt;
  &lt;figure id=&quot;ou2f&quot;&gt;
    &lt;iframe src=&quot;https://t.me/ildmy/77?embed=1&amp;userpic=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4tFt&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Fzdg&quot;&gt;&lt;strong&gt;Вопрос 1. В проекте разработки ПО среднее время завершения задачи — 20 дней с дисперсией 25. Какова вероятность того, что задача будет завершена за менее чем 15 дней?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;3PXz&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Mqti&quot;&gt;·        9%&lt;/p&gt;
  &lt;p id=&quot;Vpld&quot;&gt;·        5%&lt;/p&gt;
  &lt;p id=&quot;mmnf&quot;&gt;·        16%&lt;/p&gt;
  &lt;p id=&quot;nkvo&quot;&gt;·        30%&lt;/p&gt;
  &lt;p id=&quot;JRIo&quot;&gt;·        24%&lt;/p&gt;
  &lt;p id=&quot;XWHG&quot;&gt;Чтобы понять, как часто задача заканчивается быстрее 15 дней, используем нормальное распределение.&lt;/p&gt;
  &lt;p id=&quot;NEvO&quot;&gt;Среднее время (μ) = 20 дней.&lt;/p&gt;
  &lt;p id=&quot;BbFh&quot;&gt;Дисперсия = 25, значит стандартное отклонение (σ) = √25 = 5.&lt;/p&gt;
  &lt;p id=&quot;otlj&quot;&gt;&lt;strong&gt;Находим z-оценку:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ttxR&quot;&gt;Z = (15−20) / 5= −5 / 5= −1&lt;/p&gt;
  &lt;p id=&quot;PauM&quot;&gt;Это значит, что 15 дней на 1 стандартное отклонение меньше среднего.&lt;/p&gt;
  &lt;p id=&quot;BSPM&quot;&gt;&lt;strong&gt;Смотрим таблицу стандартного нормального распределения:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;PKkD&quot;&gt;P(Z&amp;lt;−1) ≈ 0.1587&lt;/p&gt;
  &lt;p id=&quot;OFuR&quot;&gt;То есть примерно &lt;strong&gt;16% задач завершается быстрее 15 дней&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;wtSQ&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;16%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;eO52&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Bo1j&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;YEVY&quot;&gt;&lt;strong&gt;Вопрос 2. Случайная величина X имеет нормальное распределение с параметрами μ = 10 и σ = 2. Чему равна вероятность того, что X попадёт в интервал от 8 до 12?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;FD8A&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Yw5h&quot;&gt;·        95%&lt;/p&gt;
  &lt;p id=&quot;SlV2&quot;&gt;·        50%&lt;/p&gt;
  &lt;p id=&quot;YSEn&quot;&gt;·        32%&lt;/p&gt;
  &lt;p id=&quot;9NiQ&quot;&gt;·        68%&lt;/p&gt;
  &lt;p id=&quot;ZEzl&quot;&gt;·        99,7%&lt;/p&gt;
  &lt;p id=&quot;r1Ml&quot;&gt;У нас нормальное распределение со средним&lt;strong&gt; 10&lt;/strong&gt; и &lt;strong&gt;стандартным отклонением 2&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;JsE4&quot;&gt;Нас спрашивают про интервал от &lt;strong&gt;8 до 12&lt;/strong&gt;. Это значит от среднего ±2 единицы.&lt;/p&gt;
  &lt;p id=&quot;vi8W&quot;&gt;&lt;strong&gt;Считаем z-значения:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;mAUg&quot;&gt;Для 8:&lt;/p&gt;
  &lt;p id=&quot;8l6D&quot;&gt;Z = (8−10) / 2= −1&lt;/p&gt;
  &lt;p id=&quot;mmeO&quot;&gt;Для 12:&lt;/p&gt;
  &lt;p id=&quot;JdcD&quot;&gt;Z = (12−10) / 2 = +1&lt;/p&gt;
  &lt;p id=&quot;LHA7&quot;&gt;То есть нас интересует вероятность того, что значение окажется в пределах &lt;strong&gt;±1 σ&lt;/strong&gt; от среднего.&lt;/p&gt;
  &lt;p id=&quot;jCVb&quot;&gt;&lt;strong&gt;Что говорит правило для нормального распределения?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;yNXi&quot;&gt;Примерно &lt;strong&gt;68% значений&lt;/strong&gt; попадают в интервал μ ± σ (один стандарт).&lt;/p&gt;
  &lt;p id=&quot;ca4u&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;68%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;IGCk&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4oFo&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;sGuF&quot;&gt;Вопрос 3. Какой размер выборки нужен для 95% уровня доверия и 5% допустимой ошибки при партии из 10,000 изделий?&lt;/h2&gt;
  &lt;p id=&quot;t1Cq&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;x3Sj&quot;&gt;·        370&lt;/p&gt;
  &lt;p id=&quot;iI4B&quot;&gt;·        435&lt;/p&gt;
  &lt;p id=&quot;mPLT&quot;&gt;·        290&lt;/p&gt;
  &lt;p id=&quot;Vr7Z&quot;&gt;·        230&lt;/p&gt;
  &lt;p id=&quot;kRx2&quot;&gt;·        620&lt;/p&gt;
  &lt;p id=&quot;mFEb&quot;&gt;Тут нужно понять, сколько изделий проверить, чтобы быть уверенным в результате на 95% (и при этом ошибиться не больше чем на 5%).&lt;br /&gt; Используем известную приближенную формулу для выборки (для больших N):&lt;/p&gt;
  &lt;p id=&quot;T8l8&quot;&gt;n = Z^2 * p(1−p) / E^2&lt;/p&gt;
  &lt;p id=&quot;9w5O&quot;&gt;где:&lt;/p&gt;
  &lt;p id=&quot;c6LX&quot;&gt;·        Z ≈ 1.96 для 95% доверия,&lt;/p&gt;
  &lt;p id=&quot;2ZF0&quot;&gt;·        p = 0.5p (максимальная вариативность — наибольший запас),&lt;/p&gt;
  &lt;p id=&quot;SyHm&quot;&gt;·        E = 0.05(5% ошибка).&lt;/p&gt;
  &lt;p id=&quot;nwKG&quot;&gt;&lt;strong&gt;Считаем шаг за шагом:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;EUOT&quot;&gt;n = ((1.96)^2 × 0.5 × 0.5) / 0.05^2 = 3.8416 × 0.25 / 0.0025 = 0.9604 / 0.0025 = 384.16&lt;/p&gt;
  &lt;p id=&quot;plDX&quot;&gt;Это если бы партия была очень большой (N → ∞).&lt;/p&gt;
  &lt;p id=&quot;8a9P&quot;&gt;&lt;strong&gt;С учётом конечной совокупности (10,000):&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;G6PG&quot;&gt;Примерно &lt;strong&gt;370 изделий&lt;/strong&gt; нужно проверить.&lt;/p&gt;
  &lt;p id=&quot;YkUJ&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;370&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;zEfl&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Q78w&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;YITJ&quot;&gt;&lt;strong&gt;Вопрос 4. Чем НЕ характеризуется качество точечной оценки параметра распределения?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;BKn1&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;AG7Q&quot;&gt;1.     Нет правильного ответа&lt;/p&gt;
  &lt;p id=&quot;R5tM&quot;&gt;2.     Несмещённостью&lt;/p&gt;
  &lt;p id=&quot;5cGl&quot;&gt;3.     Состоятельностью&lt;/p&gt;
  &lt;p id=&quot;oqFz&quot;&gt;4.     Эффективностью&lt;/p&gt;
  &lt;p id=&quot;OdSX&quot;&gt;5.     Случайностью&lt;/p&gt;
  &lt;p id=&quot;oAuC&quot;&gt;Когда мы оцениваем какой-то параметр (например, среднее), мы хотим, чтобы наша оценка была:&lt;/p&gt;
  &lt;p id=&quot;I87t&quot;&gt;1.     &lt;strong&gt;несмещённой&lt;/strong&gt; (в среднем даёт правильный результат),&lt;/p&gt;
  &lt;p id=&quot;lyRP&quot;&gt;2.     &lt;strong&gt;состоятельной&lt;/strong&gt; (при увеличении выборки приближается к истинному значению),&lt;/p&gt;
  &lt;p id=&quot;Cdb9&quot;&gt;3.     &lt;strong&gt;эффективной&lt;/strong&gt; (имеет наименьшую возможную дисперсию).&lt;/p&gt;
  &lt;p id=&quot;dq9T&quot;&gt;А вот &lt;strong&gt;случайность&lt;/strong&gt; — это не характеристика качества оценки. Все статистики — случайные величины, но это не свойство их качества. Качество измеряется другими терминами.&lt;/p&gt;
  &lt;p id=&quot;vOsR&quot;&gt;&lt;strong&gt;Выбранный ответ: Случайностью&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;1WB7&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0c/03/0c03ccc9-5a76-4ef0-84e8-511bdfe27644.png&quot; width=&quot;911&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZYO6&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;nxjR&quot;&gt;&lt;strong&gt;Вопрос 5. Какой тест используют для проверки нормальности распределения данных?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;frwz&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;eDgj&quot;&gt;1.     Тест Спирмена&lt;/p&gt;
  &lt;p id=&quot;yzWD&quot;&gt;2.     Тест Краскела-Уоллиса&lt;/p&gt;
  &lt;p id=&quot;BUt0&quot;&gt;3.     Тест Манна-Уитни&lt;/p&gt;
  &lt;p id=&quot;pfAS&quot;&gt;4.     Тест Левенса&lt;/p&gt;
  &lt;p id=&quot;6YK6&quot;&gt;5.     Тест Шапиро-Уилка&lt;/p&gt;
  &lt;p id=&quot;6BVU&quot;&gt;Заказчик сказал, что продажи &lt;strong&gt;распределены нормально&lt;/strong&gt; — но нам нужно это проверить.&lt;br /&gt; Для этого есть специальные статистические тесты, которые как раз и показывают, насколько данные «похожи» на нормальное распределение.&lt;/p&gt;
  &lt;p id=&quot;aD78&quot;&gt;Из предложенных:&lt;/p&gt;
  &lt;ul id=&quot;ilVh&quot;&gt;
    &lt;li id=&quot;Dr0Z&quot;&gt;&lt;strong&gt;Тест Шапиро-Уилка&lt;/strong&gt; — классический критерий для проверки нормальности. Он специально разработан для этой задачи.&lt;/li&gt;
    &lt;li id=&quot;0EpE&quot;&gt;Остальные тесты (Спирмена, Краскела-Уоллиса, Манна-Уитни, Левенса) проверяют другие свойства: корреляцию, различия между группами, равенство дисперсий, но &lt;strong&gt;не нормальность&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;NTsl&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;Тест Шапиро-Уилка&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;a7yF&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;vnuU&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;oKPf&quot;&gt;&lt;strong&gt;Вопрос 6. Какова вероятность того, что в выборке из нормального распределения со средним 100 и σ=15 значение окажется меньше 85?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;WLPp&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;pzov&quot;&gt;1.     0,4610&lt;/p&gt;
  &lt;p id=&quot;vK6r&quot;&gt;2.     0,1587&lt;/p&gt;
  &lt;p id=&quot;FGnQ&quot;&gt;3.     0,0455&lt;/p&gt;
  &lt;p id=&quot;AO2W&quot;&gt;4.     0,0227&lt;/p&gt;
  &lt;p id=&quot;vzWB&quot;&gt;5.     0,3173&lt;/p&gt;
  &lt;p id=&quot;5qyJ&quot;&gt;Ø Среднее μ = 100&lt;/p&gt;
  &lt;p id=&quot;XutC&quot;&gt;Ø σ = 15&lt;/p&gt;
  &lt;p id=&quot;g2J4&quot;&gt;Ø Нас интересует вероятность X &amp;lt; 85.&lt;/p&gt;
  &lt;p id=&quot;U0R2&quot;&gt;&lt;strong&gt;Находим z-значение:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;MzKt&quot;&gt;z = (85−100) / 15 = −15 / 15 = −1&lt;/p&gt;
  &lt;p id=&quot;gCdZ&quot;&gt;То есть 85 — это ровно &lt;strong&gt;на одно σ меньше среднего&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;9OYC&quot;&gt;&lt;strong&gt;Смотрим стандартную таблицу нормального распределения:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;QXZr&quot;&gt;P(Z&amp;lt;−1) ≈ 0.1587&lt;/p&gt;
  &lt;p id=&quot;gRI0&quot;&gt;Это значит, что примерно &lt;strong&gt;15,87%&lt;/strong&gt; значений окажутся меньше 85.&lt;/p&gt;
  &lt;p id=&quot;WyQ3&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt; &lt;strong&gt;0,1587&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;mnaW&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;d8xC&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;xjl5&quot;&gt;&lt;strong&gt;Вопрос 7. Что правильно говорит о построенном 99% доверительном интервале?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;D33q&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;PJNC&quot;&gt;1.     Мы можем быть на 99% уверены, что каждый посетитель торгового центра тратит сумму, находящуюся в пределах интервала&lt;/p&gt;
  &lt;p id=&quot;zl0P&quot;&gt;2.     При многократном повторении опроса и построении доверительного интервала, истинное среднее значение расходов всех посетителей торгового центра окажется внутри построенного интервала в 99% случаев&lt;/p&gt;
  &lt;p id=&quot;qTKk&quot;&gt;3.     Вероятность того, что истинное среднее значение расходов всех посетителей торгового центра лежит в построенном интервале, равна 99%&lt;/p&gt;
  &lt;p id=&quot;fb4G&quot;&gt;4.     Построенный доверительный интервал всегда будет содержать выборочное среднее значение (1200 рублей)&lt;/p&gt;
  &lt;p id=&quot;MPDw&quot;&gt;5.     99% посетителей торгового центра тратят сумму в пределах интервала&lt;/p&gt;
  &lt;p id=&quot;Bk36&quot;&gt;Когда мы строим &lt;strong&gt;99% доверительный интервал&lt;/strong&gt;, это значит:&lt;/p&gt;
  &lt;ul id=&quot;bRom&quot;&gt;
    &lt;li id=&quot;zsq2&quot;&gt;если бы мы &lt;strong&gt;много раз повторили эксперимент&lt;/strong&gt; (брали бы новые выборки по 250 человек) и каждый раз строили интервал, то примерно в &lt;strong&gt;99% этих интервалов оказалось бы истинное среднее значение для всех посетителей&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;yZvV&quot;&gt;То есть доверительный интервал говорит о &lt;strong&gt;надёжности процедуры&lt;/strong&gt;, а не о том, что внутри интервала 99% людей или что вероятность для конкретного уже построенного интервала равна 99%.&lt;/p&gt;
  &lt;p id=&quot;aDaL&quot;&gt;&lt;strong&gt;По вариантам:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Vjhp&quot;&gt;Ø &lt;em&gt;«Каждый посетитель тратит сумму в пределах интервала»&lt;/em&gt; — это не так, CI не для каждого человека.&lt;/p&gt;
  &lt;p id=&quot;ngpH&quot;&gt;Ø &lt;em&gt;«При многократном повторении... истинное среднее окажется в интервале в 99% случаев»&lt;/em&gt; — это верно.&lt;/p&gt;
  &lt;p id=&quot;vGiy&quot;&gt;Ø &lt;em&gt;«Вероятность, что истинное среднее в этом конкретном интервале, =99%»&lt;/em&gt; — строго говоря, это не классическая интерпретация.&lt;/p&gt;
  &lt;p id=&quot;8qRs&quot;&gt;Ø &lt;em&gt;«Интервал всегда содержит выборочное среднее»&lt;/em&gt; — это банально, но не раскрывает смысла доверия.&lt;/p&gt;
  &lt;p id=&quot;Hju3&quot;&gt;Ø &lt;em&gt;«99% посетителей тратят сумму в пределах интервала»&lt;/em&gt; — это вообще о другом, это был бы prediction interval.&lt;/p&gt;
  &lt;p id=&quot;XyLl&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;При многократном повторении опроса и построении доверительного интервала, истинное среднее значение расходов окажется внутри построенного интервала в 99% случаев&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dIeq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Fdw8&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;crVB&quot;&gt;&lt;strong&gt;Вопрос 8. Что лучше всего использовать для проверки гипотезы о том, что распределение баллов соответствует нормальному с неизвестным средним и дисперсией?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;Ekwv&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;BpXS&quot;&gt;1.     t-критерий Стьюдента&lt;/p&gt;
  &lt;p id=&quot;R3uS&quot;&gt;2.     Критерий знаков&lt;/p&gt;
  &lt;p id=&quot;UQ0K&quot;&gt;3.     Критерий хи-квадрат Пирсона&lt;/p&gt;
  &lt;p id=&quot;47DS&quot;&gt;4.     Критерий Колмогорова-Смирнова&lt;/p&gt;
  &lt;p id=&quot;6djA&quot;&gt;5.     Критерий Вилкоксона&lt;/p&gt;
  &lt;p id=&quot;wEq3&quot;&gt;Нам нужно проверить, «похожи ли данные на нормальное распределение».&lt;/p&gt;
  &lt;p id=&quot;P7po&quot;&gt;Для таких задач чаще всего применяют &lt;strong&gt;Критерий Колмогорова-Смирнова&lt;/strong&gt;, который сравнивает эмпирическую функцию распределения выборки с теоретической нормальной функцией.&lt;/p&gt;
  &lt;p id=&quot;CJbi&quot;&gt;Остальные:&lt;/p&gt;
  &lt;ul id=&quot;C6jn&quot;&gt;
    &lt;li id=&quot;lxwd&quot;&gt;&lt;strong&gt;t-критерий Стьюдента&lt;/strong&gt; — для проверки равенства средних.&lt;/li&gt;
    &lt;li id=&quot;kMwe&quot;&gt;&lt;strong&gt;Критерий знаков, Вилкоксона&lt;/strong&gt; — для сравнения медиан или рангов.&lt;/li&gt;
    &lt;li id=&quot;58ey&quot;&gt;&lt;strong&gt;χ²-критерий Пирсона&lt;/strong&gt; может использоваться для нормальности, но он более грубый, чувствителен к разбиению интервалов. Для непрерывных проверок чаще используют Колмогорова-Смирнова.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;4b6G&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Критерий Колмогорова-Смирнова&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;VShv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;luWD&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;IcPL&quot;&gt;&lt;strong&gt;Вопрос 9. Компания, производящая батарейки, утверждает, что средний срок службы их батареек составляет 50 часов. Была протестирована случайная выборка из 64 батареек, обнаружено, что средний срок службы в выборке составляет 48 часов со стандартным отклонением 8 часов. Какой статистический критерий следует использовать для проверки гипотезы о среднем сроке службы батареек, и каковы будут правильно сформулированные нулевая и альтернативная гипотезы для проверки утверждения компании на уровне значимости 5%?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;lujl&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;15l6&quot;&gt;1.     Двухвыборочный t-критерий. Нулевая гипотеза: средний срок службы равен 50 часам. Альтернативная гипотеза: средний срок службы не равен 50 часам&lt;/p&gt;
  &lt;p id=&quot;kyXS&quot;&gt;2.     Одновыборочный t-критерий. Нулевая гипотеза: средний срок службы равен 50 часам. Альтернативная гипотеза: средний срок службы меньше 50 часов&lt;/p&gt;
  &lt;p id=&quot;fKDJ&quot;&gt;3.     Критерий хи-квадрат. Нулевая гипотеза: средний срок службы равен 48 часам. Альтернативная гипотеза: средний срок службы не равен 48 часам&lt;/p&gt;
  &lt;p id=&quot;rSZ7&quot;&gt;4.     Парный t-критерий. Нулевая гипотеза: разница в среднем сроке службы равна О часам. Альтернативная гипотеза: разница в среднем сроке службы не равна О часам&lt;/p&gt;
  &lt;p id=&quot;Fobp&quot;&gt;5.     Одновыборочный z-критерий. Нулевая гипотеза: средний срок службы равен 50 часам. Альтернативная гипотеза: средний срок службы не равен 50 часам&lt;/p&gt;
  &lt;p id=&quot;55XB&quot;&gt;У нас есть &lt;strong&gt;одна выборка&lt;/strong&gt;, которую сравнивают с &lt;strong&gt;заданным средним значением&lt;/strong&gt; (50 часов).&lt;/p&gt;
  &lt;p id=&quot;oRY1&quot;&gt;Размер выборки n=64 большой, можем использовать z-критерий (так как известно стандартное отклонение выборки, выборка достаточно велика для нормального распределения средней).&lt;/p&gt;
  &lt;p id=&quot;CiGQ&quot;&gt;Если бы выборка была маленькая или неизвестна σ генеральной совокупности, применяли бы &lt;strong&gt;t-критерий&lt;/strong&gt; для одной выборки.&lt;/p&gt;
  &lt;p id=&quot;DPNt&quot;&gt;Из предложенных вариантов:&lt;/p&gt;
  &lt;p id=&quot;LS1D&quot;&gt;Тут явно дан &lt;strong&gt;«Одновыборочный z-критерий»&lt;/strong&gt;. Это на практике правильный подход для больших выборок с известной s.&lt;/p&gt;
  &lt;p id=&quot;gMX7&quot;&gt;Гипотезы:&lt;/p&gt;
  &lt;p id=&quot;66Jl&quot;&gt;1.     H0​: Средний срок службы равен 50 часам.&lt;/p&gt;
  &lt;p id=&quot;IiCj&quot;&gt;2.     H1​: Средний срок службы &lt;strong&gt;не равен&lt;/strong&gt; 50 часам. (двусторонняя проверка, так как может быть и меньше, и больше).&lt;/p&gt;
  &lt;p id=&quot;V6RG&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Одновыборочный z-критерий. Нулевая гипотеза: средний срок службы равен 50 часам. Альтернативная гипотеза: средний срок службы не равен 50 часам&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;sO1q&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;baSq&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;qSyG&quot;&gt;&lt;strong&gt;Вопрос 10. Что произойдет со спросом, если цена увеличится на 10%, реклама на 20%, а сезонность не изменится?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;Rspu&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;GRC1&quot;&gt;1.     Увеличится на 2%&lt;/p&gt;
  &lt;p id=&quot;CDJC&quot;&gt;2.     Увеличится на 1%&lt;/p&gt;
  &lt;p id=&quot;z3z6&quot;&gt;3.     Уменьшится на 1%&lt;/p&gt;
  &lt;p id=&quot;gU8O&quot;&gt;4.     Уменьшится на 2%&lt;/p&gt;
  &lt;p id=&quot;55d8&quot;&gt;5.     Останется неизменным&lt;/p&gt;
  &lt;p id=&quot;U4qc&quot;&gt;Вопрос даёт нам модель множественной регрессии, где каждый фактор умножается на свой коэффициент.&lt;/p&gt;
  &lt;p id=&quot;ZbgY&quot;&gt;Считаем вклад:&lt;/p&gt;
  &lt;p id=&quot;AB1s&quot;&gt;·        Цена: − 0.5 × 10% = −5% (уменьшает спрос на 5%).&lt;/p&gt;
  &lt;p id=&quot;HUtr&quot;&gt;·        Реклама: + 0.3 × 20% = +6% (увеличивает спрос на 6%).&lt;/p&gt;
  &lt;p id=&quot;bsWU&quot;&gt;·        Сезонность не изменилась, значит добавляет 0.&lt;/p&gt;
  &lt;p id=&quot;ZmnI&quot;&gt;&lt;strong&gt;Итого:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;qNsl&quot;&gt;−5% + 6% = +1%&lt;/p&gt;
  &lt;p id=&quot;8a6K&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Увеличится на 1%&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;3vUo&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Z4Hz&quot;&gt;Вопрос 11. Какой коэффициент корреляции Пирсона между количеством удобрений и урожайностью?&lt;/h2&gt;
  &lt;figure id=&quot;nWCn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ca/3f/ca3f59cb-46a9-4d40-9d7f-b923d877e97b.png&quot; width=&quot;895&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8AaQ&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;YDUu&quot;&gt;·        -0.50 - Умеренная отрицательная корреляция&lt;/p&gt;
  &lt;p id=&quot;3Qdg&quot;&gt;·        -0.99 - Сильная отрицательная корреляция&lt;/p&gt;
  &lt;p id=&quot;0Mds&quot;&gt;·        0.50 - Умеренная положительная корреляция&lt;/p&gt;
  &lt;p id=&quot;jBXq&quot;&gt;·        0.00 - Отсутствие корреляции&lt;/p&gt;
  &lt;p id=&quot;W7qT&quot;&gt;·        0.99 - Сильная положительная корреляция&lt;/p&gt;
  &lt;p id=&quot;CJMP&quot;&gt;Смотрим таблицу: чем больше внесли удобрений (100 → 300), тем выше урожайность (30 → 70).&lt;/p&gt;
  &lt;p id=&quot;lCgi&quot;&gt;Это почти идеально линейная зависимость: рост удобрений даёт рост урожайности.&lt;/p&gt;
  &lt;p id=&quot;bFcE&quot;&gt;Значит, корреляция высокая и положительная.&lt;/p&gt;
  &lt;p id=&quot;dVK6&quot;&gt;Для наглядности: если бы все точки лежали на одной прямой, корреляция была бы +1.&lt;/p&gt;
  &lt;p id=&quot;QHdP&quot;&gt;Здесь данные именно такие (каждый шаг +50 удобрений даёт +10 урожайности), значит близко к +1.&lt;/p&gt;
  &lt;p id=&quot;MAJz&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;0.99 — Сильная положительная корреляция&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;KPdP&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;uX6Q&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;QExZ&quot;&gt;&lt;strong&gt;Вопрос 12. Сравнивается два метода обучения студентов (традиционный и интерактивный) по результатам итогового экзамена. Распределение результатов не является нормальным. При применении критерия Манна-Уитни обнаруживается, что статистика U равна О. Какое из следующих утверждений наиболее точно описывает ситуацию?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;ZFaT&quot;&gt;&lt;strong&gt;Варианты ответов:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;GgYt&quot;&gt;1.            Существует статистическая ошибка в расчетах, поскольку U не может быть равно О&lt;/p&gt;
  &lt;p id=&quot;iZFv&quot;&gt;2.            Распределение результатов в обеих группах идентично&lt;/p&gt;
  &lt;p id=&quot;mVHR&quot;&gt;3.            Критерий Манна-Уитни не может быть применен к данным такого типа&lt;/p&gt;
  &lt;p id=&quot;VEcN&quot;&gt;4.            Отсутствуют различия между группами, и критерий Манна-Уитни не выявил значимых результатов&lt;/p&gt;
  &lt;p id=&quot;bOE4&quot;&gt;5.            Все значения в одной группе строго меньше, чем все значения в другой группе&lt;/p&gt;
  &lt;p id=&quot;q13x&quot;&gt;Критерий Манна-Уитни нужен для сравнения двух выборок, когда распределения не обязательно нормальные.&lt;/p&gt;
  &lt;p id=&quot;ZnT2&quot;&gt;Статистика U показывает, сколько раз значение из одной группы больше, чем из другой.&lt;/p&gt;
  &lt;p id=&quot;93YE&quot;&gt;Если U = 0, значит нет ни одной пары, где бы значение из первой группы оказалось больше значения из второй.&lt;/p&gt;
  &lt;p id=&quot;YSPn&quot;&gt;То есть &lt;strong&gt;все значения одной группы строго меньше всех значений другой группы&lt;/strong&gt; — очень сильное различие.&lt;/p&gt;
  &lt;p id=&quot;GiKB&quot;&gt;&lt;strong&gt;Выбранный ответ:&lt;/strong&gt;&lt;br /&gt; &lt;strong&gt;Все значения в одной группе строго меньше, чем все значения в другой группе&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;MtiH&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;qiZh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/06/bb062459-63f5-4115-8bfc-71b4acb85e20.png&quot; width=&quot;973&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;65GX&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;opJY&quot;&gt;Вы прошли тест продвинутого уровня и разобрали каждое задание. Теперь вы умеете не просто угадывать ответы, а понимаете, почему они такие. Это главное — вы учитесь мыслить как аналитик: проверять допущения, задавать уточняющие вопросы, разбирать задачи на простые части.&lt;/p&gt;
  &lt;p id=&quot;eW21&quot;&gt;Эти навыки пригодятся в любой сфере, где важны данные и принятие решений: от IT до маркетинга и управления продуктами. Чем больше вы практикуетесь, тем увереннее будете себя чувствовать в сложных задачах и переговорах. А значит, сможете быстрее расти в профессии.&lt;/p&gt;

</content></entry></feed>