김민주

[JAVA 모의 면접] 면접 준비 본문

STUDY/이론

[JAVA 모의 면접] 면접 준비

7alswn 2024. 12. 12. 00:17

Java

  1. OOP의 4대 특징
    • 캡슐화: 데이터를 보호하기 위해 접근 제한자를 사용하고, 클래스 내부에서만 데이터 변경을 허용합니다.
    • 상속: 기존 클래스의 속성과 메서드를 재사용하며, 코드 중복을 줄입니다.
    • 다형성: 같은 메서드 이름으로 다양한 실행 결과를 제공하며, 오버로딩과 오버라이딩으로 구현됩니다.
    • 추상화: 불필요한 세부 정보를 숨기고 필요한 인터페이스만 노출하여 설계를 단순화합니다.
  2. 인터페이스와 추상 클래스의 차이
    • 인터페이스는 다중 구현이 가능하며 모든 메서드가 기본적으로 추상적이고 구현을 포함할 수 없습니다(Java 8 이후 기본 메서드 예외).
    • 추상 클래스는 단일 상속만 가능하며, 일반 메서드와 추상 메서드를 함께 가질 수 있습니다.
  3. JVM의 구조
    JVM은 Class Loader로 클래스를 로드하고, Heap에서 객체를 저장하며, Stack에서 메서드 호출 및 지역 변수를 관리합니다.
  4. Garbage Collection
    사용하지 않는 객체를 자동으로 식별하여 제거하며, Mark-and-Sweep 알고리즘 등으로 동작합니다.
  5. finalize() 메서드의 역할
    객체가 Garbage Collection되기 전에 호출되지만, 성능과 신뢰성 문제로 현재는 거의 사용되지 않습니다.
  6. 쓰레드와 프로세스의 차이
    • 프로세스: 독립적 실행 단위로 별도의 메모리를 가집니다.
    • 쓰레드: 프로세스 내 실행 단위로 메모리를 공유하며 가볍습니다.
  7. synchronized와 volatile의 차이
    • synchronized는 한 번에 하나의 쓰레드만 블록에 접근하도록 보장합니다.
    • volatile은 변수의 변경 내용을 모든 쓰레드에서 즉시 확인할 수 있도록 보장합니다.
  8. Thread Pool의 장점
    쓰레드 재사용으로 생성/소멸 비용을 줄이고, 제한된 쓰레드 수로 시스템 자원을 효율적으로 관리합니다.
  9. Checked와 Unchecked Exception
    Checked Exception은 컴파일 타임에 강제로 처리해야 하며, Unchecked Exception은 런타임에 발생하고 선택적으로 처리합니다.
  10. 커스텀 예외 구현 방법
    Exception이나 RuntimeException을 상속받아 새로운 예외 클래스를 정의하고, 필요에 따라 메시지를 전달하는 생성자를 추가합니다.
  11. List와 Set의 차이
    List는 순서를 유지하고 중복을 허용하며, Set은 순서를 보장하지 않고 중복을 허용하지 않습니다.
  12. HashMap과 Hashtable의 차이
    HashMap은 동기화되지 않아 성능이 좋으며 null 키와 값을 허용하고, Hashtable은 동기화되어 스레드 안전하지만 null을 허용하지 않습니다.
  13. ConcurrentHashMap의 동작 방식
    내부적으로 Segment(버킷)를 사용해 데이터를 분리하여 동시에 여러 쓰레드가 안전하게 접근할 수 있습니다.
  14. 람다 표현식과 스트림의 장점
    람다는 코드를 간결하고 가독성 있게 하며, 스트림은 데이터를 선언적으로 처리하고 병렬 처리를 쉽게 합니다.
  15. Optional 클래스의 사용
    null 값을 처리하는데 명시적 방식을 제공하며, orElse와 ifPresent 등을 사용해 예외를 방지합니다.
  16. Functional Interface란?
    하나의 추상 메서드만 가진 인터페이스로, @FunctionalInterface로 명시 가능하며 람다식을 구현체로 사용할 수 있습니다.