#Вопросы_с_собеседования
Что такое «интеграционное тестирование»?
Интеграционное тестирование (
Что такое «интеграционное тестирование»?
Интеграционное тестирование (
integration testing) — это тестирование, проверяющие работоспособность двух или более модулей системы в совокупности — то есть нескольких объектов как единого блока. В тестах взаимодействия же тестируется конкретный, определенный объект и то, как именно он взаимодействует с внешними зависимостями.👍17
Оптимизация поиска товаров в приложении-маркетплейсе на примере eBay с использованием Java
Сегодня мы рассмотрим тему, которая будет полезна для Senior Java Developer, работающего над разработкой маркетплейса, такого как eBay: оптимизация поиска товаров. Мы изучим пример реализации простой системы индексирования товаров на основе префиксного дерева (трие) для обеспечения эффективного поиска товаров.
Реализация префиксного дерева для индексирования товаров
1. Создайте класс TrieNode, который будет представлять узел в префиксном дереве
2. Создайте класс ProductTrie, который будет содержать методы для добавления и поиска товаров
3. Воспользуйтесь классом ProductTrie для индексирования и поиска товаров
В этом примере мы реализовали индексирование и поиск товаров с использованием префиксного дерева. Оптимизация поиска товаров важна для любого приложения-маркетплейса, такого как eBay. Этот пример может быть использован как отправная точка для оптимизации поиска товаров в вашем приложении.
Сегодня мы рассмотрим тему, которая будет полезна для Senior Java Developer, работающего над разработкой маркетплейса, такого как eBay: оптимизация поиска товаров. Мы изучим пример реализации простой системы индексирования товаров на основе префиксного дерева (трие) для обеспечения эффективного поиска товаров.
Реализация префиксного дерева для индексирования товаров
1. Создайте класс TrieNode, который будет представлять узел в префиксном дереве
2. Создайте класс ProductTrie, который будет содержать методы для добавления и поиска товаров
3. Воспользуйтесь классом ProductTrie для индексирования и поиска товаров
В этом примере мы реализовали индексирование и поиск товаров с использованием префиксного дерева. Оптимизация поиска товаров важна для любого приложения-маркетплейса, такого как eBay. Этот пример может быть использован как отправная точка для оптимизации поиска товаров в вашем приложении.
🔥13👍3
Укажите все advice-интерфейсы, методы которых не требуют явного вызова target-метода
Anonymous Quiz
8%
1.MethodBeforeAdvice
5%
2.AfterReturningAdvice
13%
3.ThrowsAdvice
16%
1 и 3
13%
2 и 3
31%
Все
14%
1 и 2
👍4
В чём различия между volatile и Atomic переменными?
volatile принуждает использовать единственный экземпляр переменной, но не гарантирует атомарность. Например, операция count++ не станет атомарной просто потому, что count объявлена volatile. C другой стороны class AtomicInteger предоставляет атомарный метод для выполнения таких комплексных операций атомарно, например getAndIncrement() – атомарная замена оператора инкремента, его можно использовать, чтобы атомарно увеличить текущее значение на один. Похожим образом сконструированы атомарные версии и для других типов данных.👍16
#Вопросы_с_собеседования
Приведите примеры структурных шаблонов проектирования
•
•
•
•
•
•
•
Приведите примеры структурных шаблонов проектирования
•
Адаптер (Adapter) - Объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.•
Мост (Bridge) - Структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.•
Компоновщик (Composite) - Объект, который объединяет в себе объекты, подобные ему самому.•
Декоратор (Decorator) - Класс, расширяющий функциональность другого класса без использования наследования.•
Фасад (Facade) - Объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.•
Приспособленец (Flyweight) - Это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.•
Заместитель (Proxy) - Объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.👍15❤4
#Вопросы_с_собеседования
Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
Интерфейс
Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
👍14😱1
Как преобразовать строку в Windows-1251?
В Java вы можете использовать классы
Обратите внимание, что некоторые символы, которые существуют в кодировке Windows-1251, могут отсутствовать в кодировке UTF-16, поэтому процесс преобразования может вызвать потерю данных.
В Java вы можете использовать классы
Charset и String для преобразования строки из одной кодировки в другую. Пример на картинке выше.Обратите внимание, что некоторые символы, которые существуют в кодировке Windows-1251, могут отсутствовать в кодировке UTF-16, поэтому процесс преобразования может вызвать потерю данных.
👍5
Объекты как параметры методов
В Java объекты могут использоваться как параметры методов, что позволяет передавать данные и взаимодействовать с ними внутри методов. Это один из основных способов работы с данными в ООП.
Параметры методов представляют собой значения, которые передаются методу при его вызове. Они объявляются в заголовке метода и позволяют методу получать информацию, необходимую для выполнения своей задачи.
В Java объекты могут использоваться как параметры методов, что позволяет передавать данные и взаимодействовать с ними внутри методов. Это один из основных способов работы с данными в ООП.
Параметры методов представляют собой значения, которые передаются методу при его вызове. Они объявляются в заголовке метода и позволяют методу получать информацию, необходимую для выполнения своей задачи.
👍10😢1
Что такое race-condition?
Также
Race condition (гонка состояний) — это ситуация, которая возникает в многопоточных программах, когда несколько потоков одновременно пытаются изменить общий ресурс или переменную, приводя к непредсказуемому поведению программы. Это может произойти из-за неопределенности в том, какой поток будет выполняться в данный момент, и какие операции он совершит.Также
race condition может возникнуть, если несколько потоков пытаются изменить одну и ту же общую переменную без какой-либо синхронизации. Например, если два потока пытаются одновременно увеличить значение переменной, которое зависит от текущего значения, то результат может быть непредсказуемым.👍14
Проверка на палиндром
Напишем небольшую программу, проверяющую является ли введенная строка палиндромом.
Перепишите код с картинки в файл с расширением
Напишем небольшую программу, проверяющую является ли введенная строка палиндромом.
Перепишите код с картинки в файл с расширением
.java, например, PalindromeChecker.java, затем скомпилируйте и запустите его с помощью команды javac PalindromeChecker.java, а затем java PalindromeChecker. Программа попросит вас ввести строку, и затем она выведет результат проверки на палиндром.😢8👍5🔥1
Autoboxing
Autoboxing — это механизм, который автоматически преобразует примитивные типы данных в соответствующие классы-оболочки, и наоборот, без явного указания программистом. Этот механизм упрощает код и делает его более читаемым, так как позволяет использовать примитивные типы как объекты.
Autoboxing позволяет, например, использовать примитивные типы в коллекциях и других ситуациях, где требуются объекты. Ранее, до появления autoboxing, программистам приходилось явно выполнять преобразования между примитивными типами и их классами-оболочками.
Autoboxing — это механизм, который автоматически преобразует примитивные типы данных в соответствующие классы-оболочки, и наоборот, без явного указания программистом. Этот механизм упрощает код и делает его более читаемым, так как позволяет использовать примитивные типы как объекты.
Autoboxing позволяет, например, использовать примитивные типы в коллекциях и других ситуациях, где требуются объекты. Ранее, до появления autoboxing, программистам приходилось явно выполнять преобразования между примитивными типами и их классами-оболочками.
👍3🔥3
Что такое Enum?
Enum — это особый тип данных, который представляет собой набор именованных констант, представляющих различные варианты значения для определенного типа данных. Enum используется для создания пользовательских типов данных, которые ограничивают множество возможных значений до определенного набора.Enum позволяет создавать более читаемый и безопасный код, так как позволяет использовать ограниченный набор значений, которые определены заранее. Это также предотвращает ошибки из-за некорректных значений, которые могут быть использованы в других случаях.👍5🔥2
Адаптер
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он позволяет «преобразовать» интерфейс одного класса в интерфейс другого класса таким образом, чтобы они могли взаимодействовать без изменения существующего кода.
Паттерн Адаптер включает в себя два вида адаптеров:
Классовый адаптер: Использует наследование для адаптации интерфейса исходного класса к целевому интерфейсу. То есть, он наследует исходный класс и реализует целевой интерфейс.
Объектный адаптер: Использует композицию, чтобы включить объект исходного класса в адаптер и реализует целевой интерфейс.
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он позволяет «преобразовать» интерфейс одного класса в интерфейс другого класса таким образом, чтобы они могли взаимодействовать без изменения существующего кода.
Паттерн Адаптер включает в себя два вида адаптеров:
Классовый адаптер: Использует наследование для адаптации интерфейса исходного класса к целевому интерфейсу. То есть, он наследует исходный класс и реализует целевой интерфейс.
Объектный адаптер: Использует композицию, чтобы включить объект исходного класса в адаптер и реализует целевой интерфейс.
❤12👍8
Generics
Generics (Обобщения) — это механизм, позволяющий создавать классы, интерфейсы и методы, которые могут работать с разными типами данных безопасным и типобезопасным способом. Он позволяет параметризовать типы таким образом, чтобы код был более гибким, повышая безопасность типов и устраняя необходимость приведения типов во время выполнения.
Generics (Обобщения) — это механизм, позволяющий создавать классы, интерфейсы и методы, которые могут работать с разными типами данных безопасным и типобезопасным способом. Он позволяет параметризовать типы таким образом, чтобы код был более гибким, повышая безопасность типов и устраняя необходимость приведения типов во время выполнения.
👍21
Конструктор
Конструктор — это специальный метод в классе, который вызывается при создании нового объекта этого класса. Конструкторы используются для инициализации состояния объекта, устанавливая начальные значения его полей. Конструкторы обеспечивают правильное создание объектов и обычно выполняют первоначальные операции, необходимые для поддержания корректного состояния объекта.
#для_начинающих
Конструктор — это специальный метод в классе, который вызывается при создании нового объекта этого класса. Конструкторы используются для инициализации состояния объекта, устанавливая начальные значения его полей. Конструкторы обеспечивают правильное создание объектов и обычно выполняют первоначальные операции, необходимые для поддержания корректного состояния объекта.
#для_начинающих
👍10
Паттерн проектирования Observer
Паттерн Observer является одним из популярных поведенческих паттернов проектирования. Он используется для реализации механизма, при котором объекты (наблюдатели) могут автоматически получать уведомления об изменениях в другом объекте (субъекте). Это особенно полезно, когда одни объекты зависят от состояния других и должны реагировать на его изменения.
#для_продвинутых
Паттерн Observer является одним из популярных поведенческих паттернов проектирования. Он используется для реализации механизма, при котором объекты (наблюдатели) могут автоматически получать уведомления об изменениях в другом объекте (субъекте). Это особенно полезно, когда одни объекты зависят от состояния других и должны реагировать на его изменения.
#для_продвинутых
👍15