Вопрос с собеседования · Java
Какая пара классов преобразует байтовые потоки в символьные и обратно?
JuniorВвод-вывод и NIO
Коротко
InputStreamReader декодирует байты в символы, OutputStreamWriter кодирует символы в байты. Кодировку указывают явно: new InputStreamReader(in, StandardCharsets.UTF_8).
- Без кодировки — зависимость от окружения (до Java 18)
- Это адаптеры: байтовый интерфейс в символьный
- Поверх — BufferedReader для readLine
А ещё Для файлов проще Files.newBufferedReader(path, UTF_8)
Подробно
Важно явно указывать Charset, иначе кодировка по умолчанию окружения может дать разные результаты на разных машинах.
Что хотят услышать
- Название классов.
- Явная кодировка.
Частые ошибки
- Путать буферизацию с преобразованием кодировки.
- Не указывать charset при чтении текста.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓InputStreamReader и OutputStreamWriter
- ✗BufferedInputStream и BufferedOutputStream
- ✗DataInputStream и DataOutputStream
- ✗File и Path
Что спросят дальше
- Чем Reader отличается от InputStream?
- Зачем нужен BufferedReader?
Разбор темы
- Потоки ввода-вывода: байты, символы, буферы
Байтовые и символьные потоки, кодировки и Charset, буферизация и системные вызовы, декоратор-паттерн и современный файловый API.
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.