cookie

نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك. بالنقر على "قبول الكل"، أنت توافق على استخدام ملفات تعريف الارتباط.

avatar

Data Science | Вопросы собесов

Разбираем вопросы с собеседований на Data Scientist. Сайт: https://easyoffer.ru/ Предложения: @easyoffer_adv

إظهار المزيد
avatarNetwork:easyofferروسيا147 020الروسية159 072الفئة غير محددة
مشاركات الإعلانات
2 347
المشتركون
+14524 ساعات
+2337 أيام
+99730 أيام

جاري تحميل البيانات...

معدل نمو المشترك

جاري تحميل البيانات...

В чем различия между методами apply и applymap ? Спросят с вероятностью 14% Методы apply и applymap используются для применения функций к данным, но они работают на разных уровнях и имеют разные области применения. Метод apply Можно использовать как с объектами DataFrame, так и с Series для применения функции вдоль оси данных: ✅DataFrame: Применяется к каждой строке или столбцу в DataFrame. Можно указать ось для применения функции (axis=0 для столбцов, axis=1 для строк). ✅Series: Применяется к каждому элементу в Series. apply часто используется для агрегирующих функций, преобразований или для выполнения более сложной логики, которая включает в себя множество значений в строке или столбце. Пример использования на DataFrame:
import pandas as pd

df = pd.DataFrame({
    'A': range(1, 5),
    'B': range(10, 50, 10)
})

# Применение функции к каждому столбцу (по умолчанию axis=0)
result = df.apply(lambda x: x + 10)
print(result)
Пример использования на Series:
s = pd.Series([1, 2, 3])
result = s.apply(lambda x: x**2)
print(result)
Метод applymap Используется только с объектами DataFrame и применяется к каждому элементу в DataFrame. Этот метод подходит для поэлементных преобразований, таких как применение математических функций или форматирование строк.
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# Применение функции ко всем элементам DataFrame
result = df.applymap(lambda x: x**2)
print(result)
Основные различияОбласть применения: apply можно использовать как для строк и столбцов, так и для отдельных элементов в Series, в то время как applymap применяется только к каждому элементу DataFrame. ✅Использование: apply более универсален и мощен для разных типов операций, включая агрегации и более сложные преобразования, тогда как applymap ориентирован на поэлементные операции в DataFrame. apply используется для выполнения операций на целых строках или столбцах либо на элементах серий, делая его мощным инструментом для разных задач. applymap хорош для выполнения действий с каждым отдельным элементом таблицы, делая его удобным для простых, повторяющихся преобразований. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...
👍 5
Зачем нужен метод dir для объектов ? Спросят с вероятностью 14% Метод dir() используется для автоматического перечисления атрибутов, методов и других идентификаторов, которые доступны для любого объекта. Это полезный инструмент для исследования и интерактивного программирования, особенно когда вы работаете с новыми библиотеками или объектами, структура и свойства которых вам не полностью известны. Зачем нужен dir() 1️⃣Интроспекция: Используется для интроспекции объектов, то есть для определения, какие свойства и методы они имеют. Это особенно полезно в средах разработки, где вы можете не знать точной структуры объекта. 2️⃣Отладка: Помогает понять объекты, с которыми они работают, что может значительно облегчить отладку кода, позволяя быстро проверить, какие методы и атрибуты доступны для объекта. 3️⃣Рефлексия: Это свойство, позволяющее программе манипулировать своими частями. С помощью dir() можно получить список, содержащий имена всех атрибутов, которые доступны в объекте, что может быть использовано для рефлексивного доступа к атрибутам и методам. Как она работает Когда вы вызываете dir() для объекта, возвращает список строк. Каждая строка — это имя атрибута или метода, доступного для объекта. Если вызвать dir() без аргументов, то будет возвращен список имен в текущей локальной области видимости.
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def start(self):
        print("Машина заведена")

car = Car("Toyota", "Corolla")

