본문 바로가기
개인 공부/TIL

[ TIL - CS ] 면접을 위한 CS 공부 9편 - 자바 -

by 킴도비 2024. 11. 25.

🚌 2024년 11월 25일~ 2024년 12월 1일까지의 주제는 자바다.

 

💡 공통으로 준비한 질문

1️⃣ 첫번째 접은 글은 내 말로 풀어쓴 정답
2️⃣ 두번째 접은 글은 해석 또는 공부한 내용 또는 추가적으로 궁금한 내용

 

1. JVM이 무엇인지 설명해주세요.

더보기
  • JVM이란?
    • 자바 가상 머신이란 뜻으로 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다.
    • 다른 프로그램을 실행시키는 것이 목적인 프로그램이다.
    • 방어적 코딩의 가장 훌륭한 예 가운데 하나이다.
    • JVM은 자바 프로그램이 어느 기기, 또는 어느 운영체제 상에서도 실행될 수 있게 하는것과 프로그램 메모리를 관리하고 최적화하는 것이다.

 

2. Garbage Collector가 무엇인지, 어떻게 동작하는지 설명해주세요.

더보기
  • 가비지 컬렉션이란?
    • 자바 프로그램에서 사용되지 않는 메모리를 지속적으로 찾아내서 제거한다.
  • 가비지 컬렉션의 대상은?
    • 객체가 null인 경우
    • 블럭 실행 종료 후, 블럭 안에서 생성된 객체
    • 부모 객체가 null인 경우, 포함하는 자식 객체
  • 메모리 해체 과정
    • Marking : 프로세스는 마킹을 호출하고, GC가 메모리가 사용되는지 아닌지 찾아낸다.
    • Normal Deletion : 참조되지 않은 객체를 제거하고, 메모리를 반환한다.
    • Compacting : 퍼포먼스를 향상시키기 위해, 참조되지 않은 객체를 제거하고 또한 남은 참조되어지는 객체들을 묶는다.

 

3. 추상 클래스와 인터페이스에 대해 설명해주세요.

더보기
  • 추상 클래스
    • abstract 키워드로 선언된 클래스
    • 최소 한개의 추상 메서드를 포함하는 경우 반드시 추상 클래스로 선언하여야 한다.
    • 추상 메서드가 없어도 abstract로 선언한 클래스
    • 구현하려면 서브 클래스에서 슈퍼 클래스의 모든 추상 메서드를 오버라이딩하여 실행 가능한 코드로 구현한다.
    • 목적은 객체를 생성하기 위함이 아니며, 상속을 위한 부모 클래스로 활용하기 위한 것이다.
  • 인터페이스
    • 추상 메서드와 상수만을 포함하며, interface 키워드를 사용하여 선언한다.
    • 인터페이스를 상속받고, 추상 메서드를 모두 구현한 클래스를 작성한다. implements 키워드를 사용하여 구현한다.
    • 목적은 상속받을 서브 클래스에게 구현할 메서드들의 원형을 모두 알려주어, 클래스가 자신의 목적에 맞게 메서드를 구현하도록 하는 것, 구현 객체의 같은 동작을 보장하기 위한 목적이 있다.
    • 특징은 상수 필드와 추상 메서드만으로 구성된다. 모든 메서드는 추상 메서드로서, abstract public 속성이며 생략 가능하다.

 

4. Error와 Exception의 차이에 대해 설명해주세요.

더보기
  • Error란?
    • 컴파일 시 문법적인 오류와 런타임 시 널 포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료 시킬 수 있습니다.
    • 메모리 부족이나 스택오버플로우와 같이 발생하면 복구할 수 없는 심각한 오류
  • Exception이란?
    • 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 것으로 예를 들면, 연산 도중 넘침에 의해 발생한 끼어들기 등이 이에 해당합니다.
    • 예외는 발생하더라도 수습할 수 있는 비교적 덜 심각한 오류

 

5. Java에서의 MultiThread 프로그래밍에 대해 설명해주세요.

더보기
  • 멀티스레드란?
    • 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것
    • 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적습니다.
    • 하나의 스레드가 작업할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋아진다.
  • 멀티 스레드 프로그램이란?
    • 공유하는 자원에 대해 동기화 문제가 발생할 수 있다.

 

 

❔ 개인으로 준비한 질문

1. 직렬화에 대해 설명해주세요.

 

 

2. 캐스팅에 대해 설명해주세요.

 

 

3. Record에 대해 설명해 주세요.

 

 

4. 오버 로딩과 오버라이딩의 차이에 대해 설명해 주세요.