직렬화가 무엇인지 설명해주세요.
그렇다면 직렬화 컬렉션에는 뭐가 있죠?
프로젝트에서 직렬화를 적용해본 경험이 어떤 것이 있나요?
진짜 뼈맞은 질문이었다.
내가 아는 직렬화는 "서버와 브라우저는 바이트 스트림으로 데이터를 주고 받는데 객체를 네트워크로 전송하기 위해 바이트 스트림으로 변환시키는 작업을 직렬화라고 합니다" 라고 대답했었다.
이 대답이 틀린 말은 아니다.
근데 나는 직렬화라는 개념이랑 JSON이라는 개념에서 충돌이 일어났었다.
직렬화
직렬화(Serialize)는 자바에서 사용되는 Object나 Data를 다른 자바 시스템에서도 사용이 가능하도록 바이트 스트림 형태로 변환시키는 기술을 말한다. 반대로 바이트 스트림 형태의 데이터를 자바 시스템에서 사용하도록 Object나 Data로 변환하는 기술을 역직렬화라고 한다.
결국 직렬화라는 개념은 자바 언어에서 사용되는 개념이다. 그런데 JSON 포맷으로 데이터를 주고받는 경우가 굉장히 많지 않은가?? 나는 이 부분에서 헷갈렸었다.
JSON으로 변환하는 것도 결국 통신을 위해 직렬화라는 기술을 사용했다고 보면 된다.
반대로 JSON 형식의 데이터를 서버에서 사용하기 위해 역직렬화로 풀어서 사용하는 것이다.(즉 거의 동일한 개념이라고 보여진다)
문제는 두 번째 질문이었다.
그렇다면 직렬화 컬렉션에는 뭐가 있죠?
이제 생각해보니 직렬화를 사용하는 라이브러리가 무엇인지 묻는 질문이라고 생각한다.
그러면 JSON 라이브러리를 의미하는 건가?
기본적으로 많이 사용하는 JSON 라이브러리는 JACKSON, GSON이 있다.
스프링부트에서 사용하는 라이브러리인 spring-boot-starter-web에는 기본적으로 Jackson 라이브러리가 포함된다.
(즉 잭슨을 사용해서 직렬화를 자동으로 진행한다)
반면에 GSON은 오픈 소스 자바 라이브러리로 구글에서 개발했다.
반면에 자바 직렬화에서 사용하는 라이브러리들이 있다.
대표적으로 Kryo, Protobuf가 있다고 한다.(이걸 직접 사용해본 적은 없다)
'면접' 카테고리의 다른 글
백엔드 기술 면접 후기(4) (1) | 2024.01.04 |
---|---|
백엔드 기술 면접 후기(2) (1) | 2024.01.01 |
백엔드 기술 면접 후기(1) (2) | 2023.12.25 |