# Выведем список всех атрибутов и методов объекта car
print(dir(car))
В этом списке будут имена вроде __init__, start, а также множество других, наследуемых от базового класса object. Метод dir() помогает увидеть, что умеет объект: какие у него есть "кнопки" и "рычажки" (методы и свойства). Это как заглянуть внутрь игрушки, чтобы понять, из чего она сделана и как она работает. Это делает разработку более удобной и понятной, помогая быстро найти, что можно сделать с объектом. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...
👍 4
Зачем нужен self super ? Спросят с вероятностью 14% В Python self и super() используются в контексте классов и объектно-ориентированного программирования (ООП). Они играют важные роли в определении и управлении поведением классов и их экземпляров. self self — это ссылка на текущий экземпляр класса. Используется внутри методов класса для доступа к атрибутам и методам этого же объекта. Это не ключевое слово в Python, а просто соглашение между программистами о названии первого аргумента метода в классе. Использование self позволяет однозначно указать, что операция или вызов метода относится к текущему объекту. Пример использования self:
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def display_info(self):
        print(f"Автомобиль {self.make} модель {self.model}")

car = Car("Toyota", "Corolla")
car.display_info()  # Вывод: Автомобиль Toyota модель Corolla
super() super() используется для вызова методов родительского класса. Это полезно, когда происходит наследование, и вы хотите расширить или изменить поведение методов в наследуемом классе, при этом не переопределяя родительскую функциональность полностью. super() возвращает временный объект родительского класса, через который можно вызывать его методы. Пример использования super():
class Vehicle:
    def __init__(self, category):
        self.category = category

class Car(Vehicle):
    def __init__(self, make, model):
        super().__init__('Transport')  # Вызов __init__ родительского класса
        self.make = make
        self.model = model

car = Car("Toyota", "Corolla")
print(car.category)  # Вывод: Transport
Зачем они нужны:`self`: Используется для обращения к атрибутам и методам текущего экземпляра, что позволяет методам класса работать с данными конкретного объекта. ✅`super()`: Позволяет классам наследовать и расширять функциональность родительских классов без необходимости полного их переопределения. Это способствует повторному использованию кода и упрощает управление изменениями в иерархии классов. self — это как паспорт объекта, он показывает, что методы и данные принадлежат конкретному объекту. super() используется, когда мы хотим добавить к своим возможностям возможности наших программных "родителей", не заменяя их полностью. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...

👍 2
Чем отличаются str и repr ? Спросят с вероятностью 14% Функции str() и repr() используются для получения строкового представления объектов, но они служат разным целям и работают по-разному. Функция str() Предназначена для получения "приятного" строкового представления объекта, которое может быть представлено пользователю. Она старается сделать строку более читабельной и понятной. Если метод __str__() не определен в классе объекта, использует метод __repr__() как запасной вариант.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name}, возраст {self.age} лет"

person = Person("Иван", 30)
print(str(person))  # Вывод: Иван, возраст 30 лет
Функция repr() Предназначена для получения официального строкового представления объекта, которое может быть использовано для воссоздания того же объекта при помощи интерпретатора. repr() должна быть максимально точной и содержать информацию о всех атрибутах объекта. Результат repr() часто используется для отладки и разработки, так как он дает больше деталей о объекте.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person('{self.name}', {self.age})"

person = Person("Иван", 30)
print(repr(person))  # Вывод: Person('Иван', 30)
Основные отличияЦель: str() используется для удобочитаемого представления объекта, а repr() — для точного и однозначного представления, часто с целью отладки или журналирования. ✅Вывод: str() старается быть читабельным; repr() — точным и полным, позволяя воссоздать объект при помощи его вывода в интерпретаторе Python. str() делает описание объекта понятным и красивым для людей. repr() делает описание точным и полным, чтобы программисты могли понять все детали объекта или даже воссоздать объект по этому описанию. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...

