Java Interview Tasks
Открыть в Telegram
Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov
Больше4 896
Подписчики
Нет данных24 часа
+137 дней
+18830 дней
Архив постов
4 895
Что будет напечатано?
List list = List.of(null, "1", "2"); String result = list.stream().findFirst().orElse(""); System.out.println(result);
4 895
Что напечатает код?
double a = Math.pow(10, 100);
double b = Math.pow(10, -100);
double c = a + b;
System.out.println(c);
4 895
Нет, конструктор не может быть synchronized, это запрещено спецификацией, аргументация примерено такая - JVM гарантирует, что только один поток может вызвать конструктор в данный момент времени.
Вот почему нет необходимости объявлять конструктор как synchronized, и это недопустимо в Java.
4 895
Может ли конструктор быть synchronized? (почему - пишите в комменты)
4 895
Тут главная проблема в том, что первоначальный эксепшен теряется и непонятно будет какая ошибка случилась. Здесь нужно либо прокинуть этот эксепшен дальше либо залоггировать его.
4 895
👌Задача тимлида — организовать работу команды так, чтобы добиваться поставленных целей. Но почему иногда команда сильных специалистов никак не может достигнуть результата? Все ли в команде достаточно хорошо, чтобы решать поставленные задачи?
🚀Приходите З5 октября в 20:00 мск на открытый урок «5 пороков команды» в OTUS. На занятии разберемся, какими пороками может страдать команда, как их идентифицировать и устранить: регистрация
— Занятие проведет Александр Пряхин — руководитель курса «Team Lead» и технический директор CityAds Media. Еще больше полезных знаний ждет вас на онлайн-курсе «Team Lead» от OTUS, ориентированном на начинающих и действующих руководителей.
4 895
Оцените код по 10-бальной шкале (10 = наилучший код в истории человечества)
4 895
Какие проблемы могут быть в таком коде?
public static List add(Long l1, Long l2, Long l3) {
return List.of(l1, l2, l3);
}
4 895
Правильный вариант: может быть и true и false
Дело в том, что вызов thenRun у того же future, но во втором потоке, может привести к срабатыванию callback в первом thenRun.
При этом callback первого thenRun будет вызван во втором потоке.
Это происходит в тот момент, когда future.complete(null) начало выполняться, но ещё не успело вызвать callbacks,
а во втором потоке вызвался thenRun, который и выполнит все остальные callbacks на этом future но уже в своём потоке.
Проблем решается просто:
//основной поток
Thread mainThread = Thread.currentThread();
//создаём второй поток
Executor executor = Executors.newSingleThreadExecutor();
CompletableFuture future = new CompletableFuture<>();
CompletableFuture secondThreadFuture = future.thenRun(() -> {
System.out.println(Thread.currentThread() == mainThread);
});
//просто добавляем callback к тому же future в другом потоке
executor.execute(() -> {
secondThreadFuture.thenRun(() -> {
//nop
});
});
//завершаем future
future.complete(null);
Мы просто добавили secondThreadFuture, которая зависит от результата исходной future.
И вызов на ней thenRun во втором потоке не приводит к возможному срабатыванию callbacks на исходной future.
Для гарантированного вызова callbacks в заданных пользователем потоках у CompletableFuture существуют async реализации методов,
например — thenRunAsync, которым нужно передавать Executor. Но async-версии методов могут работать медленней, чем обычные.
4 895
Задача с собеседования:
Sort a large input stream of 3-byte unsigned integers (e.g. 16GB total size) not using disk provided you run 32-bit Java
4 895
Ответ: тут нарушен порядок HB сначала идет запись в volatile поле g а потом в x,
поэтому чтение из g еденицы не дает гарантий относительно x
Поэтому возможны все варианты: "0, 0", "1, 1", "0, 1", "1, 0"
4 895
Какие значения могут напечататься? (thread1 и thread2 запускаются одновременно в разных потоках)
4 895
Какие значения могут напечататься? (thread1 и thread2 запускаются одновременно в разных потоках)
4 895
Хочешь выучить Java, но не знаешь с чего начать? Начни с этого канала https://t.me/java_kabal
В закреплённых сообщениях ответы на самые часто задаваемые вопросы
