[기술면접] 221116

박채은·2022년 11월 16일
0

회고록

목록 보기
5/8

내 질문

Q4. 메서드 오버라이딩과 메서드 오버로딩의 차이는 무엇인가요?

오버라이딩과 오버로딩은 모두 자바의 다형성과 관련된 기능입니다.

오버로딩은 같은 메소드 이름을 가진 함수를 여러 개 만들 수 있는 것입니다.
오버라이딩은 상위 클래스로부터 상속받은 함수를 하위 클래스에서 재정의하여 덮어씌우는 것을 말합니다.

즉 오버라이딩은 상속 관계에서 일어나는 함수의 재정의이고, 오버로딩은 한 클래스 내에서 이름은 같지만 매개변수가 다른 함수를 여러 개 생성하는 것을 말합니다.

  • 오버라이딩과 오버로딩은 조건?

    • 오버로딩: 함수의 이름은 같고, 함수의 매개변수의 갯수나 매개변수의 타입이 달라야합니다. 함수의 리턴 타입은 상관없습니다.
    • 오버라이딩: 상속 관계에서, 함수의 이름은 같고, 함수의 매개변수 타입, 갯수, 함수의 리턴 타입까지 완전히 동일해야 합니다.

Q5. 자바의 메모리 영역에 대해 설명해주세요.
자바의 메모리 영역은 런타임 데이터 에리아라고 합니다.
메모리 영역은 크게 클래스(메소드) 영역, 스택 영역, 힙 영역 3가지로 구성되어 있습니다.

클래스 영역은 static 변수, static 메서드, 클래스를 저장합니다. 컴파일이 끝나고 나서 클래스와 static을 바로 클래스 영역에 로드하기 때문에 런타임 시작부터 static 변수와 메서드, 클래스를 사용할 수 있습니다.

스택 영역은 지역변수, 메소드의 매개변수, 리턴값 등을 저장하는 곳이며 LIFO(Last in First Out) 구조입니다.
메소드가 호출되면, 스택에 메소드 프레임이 생성되면서 스택에 push 됩니다. LIFO 구조이므로 마지막에 들어온 것부터 pop되고 해당 메소드가 완료되면 메소드 프레임이 삭제됩니다.

힙 영역에서는 동적으로 생성되는 객체를 저장합니다. 즉 여러 객체들이 생성되었다가 삭제되는 곳으로 가비지 컬렉션이 실행되는 곳이기도 합니다.

Q11. OOP의 장점과 단점에 대해 설명해주세요.

OOP는 프로그램의 모든 것을 객체화하기 때문에, 코드의 재사용이 용이해서 생산성이 높으며 유지 보수가 쉽다라는 장점이 있습니다.
하지만 설계에 시간이 오래 걸리며, 모든 것을 객체화하기 때문에 실행 속도가 느리다는 단점이 있습니다.

실행 속도가 느린 이유

페어분 질문

Q8. 자바 접근 제어자의 특징과 종류에 대해서 설명해주세요.
Q10. 이너클래스의 장점에 대해 설명해주세요.

  1. 내부 클래스에서 외부 클래스의 멤버에 손쉽게 접근할 수 있게 됩니다.
  2. 서로 관련 있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킵니다.
  3. 외부에서는 내부 클래스에 접근할 수 없으므로, 코드의 복잡성을 줄일 수 있습니다.
  • 이너 클래스의 단점은 무엇인가요?
    -> 이너 클래스를 사용하게 되면, 이너 클래스 내부에 외부 클래스를 향한 외부 참조 가 생깁니다. 이너 클래스는 참조값을 담아야하기 때문에 인스턴스 생성 시에, 시간적, 공간적 성능이 낮아집니다. 또한, 가비지 컬렉션이 인스턴스를 수거하지 못해 메모리 누수가 발생할 수도 있습니다.

Q12. List, Set, Map의 차이에 대해서 설명해주세요 .

0개의 댓글