👍 2
Photo unavailableShow in Telegram
🔥Тесты для подготовки к собеседованию🔥 Выбери своё направление: 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. С/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift
إظهار الكل...
🔥 5😁 1
Что известно про юнет ? Спросят с вероятностью 14% U-Net — это архитектура свёрточной нейронной сети (CNN), которая была специально разработана для задач семантической сегментации, то есть для процесса классификации каждого пикселя изображения на определенные категории. Особенности архитектуры: 1⃣Форма "U": Как следует из названия, архитектура сети имеет форму буквы "U", которая состоит из двух основных частей: сверточной (сжимающей) и разверточной (расширяющей). 2⃣Сжимающий путь: В первой части (левая сторона U) происходит несколько операций свертки и пулинга, которые постепенно уменьшают размер пространственных данных, увеличивая при этом глубину (количество фильтров или карт признаков). Этот путь помогает сети абстрагироваться от исходных данных и выявлять ключевые признаки. 3⃣Расширяющий путь: Вторая часть (правая сторона U) состоит из операций "апсэмплинга" или транспонированной свертки, которые увеличивают размер карт признаков, стремясь восстановить пространственные размеры исходного изображения. При этом уровни с левой стороны соединяются с правой стороной через "пропускаемые соединения". 4⃣Пропускаемые соединения (skip connections): Одна из ключевых особенностей U-Net — это наличие пропускаемых соединений, которые передают карты признаков из сверточной части непосредственно к соответствующим слоям в разверточной части. Это позволяет сети использовать как глубокую, так и поверхностную информацию для точной сегментации. Применения: Изначально архитектура была разработана для сегментации биомедицинских изображений, но благодаря своей эффективности и точности архитектура нашла применение и в других областях, таких как: ✅Анализ аэрофотоснимков; ✅Автоматическая сегментация объектов на сценах уличного движения; ✅Применение в задачах, связанных с аграрным сектором и мониторингом окружающей среды. Преимущества:Высокая точность: Демонстрирует высокую точность в задачах сегментации, особенно когда доступно ограниченное количество данных. ✅Эффективность: Архитектура позволяет достаточно эффективно использовать обучающие данные, что критично в областях с ограниченными наборами данных, как, например, в медицинской визуализации. U-Net продолжает оставаться одной из наиболее популярных архитектур для сегментации изображений, и с тех пор было предложено множество его модификаций и улучшений, направленных на повышение точности и эффективности в различных задачах. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...
🤔 2
Photo unavailableShow in Telegram
Привет! Ты сейчас ищешь работу? Если да, то у меня для тебя классные новости. Мы с Максом решили провести вебинар на тему поиска работы и того, как быстрее получить оффер. Зачем? Да потому что найти работу просто откликаясь на вакансии теперь практически нереально. На Junior вакансии откликаются по 1500 кандидатов. 1500 человек, Карл... Вопрос: Как искать работу в таких условиях? Ответ: Нужно менять подходы, и использовать новые способы поиска работы. А вот какие способы, и как искать работу в 2024 году, расскажет мой товарищ - Макс, который помогает разработчикам с трудоустройством. Он расскажет тебе как ПРАВИЛЬНО откликаться на вакансии, на что смотрят рекрутеры, и как ты должен быть упакован, чтобы получить работу в это непростое время. 🗓 Когда? Во вторник – 18 июня, в 19:00 по мск. 🎁 После регистрации он также обещал прислать: 1) Анализ рынка труда. 2) Разбор кейсов тех, кто сейчас находит работу. 3) Пошаговый план, что нужно делать, чтобы прийти к оферу. 👉 Записаться на вебинар по поиску работы.
إظهار الكل...
1
Какие принципы ООП есть ? Спросят с вероятностью 14% Объектно-ориентированное программирование (ООП) — это парадигма, основанная на концепции объектов, которые могут содержать данные в виде полей (часто называемых атрибутами или свойствами) и код в виде процедур (часто называемых методами). Основные принципы ООП включают: 1️⃣Инкапсуляция Это ограничение доступа к некоторым компонентам объекта и скрытие внутренней реализации от внешнего мира. Это позволяет защитить данные объекта от неправильного использования и является мощным инструментом для управления сложностью программ.
class Account:
    def __init__(self, owner, amount=0):
        self.owner = owner
        self.__balance = amount  # Приватная переменная

    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
            print(f"Добавлено {amount} на баланс")
        else:
            print("Депозит должен быть положительным числом")

    def show_balance(self):
        print(f"Баланс: {self.__balance}")
2️⃣Наследование Позволяет новому классу перенимать свойства и методы уже существующего класса. Это обеспечивает повторное использование кода и установление иерархических отношений между классами. Пример на Python:
class Vehicle:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    def start_engine(self):
        print("Двигатель запущен")

class Car(Vehicle):  # Класс Car наследует от класса Vehicle
    def open_trunk(self):
        print("Багажник открыт")
3️⃣Полиморфизм Это возможность использовать объекты с одинаковым интерфейсом без информации о конкретных типах и внутренней структуре объектов. В ООП это чаще всего достигается с помощью переопределения методов (method overriding) и перегрузки методов (method overloading). Пример на Python (переопределение методов):
class Bird:
    def fly(self):
        print("Летит как птица")

class Eagle(Bird):
    def fly(self):
        print("Летит как орел")

class Penguin(Bird):
    def fly(self):
        print("Не умеет летать")
