본문 바로가기
CS

신입 개발자 CS 면접 대비 질문-Java/자바 #2

by Rudy 2023. 1. 17.

* CS면접을 대비해서 공부한 내용들을 정리했습니다. 틀린 부분이 있을 수 있으니 그럴 경우 댓글 달아주시면 감사하겠습니다!

* 분야는 운영체제, 데이터베이스, 네트워크, 자바, 자료구조 등등 가리지 않고 했기 때문에 여러 과목과 내용이 섞여 있습니다.

* 모든 내용은 간단하게 익히기 위해서 얕게 적혀 있습니다. 깊은 내용은 따로 공부하길 권장드립니다.

 


 

16. try-with-resources

  • try-with-resources는 try-catch-finally의 문제점을 보완하기 위해 나온 개념이다.
  • try()안에 자원 객체를 전달하면, try블록이 끝나고 자동으로 자원을 해제 해주는 기능이다.
  • 따로 finally 구문이나 모든 catch 구문에 종료 처리를 하지 않아도 된다.

 

17. 불변 객체

  • 불변 객체는 객체 생성 이후 내부의 상태가 변하지 않는 객체
  • Java에서는 필드가 원시 타입인 경우, final 키워드를 사용해 불변 객체를 만들 수 있고 참조 타입일 경우엔 추가적인 작업이 필요하다.

 

18. 참조 타입일 경우, 추가적인 작업이 어떤 것인지?

  1. 객체 참조: 참조 변수가 일반 객체일 경우 객체를 사용하는 필드의 참조 변수도 불변 객체로 변경해야 한다.
  2. 배열 참조: 배열일 경우, 배열을 받아 카피해서 저장하고 getter를 clone으로 반환하도록 하면 된다.
  3. 리스트 참조: 새로운 리스트를 만들어 값을 카피해서 저장한다.

 

19. 불변 객체나 final을 사용해야 하는 이유

  1. 병렬 프로그래밍에 유용해서 동기화를 고려하지 않아도 된다.
  2. 어떤 예외가 발생하더라도 메소드 호출 전의 상태를 유지할 수 있어서 예외 발생 전과 똑같은 상태로 다음 로직을 처리할 수 있다.
  3. 변수의 값이 바뀌거나 객체의 필드 값을 설정하거나 예외나 오류가 발생하여 실행이 중단되는 현상을 피해 오류를 최소화 할 수 있다.
  4. 메서드 호출할 때 파라미터 값이 변하지 않는다는 것을 보장할 수 있다.
  5. 가비지 컬렉션 성능을 높일 수 있다.

 

20. 추상 클래스vs인터페이스

추상 클래스는 클래스 내 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다.

인터페이스는 모든 메서드가 추상 메서드로만 이루어져 있는 것을 말한다.

공통점: new 연산자로 인스턴스 생성이 불가능하고, 하위 클래스에서 확장 및 구현 해야 한다.

차이점: 인터페이스는 그 인터페이스를 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하지만, 추상 클래스는 상속받는 클래스들의 공통적인 로직을 추상화 시키고, 기능 확장을 위해 사용한다. 또한, 추상 클래스는 다중상속이 불가능하지만, 인터페이스는 다중상속이 가능하다.

 

21. 싱글톤 패턴

  • 단 하나의 인스턴스를 생성해서 사용하는 디자인 패턴
  • 인스턴스가 1개만 존재해야 한다는 것을 보장하고 싶은 경우와 동일한 인스턴스를 자주 생성해야 하는 경우에 주로 사용된다.

 

22. 싱글톤 패턴의 대표 예시

Spring Bean이다. 스프링의 Bean 등록 방식은 기본적으로 싱글톤 범위이고, 스프링 컨테이너는 모든 Bean들을 싱글톤으로 관리한다. 또한, 스프링은 요청할 때마다 새로운 객체를 생성해서 반환하는 기능도 제공한다.

 

23. 스프링 빈

스프링에서 관리하는 객체이다.

 

24. 가비지 컬렉션

JVM의 메모리 관리 기법 중 하나로, 시스템에서 동적으로 할당됐던 메모리 영역 중에서 필요없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법이다.

 

25. 가비지 컬렉션 과정

JVM이 어플리케이션의 실행을 잠시 멈추고, GC를 실행하는 쓰레드를 제외한 모든 스레드들의 작업을 중단 후, 사용하지 않는 메모리를 제거하고 작업이 재개된다.

댓글