Бонусное задание | 10 лекция | 10 уровень

Открыта

— Привет, Амиго! Что-то ты расслабился! Вот твои задания. Если вдруг возникнут трудности, то обращайся к коллегам, они точно помогут.

11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Минимум изменений
Как же всё-таки здорово, когда усилия оптимизированы! Только вот процесс оптимизации не всегда простой. Давайте потренируемся в нём, а заодно и сериализацию подучим вам нужно сделать возможной сериализацию некоего класса при минимальных изменениях кода. Вперёд!
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Десериализация
На вход подается поток, в который записан сериализованный объект класса A либо класса B. Десериализуйте объект в методе getOriginalObject так, чтобы в случае возникновения исключения было выведено сообщение на экран и возвращен null. Реализуйте интерфейс Serializable там, где необходимо.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Найти ошибки
Почему-то при сериализации/десериализации объекта класса B возникают ошибки. Найди проблему и исправь ее. Класс A не должен реализовывать интерфейсы Serializable и Externalizable. В сигнатуре класса В ошибки нет :). В методе main ошибок нет.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Исправить ошибку. Сериализация
После десериализации объекта класса Solution обнаружили, что данных в словаре [m] нет :( Исправить 1 ошибку.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Сериализация человека
И появился у нас человек. Класс Person, то бишь. И пришла пора его сериализовывать. И делать это нужно вам. Самым естественным образом. Если нужно, добавьте к некоторым полям модификатор transient. Но только если нужно.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Сериализация под запретом
Давайте поговорим про исключения, а именно — NotSerializableException . Именно с помощью этого длинного слова и соответствующей конструкции вам предстоит запретить сериализацию класса SubSolution. Только сигнатуры классов не меняйте, пожалуйста.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Переопределение сериализации в потоке
Вы уже привыкли к тому, что в мире есть масса неправильного и глючного кода? Вот вам ещё немного. Здесь сериализация и десериализация Solution не работает. Вам предстоит удовольствие исправить ошибки, не меняя сигнатуры методов и класса.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Делаем правильный вывод
У нас есть код. Но всё в нем не так… Нам нужно кое-что поменять. А именно — расставить обращения к методам суперкласса и модификаторы доступа так, чтобы получить вывод на экран определённого характера. Какого именно? Узнаете из задачи.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Знакомство с графами
Графья нынче не те пошли. Вот эти, плоские, с циклами и петлями. Благо хоть, ориентированные, а то совсем бы худо пришлось… И что нам с ними делать? А ничего. Просто изучать и надеяться на лучшее.

— Ты уже всё сделал? Вот тебе ещё и бонусные задания повышенной сложности:

11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Алгоритмы-числа
Ура, задачи на алгоритмы! Их очень любят резиденты планеты Линейный Хаос. И вы должны любить, по крайней мере, до того момента, как пройдёте пару-тройку собеседований. Итак, у вас есть число из некоторого количества чисел. Нужно найти все числа меньше N, которые удовлетворили бы некоторому критерию (о нём узнаете в самой задаче!).
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Алгоритмы-прямоугольники
И снова задача на алгоритмы, теперь о массивах, которые содержат прямоугольники. В этот раз всё небанально, так что, возможно, найдётся упорядоченный изоморф, который не сможет решить задачку о возврате количества прямоугольников. А ведь эти ребята только тем и занимаются, что упорядочиванием и сравнением.
11
Задача
Java Core,  10 уровень,  10 лекция
Недоступна
Кроссворд
Нет, нам не придётся решать кроссворды. Нам нужно решить нетривиальную задачку про кроссворды. Есть двумерный массив, а в нём — слова, слова, слова. По горизонтали, по вертикали, по диагонали… Нужно найти все слова в массиве.
Комментарии (77)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Марина23 уровень
15 февраля, 12:29
А правда ли задачку 2025 читерски решать для соблюдения скоростного режима? с готовыми числами Армстронга? :(
Марина23 уровень
15 февраля, 12:40
Почитала комменты... матрицы еще используют! Или вот секрет от Владимира Секретная ссылка П.С.: приятно поговорить с умным человеком:)
Евгений36 уровень, Москва
13 марта, 13:15
Алгоритм по приведенной ссылке вполне рабочий. Последняя моя версия, не читерская справляется примерно за 5 секунд до Long.MAX_VALUE. Очень советую задачу решить. Для меня она стала переломным моментом, после которого стало понятно, что в принципе все решаемо, просто где-то надо побольше подумать/почитать.
Марина23 уровень
15 февраля, 09:10
Задача 2024... Просто почитать доп материал? От картинки (что по ссылке) начал дергаться глаз... Хм... понятно будет в следующих задачах, видимо! Ну! ВПЕРЕД!
Марина23 уровень
14 февраля, 09:47
Задача 2018. Внимание, спойлер! Значит все мне было понятно про (де)сериализацию, про интерфейсы Serializable и Externalizable, про тайный serialVersionUID, про то как и когда лучше использовать, про вызовы конструкторов, про переопределение методов и "ручное" управление, НО Я эту задачу и так и эдак.. понимаю, что ругается на конструктор, но че не устраивает??? Да, Serializable не вызывает конструктор при десериализации... Оказывается! Сохранили мы данные с 2мя String, а выгружается, то только в один... второго же нет, конструктор по боку!!! (Это я все поняла подглядев ответ у Di)... у самой не хватило логики (((( В итоге, переопределив методы writeObject(ObjectOutputStream out) и readObject(ObjectInputStream in), я решила задачу! НО!!! Я не поняла, почему для класса А нужен был еще и пустой конструктор? Для дефолта??? Конечно жииии я могла все неправильно понять, готова слушать комментарии) Java зе бест оф зе бест оф зе бест оф зе бест...
Даниил24 уровень
7 февраля, 16:45
Да, крайние 3 задачи я просто не способен решить. Даже толком понять до конца из них одну не смог...
Mikhail Lazarev25 уровень
29 января, 16:33
УДивительно. В курсе говорили, что для кастомной сериализации нужно использовать интерфейс Externalazible, однако есть методы readObject() и writeObject (), которые можно переопределить для интерфейса Serializable.
Andrii Gorshunov36 уровень
1 января, 15:19
Десереализация. Помагает только catch (Exception e){return null;} Найти ошибки. Помогло объяснение тут https://javarush.ru/help/13389 (коммент) Сериализация под запретом. Вместо добавлять в класс несереализируемые объекты типа Thread например, они хотят написать свои методы readObject, WriteObject которые throw new NotSerializableException. Странный подход. Однако становится очевидным после прочтнения этого материла http://ccfit.nsu.ru/~deviv/courses/oop/java_ser_rus.html Знакомство с графами. Решается легко. Под графом, как я понял, понимается вся сетка связей данного объекта с другими объектами. То есть все возможные цепочки(как дерево). Дело в том, что при сериализации, все ссылки данного объекта на другие объекты сохраняются при записи автоматически. То есть после десереализации, они сами будут снова указывать на все те объекты, которые были до сериализации. А если это дерево объектов, типа Дед, Дочь-Сын, Внуки... и мы сохраним в файл или ByteArrayOutpusStream нашего Деда, то после восстановления Деда, внуки и дети они тоже воссоздадутся. Здесь больше инфо https://javarush.ru/tasks/com.javarush.task.task20.task2024 по данной задаче Вообще я так понял, что тут задачи уже достаточно сложные из-за того, что конец квеста Java Core. Поздравляем друг друга с завершением и двигаемся дальше. Сложные задачи оставил на потом.
Bahis36 уровень, Москва
29 ноября 2018, 20:48
Задача 2022 проходит тестирование, но при запуске валятся NotActiveExveption!
Andrii Gorshunov36 уровень
1 января, 17:04
подтверждаю
Pavlic Morozov (pashok09i)28 уровень, Екатеринбург
27 января, 20:43
так может дело в тестировании? у меня сработало
Евгений36 уровень, Москва
19 ноября 2018, 15:47
Спасибо огромное команде javarush.ru за задачу 2025! Я на нее убил кучу времени, ее пока еще не принял валидатор, но зато есть чувство, что у меня получилось (получилось то, что я задумал). Для Long.MAX_VALUE требуется около 7 секунд и 50 чисел найдены, для Integer.MAX_VALUE - 277 мс. Надеюсь, удастся ее добить. Но даже если нет, можно с чистой совестью двигаться дальше. UPD: проверка прошла успешно, достаточно было при вызове метода обнулить статические переменные.
Taras Kutselya22 уровень
8 ноября 2018, 09:55
С 2025 задачкой никак не могу придумать, как ускорить что бы обрабатывать Long.MAX_VALUE. Для значения N = Long.MAX_VALUE / 2 примерно 8 сек. Для N = Long.MAX_VALUE уже беда. Для long получается есть 50 чисел. Я нахожу 44 только :( дальше слишком возрастает время.
Sergey_Vladimirovich32 уровень, Минск
23 сентября 2018, 06:50
Если кому-то мало задач, тренируйтесь на codewars.com. Так этих задач - тьма.