Java Interview Tasks
Open in Telegram
Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov
Show more4 896
Subscribers
No data24 hours
+137 days
+18830 days
Posts Archive
4 895
@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
public class SystemCalls {
@Benchmark
public long curr() {
return System.currentTimeMillis();
}
@Benchmark
public long instant() {
return Instant.now().toEpochMilli();
}
}
4 895
Ответ на вопрос про currentTimeMillis и toEpochMilli:
Тут очевидно, что гораздо быстрее (1) так как:
1) @IntrinsicCandidate public static native long currentTimeMillis(); - IntrinsicCandidate
(Про интринсики я писал в прошлом посте - https://t.me/java_interview_tasks/167)
2) (2) создает объект Instant.now() и далее вызывается метод .toEpochMilli(), который выполянет конвертацию -> больше операций + оверхед по памяти
Результаты у меня получились такие:
VM version: JDK 17.0.1, OpenJDK 64-Bit Server VM, 17.0.1+12-39
Units: ops/s Benchmark Score Error currentTimeMillis 205488100,839 ± 5397269,355 toEpochMilli 65060918,825 ± 3064529,122Код бенчмарка ниже:
4 895
Какой код более производительный?
(1) System.currentTimeMillis()
(2) Instant.now().toEpochMilli()
4 895
SQLpedia - канал про SQL и базы данных, в котором вы найдете:
— Возможность предложить нам статью для перевода;
— Полезные видео;
— Интересные опросы;
— Профессиональный юмор;
Полезности с канала:
— Шпаргалка по SQL
— Выбор СУБД
— Обзор типов и подходов БД
Присоединяйтесь, давайте расти как профессионалы вместе 😉
Подписаться: @sql_wiki
4 895
Ответ к вопросу new Integer(300) или Integer.valueOf(300):
valueOf в общем случае использовать предпочтительнее
Вариант new Integer(...) с 9-ой версии java помечен как @Deprecated(since="9", forRemoval = true) и будет удален в будущих версиях, то есть вам будет сложнее мигрировать на новые версии java с таким кодом.
Код valueOf:
@IntrinsicCandidate
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Используется IntegerCache.cache, что даст прирост производительности
Так же обратите внимание на аннотацию @IntrinsicCandidate, интринсик даст прирост производительности
Про интринсики можно почитать подробнее тут - https://www.baeldung.com/jvm-intrinsics
или тут - https://habr.com/ru/post/352086/
4 895
💡Как проходит реальное собеседование Middle Java Developer?
Ребята из Jetbulb подготовили обзор серии реальных интервью на позицию Middle Java Developer в компанию и на проект на котором работает Максим Добрынин в настоящее время. Это и многое другое в новом выпуске на youtube-канале @jetbulb
Видео уже доступно по ссылочке:
https://youtu.be/gJUYq0W1hWI
А еще у ребят скоро стартует набор на бесплатное mock-интервью, так что не забудьте подписаться😉
4 895
Хорошее видео про то , как надо писать commit messages
https://www.youtube.com/watch?v=uBhpBOX8VYg
4 895
Что лучше использовать Integer i = new Integer(300) или Integer i = Integer.valueOf(300)?
Пишите в комменты почему выбранный Вами вариант будет лучше.
4 895
Class3 не immutable, так как в конструкторе присваивается массив, ссылка на который осталась вне этого класса. Его можно изменять там, откуда он пришел и эти изменения будут менять поле array внутри Class3
Пример immutable класса, в котором эта проблема решена:
4 895
Alexander Zelentsov, [07.07.2022 23:16]
Ответ к вопросу про immutability:
Immutable класс — это класс, который после инициализации не может изменить свое состояние. То есть если в коде есть ссылка на экземпляр иммутабельного класса, то любые изменения в нем приводят к созданию нового экземпляра.
Чтобы класс был immutable, он должен соответствовать следующим требованиям:
1) Все поля класса должны быть приватными в соответствии с принципами инкапсуляции.
2) Для корректного создания экземпляра в нем должны быть параметризованные конструкторы, через которые осуществляется первоначальная инициализация полей класса.
3) Для исключения возможности изменения состояния после инстанцирования, в классе не должно быть сеттеров.
4) Должен быть объявлен как final, чтобы от него нельзя было наследоваться. Иначе дочерние классы могут нарушить иммутабельность.
5) Для полей-коллекций необходимо делать копии, чтобы гарантировать их неизменность.
4 895
Программистам C# на заметку: оставайтесь в тренде
Ежедневные заметки, челенджи с собеседований и ответы на вопросы на канале @csharp_1001_notes
p.s. Заодно подтянешь свой английский 👩🏫
4 895
Проблемы:
1) код вообще не компилируется, так как метод void, но есть return
2) relatedId странное название, по факту это carId
3) внутри map, завернут еще один optional, это не нужно делать - тут лучше использовать flatMap, он уже возвращает optional
4) 'c' внутри map запутывает, это car, но такое название уже занято и, видимо, поэтому назвали 'c', лучше назвать как то более понятно, например, car, а параметр метода carToFill
5) 'c' внутри ifPresent запутывает еще больше, это owner и надо назвать именно так
6) если поправить пунтк 3, то и вложенный ifPresent внутри ifPresent'a будет не нужен
7) Возможно лучше вообще сделать так, что бы метод возвращал matadata, а потом уже другой метод проставлял в Car метадату
8) optional.of вернёт npe для null, правильно использовать optional.ofNullable
Если нашли что-то ещё - пишите в комменты
