enhorse / java-interview Goto Github PK
View Code? Open in Web Editor NEWВопросы и ответы к интервью Java разработчика
Вопросы и ответы к интервью Java разработчика
Почитать для собеза
Метод push()
должен возвращать тип NonBlockingStack<T>
вместо Stack<T>
.
Че-нибудь по мавену бы
Неверно - "В качестве ключа и значения используется добавляемый элемент.". HashSet использует добавляемый элемент только в качестве ключа, а значение - объект Object.
private static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
Не стоит делать проверку с помощью instanceof, так как такая проверка будет возвращать true для подклассов и будет работать правильно только в случае, если класс объявлен как immutable. Вместо этого желательно использовать только getClass()
Если вызвать System.exit(code), то блок finally не исполнится.
Было бы здорово иметь ссылки на форматированные документы (txt, rtf, docx, pdf) по каждому разделу и в целом для печати.
Суммируя: PreparedStatement выгодно отличается от Statement тем, что при повторном использовании с одним или несколькими наборами параметров позволяет получить преимущества заранее прекомпилированного и кэшированного запроса, помогая при этом избежать SQL Injection.
https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html
При прекомпилорованный запрос документация есть, но непонятно откуда взята информация о кешировании
Если, это о кешировании плана запроса, то из текста воспринимается не так, а как кеширование ответа БД
Тут исправить "Все методы неявно объявляются как public" на "как public abstract" как пишется в следующем разделе. Потому что вопрос был про все модификаторы, а не только про доступ.
"При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала."
Iterator же имеет remove()?
Необходимо поменять вопрос или ответ на него, либо добавить пояснение. Если спрашиваем про порядок вызова, то сначала вызывается конструктор самого младшего и далее выше по иерархии, но выполняются они в том порядке, какой написан в ответе. В дебагере порядок вызова виден.
public class A extends B {
public A() {
super("From A");
System.out.println(", но выполняются от самого старшего к самому младшему");
}
}
public class B extends C {
public B(String param) {
super("From B");
System.out.print(" самого младшего к самому старшему");
}
}
public class C {
public C(String param) {
System.out.print("На самом деле вызываются от");
}
}
Привет,
Принципиальная разница между ними состоит не в том, можно ли по одному обрабатывать элементы. Здесь важнее концепт сущностей: Collection - это прежде всего воплощение Структур Данных. Тот же Set не просто в себе хранит элементы, он реализует идею множества с уникальными элементами.
Тогда как Stream, это прежде всего абстракция необходимая для реализации "конвеера вычислений", собственно поэтому, результатом работы конвеера являются те или иные Структуры Данных или же результаты проверок/поиска и т.п.
Худшее время добавление в LinkedList скорее (N/2) так как для вставки по индексу как и для удаления, может быть выбран как хвост, так и голова списка, тогда получится что максимум надо перейти по половине списка.
При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.
на самом деле
https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html#remove--
Чекай пару раз в день
Если вы хотите переопределить equals()
, какие условия должны выполняться? (пустой)
(https://github.com/enhorse/java-interview/blob/master/core.md#%D0%B5%D1%81%D0%BB%D0%B8-%D0%B2%D1%8B-%D1%85%D0%BE%D1%82%D0%B8%D1%82%D0%B5-%D0%BF%D0%B5%D1%80%D0%B5%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D1%8C-equals-%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F-%D0%B4%D0%BE%D0%BB%D0%B6%D0%BD%D1%8B-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D1%82%D1%8C%D1%81%D1%8F)
Тоже самое что и -
Правила переопределения метода Object.equals()
.
https://github.com/enhorse/java-interview/blob/master/core.md#%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BF%D0%B5%D1%80%D0%B5%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0-objectequals
Какая связь между hashCode()
и equals()
?
https://github.com/enhorse/java-interview/blob/master/core.md#%D0%BA%D0%B0%D0%BA%D0%B0%D1%8F-%D1%81%D0%B2%D1%8F%D0%B7%D1%8C-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-hashcode-%D0%B8-equals
ListIterator is not fail-safe according to multiple sources, e.g.:
https://www.techiedelight.com/fail-fast-iterator-vs-fail-safe-iterator-java/
Че-нибудь по спрингу бы
Добрый день! У вас тут ошибка: "если поток управления один, то конкурентного выполнения быть не может" https://en.wikipedia.org/wiki/Concurrency_(computer_science) и выдержка из этой статьи: "Concurrency is about structure, parallelism is about execution, concurrency provides a way to structure a solution to solve a problem that may (but not necessarily) be parallelizable.[3]." Из этого следует, что конкурентное выполнение может быть на одном процессоре. И вот еще на русском статья https://www.zhashkevych.com/concurrency-and-parallelism.
От Ромки
На самом деле, кажется, адрес памяти уже давно не используется.
При сборке мусора объект может перемещаться из одной области памяти в другую (зависит от реализации сборщика), и тогда адрес памяти объекта меняется, и если хеш-код будет от него зависеть, то и хеш-код поменяется, а так быть не должно.
https://stackoverflow.com/questions/49172698/default-hashcode-implementation-for-java-objects (accepted answer)
https://bugs.openjdk.org/browse/JDK-8199394
У меня в этом примере возникают две ошибки 'method_()' is already defined in 'Class_'
class Class_ {
static
void method_(){ }
void method_(){ }
}
java 17.0.2 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)
Не могут иметь внутри себя статических объявлений (полей, методов, классов);
Поля всё-таки могут иметь статические
Please provide access to create branches and PR for adding information about JVM Architecture topic.
Привет,
Здесь сказано "... передачу ссылки на статический метод println() класса System.out", но это не корректно, т.к. println - не статический метод, а System.out - не класс. В данном случае показан instance method reference на примере статического поля out в классе System.
Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке)
Можно ещё привести боксовую ссылку к примитивному типу.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.