Kotlin | Вопросы собесов

channel icon
Разбираем вопросы с собеседований на Android разработчка. Kotlin / Java

Сайт: easyoffer.ru

Условия размещения

Цена за 48 часов в ленте 2100,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
-2
2 372
подписчиков
+11
641
охват 1 публикации
0
~3
постов / день
+0,5%
27,0%
ERR % ?

Статистика

Последние публикации

Kotlin | Вопросы собесов
21 декабря 2024 г. 19:10
🤔🤔 В чем отличие между job и supervisor job?

Job управляет выполнением корутины и завершает её при возникновении ошибки. SupervisorJob позволяет дочерним корутинам продолжать выполнение, даже если одна из них завершилась с ошибкой. Это полезно для создания устойчивых структур, где сбой одной задачи не влияет на другие.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
21 декабря 2024 г. 15:40
Откройте подписку на Кинопоиск и Музыку за 1₽Откройте подписку на Кинопоиск и Музыку за 1₽

Ответьте на 1 вопрос и получите в подарок доступ к Кинопоиску, Музыке и Книгам на 60 дней за 1 рубль.

✨ Сервисы будут доступны не только для Вас, но и для трёх ваших близких

ПопробоватьПопробовать

#реклама 18+
kinopoisk.ru

О рекламодателе
Реклама на Яндексе
Kotlin | Вопросы собесов
21 декабря 2024 г. 12:10
🤔 Какой минус есть у виртуальных таблиц?Какой минус есть у виртуальных таблиц?

Виртуальные таблицы, такие как те, что используются в SQLite с помощью CREATE VIRTUAL TABLE, предлагают мощные возможности для работы с данными. Однако они также имеют некоторые недостатки.

🟠Ограниченная поддержка стандартных функций SQL
Виртуальные таблицы могут не поддерживать все стандартные функции и возможности SQL, такие как ограничения (constraints), триггеры и определенные типы индексов. Это связано с тем, что их функциональность определяется модулем, который реализует виртуальную таблицу.
CREATE VIRTUAL TABLE my_virtual_table USING fts4(content TEXT);


🟠Производительность
Виртуальные таблицы могут иметь производительность ниже, чем обычные таблицы, особенно если они не оптимизированы должным образом. Производительность может пострадать из-за дополнительных накладных расходов, связанных с обработкой виртуальных таблиц на уровне приложения или расширений.

🟠Сложность реализации и обслуживания
Использование виртуальных таблиц требует дополнительных знаний и опыта в разработке и обслуживании. Например, вам может потребоваться написать и поддерживать специализированные модули или расширения для реализации виртуальных таблиц, что увеличивает сложность кода и потенциальные затраты на поддержку.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
20 декабря 2024 г. 16:10
Дарим подписку на Яндекс МузыкуДарим подписку на Яндекс Музыку

Ответьте на 1 вопрос и Яндекс Музыка для вас и 3-х ваших близких 60 дней бесплатно.
Кинопоиск и Яндекс Книги тоже в подписке.
Попробуйте сейчас❤️

ПопробоватьПопробовать

#реклама 18+
music.yandex.ru

О рекламодателе
Реклама на Яндексе
Kotlin | Вопросы собесов
20 декабря 2024 г. 12:10
🤔 Как в реляционной таблице сохранить уникальную для каждого элемента информацию?Как в реляционной таблице сохранить уникальную для каждого элемента информацию?

Для сохранения уникальной информации для каждого элемента в реляционной таблице используются уникальные ключи и различные типы ограничений. В реляционных базах данных уникальные ключи обеспечивают уникальность данных в столбцах, предотвращая дублирование.

🟠Первичный ключ (Primary Key)
Первичный ключ уникально идентифицирует каждую строку в таблице. Таблица может иметь только один первичный ключ, состоящий из одного или нескольких столбцов.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
department_id INT
);


🟠Уникальные ограничения (Unique Constraints)
Уникальные ограничения гарантируют, что значения в одном или нескольких столбцах будут уникальными.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE,
name VARCHAR(100),
department_id INT
);


🟠Автоматическое инкрементирование (Auto-Increment)
Автоинкрементирование используется для автоматической генерации уникальных значений для столбца. Обычно используется для первичных ключей.
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
department_id INT
);


🟠Индексы
Индексы помогают ускорить поиск и обеспечивают уникальность данных в столбцах, когда используется уникальный индекс.
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
department_id INT
);

CREATE UNIQUE INDEX idx_email ON employees(email);


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
19 декабря 2024 г. 19:10
🤔🤔 Как будут вести себя LinkedList и ArrayList, если вставить в них элемент?