4️⃣Абстракция Подразумевает выделение ключевых, существенных характеристик объекта, исключая из рассмотрения незначительные. Это упрощает программирование и управление сложностью.
from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

    @abstractmethod
    def perimeter(self):
        pass

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def perimeter(self):
        return 2 * (self.width + self.height)
Основные принципы ООП включают инкапсуляцию (защита данных внутри класса), наследование (расширение функциональности существующих классов), полиморфизм (один интерфейс для разных типов действий) и абстракцию (сосредоточение на важных характеристиках объектов). Эти принципы помогают делать программы более модульными, понятными и легкими для управления. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...

👍 8
Photo unavailableShow in Telegram
Почему тебя не зовут на интервью? Исправь это в своем резюме… Получить приглашение на интервью сейчас сложнее, чем с нуля обучиться разработке. И к сожалению, это не шутка. Скорее всего только 1-2% работодателей сейчас позовут тебя на интервью. Это статистика, которую мы собирали по 10.000 откликам. Но над этой цифрой можно и нужно работать. Если правильно оформить свое резюме, и поменять свою стратегию с откликами, то конверсию можно увеличить до 10%. Т.е почти в 10 раз! Как это сделать? 1. Проверить свое резюме по нашему чек листу, и внести в него то, чего будет не хватать. 2. Поменять свой подход к поиску работы, ведь одними откликами на hh.ru сыт не будешь. 18 июня, в 18:00 по москве, мы вместе с Максом из CodeReview проведем вебинар на тему эффективного поиска работы в 2024 году. На нем Макс покажет как сейчас нужно искать работу. В прямом эфире. А также раскроет что именно нужно писать в свое резюме, чтобы оно ПРОДАВАЛО. Получить чек лист по составлению резюме, а также зарегистрироваться на вебинар можно по этой ссылке. Регистрируйся сейчас и увидимся 18 июня, в 18:00 по мск. 👉 Зарегистрироваться и получить чек-лист по резюме.
إظهار الكل...
Что известно про градиентный взрыв ? Спросят с вероятностью 14% Градиентный взрыв — это проблема, с которой сталкиваются в обучении нейронных сетей, особенно в глубоких сетях и рекуррентных нейронных сетях (RNN). Эта проблема возникает, когда величина градиентов увеличивается экспоненциально во время обратного распространения ошибки по сети. В результате обновления весов становятся настолько большими, что они могут привести к нестабильности процесса обучения или даже к полному разрушению модели из-за числового переполнения или выдачи NaN значений. Градиентный взрыв обычно происходит по нескольким причинам: 1️⃣Глубокие архитектуры: В очень глубоких нейронных сетях, каждый слой умножает градиенты, которые проходят через него в процессе обратного распространения. Если градиенты имеют величину больше единицы, они могут увеличиваться экспоненциально с каждым слоем, что приводит к градиентному взрыву. 2️⃣Высокие значения весов: Если начальные веса слишком велики или если метод обновления весов не ограничивает их рост, это также может привести к быстрому увеличению градиентов. 3️⃣Нелинейные активации: Некоторые активационные функции, такие как tanh или ReLU, могут усиливать величину градиентов в зависимости от входных данных. Способы борьбы с градиентным взрывом: 1️⃣Клиппинг градиентов (Gradient Clipping): Это наиболее распространённый метод борьбы с градиентным взрывом. Он заключается в ограничении (обрезке) градиентов, когда они превышают определённый порог, что предотвращает слишком большие шаги обновления весов. 2️⃣Использование оптимизаторов с адаптивными скоростями обучения: Оптимизаторы, такие как Adam, Adagrad или RMSprop, адаптируют скорость обучения для каждого параметра, что может помочь уменьшить вероятность взрыва градиентов. 3️⃣Правильная инициализация весов: Использование методов инициализации, таких как инициализация Хе или Глорота (Xavier), может помочь предотвратить слишком высокие начальные величины градиентов. 4️⃣Использование управляемых архитектур: Проектирование сети таким образом, чтобы она содержала меньше слоёв или использовала пропускающие соединения (как в ResNet), может помочь уменьшить риск градиентного взрыва, облегчая прохождение градиентов через архитектуру без значительного увеличения их величины. Градиентный взрыв может серьёзно нарушить процесс обучения нейронной сети, поэтому важно использовать эти стратегии для обеспечения стабильности и эффективности обучения. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
إظهار الكل...