cookie

Sizning foydalanuvchi tajribangizni yaxshilash uchun cookie-lardan foydalanamiz. Barchasini qabul qiling», bosing, cookie-lardan foydalanilishiga rozilik bildirishingiz talab qilinadi.

avatar

Библиотека собеса по Java | вопросы с собеседований

Вопросы с собеседований по Java и ответы на них. Список наших каналов: https://t.me/proglibrary/8353 Учиться у нас: https://proglib.io/w/907158ab Обратная связь: @proglibrary_feedback_bot По рекламе: @proglib_adv Прайс: @proglib_advertising

Ko'proq ko'rsatish
Reklama postlari
4 628
Obunachilar
+424 soatlar
+257 kunlar
+35630 kunlar
Post vaqtlarining boʻlagichi

Ma'lumot yuklanmoqda...

Find out who reads your channel

This graph will show you who besides your subscribers reads your channel and learn about other sources of traffic.
Views Sources
Nashrni tahlil qilish
PostlarKo'rishlar
Ulashishlar
Ko'rish dinamikasi
01
System.currentTimeMillis или System.nanoTime? В Java есть два стандартных способа проведения операций со временем, и не всегда ясно, какой из них следует выбрать. ➡️ Метод System.currentTimeMillis() возвращает текущее количество миллисекунд с начала эры Unix в формате Long. Его точность составляет от 1 до 15 тысячных долей секунды в зависимости от системы. long startTime = System.currentTimeMillis(); long estimatedTime = System.currentTimeMillis() — startTime; ➡️ Метод System.nanoTime() имеет точность до одной миллионной секунды (наносекунды) и возвращает текущее значение наиболее точного доступного системного таймера. long startTime = System.nanoTime(); long estimatedTime = System.nanoTime() — startTime; Таким образом, метод System.currentTimeMillis() лучше применять для отображения и синхронизации абсолютного времени, а System.nanoTime() для измерения относительных интервалов времени.
4296Loading...
02
RecursiveTask RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предоставляет удобный способ распараллеливания выполнения задач. RecursiveTask является подклассом ForkJoinTask. Он предназначен для использования вместе с пулом Fork/Join (ForkJoinPool) и предоставляет специальные методы для разделения задачи на подзадачи и объединения результатов.
73314Loading...
03
Array или ArrayList? Выбор между Array и ArrayList зависит от специфики задачи Java, которую вы хотите решить. Запомните следующие особенности этих типов: — Массив имеет фиксированный размер, и память для него выделяется во время объявления, а размер ArrayList может динамически меняться. — Массивы Java работают намного быстрее, а в ArrayList намного проще добавлять и удалять элементы. — При работе с Array скорее всего возникнет ошибка ArrayIndexOutOfBoundsException. — ArrayList может быть только одномерным, когда массивы Java могут быть многомерными.
8849Loading...
04
Реализуйте простой кэш на Java. Класс должен поддерживать операции добавления значения по ключу, получения значения по ключу и удаления значения по ключу. Кэш должен иметь фиксированный размер, и при превышении этого размера он должен удалять самый старый элемент. Как вы обеспечите оптимальную производительность операций? Решение: Кэш будет представлять собой обобщенный класс SimpleCache, который может хранить пары ключ-значение. Размер кэша будет ограничен, чтобы избежать переполнения. В случае превышения размера, самый старый элемент будет удаляться. Для хранения данных будем использовать HashMap (cache), так как это обеспечит эффективный доступ к значениям по ключу. Для отслеживания порядка ключей (чтобы определить самый старый элемент) будем использовать Queue (keyQueue), в данном случае LinkedList. Инициализируем кэш. Конструктор SimpleCache принимает максимальный размер кэша и инициализирует cache и keyQueue. Добавляем элемент в кэш и при добавлении элемента проверяем, не превышен ли максимальный размер. Если превышен, вызываем метод evictOldest для удаления самого старого элемента. Добавляем новый элемент в cache и помещаем ключ в keyQueue. Получаем элемент по ключу. Если элемент существует в кэше, перемещаем соответствующий ключ в конец keyQueue (чтобы отметить последнее использование) и возвращаем значение. Удаляем элемент из cache и соответствующий ключ из keyQueue. Получаем самый старый ключ из начала keyQueue, удаляем соответствующий элемент из cache.
80618Loading...
05
Что такое сигнатура метода? Это уникальная строка, которая описывает типы и порядок аргументов, а также возвращаемый тип метода. Сигнатура используется компилятором Java для различения методов с одинаковым именем, но отличающихся по своим параметрам.
9557Loading...
06
Может ли метод принимать аргументы переменной длины? В Java метод может принимать переменное количество аргументов двумя основными способами: — Используя массив в качестве параметра. При определении метода указывается, что один из параметров — это массив некоторого типа. При вызове метода в этот параметр можно передать массив нужной длины. — Используя специальный синтаксис с многоточием. При определении метода один из параметров объявляется с многоточием после типа. Это говорит компилятору, что это параметр переменной длины. При вызове в него можно передать сколько угодно аргументов указанного типа. Таким образом метод становится более гибким и его можно вызывать с разным количеством аргументов в зависимости от ситуации. Это избавляет от необходимости перегружать метод для разного числа параметров.
1 0896Loading...
07
⚡️Proglib запускает канал про ИИ для генерации звука Там мы будем рассказывать про все существующие нейросети, которые генерируют музыку и голос — с пошаговыми инструкциями, инструментами и лайфхаками. ⭐️генерация голоса и музыки ⭐️замена и перевод речи ⭐️распознавание звуков 👉Подписывайтесь!
1 0950Loading...
08
Как узнать значение конкретного символа строки, зная его порядковый номер в строке? Чтобы узнать значение конкретного символа в строке по его порядковому номеру, можно воспользоваться методом charAt(int index) класса String. Этот метод возвращает символ, расположенный в строке по указанному индексу. Индексы нумеруются от 0 до длины строки минус 1. Если переданный индекс находится вне диапазона длины строки, будет выброшено исключение IndexOutOfBoundsException.
1 2265Loading...
09
Хардкорный курс по математике для тех, кто правда любит математику! Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/12f47906 Что вас ждет: – Вводный урок от CPO курса – Лекции с преподавателями ВМК МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск – Практические задания для закрепления материала и ссылки на дополнительные материалы. ⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/12f47906
1 3703Loading...
10
Что такое «фреймворк Fork/Join»? Фреймворк Fork/Join, представленный в JDK 7, — это набор классов и интерфейсов позволяющих использовать преимущества многопроцессорной архитектуры современных компьютеров. Он разработан для выполнения задач, которые можно рекурсивно разбить на маленькие подзадачи, которые можно решать параллельно. • Этап Fork: большая задача разделяется на несколько меньших подзадач, которые в свою очередь также разбиваются на меньшие. И так до тех пор, пока задача не становится тривиальной и решаемой последовательным способом. • Этап Join: далее (опционально) идёт процесс «свёртки» — решения подзадач некоторым образом объединяются пока не получится решение всей задачи. Решение всех подзадач (в т.ч. и само разбиение на подзадачи) происходит параллельно. Для решения некоторых задач этап Join не требуется. Например, для параллельного QuickSort — массив рекурсивно делится на всё меньшие и меньшие диапазоны, пока не вырождается в тривиальный случай из 1 элемента. Хотя в некотором смысле Join будет необходим и тут, т.к. всё равно остаётся необходимость дождаться пока не закончится выполнение всех подзадач. Ещё одно замечательное преимущество этого фреймворка заключается в том, что он использует work-stealing алгоритм: потоки, которые завершили выполнение собственных подзадач, могут «украсть» подзадачи у других потоков, которые всё ещё заняты.
1 17610Loading...
11
Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ. Простой ключ состоит из одного атрибута (поля). Составной — из двух и более. Потенциальный ключ — простой или составной ключ, который уникально идентифицирует каждую запись набора данных. При этом потенциальный ключ должен обладать критерием неизбыточности: при удалении любого из полей набор полей перестает уникально идентифицировать запись. Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют альтернативными.
1 2817Loading...
12
Для чего используется оператор assert? Оператор assert используется для проверки условий во время выполнения программы. Он позволяет проверить истинность некоторого логического выражения и выбросить исключение AssertionError, если выражение ложно. Основные применения assert: ⚡️ Проверка предусловий и постусловий в методах. ⚡️ Проверка инвариантов в критических секциях кода. ⚡️ Отладка при разработке, чтобы проверить ожидаемое состояние программы в определенных точках. ⚡️ Проверка условий в потенциально опасных ситуациях, например при работе с массивами. assert лучше использовать для отладки и проверки инвариантов, а для критически важных проверок предусловий лучше применять явную проверку условий и выброс исключений.
1 4235Loading...
13
Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода? • При переопределении метода нельзя сузить модификатор доступа к методу (например с public в MainClass до private в Class extends MainClass). • Изменить тип возвращаемого значения при переопределении метода нельзя, будет ошибка attempting to use incompatible return type. • Можно сузить возвращаемое значение, если они совместимы. Например: public class Animal { public Animal eat() { System.out.println(«animal eat»); return null; } public Long calc() { return null; } } public class Dog extends Animal { public Dog eat() { return new Dog(); } /*attempting to use incompatible return type public Integer calc() { return null; } */ }
1 4637Loading...
14
AnyLogic — почему это ПО используют современные компании и зачем вам его осваивать? Узнайте на открытом практическом уроке от OTUS, где мы разберем: - что может AnyLogic, что не могут решатели дифференциальных уравнений, Excel и здравый смысл; - основные возможности AnyLogic; - основные логические блоки; - начальную настройку любой модели; - начальную настройку исходных чертежей. Спикер — опытный разработчик, веб-дизайнер и преподаватель. Встречаемся 23 мая в 20:00 мск в преддверии старта курса «Имитационное моделирование на базе AnyLogic». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS! ➡ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://otus.ru/lessons/anylogic/?utm_source=telegram&utm_medium=cpm&utm_campaign=anylogic&utm_term=java_interview_lib&utm_content=lesson_23-05-2024_usp-universal_java_text_no-headline_aida_short_aibanner_no-banner-hl_blue_ag#event-4323 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 Erid 2Vtzqwus1kX
8751Loading...
15
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
1 5070Loading...
16
Зачем нужны и какие бывают блоки инициализации? Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов. • Существуют статические и нестатические блоки инициализации. • Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора. • Несколько блоков инициализации выполняются в порядке следования в коде класса. • Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса. • Блок инициализации возможно создать и в анонимном классе.
2 47011Loading...
17
AlgorithmParameters Класс AlgorithmParameters используется для представления криптографических параметров в виде непрозрачного объекта. Он позволяет управлять параметрами для конкретного алгоритма.
1 6634Loading...
18
Расскажите про приведение типов. Что такое понижение и повышение типа? Приведение типов — это преобразование переменной одного типа в другой. Существует два вида приведения типов: — Повышение типа (widening): автоматическое преобразование типа в другой, более широкий тип. Например, int в long. При этом не теряется точность, так как широкий тип может представить все значения узкого типа. — Понижение типа (narrowing): явное приведение к более узкому типу, например double в int. Здесь возможна потеря точности, поэтому требуется явное приведение в коде. Повышение типа безопасно, компилятор делает его автоматически. Понижение опасно потерей данных, поэтому разработчик должен явно указать такое приведение в коде, чтобы показать, что он контролирует возможную потерю точности.
5 09918Loading...
19
Интерфейс Delayed Интерфейс Delayed используется для объектов, у которых есть время истечения задержки. Он позволяет организовать очередь объектов с учетом их задержки. Основные методы: getDelay(TimeUnit unit) — возвращает оставшееся время задержки в указанных единицах измерения. compareTo(Delayed o) — сравнивает текущий объект с переданным по оставшемуся времени задержки. Этот интерфейс реализуется классами, которые должны храниться в очереди с задержкой, например в DelayQueue.
1 8258Loading...
20
Можно ли иметь много общедоступных классов в исходном файле Java? Нет, у нас может быть только один общедоступный класс в исходном файле Java.
1 7185Loading...
21
Java-программа для преобразования десятичной системы счисления в двоичную Воспользуемся побитовыми операторами для решения данной задачи. Временная сложность: O (1) Вспомогательное пространство: O (1).
5 33121Loading...
22
Как сделать объект сериализуемым? Чтобы сделать объект сериализуемым, вы должны реализовать интерфейс Serializable. Этот интерфейс не содержит ни одного абстрактного мvетода и предназначен для маркировки объекта как сериализуемого. Когда объект класса реализует этот интерфейс, вы можете использовать механизм сериализации Java для сохранения и восстановления его состояния.
1 8968Loading...
23
Работа с датами LocalDateTime Класс LocalDateTime из пакета java.time позволяет создавать даты и изменять их, добавляя и отнимая необходимое количество часов, дней, месяцев, лет и даже эпох. Чтобы получить текущую дату на вашем устройстве достаточно вызвать метод LocalDateTime::now. Зеркалом этого класса в JDBC является класс TimeStamp, в который можно перевести методом of().
1 9398Loading...
24
Расскажите про класс TreeMap. Класс TreeMap реализует интерфейс Map, используя дерево. TreeMap обеспечивает эффективное средство хранения пар ключ/значение в отсортированном порядке и позволяет быстро извлекать данные. Следует отметить, что, в отличие от хэш-карты, карта деревьев гарантирует, что ее элементы будут отсортированы в порядке возрастания ключа.
1 8636Loading...
25
Самые полезные каналы для программистов в одной подборке! Сохраняйте себе, чтобы не потерять 💾 🔥Для всех Библиотека программиста — новости, статьи, досуг, фундаментальные темы Книги для программистов IT-мемы Proglib Academy — тут мы рассказываем про обучение и курсы 🤖Про нейросети Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка Библиотека нейротекста | ChatGPT, Gemini, Bing Библиотека нейровидео | Sora AI, Runway ML, дипфейки Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion #️⃣C# Книги для шарпистов | C#, .NET, F# Библиотека шарписта — полезные статьи, новости и обучающие материалы по C# Библиотека задач по C# — код, квизы и тесты Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel ☁️DevOps Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps Вакансии по DevOps & SRE Библиотека задач по DevOps — код, квизы и тесты Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования 🐘PHP Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP Вакансии по PHP, Symfony, Laravel Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по PHP — код, квизы и тесты 🐍Python Библиотека питониста — полезные статьи, новости и обучающие материалы по Python Вакансии по питону, Django, Flask Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Python — код, квизы и тесты ☕Java Книги для джавистов | Java Библиотека джависта — полезные статьи по Java, новости и обучающие материалы Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Java — код, квизы и тесты Вакансии для java-разработчиков 👾Data Science Книги для дата сайентистов | Data Science Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Data Science — код, квизы и тесты Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту 🦫Go Книги для Go разработчиков Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Go — код, квизы и тесты Вакансии по Go 🧠C++ Книги для C/C++ разработчиков Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++ Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по C++ — код, квизы и тесты Вакансии по C++ 💻Другие каналы Библиотека фронтендера Библиотека мобильного разработчика Библиотека хакера Библиотека тестировщика Вакансии по фронтенду, джаваскрипт, React, Angular, Vue Вакансии для мобильных разработчиков Вакансии по QA тестированию InfoSec Jobs — вакансии по информационной безопасности 📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈 Также у нас есть боты: Бот с IT-вакансиями Бот с мероприятиями в сфере IT Мы в других соцсетях: 🔸VK 🔸YouTube 🔸Дзен 🔸Facebook * 🔸Instagram * * Организация Meta запрещена на территории РФ
1 7038Loading...
26
KeyFactory KeyFactory — это класс, который используется для преобразования ключей (непрозрачных криптографических ключей типа Key) в спецификации ключей (прозрачные представления базового материала ключа) и наоборот. Функциональные возможности: — Преобразование ключей из спецификаций ключей (например, ASN.1 DER) и обратно. — Генерация ключей на основе алгоритма и параметров. — Поддержка различных алгоритмов ключей, таких как RSA, DSA, Elliptic Curve Cryptography (ECC).
1 6926Loading...
27
Класс TimeZone Класс TimeZone представляет собой часовой пояс. Часовой пояс — это географическая область, в которой используется один и тот же стандарт времени. Класс TimeZone имеет несколько методов для работы с часовыми поясами. Например, метод getAvailableIDs() возвращает список всех известных часовых поясов. Метод getTimeZone(String id) возвращает объект TimeZone по его идентификатору.
1 7244Loading...
28
Лямбды как параметры и результаты методов В Java лямбда-выражения — это компактный способ представления анонимных функций. Они часто используются для передачи функциональности как параметров в методы и возвращаются в качестве результатов методов, когда требуется работать с функциональным программированием.
1 76015Loading...
29
Почему современные фреймворки используют в основном только unchecked exceptions? Unchecked exceptions используются в основном потому, что они не требуют обязательной обработки исключений в коде. Это позволяет упростить код и сделать его более читаемым. Однако, это также может привести к тому, что исключения не будут обработаны и программа может завершиться аварийно. Некоторые же фреймворки используют checked exceptions для обработки ошибок ввода-вывода или других проблем, которые могут возникнуть в процессе выполнения программы. Однако это может привести к тому, что код станетболее сложным и менее читаемым.
5 70715Loading...
30
Перегрузка в Java Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соответствует определенным нами аргументам по типу? На этом этапе возможны два исхода. 1. Произойдет преобразование типа, но в более высокий тип (с точки зрения диапазона) в том же семействе. 2. Произойдет преобразование типа в следующее более старшее семейство (предположим, что если нет типа данных long, доступного для типа данных int, тогда будет поиск типа данных с плавающей запятой).
1 9038Loading...
31
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
1 8431Loading...
32
Конструктор Конструктор — это специальный метод в классе, который вызывается при создании нового объекта этого класса. Конструкторы используются для инициализации состояния объекта, устанавливая начальные значения его полей. Конструкторы обеспечивают правильное создание объектов и обычно выполняют первоначальные операции, необходимые для поддержания корректного состояния объекта.
1 6544Loading...
33
Apache Commons Lang3 Apache Commons Lang3 — это библиотека Java, предоставляющая набор утилит для работы с базовыми классами Java, такими как String, Object, Collection и др. Она дополняет стандартную библиотеку Java, предоставляя дополнительные методы, которые часто используются в разработке.
1 8267Loading...
34
❓Как писать автотесты так, чтобы они выполняли свою функцию с вашим минимальным участием? Об этом рассказываем на онлайн-курсе «Java QA Engineer. Professional» в OTUS. За 4 месяца обучения вы научитесь организовывать CI-процесс, выполнять тесты в несколько потоков, автоматизировать API/Mobile и разберетесь в различных фреймворках и библиотеках. Все это позволит вам предвидеть поведение системы и получать понятные отчеты. В качестве проектной работы вы построите полноценный проект по UI-автоматизации с соответствующей инфраструктурой. 👉🏻  ПРОЙТИ ТЕСТ — https://otus.ru/lessons/java-qa-pro/assessment/?utm_source=telegram&utm_medium=cpm&utm_campaign=jqa&utm_term=java_interview_lib&utm_content=test_24-04-2144_usp-qa_python_aitext_text-headline1_aida_long_banner_banner-hl1_no_standart  Пройдете тест, получите специальные условия для поступления на курс и доступ к 27 открытым урокам курса. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru Erid 2Vtzqwb47sf
1 0380Loading...
35
❓Как писать автотесты так, чтобы они выполняли свою функцию с вашим минимальным участием? Об этом рассказываем на онлайн-курсе «Java QA Engineer. Professional» в OTUS. За 4 месяца обучения вы научитесь организовывать CI-процесс, выполнять тесты в несколько потоков, автоматизировать API/Mobile и разберетесь в различных фреймворках и библиотеках. Все это позволит вам предвидеть поведение системы и получать понятные отчеты. В качестве проектной работы вы построите полноценный проект по UI-автоматизации с соответствующей инфраструктурой. 👉🏻  ПРОЙТИ ТЕСТ — https://otus.ru/lessons/java-qa-pro/assessment/?utm_source=telegram&utm_medium=cpm&utm_campaign=jqa&utm_term=java_interview_lib&utm_content=test_24-04-2144_usp-qa_python_aitext_text-headline1_aida_long_banner_banner-hl1_no_standart  Пройдете тест, получите специальные условия для поступления на курс и доступ к 27 открытым урокам курса. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru Erid 2Vtzqwb47sf
10Loading...
36
Метод setUp() Метод setUp() (или before(), в предыдущих версиях JUnit) используется для настройки начальных условий перед выполнением каждого тестового метода. Этот метод выполняется перед каждым тестовым методом, который помечен аннотацией @Test. Это позволяет вам подготовить общие данные, создать объекты и настроить другие условия перед тестированием.
5 56619Loading...
37
☕🔍 Тестирование в Java: лучшие практики, инструменты и рекомендации для разработчиков Качественное тестирование — залог успешного Java-проекта. В этой статье мы поделимся лучшими практиками, инструментами и методами, которые помогут вам создавать надежный и эффективный код. Читать статью
1 41721Loading...
38
BrokenBarrierException BrokenBarrierException — это исключение, которое возникает в Java, когда поток пытается ждать на барьере, который находится в сломанном состоянии или когда пытается войти в барьер, который переходит в сломанное состояние во время ожидания. Как исправить: — Обработайте исключение BrokenBarrierException в коде. — Убедитесь, что все потоки, которые будут ждать на барьере, завершатся до того, как вы его сломаете. — Используйте CyclicBarrier вместо Barrier, если вам нужно сбросить барьер и запустить его снова.
1 77011Loading...
39
Объясните процесс загрузки, инициализации, выполнения и выгрузки класса в Java Virtual Machine (JVM). Какие шаги выполняются на каждом этапе? Ответ: Загрузка (Loading): — Нахождение и загрузка класс-файла: Class Loader ищет и загружает байт-код класса из файловой системы, JAR-архива, сети или другого источника. — Создание структур данных: Создаются структуры данных для представления класса в памяти JVM, такие как Class объект. Подготовка (Preparation): — Выделение памяти для статических переменных: Выделяется память для статических переменных, инициализированных значением по умолчанию. Инициализация (Initialization): — Инициализация статических переменных и выполнение статических блоков: Статические переменные получают значения из кода инициализации, выполняются статические блоки. Выполнение (Execution): — Вызов метода main(): Если класс содержит метод public static void main(String[] args), JVM вызывает этот метод для выполнения программы. — Вызов других методов: JVM вызывает другие методы по мере необходимости. Выгрузка (Unloading): — Освобождение памяти: Если класс больше не используется и нет активных ссылок на его объекты, JVM может выгрузить класс и освободить память.
1 78638Loading...
Photo unavailableShow in Telegram
System.currentTimeMillis или System.nanoTime? В Java есть два стандартных способа проведения операций со временем, и не всегда ясно, какой из них следует выбрать. ➡️ Метод System.currentTimeMillis() возвращает текущее количество миллисекунд с начала эры Unix в формате Long. Его точность составляет от 1 до 15 тысячных долей секунды в зависимости от системы. long startTime = System.currentTimeMillis(); long estimatedTime = System.currentTimeMillis() — startTime; ➡️ Метод System.nanoTime() имеет точность до одной миллионной секунды (наносекунды) и возвращает текущее значение наиболее точного доступного системного таймера. long startTime = System.nanoTime(); long estimatedTime = System.nanoTime() — startTime; Таким образом, метод System.currentTimeMillis() лучше применять для отображения и синхронизации абсолютного времени, а System.nanoTime() для измерения относительных интервалов времени.
Hammasini ko'rsatish...
👍 3 1
Photo unavailableShow in Telegram
RecursiveTask RecursiveTask является частью фреймворка Fork/Join в Java, введенного в Java 7. Этот фреймворк предоставляет удобный способ распараллеливания выполнения задач. RecursiveTask является подклассом ForkJoinTask. Он предназначен для использования вместе с пулом Fork/Join (ForkJoinPool) и предоставляет специальные методы для разделения задачи на подзадачи и объединения результатов.
Hammasini ko'rsatish...
👍 3
Photo unavailableShow in Telegram
Array или ArrayList? Выбор между Array и ArrayList зависит от специфики задачи Java, которую вы хотите решить. Запомните следующие особенности этих типов: — Массив имеет фиксированный размер, и память для него выделяется во время объявления, а размер ArrayList может динамически меняться. — Массивы Java работают намного быстрее, а в ArrayList намного проще добавлять и удалять элементы. — При работе с Array скорее всего возникнет ошибка ArrayIndexOutOfBoundsException. — ArrayList может быть только одномерным, когда массивы Java могут быть многомерными.
Hammasini ko'rsatish...
👍 1
Photo unavailableShow in Telegram
Реализуйте простой кэш на Java. Класс должен поддерживать операции добавления значения по ключу, получения значения по ключу и удаления значения по ключу. Кэш должен иметь фиксированный размер, и при превышении этого размера он должен удалять самый старый элемент. Как вы обеспечите оптимальную производительность операций? Решение: Кэш будет представлять собой обобщенный класс SimpleCache, который может хранить пары ключ-значение. Размер кэша будет ограничен, чтобы избежать переполнения. В случае превышения размера, самый старый элемент будет удаляться. Для хранения данных будем использовать HashMap (cache), так как это обеспечит эффективный доступ к значениям по ключу. Для отслеживания порядка ключей (чтобы определить самый старый элемент) будем использовать Queue (keyQueue), в данном случае LinkedList. Инициализируем кэш. Конструктор SimpleCache принимает максимальный размер кэша и инициализирует cache и keyQueue. Добавляем элемент в кэш и при добавлении элемента проверяем, не превышен ли максимальный размер. Если превышен, вызываем метод evictOldest для удаления самого старого элемента. Добавляем новый элемент в cache и помещаем ключ в keyQueue. Получаем элемент по ключу. Если элемент существует в кэше, перемещаем соответствующий ключ в конец keyQueue (чтобы отметить последнее использование) и возвращаем значение. Удаляем элемент из cache и соответствующий ключ из keyQueue. Получаем самый старый ключ из начала keyQueue, удаляем соответствующий элемент из cache.
Hammasini ko'rsatish...
👍 4
Что такое сигнатура метода? Это уникальная строка, которая описывает типы и порядок аргументов, а также возвращаемый тип метода. Сигнатура используется компилятором Java для различения методов с одинаковым именем, но отличающихся по своим параметрам.
Hammasini ko'rsatish...
😁 4 1🤔 1
Может ли метод принимать аргументы переменной длины? В Java метод может принимать переменное количество аргументов двумя основными способами: — Используя массив в качестве параметра. При определении метода указывается, что один из параметров — это массив некоторого типа. При вызове метода в этот параметр можно передать массив нужной длины. — Используя специальный синтаксис с многоточием. При определении метода один из параметров объявляется с многоточием после типа. Это говорит компилятору, что это параметр переменной длины. При вызове в него можно передать сколько угодно аргументов указанного типа. Таким образом метод становится более гибким и его можно вызывать с разным количеством аргументов в зависимости от ситуации. Это избавляет от необходимости перегружать метод для разного числа параметров.
Hammasini ko'rsatish...
👍 3
⚡️Proglib запускает канал про ИИ для генерации звука Там мы будем рассказывать про все существующие нейросети, которые генерируют музыку и голос — с пошаговыми инструкциями, инструментами и лайфхаками. ⭐️генерация голоса и музыки ⭐️замена и перевод речи ⭐️распознавание звуков 👉Подписывайтесь!
Hammasini ko'rsatish...
Как узнать значение конкретного символа строки, зная его порядковый номер в строке? Чтобы узнать значение конкретного символа в строке по его порядковому номеру, можно воспользоваться методом charAt(int index) класса String. Этот метод возвращает символ, расположенный в строке по указанному индексу. Индексы нумеруются от 0 до длины строки минус 1. Если переданный индекс находится вне диапазона длины строки, будет выброшено исключение IndexOutOfBoundsException.
Hammasini ko'rsatish...
Photo unavailableShow in Telegram
Хардкорный курс по математике для тех, кто правда любит математику! Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/12f47906 Что вас ждет: – Вводный урок от CPO курса – Лекции с преподавателями ВМК МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск – Практические задания для закрепления материала и ссылки на дополнительные материалы. ⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/12f47906
Hammasini ko'rsatish...
1
Что такое «фреймворк Fork/Join»? Фреймворк Fork/Join, представленный в JDK 7, — это набор классов и интерфейсов позволяющих использовать преимущества многопроцессорной архитектуры современных компьютеров. Он разработан для выполнения задач, которые можно рекурсивно разбить на маленькие подзадачи, которые можно решать параллельно. • Этап Fork: большая задача разделяется на несколько меньших подзадач, которые в свою очередь также разбиваются на меньшие. И так до тех пор, пока задача не становится тривиальной и решаемой последовательным способом. • Этап Join: далее (опционально) идёт процесс «свёртки» — решения подзадач некоторым образом объединяются пока не получится решение всей задачи. Решение всех подзадач (в т.ч. и само разбиение на подзадачи) происходит параллельно. Для решения некоторых задач этап Join не требуется. Например, для параллельного QuickSort — массив рекурсивно делится на всё меньшие и меньшие диапазоны, пока не вырождается в тривиальный случай из 1 элемента. Хотя в некотором смысле Join будет необходим и тут, т.к. всё равно остаётся необходимость дождаться пока не закончится выполнение всех подзадач. Ещё одно замечательное преимущество этого фреймворка заключается в том, что он использует work-stealing алгоритм: потоки, которые завершили выполнение собственных подзадач, могут «украсть» подзадачи у других потоков, которые всё ещё заняты.
Hammasini ko'rsatish...
👍 3