В LinkedList вставка в начало или середину имеет сложность O(1), так как требуется только обновление ссылок, но доступ к элементу занимает O(n). В ArrayList вставка занимает O(n) из-за необходимости сдвига элементов, но доступ по индексу — O(1).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
19 декабря 2024 г. 13:08
Мужские дезодоранты и гели для душа AXEМужские дезодоранты и гели для душа AXE

⚡Попробуй мужские дезодоранты и гели для душа AXE с топовыми ароматами!
👌Сохрани свою свежесть надооооолго. Выбери свой аромат на Ozon со скидкой до 30%! Все, как ты любишь!❤️ Без шуток.

ПопробоватьПопробовать

#реклама
ozon.ru

О рекламодателе
Kotlin | Вопросы собесов
19 декабря 2024 г. 12:10
🤔 В какой структуре данных можно оптимизировать запросы?В какой структуре данных можно оптимизировать запросы?

Для оптимизации запросов к базам данных можно использовать различные структуры данных и индексы, которые ускоряют операции поиска и соединения.

🟠B-деревья (B-Trees) и B+-деревья (B+ Trees)
B-деревья и их модификация, B+-деревья, являются сбалансированными деревьями поиска, которые широко используются для построения индексов в базах данных.
Быстрый поиск, вставка и удаление: Операции поиска, вставки и удаления выполняются за O(log n).
Эффективное использование дискового пространства: B-деревья хорошо подходят для хранения на диске, так как минимизируют количество операций ввода-вывода.

🟠Хеш-таблицы
Хеш-таблицы используются для быстрого доступа к данным по ключу. В базах данных часто используются хеш-индексы.
Мгновенный доступ: Операции поиска, вставки и удаления выполняются в среднем за O(1).
Подходят для равенств: Эффективны для запросов с условием равенства (например, WHERE id = 123).Неэффективны для диапазонов: Хеш-индексы не подходят для запросов с диапазонами (например, WHERE age BETWEEN 20 AND 30).

🟠Bitmap индексы
Bitmap индексы используют битовые карты для представления данных и часто используются для столбцов с низкой кардинальностью (небольшое количество уникальных значений).
Эффективное хранение: Особенно эффективны для столбцов с низкой кардинальностью.
Быстрые логические операции: Позволяют быстро выполнять логические
Неэффективны для частых обновлений: Не подходят для таблиц с частыми операциями вставки и обновления.

🟠Реверсные индексы (Inverted Indexes)
Реверсные индексы используются для полнотекстового поиска. Они хранят сопоставления терминов и документов, в которых эти термины встречаются.
Быстрый полнотекстовый поиск: Позволяют эффективно выполнять поиск по текстовым данным.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
18 декабря 2024 г. 19:10
🤔🤔 Какое главное отличие между Java и Kotlin касательно абстрактных классов и методов?

В Kotlin абстрактные классы и методы по умолчанию open, что позволяет их переопределять без явного указания модификатора open. В Java абстрактные методы всегда подразумевают переопределение, а обычные методы должны быть явно помечены abstract или final.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
18 декабря 2024 г. 17:04
Продажа премиальных апартаментов в Сочи с выгодой!Продажа премиальных апартаментов в Сочи с выгодой!

⚡500 метров до моря
- Доход от 2 млн/год
- Ремонт от застройщика
- SPA и тренажерный зал
- Бассейны и рестораны

✅ Узнайте больше на сайте:


Перейти на сайтПерейти на сайт

#реклама
mrqz.me

О рекламодателе
Kotlin | Вопросы собесов
18 декабря 2024 г. 12:10
🤔 Как выглядит алгоритм запроса данных из двух таблиц и какая у него сложность?Как выглядит алгоритм запроса данных из двух таблиц и какая у него сложность?

Запрос данных из двух таблиц обычно выполняется с помощью операции объединения (JOIN) в SQL. Алгоритм и его сложность зависят от типа объединения, структуры данных и используемой базы данных.

🚩Пример запроса

Предположим, у нас есть две таблицы: employees и departments. Мы хотим получить список сотрудников вместе с их отделами.
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;


🚩🚩Алгоритмы выполнения JOIN

1⃣Nested Loop Join (Вложенные циклы)
Для каждой строки из первой таблицы выполняется поиск соответствующих строк во второй таблице.
for each row in employees:
for each row in departments:
if row.employees.department_id == row.departments.id:
yield (row.employees.name, row.departments.name)


2⃣Hash Join (Хеш-объединение)
Создается хеш-таблица для одной из таблиц на основе ключа соединения. Для каждой строки из другой таблицы проверяется наличие соответствующего ключа в хеш-таблице.
hash_table = {}
for each row in departments:
hash_table[row.id] = row.name
for each row in employees:
if row.department_id in hash_table:
yield (row.name, hash_table[row.department_id])


3⃣Sort-Merge Join (Сортировка и слияние)
Обе таблицы сортируются по ключу соединения, затем выполняется слияние отсортированных списков.
sorted_employees = sort(employees, key=lambda x: x.department_id)
sorted_departments = sort(departments, key=lambda x: x.id)
i, j = 0, 0
while i < len(sorted_employees) and j < len(sorted_departments):
if sorted_employees[i].department_id == sorted_departments[j].id:
yield (sorted_employees[i].name, sorted_departments[j].name)
i += 1
j += 1
elif sorted_employees[i].department_id < sorted_departments[j].id:
i += 1
else:
j += 1


Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
18 декабря 2024 г. 10:00
А вы знали что?...

🕵️В Windows есть папка, которая собирает на вас компромат!

Посмотрите видео выше — насколько легко узнать всю информацию о вас

Простых способов узнать о вас практически всё — сотни, и если вы хотите соблюдать хотя бы минимум сетевой гигиены — подпишитесь на IT ВЕДОМСТВО

Они рассказывает о признаках майнеров, как удалить трояны и порно-баннеры за 5 минут

Помимо всего этого, сейчас владелец канала проводит розыгрыш умной колонки, для всех новоприбывших подписчиков

💻 Подписываемся на IT ВЕДОМСТВОIT ВЕДОМСТВО — выигрываем призы и соблюдаем цифровую гигиену
Kotlin | Вопросы собесов
17 декабря 2024 г. 19:10
🤔🤔 Что такое dp?

dp (Density-independent Pixels) — это единица измерения в Android, используемая для создания адаптивных интерфейсов. Она масштабируется в зависимости от плотности экрана устройства, обеспечивая одинаковый визуальный размер элементов на разных экранах.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
17 декабря 2024 г. 17:07
Как избавиться от долгов за 200 000 руб? Узнай на сайте!Как избавиться от долгов за 200 000 руб? Узнай на сайте!

Списание всех долгов через банкротство за 200 тыс. руб.
🏠 Бережно сохраним ваше имущество!
Дистанционно! Никуда ходить не надо!Дистанционно! Никуда ходить не надо!

✅ Узнать подробнее на сайте
https://da-bankrot.ru/tg

👍 Нет долгов? Помоги другу!
Получи 10 тыс. руб. за приведённого друга
https://da-bankrot.ru/s/9

Подать заявкуПодать заявку

#реклама
дабанкрот.рф

О рекламодателе
Kotlin | Вопросы собесов
17 декабря 2024 г. 12:10
🤔 Как автоматически находить, что отрисовка не успевает отрабатывать?Как автоматически находить, что отрисовка не успевает отрабатывать?

Автоматическое обнаружение проблем с отрисовкой в Android-приложениях может быть выполнено с использованием различных инструментов и техник.

🟠Использование Choreographer
Choreographer - это класс, который позволяет получить информацию о времени отрисовки кадра. Вы можете использовать его для отслеживания задержек в отрисовке.
🟠Использование инструмента Android Profiler
Android Studio предоставляет встроенные инструменты профилирования, которые могут помочь обнаружить проблемы с производительностью, включая задержки в отрисовке.

🚩Шаги

1⃣Открытие Android Profiler
Откройте Android Studio и запустите свое приложение. Перейдите в раздел View -> Tool Windows -> Profiler.
2⃣Запуск профилирования
Выберите ваше устройство и процесс. Нажмите на вкладку CPU для профилирования использования процессора. Нажмите на вкладку Graphics для мониторинга отрисовки и обновления экрана.
3⃣Анализ данных
Просмотрите данные, чтобы определить, какие части вашего кода вызывают задержки в отрисовке. Обратите внимание на длинные фреймы (кадры), которые могут указывать на проблемы.
4⃣Использование adb команды для проверки кадров
Вы можете использовать adb shell dumpsys gfxinfo для получения информации о времени отрисовки кадров.

🚩Шаги

1⃣Запуск команды
adb shell dumpsys gfxinfo  framestats


2⃣Анализ вывода
Команда предоставляет информацию о каждом кадре, включая время его отрисовки. Вы можете анализировать вывод, чтобы найти кадры, которые заняли больше времени, чем ожидается (больше 16.67 мс).

