Перейти к содержимому
На этой странице

Основы сериализации

Все темы Java Developer

Что такое «сериализация»?

Сериализация — это процесс преобразования объекта в последовательность байтов, которые могут быть сохранены на диск или переданы по сети. Цель сериализации — сохранить состояние объекта, чтобы его можно было восстановить позже. Обратный процесс, десериализация, восстанавливает объект из этой последовательности байтов.


Опишите процесс сериализации/десериализации с использованием Serializable.

Сериализация с использованием Serializable
  1. Подготовка класса:
    • Класс должен реализовать интерфейс Serializable.

    • Указание serialVersionUID рекомендуется для контроля версий.

    import java.io.Serializable;
    
    public class Person implements Serializable {
        private static final long serialVersionUID = 1L;
        private String name;
        private int age;
    
        // Конструктор, геттеры и сеттеры
    }
  2. Сериализация объекта:
    • Используйте ObjectOutputStream для записи объекта в файл.
    Person person = new Person("Alice", 30);
    try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
        oos.writeObject(person);
    } catch (IOException e) {
        e.printStackTrace();
    }
  3. Десериализация объекта:
    • Используйте ObjectInputStream для чтения объекта из файла.
    try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
        Person deserializedPerson = (Person) ois.readObject();
        System.out.println("Name: " + deserializedPerson.getName());
        System.out.println("Age: " + deserializedPerson.getAge());
    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }

Ключевые моменты:

  • serialVersionUID участвует в проверке совместимости формы класса при десериализации. Совпадение идентификаторов само по себе не делает произвольные изменения класса совместимыми.

  • transient: Используйте для полей, которые не должны быть сериализованы.

Собеседования: Java

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Java-разработчик, Backend-разработчик на Java. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.