[면접공부] 자바 - 면접질문(2) (feat.gpt)
- 국비지원 (스파르타)
- 2025. 4. 11. 23:02
오늘은 어제 해설 강의를 들었다. 고로 어제 맞췄다고 했던 try-with-resouce를 비롯하여 몇몇개를 작성해볼예정이다.
문제는 6문제로 어제 맞췄다는 문제까지 총 7문제를 준비하였다. 이제 얘네를 한번 공부해보자.
try with resources
- 이거 같은 경우에는 자바7에 들어온 개념으로 외부에서들어온 자원들을 자동으로 정리해주며, AutoCloable을 사용한 객체를 자동으로 제거를 해주는것으로 알고 있습니다.라고 대답했었다.
try-with-resources는 Java 7에서 도입된 기능으로, AutoCloseable 인터페이스를 구현한 자원을 try 구문 안에 선언하면, 해당 블록이 끝난 후 자원이 자동으로 close됩니다.
근데 고민이 되는 포인트가 외부자원은 I/O를 통해 데이터가 들어오는데 내가 알기로는 I/O도 OS성능에 영향을 받는 것으로 알고 있다.
여기에서 알 수 있는건 OS랑 JVM랑 연결되어있는 무언가가 있는것이 분명하다.
이래서 native 메모리 영역도 OS에서 관리한다는 얘기가 나오는것도 이 때문인건가? 모르겠다. 다음 질문은
커스텀 클래스의 멤버 변수 중 배열이나 리스트를 불변으로 만들기 위한 방법은?
불변이라함은 변경이 되지 않는 것을 뜻하는데 단순히 final을 붙이는걸로 대답을 하는건 아닌거 같다. 뭔가 있을 거 같은데 얘도 gpt를 돌려보자. 일단 2가지를 신경을 써야 한다고 한다.
1. 외부에서 내용 변경이 불가능해야 함
2. 외부에서 참조 자체도 바꿀 수 없어야 함
리스트의 경우 (예: List<String> tags)
방법 ① 생성 시 불변 컬렉션으로 감싸기
배열의 경우 (예: String[] names)
배열은 참조가 그대로 노출되면 외부에서 변경 가능
방법 ① 복사 후 저장, getter도 복사
라고 한다. 뭔가 이상하긴하지만 일단 뭐... 여기는 섧명이 어렵다. 뭔가가 gpt가 14에서 나온 record도 설명해준다고 했다.
언제 쓰면 좋을까?
- DTO나 응답 객체처럼 데이터만 담는 클래스
- 비즈니스 로직 없이 값만 전달하는 용도
- JSON 직렬화/역직렬화 용도에도 유용함
못하는 것
- 상태 변경 (setSomething() 불가)
- 클래스를 상속해서 확장할 수 없음
- 필드에 애노테이션 직접 붙이기 제한적 (필요하면 생성자나 accessor에 붙임)
그렇다는건 데이터 전달 목적으로만 사용을 해야 할거 같다는 생각이 들었다. 오늘은 집중력이 떨어져서 이쯤하고 아래는 추후 작성해야 겠다. 이 페이지에 적을수도 있고 아님 페이지가 다를수도 있고...
JVM 의 메모리 영역과 할당 시점은?
싱글톤 패턴은 어떨 때 사용할까
new String 과 리터럴 문자열의 차이는?
상속(Inheritance)이 위험할 수 있는 이유와 합성(composition)을 선호해야 하는 이유를 설명하시오.
직렬화에서 SerialVersionUID 를 선언해야하는 이유는?
'국비지원 (스파르타)' 카테고리의 다른 글
[면접공부] - db (feat.gpt) (1) (0) | 2025.04.15 |
---|---|
[면접공부] 자바 - 면접질문(3) (feat.gpt) (1) | 2025.04.14 |
[면접공부] 자바 - 면접질문(1) (feat.gpt) (1) | 2025.04.10 |
[면접공부] java - jvm(2) (1) | 2025.04.10 |
[면접공부] 1. java - jvm공부 (1) | 2025.04.08 |