Mediumserialization
Что такое сериализация и зачем Serializable?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Сериализация — преобразование объекта в последовательность байтов для сохранения/передачи. Serializable — marker interface (без методов), указывающий, что класс может быть сериализован.
class User implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private transient String password; // не сериализуется
// static-поля не сериализуются
}
// Запись
try (var oos = new ObjectOutputStream(new FileOutputStream("u.dat"))) {
oos.writeObject(user);
}
// Чтение
try (var ois = new ObjectInputStream(new FileInputStream("u.dat"))) {
User u = (User) ois.readObject();
}transient— исключить поле;static— не сериализуется;serialVersionUID— версия класса для совместимости;- Ограничения: security (deserialization → RCE gadgets), fragility, не для long-term storage;
- Альтернативы — JSON (Jackson, Gson), Protocol Buffers, Kryo.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.