ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Interview] Java Tech Interview
    Interview 2021. 5. 27. 14:34

    1. JVM이란?

    더보기

    JVM은 자바 바이트코드(.class)를 OS에 특화된 코드로 변환하여 실행하는 자바 가상 머신입니다

     

    2. Java의 실행 방식을 설명하시오

    더보기

    1. 자바 컴파일러(javac)가 소스파일(.java)을 컴파일하여 바이트코드(.class)를 만듭니다.

    2. 클래스 로더는 해당 바이트코드를 JVM에 로딩합니다

    3. 로딩된 class 파일들은 Execution Engine에 의해 해석됩니다

    4. 해석된 바이트코드는 Runtime Data Areas에 배치되어 실행됩니다

     

    3. GC란?

    더보기

    Garbage Collector는 Heap 영역에서 사용하지 않는 객체들을 찾아 메모리 공간을 해제합니다.

    C언어는 개발자가 메모리를 Free할 수 있지만 Java는 해당 기능을 제공하지 않기 때문에 사용됩니다

     

    4. Collection Framework에 대해 설명해주세요

    더보기

    Java는 기본적인 자료구조들을 인터페이스로 정의했습니다.

    해당 Collection을 구현한 Collection Class들이 있고 이를 통해 데이터를 효율적으로 관리할 수 있습니다

     

    5. List에 대해 설명해주세요

    더보기

    List는 데이터를 연속적으로 저장하는 특성을 가집니다.

    ArrayList의 경우 배열과 동일한 특성을 가지며 LinkedList의 경우 다음 노드의 주소를 가지고 있어 데이터 삽입과 삭제가 용이한 특성을 가지고 있습니다

     

    6. Map에 대해 설명해주세요

    더보기

    key를 통해 value를 탐색하는 비연속 자료구조입니다.

    key값이 정렬된 상태를 유지하는 TreeMap, 입력 순서가 유지되는 LinkedHashMap이 있습니다

     

    7. Set에 대해 설명해주세요

    더보기

    Set은 순서가 없고 중복이 허용되지 않는 자료형입니다

    key값이 정렬된 상태를 유지하는 TreeSet, 입력 순서가 유지되는 LinkedHashSet이 있습니다

     

    8. Stack에 대해 설명해주세요

    더보기

    Stack은 먼저 넣은 데이터가 가장 나중에 나오는 자료구조입니다

    함수별 지역변수 선언시 사용됩니다

     

    9. Queue에 대해 설명해주세요

    더보기

    Queue는 먼저 넣은 데이터가 가장 먼저 나오는 자료구조입니다

    대기열을 구현할 때 사용됩니다

     

    10. ArrayList와 Array의 차이점이 무엇인가요?

    더보기

    ArrayList는 사이즈가 동적인 배열입니다.

    Array는 Primitive type과 Object 모두 담을 수 있지만, ArrayList는 Object만 담을 수 있습니다

     

    11. 제네릭에 대해 설명해주세요

    더보기

    Generic이란 자료형을 명시함으로써 컴파일 과정에서 타입체크를 해주는 기능입니다

    객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줍니다

     

    12. 애노테이션에 대해 설명해주세요

    더보기

    애노테이션은 인터페이스를 기반으로 주석처럼 코드에 달아 특별한 의미를 부여합니다

     

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

    더보기

    오버라이딩은 클래스를 상속받아 새로운 클래스를 정의하는 것입니다

    오버로딩은 동일한 return값과 메소드명을 가지지만 파라미터의 종류와 개수가 다른 클래스를 정의하는 것입니다

     

    14. 추상 클래스와 인터페이스의 차이점을 설명해주세요

    더보기

    둘 다 상속받을 클래스의 설계도 역할을 합니다.

    동일한 기능이 필요할 경우 추상 클래스에서 정의한 메소드를 사용합니다

    그렇지 않을 경우 인터페이스를 상속받아 직접 내용을 정의합니다

     

    15. 클래스와 객체를 설명해 주세요

    더보기

    클래스는 어떤 객체를 정의하는 틀을 말합니다

    객체는 식별 가능한 클래스의 구현체를 말합니다

     

    16. 원시 자료형의 크기에 대해 설명해 주세요

    더보기

    boolean : 1바이트

    byte : 1바이트

    char : 2바이트

    short : 2바이트

    int : 4바이트

    float : 4바이트

    long : 8바이트

    double : 8바이트

     

    17. 접근 제어자의 종류와 이에 대해 설명해주세요

    더보기

    접근 제어자에는 public default protected private이 있습니다

    public은 모든 클래스에서 접근 가능하고 default는 해당 패키지에서 접근이 가능합니다

    protected는 상속받은 클래스만 접근이 가능하고 private은 해당 클래스에서만 접근이 가능합니다

     

    18. 객체지향에 대해 설명해주세요

    더보기

    객체지향을 다른 말로 하면 의존성 관리입니다.

    각 요소의 의존성과 책임을 분리함으로써 변경 영향을 최소화하는 것입니다

     

    19. SOLID에 대해 설명해주세요

    더보기

    SRP : Single Responsibility Principle, 하나의 클래스는 하나의 책임만 가진다

    OCP : Open Closed Principle : 확장에는 열려있고 수정에는 닫혀있다

    LSP ; Liskovp Substitution Principle : 프로그램의 정확성을 유지하면서 하위 타입의 인스턴스로 바꿔야 한다

    ISP : Interface Seperation Principle : 클라이언트는 사용하지 않는 메서드에 의존관계를 맺으면 안된다

    DIP : Dependency Inversion Principle : 구현 클래스에 의존하지 않고 인터페이스에 의존해야 한다

     

    20. Java 8에 추가된 기능을 설명해주세요

    더보기

    1. Stream API : 데이터를 추상화하여 데이터 종류와 무관하게 다룰 수 있습니다

    2. Optional : null값을 받을 수 있습니다

    3. Lambda : 일회성 함수 사용 가능

     

    21. Thread-Safe란? 이를 구현하는 방법은?

    더보기

    여러 스레드가 하나의 자원에 동시 접근이 가능하면서 그 동작의 정확성을 보장하는 것

    synchronized 키워드로 Lock을 거는 방법과 Thread-Safe 객체를 사용하는 방법이 있습니다

    concurrent 패키지의 ConcurrentHashMap 자료형이 그 예시입니다

     

    21. Wrapper 클래스를 사용하는 이유는?

    더보기
    JAVA의 기본 자료형을 객체처럼 다뤄야 할 때가 있기 때문이다
    예를 들어 함수의 파라미터로 Call by reference를 하려면 기본 자료형 대신 Wrapper 클래스를 사용해야 한다

     

    21. Wrapper 클래스의 비교?

    더보기
    일반 비교기호를 사용하면 객체의 동일성을 비교하고 member 함수인 equals 함수를 사용해야 그 값을 비교한다

    22. 접근 제어자를 사용하는 이유

    더보기
    1. 데이터를 보호하기 위함
    2. 임시적으로 사용하는 경우 외부에서 접근 불가능하게 하여 복잡성을 줄인다

     

    'Interview' 카테고리의 다른 글

    [Interview] Spring Tech Interview  (0) 2021.05.27
Designed by Tistory.