Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 144новые вакансии за сутки·93 521вакансия открыта сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 260
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 407 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 201
  • Облачные технологии14 157
  • QA вакансии3 463
  • Backend вакансии2 115
  • Инженер данных1 798
  • Продакт-менеджер1 244

Разработка

  • Android1 857
  • iOS1 695
  • Fullstack вакансии994
  • AI вакансии953
  • Frontend вакансии753
  • Mobile вакансии44

По стеку

  • Go8 726
  • Java6 581
  • Node.js2 033
  • .NET1 732
  • Kotlin1 620
  • Rust1 471
  • C#717
  • PHP690
  • C++580

DevOps и инфраструктура

  • Kubernetes7 781
  • DevOps вакансии6 083
  • Linux-инфраструктура5 502
  • Terraform / IaC4 281
  • CI/CD3 276
  • Мониторинг и Observability1 792
  • SRE567
  • Кибербезопасность455

Аналитика и данные

  • Data Scientist1 135
  • Бизнес-аналитик920
  • Аналитик данных857
  • Системный аналитик154

Другие направления

  • Проджект-менеджер624
  • UI/UX дизайн148
  • Ручное тестирование14

По регионам

  • Вакансии в США44 138
  • Вакансии в Европе24 012
  • Вакансии в Канаде4 538
  • Работа в России3 876

По формату

  • Удалённые вакансии74 981
  • Релокация в США44 150
  • Гибридная работа12 465
  • Офисная работа7 101

По уровню

  • Senior вакансии42 514
  • Middle вакансии20 897
  • Junior вакансии6 714

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • Wise189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify36 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме NumPyВсе вопросы
NumPyMiddleОпыт

Какие ключевые абстракции NumPy нужно понимать, чтобы не получать формально рабочие, но неверные результаты?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Ключевые абстракции NumPy: ndarray (strides, contiguous, view vs copy), broadcasting rules, dtype promotion и ufunc. Незнание этих концепций приводит к молчаливым ошибкам в shape, типах и значениях.

View vs Copy

Базовый slicing возвращает view; изменение view меняет оригинал. Fancy indexing (arr[[0, 2, 4]]) и булева маска (arr[arr > 0]) возвращают копию. Незнание этого правила — источник трудноуловимых мутаций:

import numpy as np

a = np.arange(6).reshape(2, 3)
b = a[0]       # view
b[:] = 99
print(a)       # [[99 99 99], [3 4 5]] — оригинал изменён!

c = a[[0]]     # fancy index — копия
c[:] = 0
print(a)       # без изменений

# Явная проверка
print(np.shares_memory(a, b))  # True
print(np.shares_memory(a, c))  # False

ndarray: strides и memory layout

Каждый np.ndarray — это буфер байт + метаданные: shape, dtype, strides, offset. Stride — количество байт до следующего элемента по каждой оси. Из одного буфера можно получить разные «виды»: transpose (arr.T), reshape, slice — всё это обычно создаёт view без копирования данных. Если stride отрицательный или массив неконтигуэнтен (arr.flags['C_CONTIGUOUS'] = False), BLAS-функции делают скрытую копию, что незаметно ломает допущения о latency.

Broadcasting

NumPy автоматически расширяет размерности при несовпадении shapes, выравнивая их справа. Правило: ось с размером 1 «растягивается» до другого размера. Формально рабочий, но неверный код часто возникает здесь:

a = np.ones((3, 4))
b = np.ones((4,))   # shape (4,) -> (1,4) -> (3,4) — ОК
c = np.ones((3,))   # shape (3,) -> (3,1) -> (3,4) — НЕ ОК если ждёшь (3,)
# Решение: явный reshape
c_col = c[:, np.newaxis]  # (3,1) явно
result = a * c_col        # (3,4) — намерение прозрачно

dtype promotion и целочисленное переполнение

NumPy выбирает dtype результата по правилам promotion. int8 + int8 = int8 — переполнение молчаливо оборачивается. int32 * float32 = float64 — неожиданный апкаст удваивает память. Всегда проверяйте result.dtype явно или передавайте out= массив нужного типа:

x = np.array([200], dtype=np.int8)
print(x + x)  # [-56] — overflow без предупреждения!

# Явный контроль
result = np.empty_like(x, dtype=np.int16)
np.add(x, x, out=result)
print(result)  # [400] — верно

ufunc и метод reduce

Universal functions (np.add, np.multiply и др.) — векторизованные операции с поддержкой .reduce, .accumulate, .outer. Непонимание того, что np.sum по умолчанию аккумулирует в исходном dtype, приводит к ошибкам: np.sum(np.ones(1000, dtype=np.int8)) переполнится. Решение: np.sum(..., dtype=np.int64).

Подводные камни

  • Молчаливое переполнение int8/int16: результат формально вычислен, но неверен; нет исключения, нет предупреждения.
  • Непреднамеренная мутация через view: передача среза в функцию, которая пишет in-place, меняет исходный массив.
  • Broadcasting с лишним измерением: arr.reshape(-1, 1) - arr создаёт матрицу N×N, а не вектор N — расход памяти O(N²).
  • np.nan в целочисленных массивах: int-dtype не поддерживает NaN; np.nan силит dtype к float64, что меняет поведение и размер.
  • Использование Python float в смешанном выражении: Python float — всегда float64, поэтому arr_f32 + 0.1 возвращает float64-массив.
  • Ignored axis в статистических функциях: np.mean(matrix) без axis= агрегирует всё в скаляр, что маскирует баги в pipeline.
  • Неконтигуэнтный массив после transpose: arr.T — view с изменёнными strides; передача в C-extension без np.ascontiguousarray даёт неверные результаты.
  • Строки в object-array: np.array(["a", "b"]) создаёт dtype=object; векторизация не работает, операции медленные как обычный Python.

Что портит ответ

  • Знать термины NumPy, но не понимать связи между абстракциями
  • Объяснять поведение через отдельные примеры вместо причинной модели
  • Не связывать mental model с диагностикой ошибок

Что слушает интервьюер

  • Понимает ключевые абстракции NumPy
  • Может предсказывать поведение системы через mental model
  • Связывает модель с debugging и production decisions

Как вы знаете этот вопрос?

Проверить себя по теме NumPy →
←Предыдущий вопросКак выполнять матричное умножение в NumPy — `@`, `np.dot()` и `np.matmul()` — в чём разница?Следующий вопрос→Как проверять корректность решения на NumPy, а не только успешное выполнение кода?

Связанные темы

NumPysystems-thinkingtechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

  • 📑 Вакансия Junior Data Scientist / ML Engineer

Частые вопросы на собеседовании

  • Что такое универсальные функции (ufuncs) в NumPy и почему они эффективны?
  • Что такое NumPy и почему он быстрее нативных списков Python для числовых вычислений?
  • Как расположение памяти (C-order vs Fortran-order) влияет на производительность массивов NumPy?
  • В каких data/AI-задачах NumPy даёт реальный выигрыш, а где лучше выбрать другой инструмент или более простой pipeline?