Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

coyojo10의 개발블로그!

자바 기술 면접 정리 본문

백엔드

자바 기술 면접 정리

coyojo 2023. 5. 9. 11:06
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" 예약어를 사용한다. 선언부만 작성하는 추상메서드를 선언할 있습니다.추상 메서드는 선언부만 있고 구현부 작성되어 있지 않으므로 자식 클래스에서 반드시 오버라이딩하여 메소드를 작성해야 한다.


인터페이스란?

클래스와 다르게 다중상속(구현) 가능합니다.
추상클래스는 IS - A "~이다".
인터페이스는 HAS - A "~ 있는".
이렇게 구분하는 이유는 다중상속의 가능 여부에 따라 용도를 정한 같습니다. 자바의 특성상 한개의 클래스만 상속이 가능하여 해당 클래스의 구분을 추상클래스 상속을 통해 해결하고, 있는 기능들을 인터페이스로 구현합니다.
추상클래스 사용 시기 : 상속 관계를 타고 올라갔을때 같은 조상클래스를 상속하는데 기능까지 완변히 똑같은 기능이 필요한 경우
인터페이스 사용 시기 : 상속 관계를 타고 올라갔을때 다른 조상클래스를 상속하는데 같은 기능이 필요할 경우 인터페이스 사용
 

인스턴스(Instance)란?

 
클래스가 붕어빵 틀이라면 틀을 통해 생성된 객체(붕어빵) 하나하나를 해당 클래스의 인스턴스(Instance)라고 부른다. Java 프로그램 실행 클래스는 JVM 메모리의 클래스 영역(Class Area) 로드되고 클래스를 사용하여 영역(Heap Area) 새로운 인스턴스(객체) 생성할 있다. , 인스턴스란 현실의 객체를 소프트웨어 내에서 구현한 실체라고 있다. 이렇게 생성된 인스턴스들은 각자 고유의 특성을 가지고 독립적으로 존재한다