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

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

@java_interview_lib

Вопросы с собеседований по Java и ответы на них.

По рекламе: @tproger_sales_bot

Учиться у нас: clc.to/3wECtA

Для обратной связи: @proglibrary_feeedback_bot
Subscribers
6.42K
Photos
438
Videos
12
Links
733

Showing posts older than #57 · Back to latest

Older Posts 20 shown
Post #56 1.58K
Почему в некоторых интерфейсах вообще не определяют методов?

Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу.

Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
  • 👍 5
Post #55 1.69K
Что такое исключение? Какой пакет содержит все определения классов исключений в Java?

Исключения (Exceptions) — это нештатные ситуации, возникающие во время выполнения программы. Они могут произойти в результате неправильного ввода пользователем или неправильной логики кодера. Пакет java.lang.Exception содержит все определения классов исключений в Java.
  • 👍 9
Post #54 1.67K
Можно ли перегружать метод main() в Java?

Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main().
  • 👍 14
Post #53 1.68K
Каким образом реализованы методы hashCode() и equals() в классе Object?

Реализация метода Object.equals() сводится к проверке на равенство двух ссылок:

public boolean equals(Object obj) {
return (this == obj);
}

Реализация метода Object.hashCode() описана как native, т.е. определенной не с помощью Java кода и обычно возвращает адрес объекта в памяти:

public native int hashCode();
  • 👍 8
  • 👎 3
  • ❤ 2
Post #52 1.49K
Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?

Ответ:
Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
  • 👍 8
  • 😢 1
Post #50 1.58K
Какими свойствами обладает порождаемое equals() отношение эквивалентности?

☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.

Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
  • 👍 3
Post #49 1.42K
Прямой эфир «Технический этап собеседования: разбор задач и ошибок»

🕐 Когда?

29 августа в 19:00 мск

🗣️ Кто спикер?

Алексей Бочкарев | Engineering Manager at FAANG

🦥 Где регистрироваться?

Здесь – https://proglib.io/w/e67c7b97

🌝 О чем поговорим?

– Комбинаторика и комбинаторные числа: определение и практические примеры

– Основные идеи динамического программирования

– Идеи рекурсии и примеры, включая inorder обход двоичного дерева

– Графы и способы их представления

– Примеры различных типов асимптотической сложности

– Распространенные ошибки в коде, как избегать обращения за границы массива, разыменования нулевого указателя, некорректная логика

☄️ Регистрируйтесь, будет интересно – https://proglib.io/w/e67c7b97
  • ❤ 1
Post #48 1.25K
Какие классы позволяют ускорить чтение/запись за счет использования буфера?

• BufferedInputStream(InputStream in)/BufferedInputStream(InputStream in, int size),
• BufferedOutputStream(OutputStream out)/BufferedOutputStream(OutputStream out, int size),
• BufferedReader(Reader r)/BufferedReader(Reader in, int sz),
• BufferedWriter(Writer out)/BufferedWriter(Writer out, int sz)
  • 👍 4
  • 😁 1
Post #47 1.46K
Из за чего может возникать NoClassDefFoundError, NoSuchMethodError?

🔸 NoClassDefFoundError может возникнуть, если нужной библиотеки с этим классом нет в classpath
🔸 NoSuchMethodError может возникнуть из-за несовместимости ваших библиотек, если зависимая библиотека A вызывает метод из старой версии библиотеки B, но в classpath есть более новая версия библиотеки B, c другой сигнатурой этого метода
  • 👍 10
Post #46 1.6K
Что такое «ссылка на метод»?

Если существующий в классе метод уже делает всё, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:

• имя_класса::имя_статического_метода для статического метода;
• объект_класса::имя_метода для метода экземпляра;
• название_класса::new для конструктора.

Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.

Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
  • 👍 9
  • ❤‍🔥 1
Post #45 1.38K
Когда стоит изменять значение поля serialVersionUID?

serialVersionUID нужно изменять при внесении в класс несовместимых изменений, например при удалении какого-либо его атрибута.
  • 👍 6
Post #44 1.54K
Чем отличается переопределение от перегрузки?

Перегрузка происходит в пределах одного класса, переопределение — в рамках иерархии классов.

Перегруженные методы должны отличаться сигнатурой, переопределенные — иметь одинаковую.

Перегрузка не нарушает инкапсуляцию, при переопределении может нарушаться.

Перегруженные методы не связаны с полиморфизмом, переопределенные позволяют реализовать полиморфное поведение.

