#вопросы_с_собеседований
Что такое «фикстуры»?
Что такое «фикстуры»?
Фикстуры
(fixtures
) - состояние среды тестирования, которое требуется для успешного выполнения теста. Основная задача фикстур заключается в подготовке тестового окружения с заранее фиксированным/известным состоянием, чтобы гарантировать повторяемость процесса тестирования.Как написать свой первый автотест за 1 час?
Посетить открытое занятие курса "Автоматизация тестирования на Java" от ребят из школы автоматизации QA.GURU бесплатное открытое занятие состоится 18-го мая в 20:00 МСК.
Почему надо сходить:
— Разработаем ваш первый (или не первый) автотест на поиск в Google
—Расскажут о рынке QA🔥 Кто, кому, за что и сколько платит?
— Покажут боевой проект с полной инфраструктурой (Web, mobile, API)
— Дадут домашнее задание и проверят его.
Занятие бесплатное — для участия вступайте в чат @qa_guru_chat — ссылка на занятие будет там.
Посетить открытое занятие курса "Автоматизация тестирования на Java" от ребят из школы автоматизации QA.GURU бесплатное открытое занятие состоится 18-го мая в 20:00 МСК.
Почему надо сходить:
— Разработаем ваш первый (или не первый) автотест на поиск в Google
—Расскажут о рынке QA🔥 Кто, кому, за что и сколько платит?
— Покажут боевой проект с полной инфраструктурой (Web, mobile, API)
— Дадут домашнее задание и проверят его.
Занятие бесплатное — для участия вступайте в чат @qa_guru_chat — ссылка на занятие будет там.
☕️ ТОП-20 бесплатных учебных курсов по Java для новичков
Популярность Java не спадает и только набирает обороты. Представляем лучшие бесплатные курсы для его изучения начинающим разработчикам.
https://proglib.io/sh/O3826tAiV0
Популярность Java не спадает и только набирает обороты. Представляем лучшие бесплатные курсы для его изучения начинающим разработчикам.
https://proglib.io/sh/O3826tAiV0
Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
ArrayList:
• доступ к произвольному элементу по индексу за константное время
• доступ к элементам по значению за линейное время
• вставка в конец в среднем производится за константное время
• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
• на добавление и удаление в начало или конец списка потребуется константное
• вставка или удаление в/из произвольного место константное
• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
ArrayList
это список, реализованный на основе массива, а LinkedList
— это классический двусвязный список, основанный на объектах с ссылками между ними.ArrayList:
• доступ к произвольному элементу по индексу за константное время
O(1)
;• доступ к элементам по значению за линейное время
O(N)
;• вставка в конец в среднем производится за константное время
O(1)
;• удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (
capacity
) не изменяется);• вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо;
• минимум накладных расходов при хранении.
LinkedList:
• на получение элемента по индексу или значению потребуется линейное время
O(N)
;• на добавление и удаление в начало или конец списка потребуется константное
O(1)
;• вставка или удаление в/из произвольного место константное
O(1)
;• требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка.
В целом,
LinkedList
в абсолютных величинах проигрывает ArrayList
и по потребляемой памяти, и по скорости выполнения операций. LinkedList
предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.#вопросы_с_собеседований
Какое худшее время работы метода contains() для элемента, который есть в LinkedList?
Какое худшее время работы метода contains() для элемента, который есть в LinkedList?
O(N)
. Время поиска элемента линейно пропорционально количеству элементов в списке.#вопросы_с_собеседований
Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость,
Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость,
capacity
) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize()
.#вопросы_с_собеседований
Приведите примеры основных шаблонов проектирования.
☕️ Делегирование (Delegation pattern) - Сущность внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.
☕️ Функциональный дизайн (Functional design) - Гарантирует, что каждая сущность имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие.
☕️ Неизменяемый интерфейс (Immutable interface) - Создание неизменяемого объекта.
☕️ Интерфейс (Interface) - Общий метод структурирования сущностей, облегчающий их понимание.
☕️ Интерфейс-маркер (Marker interface) - В качестве атрибута (как пометки объектной сущности) применяется наличие или отсутствие реализации интерфейса-маркера. В современных языках программирования вместо этого применяются атрибуты или аннотации.
☕️ Контейнер свойств (Property container) - Позволяет добавлять дополнительные свойства сущности в контейнер внутри себя, вместо расширения новыми свойствами.
☕️ Канал событий (Event channel) - Создаёт централизованный канал для событий. Использует сущность-представитель для подписки и сущность-представитель для публикации события в канале. Представитель существует отдельно от реального издателя или подписчика. Подписчик может получать опубликованные события от более чем одной сущности, даже если он зарегистрирован только на одном канале.
Приведите примеры основных шаблонов проектирования.
☕️ Делегирование (Delegation pattern) - Сущность внешне выражает некоторое поведение, но в реальности передаёт ответственность за выполнение этого поведения связанному объекту.
☕️ Функциональный дизайн (Functional design) - Гарантирует, что каждая сущность имеет только одну обязанность и исполняет её с минимумом побочных эффектов на другие.
☕️ Неизменяемый интерфейс (Immutable interface) - Создание неизменяемого объекта.
☕️ Интерфейс (Interface) - Общий метод структурирования сущностей, облегчающий их понимание.
☕️ Интерфейс-маркер (Marker interface) - В качестве атрибута (как пометки объектной сущности) применяется наличие или отсутствие реализации интерфейса-маркера. В современных языках программирования вместо этого применяются атрибуты или аннотации.
☕️ Контейнер свойств (Property container) - Позволяет добавлять дополнительные свойства сущности в контейнер внутри себя, вместо расширения новыми свойствами.
☕️ Канал событий (Event channel) - Создаёт централизованный канал для событий. Использует сущность-представитель для подписки и сущность-представитель для публикации события в канале. Представитель существует отдельно от реального издателя или подписчика. Подписчик может получать опубликованные события от более чем одной сущности, даже если он зарегистрирован только на одном канале.
❌ За день вряд ли исправишь сделанный впопыхах хардкод.
❌ За день нельзя выкатить фичу, на которую нужна неделя, как бы ни умолял проджект.
✅ Зато всего за день можно стать Java-разработчиком в одной из двух продуктовых команд Сбера, приняв участие в One Day Offer 21-22 мая.
• Platform V
Основной элемент технологической стратегии Сбера, предоставляющий набор PAAS-сервисов для быстрого создания и развития бизнес-приложений в облаке.
Требования к участникам и условия работы смотрите здесь: http://sber.me/?p=vp3XM
❌ За день нельзя выкатить фичу, на которую нужна неделя, как бы ни умолял проджект.
✅ Зато всего за день можно стать Java-разработчиком в одной из двух продуктовых команд Сбера, приняв участие в One Day Offer 21-22 мая.
• Platform V
Основной элемент технологической стратегии Сбера, предоставляющий набор PAAS-сервисов для быстрого создания и развития бизнес-приложений в облаке.
Требования к участникам и условия работы смотрите здесь: http://sber.me/?p=vp3XM
#вопросы_с_собеседований
Сколько необходимо дополнительной памяти при вызове ArrayList.add()?
Если в массиве достаточно места для размещения нового элемента, то дополнительной памяти не требуется. Иначе происходит создание нового массива размером в
Сколько необходимо дополнительной памяти при вызове ArrayList.add()?
Если в массиве достаточно места для размещения нового элемента, то дополнительной памяти не требуется. Иначе происходит создание нового массива размером в
1,5
раза превышающим существующий (это верно для JDK
выше 1.7
, в более ранних версиях размер увеличения иной).➡️ Привет! Мы проводим опрос «Что тебя больше всего раздражает в рабочем процессе и в программировании?»
🔥 Говори прямо, не сдерживай себя. Орфографию и пунктуацию мы сохраним. Правда, вульгаризмы заменим на эвфемизмы, но без потери смысла :D
Что тебя больше всего раздражает на работе? 😶 Бессмысленные комментарии к коду? 😐 Постоянно отвлекают от работы, а потом ты полчаса входишь в рабочий процесс? 🤔 Переработки? 😕 Срочные задачи в конце рабочего дня? 😲 Низкий стол? 😵 14" электронно-лучевой монитор? 🤣
Опрос анонимный. Делись наболевшим. А в июне мы опубликуем статью со всеми ответами.
➡️ Опрос можно пройти по ссылке ⬅️
🔥 Говори прямо, не сдерживай себя. Орфографию и пунктуацию мы сохраним. Правда, вульгаризмы заменим на эвфемизмы, но без потери смысла :D
Что тебя больше всего раздражает на работе? 😶 Бессмысленные комментарии к коду? 😐 Постоянно отвлекают от работы, а потом ты полчаса входишь в рабочий процесс? 🤔 Переработки? 😕 Срочные задачи в конце рабочего дня? 😲 Низкий стол? 😵 14" электронно-лучевой монитор? 🤣
Опрос анонимный. Делись наболевшим. А в июне мы опубликуем статью со всеми ответами.
➡️ Опрос можно пройти по ссылке ⬅️
Тинькофф приглашает на One Day Offer
Ищем Java- и Kotlin-разработчиков с опытом от трех лет, чтобы сделать им оффер за день. В течение дня вы общаетесь с командой, а после получаете оффер, если вам понравится команда, работа подойдет по условиям, а задачи — по скиллам.
Встречаемся 28 мая онлайн. Успейте подать заявку до 26 мая. В течение трех дней вернемся с обратной связью: https://l.tinkoff.ru/java-one-day-offer
Ищем Java- и Kotlin-разработчиков с опытом от трех лет, чтобы сделать им оффер за день. В течение дня вы общаетесь с командой, а после получаете оффер, если вам понравится команда, работа подойдет по условиям, а задачи — по скиллам.
Встречаемся 28 мая онлайн. Успейте подать заявку до 26 мая. В течение трех дней вернемся с обратной связью: https://l.tinkoff.ru/java-one-day-offer
Сколько выделяется дополнительно памяти при вызове LinkedList.add()?
Создается один новый экземпляр вложенного класса
Создается один новый экземпляр вложенного класса
Node
.Сколько нужно времени, чтобы освоить востребованную профессию Java-программиста? Всего 10 месяцев! И начать можно бесплатно: https://clck.ru/h7jKs
Научим:
=> Писать код на Java, использовать фреймворки Javalin, Spring
=> Применять принципы ООП, работать с базами данным, SQL
=> Настраивать окружение: IDEA, Gradle/Maven, JDK
=> Пользоваться командной строкой и Git
Поможем:
=> Наработать практику — вы сделаете 5 проектов на GitHub
=> Грамотно оформить резюме
=> Подготовиться к собеседованиям
А еще порекомендуем в хорошие компании и познакомим с сообществом из 28 тысяч айтишников. Присоединяйтесь!
Научим:
=> Писать код на Java, использовать фреймворки Javalin, Spring
=> Применять принципы ООП, работать с базами данным, SQL
=> Настраивать окружение: IDEA, Gradle/Maven, JDK
=> Пользоваться командной строкой и Git
Поможем:
=> Наработать практику — вы сделаете 5 проектов на GitHub
=> Грамотно оформить резюме
=> Подготовиться к собеседованиям
А еще порекомендуем в хорошие компании и познакомим с сообществом из 28 тысяч айтишников. Присоединяйтесь!
🔑 Чем полезен Git Credential Manager? Обзор менеджера аутентификации для новичков и профессионалов
Обзор популярного менеджера аутентификации Git Credential Manager (GCM), обеспечивающего безопасную и удобную аутентификацию к репозиторию.
https://proglib.io/sh/yGKYarRFbH
Обзор популярного менеджера аутентификации Git Credential Manager (GCM), обеспечивающего безопасную и удобную аутентификацию к репозиторию.
https://proglib.io/sh/yGKYarRFbH
#вопросы_с_собеседований
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
Каждый элемент
Для
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
Каждый элемент
LinkedList
хранит ссылку на предыдущий элемент, следующий элемент и ссылку на данные.static class Node<E> {Для
E item;
Node<E> next;
Node<E> prev;
//...
}
32-битных
систем каждая ссылка занимает 32 бита
(4 байта
). Сам объект (заголовок) вложенного класса Node
занимает 8 байт
. 4 + 4 + 4 + 8 = 20 байт
, а т.к. размер каждого объекта в Java
кратен 8
, соответственно получаем 24 байта
. Примитив типа byte
занимает 1 байт
памяти, но в JCF
примитивы упаковываются: объект типа Byte
занимает в памяти 16 байт
(8 байт
на заголовок объекта, 1 байт
на поле типа byte
и 7 байт
для кратности 8
). Также напомню, что значения от -128
до 127
кэшируются и для них новые объекты каждый раз не создаются. Таким образом, в x32 JVM 24 байта
тратятся на хранение одного элемента в списке и 16 байт
- на хранение упакованного объекта типа Byte
. Итого 40 байт
.Для
64-битной JVM
каждая ссылка занимает 64 бита
(8 байт
), размер заголовка каждого объекта составляет 16 байт
(два машинных слова). Вычисления аналогичны: 8 + 8 + 8 + 16 = 40байт
и 24 байта
. Итого 64 байта
.🛠 25 полезных малоизвестных интернет-ресурсов для фронтендера и бэкендера
Небольшой обзор интересных интернет-ресурсов в помощь специалистам цифровой индустрии: каталоги дорожных карт и шпаргалок, тесты веб-приложений, бесплатные макеты и иллюстрации, шаблоны резюме и многое другое.
https://proglib.io/sh/v3GP6WwUCe
Небольшой обзор интересных интернет-ресурсов в помощь специалистам цифровой индустрии: каталоги дорожных карт и шпаргалок, тесты веб-приложений, бесплатные макеты и иллюстрации, шаблоны резюме и многое другое.
https://proglib.io/sh/v3GP6WwUCe
#вопросы_с_собеседований
Назовите основные характеристики шаблонов проектирования.
Имя - все шаблоны имеют уникальное имя, служащее для их идентификации;
Назначение данного шаблона;
Задача - задача, которую шаблон позволяет решить;
Способ решения - способ, предлагаемый в шаблоне для решения задачи в том контексте, где этот шаблон был найден;
Участники - сущности, принимающие участие в решении задачи;
Следствия - последствия от использования шаблона как результат действий, выполняемых в шаблоне;
Реализация - возможный вариант реализации шаблона.
Назовите основные характеристики шаблонов проектирования.
Имя - все шаблоны имеют уникальное имя, служащее для их идентификации;
Назначение данного шаблона;
Задача - задача, которую шаблон позволяет решить;
Способ решения - способ, предлагаемый в шаблоне для решения задачи в том контексте, где этот шаблон был найден;
Участники - сущности, принимающие участие в решении задачи;
Следствия - последствия от использования шаблона как результат действий, выполняемых в шаблоне;
Реализация - возможный вариант реализации шаблона.
Привет!
Сбер начинает серию коротких вебинаров «5 минут на запуск»!
На встречах «без лишней воды» расскажут, как быстро начать работу в личном кабинете платформы SberCloud Advanced с запуска виртуального сервера или деплоя базы данных. Выбирайте тему любого из 4-х вебинаров и регистрируйтесь по ссылке.
1) Как запустить виртуальную машину за 5 минут
2) «Хостинг сайта в облаке: проще, чем кажется»
3) «5 минут на всё: скоростной деплой базы данных»
4) «Как быстро настроить облачное хранилище»
До встречи на интенсиве!
Сбер начинает серию коротких вебинаров «5 минут на запуск»!
На встречах «без лишней воды» расскажут, как быстро начать работу в личном кабинете платформы SberCloud Advanced с запуска виртуального сервера или деплоя базы данных. Выбирайте тему любого из 4-х вебинаров и регистрируйтесь по ссылке.
1) Как запустить виртуальную машину за 5 минут
2) «Хостинг сайта в облаке: проще, чем кажется»
3) «5 минут на всё: скоростной деплой базы данных»
4) «Как быстро настроить облачное хранилище»
До встречи на интенсиве!
#вопросы_с_собеседований
Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому
Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому
16 байт
тратится на хранение упакованного объекта и 4 байта
(8 для x64
) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта
используются на хранение одного элемента и 16 байт
- на хранение упакованного объекта типа Byte
. Для x64
- 8 байт
и 24 байта
соответственно.#вопросы_с_собеседований
Что позволяет сделать PriorityQueue?
Особенностью PriorityQueue является возможность управления порядком элементов. По-умолчанию, элементы сортируются с использованием «natural ordering», но это поведение может быть переопределено при помощи объекта Comparator, который задаётся при создании очереди. Данная коллекция не поддерживает null в качестве элементов.
Используя PriorityQueue, можно, например, реализовать алгоритм Дейкстры для поиска кратчайшего пути от одной вершины графа к другой. Либо для хранения объектов согласно определённого свойства.
Что позволяет сделать PriorityQueue?
Особенностью PriorityQueue является возможность управления порядком элементов. По-умолчанию, элементы сортируются с использованием «natural ordering», но это поведение может быть переопределено при помощи объекта Comparator, который задаётся при создании очереди. Данная коллекция не поддерживает null в качестве элементов.
Используя PriorityQueue, можно, например, реализовать алгоритм Дейкстры для поиска кратчайшего пути от одной вершины графа к другой. Либо для хранения объектов согласно определённого свойства.