3⃣Использование FrameMetrics API
Начиная с API 24 (Android 7.0), вы можете использовать FrameMetrics API для получения подробной информации о производительности отрисовки.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
16 декабря 2024 г. 19:10
🤔🤔 Для чего нужны inline функции?

Inline-функции в Kotlin позволяют встроить тело функции непосредственно в место её вызова, что уменьшает накладные расходы на вызовы функций и повышает производительность. Это особенно полезно при работе с лямбда-выражениями, так как позволяет избежать создания объектов для лямбд и снижает нагрузку на сборщик мусора. Inline-функции полезны для простых функций, которые часто вызываются в циклах или асинхронных операциях. Они позволяют писать оптимизированный и эффективный код.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
16 декабря 2024 г. 12:10
🤔 Как система понимает, что WeakReference можно очистит?Как система понимает, что WeakReference можно очистит?

Система определяет, что объект, на который ссылается WeakReference, можно очистить, используя механизм сборщика мусора (Garbage Collector, GC).

🚩Механизм работы WeakReference и GC

🟠Сильные ссылки и слабые ссылки
Сильные ссылки (Strong Reference): Объекты, на которые имеются сильные ссылки, не подлежат сборке мусора.
Слабые ссылки (Weak Reference): Объекты, на которые имеются только слабые ссылки, могут быть собраны сборщиком мусора.

🟠Создание слабой ссылки
Когда создается WeakReference, она содержит слабую ссылку на объект, позволяя GC собирать объект, даже если WeakReference все еще существует.
   MyObject myObject = new MyObject();
WeakReference weakRef = new WeakReference<>(myObject);


🟠Работа сборщика мусора
Определение доступности объекта: GC проверяет объекты в памяти и их ссылки. Если на объект нет сильных ссылок (только слабые), он считается недоступным и подлежит сборке.
Сборка мусора: GC освобождает память, занимаемую объектом, и удаляет записи о слабых ссылках.
Очистка WeakReference: Когда объект собирается, WeakReference автоматически очищается, и метод get() начинает возвращать null.

🟠Пример работы
После создания слабой ссылки и удаления сильной ссылки, объект становится кандидатом на сборку мусора. После вызова System.gc(), если на объект больше нет сильных ссылок, он будет собран, а WeakReference будет очищена.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
15 декабря 2024 г. 19:10
🤔🤔 Как будут вести себя LinkedList и ArrayList, если вставить в них элемент?

В LinkedList вставка в начало или середину имеет сложность O(1), так как требуется только обновление ссылок, но доступ к элементу занимает O(n). В ArrayList вставка занимает O(n) из-за необходимости сдвига элементов, но доступ по индексу — O(1).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 📚 Базу знанийБазу знаний
Kotlin | Вопросы собесов
15 декабря 2024 г. 15:38
Миграция в облако? Это легко!Миграция в облако? Это легко!

Собственная инфраструктура устарела или не справляется с нагрузками? Используйте облачные ресурсы! Эксперты Yandex Cloud помогут перейти в облако быстро, легко и безопасно.

✅ Мы полностью сопровождаем процесс.
✅ От вас — только инженер с доступом к инфраструктуре.
✅ Архитектура под ваши задачи, миграция и поддержка на каждом шагу — всё включено.

⚡Переходите в Yandex Cloud и забудьте о старом железе. А если успеете подать заявку до 31 декабря, мы покроем расходы на инженеров и тестовую инфраструктуру.

Подать заявкуПодать заявку

#реклама 16+
yandex.cloud

О рекламодателе
Реклама на Яндексе
Kotlin | Вопросы собесов
15 декабря 2024 г. 12:10
🤔 Как мы можем сохранить объект на какое-то время?Как мы можем сохранить объект на какое-то время?

Может быть достигнуто с использованием различных подходов в зависимости от ваших требований.

🟠Использование `Handler` и `Runnable`
Вы можете использовать Handler и Runnable для отложенного выполнения задач и сохранения объекта на определенное время в памяти.

🟠Использование `CountDownTimer`
CountDownTimer может быть использован для выполнения задачи через определенное время, что может быть полезно для освобождения объекта.

🟠Использование `ScheduledExecutorService`
ScheduledExecutorService предоставляет методы для планирования задач с задержкой или периодическим выполнением.

🟠Использование `WeakReference`
Использование слабых ссылок (WeakReference) позволяет вам контролировать срок жизни объекта в памяти, но при этом объект может быть собран сборщиком мусора, если на него больше нет сильных ссылок.

Ставь 👍👍 и забирай 📚 📚 Базу знанийБазу знаний