В целом, перегрузка связана с компиляцией, а переопределение — с выполнением кода.
#вопросы_с_собеседований
  • 👍 7
Post #43 1.43K
Опишите иерархию исключений.

Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.

Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память, доступная виртуальной машине.

Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
  • 👍 15
Post #42 1.4K
Какие подклассы класса Reader вы знаете, для чего они предназначены?

• Reader — абстрактный класс, описывающий символьный ввод;
• BufferedReader — буферизованный входной символьный поток;
• CharArrayReader — входной поток, который читает из символьного массива;
• FileReader — входной поток, читающий файл;
• FilterReader — абстрактный класс, предоставляющий интерфейс для классов-надстроек;
• InputStreamReader — входной поток, транслирующий байты в символы;
• LineNumberReader — входной поток, подсчитывающий строки;
• PipedReader — входной канал;
• PushbackReader — входной поток, позволяющий возвращать символы обратно в поток;
• StringReader — входной поток, читающий из строки.
  • ❤ 3
  • 👍 1
Post #41 1.85K
Оцените количество памяти на хранение одного примитива типа byte в ArrayList?

ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) — на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт — на хранение упакованного объекта типа Byte. Для x64 — 8 байт и 24 байта соответственно.
  • 👎 5
  • 👍 2
Post #40 1.53K
Какие есть правила переопределения метода Object.equals().

1. Использование оператора == для проверки, является ли аргумент ссылкой на указанный объект. Если является, возвращается true. Если сравниваемый объект == null, должно вернуться false.
2. Использование оператор instanceof и вызова метода getClass() для проверки, имеет ли аргумент правильный тип. Если не имеет, возвращается false.
3. Приведение аргумента к правильному типу. Поскольку эта операция следует за проверкой instanceof, она гарантированно будет выполнена.
4. Обход всех значимых полей класса и проверка того, что значение поля в текущем объекте и значение того же поля в проверяемом на эквивалентность аргументе соответствуют друг другу. Если проверки для всех полей прошли успешно, возвращается результат true, в противном случае — false.

По окончанию переопределения метода equals() следует проверить: является ли порождаемое отношение эквивалентности рефлексивным, симметричным, транзитивным и непротиворечивым? Если ответ отрицательный, метод подлежит соответствующей правке.
  • ❤ 3
  • 👍 1
Post #39 1.37K
Что такое «интеграционное тестирование»?

Интеграционное тестирование (integration testing) — это тестирование, проверяющие работоспособность двух или более модулей системы в совокупности — то есть нескольких объектов как единого блока. В тестах взаимодействия же тестируется конкретный, определенный объект и то, как именно он взаимодействует с внешними зависимостями.
  • 👍 4
  • ❤ 1
Post #38 1.57K
Что такое Java Virtual Machine (JVM)? Как она работает?

Java Virtual Machine (JVM) — это среда выполнения, которая позволяет выполнять Java-приложения на любой платформе, где установлена JVM. Она является ключевым компонентом технологии Java, так как обеспечивает портативность и независимость Java-кода от конкретной операционной системы.

JVM принимает скомпилированный Java-код (байт-код) и интерпретирует его в машинный код на конкретной платформе. Он выполняет множество задач, включая загрузку классов, управление памятью, выполнение потоков, оптимизацию кода и т. д.

Когда Java-приложение выполняется на JVM, оно получает доступ к богатому набору библиотек Java, которые предоставляют множество готовых классов и методов для решения различных задач. Благодаря JVM Java считается одним из самых надежных и масштабируемых языков программирования.
  • ❤ 7
  • 👍 3
  • 😢 1
Post #37 1.45K
Каково максимальное число значений hashCode()?

Число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 2^32.
  • 👍 7
Post #36 1.58K
Что такое double checked locking Singleton?

double checked locking Singleton — это один из способов создания потокобезопасного класса, реализующего шаблон Одиночка. Данный метод пытается оптимизировать производительность, блокируясь только случае, когда экземпляр одиночки создаётся впервые.

Следует заметить, что требование volatile обязательно. Проблема Double Checked Lock заключается в модели памяти Java, точнее в порядке создания объектов, когда возможна ситуация, при которой другой поток может получить и начать использовать (на основании условия, что указатель не нулевой) не полностью сконструированный объект. Хотя эта проблема была частично решена в JDK 1.5, рекомендация использовать volatile для Double Cheсked Lock остаётся в силе.
  • 👍 7
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →