coyojo10의 개발블로그!
자바 기술 면접 정리 본문
JVM의 구조와 Java의 실행방식을 설명해주세요. JVM은 자바 가상 머신으로 자바 실행환경을 만들어주는 소프트웨어이다. 자바 코드를 컴파일하여 .class 바이트 코드로 만들면 자바 가상 머신에서 실행된다. JVM을 사용하면 자바 실행 코드의 변경없이 자바 코드를 실행시킬 수 있게 해주는 가상 머신이다. JVM은 자바 실행환경 JRE에 포함되어 있다. 사용하는 컴퓨터의 운영체제에 맞는 자바 실행 환경 JRE가 설치되어 있다면 JVM이 설치되어 있다는 뜻이다. |
GC가 무엇인지, 필요한 이유는 무엇인지, 동작방식에 대해 설명해주세요. # 메모리 관리법 # Heap 영역 #동적 할당 메모리 #필요 없게 된 메모리 # 주기적 삭제 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다 ( Heap영역에 저장되는 것들은? new 키워드로 생성되는 객체(인스턴스), 배열 등이 Heap 영역에 저장) |
컬렉션 프레임워크에 대해서 설명해주세요. 다수의 데이터를 효과적으로 관리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 대표적으로는 List, Set, Map, Stack, Queue가 있다. 컬렉션 프레임워크의 장점 중 하나가 배열의 비효율적인 부분을 개선할 수 있다는 것. 배열의 비효율적인 부분 : 배열의 크기는 생성할 때 결정되며 고정적이므로 그 이상을 넘어가면 데이터 저장이 불가하고 기존 데이터가 삭제되면 해당 인덱스의 데이터는 비어있어 메모리 낭비가 발생합니다. 컬렉션 프레임워크의 자료구조를 사용하면 배열의 비효율적인 부분을 개선할 수 있다. - List는 순서가 있는 데이터 집합으로 중복 가능 - Set은 순서가 없는 데이터의 집합으로 중복 불가 - Map은 키와 값이 한쌍으로 이루어진 데이터 집합, 키는 중복 불가 - Stack은 쌓아 올린다는 단어의 의미처럼 책을 쌓아 올리듯 쌓아 올린 형태의 자료 구조이다. 따라서 가장 나중에 들어온 것이 가장 먼저 나가는 후입선출(LIFO) 구조이다. - stack에서는 top으로 정한 곳을 통해서만 접근 가능, 삽입하는 연산을 push, 삭제하는 연산을 pop이라고 한다. - Queue는 줄을 서서 기다린다는 사전적 의미처럼 먼저 들어온 것이 먼저 나가는 선입선출(FIFO)의 방식으로 된 자료 구조이다. |
애노테이션에 대해서 설명해주세요 어노테이션이란? #해당 코드에대한 추가 적인 정보 제공 #런타임 또는 컴파일시 # 해당 코드에 대한 추가적인 처리를 함 어노테이션은 작성한 코드에 대해 추가적인 정보를 제공하면서 컴파일 또는 런타임 시 해당 코드에 필요한 추가적인 처리를 해주는 역할을 한다. 어노테이션의 용도 ð 컴파일러에게 작성한 코드의 문법 에러를 체크하도록 정보 제공 ð 컴파일/배포시 필요한 처리 기능 : 소프트웨어 개발툴이 컴파일 또는 배포시 특정 코드를 자동으로 생성할 수 있도록 정보 제공 ð 실행(런타임)시 특정 기능을 실행하도록 정보를 제공 어노테이션의 종류 1. 빌트인 어노테이션 : 자바 SDK에서 지원하는 어노테이션으로 따로 정의하지않고 사용가능 대표적인 예로는 @Override 2. 커스텀 어노테이션 : 사용자가 임의로 정의한 어노테이션 . |
제네릭에 대해서 설명해주세요. # 제네릭 #데이터 타입 # 클래스 외부에서 # 사용자에 의해 지정되는 기법 # 클래스 내부에서는 데이터 타입을 타입 파라미터로 포괄적으로 지정 # 주의 자바원시타입 # 타입 파라미터로 불가 제네릭은 클래스 내부에서 데이터 타입을 하나로 지정하지 않고 타입 파라미터로 대체하여 포괄적으로 지정한 후 외부에서 사용자에 의해 데이터 타입이 지정되는 기법을 의미한다. 즉 ,제네릭이란 데이터 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정하는 기법을 의미한다. 형 변환시 잘못된 데이터 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있어 에러를 사전에 방지 가능하다는 장점이 있다. 제네릭의 주의할 점은 자바 원시 타입을 제네릭 타입 파라미터로 넘길 수는 없다. . |
오버라이딩과 오버로딩이 무엇이며 어떤 차이가 있을까요? 오버로딩? #과적하다 #매개변수 타입이나 개수 다르면 # 같은 이름 메서드 여러 개 정의 가능 # 리턴값만 다른건 안됨! 오버로딩의 정의는 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 여러 개의 메소드를 정의할 수 있다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없다는 것이다. 오버라이딩? # 상속의 개념과 연결 #매개변수,리턴값,메소드 이름 모두 같아야 한다. 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라고 한다. 오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다. |
인터페이스와 추상클래스의 차이점에 대해 설명해주세요. 추상 클래스란? # 추상 메서드 하나 이상 반드시 포함 # 상속을 유도하는 클래스 #실체 생성불가 객체를 직접 생성할 수 있는 실체 클래스와 달리 추상클래스는 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없다.(즉 new 연산자 통해서 인스턴스 생성 불가) 추상 메서드를 반드시 하나 이상 선언하여 상속을 통해서 자손 클래스에서 이를 구현하도록 유도하는 클래스이다. class 앞에 "abstract" 예약어를 사용한다. 선언부만 작성하는 추상메서드를 선언할 수 있습니다.추상 메서드는 선언부만 있고 구현부 작성되어 있지 않으므로 자식 클래스에서 반드시 오버라이딩하여 메소드를 작성해야 한다.
클래스와 다르게 다중상속(구현)이 가능합니다. |
'백엔드' 카테고리의 다른 글
자바 기술 면접 정리 3 (0) | 2023.05.09 |
---|---|
자바 기술 면접 정리 2 (0) | 2023.05.09 |
[자바 백엔드 멀티캠퍼스] - Servlet 정리 2 (0) | 2023.04.24 |
[자바 백엔드 멀티캠퍼스] 수업 리뷰 - Servlet 정리 (0) | 2023.04.21 |
Junit을 통한 단위 테스트 정리 (0) | 2023.04.20 |