목록전체 글 (531)
개발놀이터
Q. 어노테이션에 대해서 설명해주세요. A. 어노테이션은 인터페이스를 기반으로 한 문법으로 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있습니다. 더 자세히 물어보면 대답하기 어노테이션의 종류로는 내장어노테이션, 메타어노테이션, 사용자정의 어노테이션이 있습니다. 내장 어노테이션은 자바에서 기본적으로 제공해주는 어노테이션입니다. 메타어노테이션은 어노테이션을 위한 어노테이션으로 어노테이션이 적용될 위치나 어느시점까지 적용될 것인지를 결정합니다. 사용자정의 어노테이션은 메타어노테이션을 이용해 만든 커스텀 어노테이션입니다. https://coding-review.tistory.com/131 어노테이션 어노테이션의 정의 애노테이션은 인터페이스를 기반으로 한 문법으로 주석처럼 코드에 달..
어노테이션의 정의 애노테이션은 인터페이스를 기반으로 한 문법으로 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있다. 어노테이션의 종류 어노테이션에도 종류가 있다. 내장 어노테이션 : 자바가 기본적으로 제공해주는 어노테이션 메타 어노테이션 : 어노테이션을 위한 어노테이션 사용자 정의 어노테이션 : 사용자가 직접 정의하는 어노테이션 내장 어노테이션 메타 어노테이션을 제외한 내장 어노테이션의 종류는 다음과 같다. @Override @Deprecated @FunctionalInterface @SuppressWarnings 이제 하나씩 살펴보자 @Override 오버라이딩을 올바르게 했는지 컴파일러가 체크해준다. Override 어노테이션은 오버라이딩 할 때, 메서드의 이름을 잘못 적..
Q. 제네릭에 대해서 설명해주세요. A. 제네릭은 자바의 타입 안전성을 맡고 있습니다. 컴파일 과정에서 타입체크를 해주는 기능으로 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안전성을 높이고 형변환의 번거로움을 줄여줍니다. https://coding-review.tistory.com/129 제네릭 제네릭 자바에서 제네릭이란 데이터의 타입을 일반화한다는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시 coding-review.tistory.com
제네릭 자바에서 제네릭이란 데이터의 타입을 일반화한다는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시에 미리 타입 검사를 수행하면 다음과 같은 장점을 지닌다. 클래스나 메소드 내부에서 사용되는 객체의 타입 안전성을 높일 수 있다. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. 자바5 이전에는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object타입을 사용했다. 하지만 이 경우에는 반환된 Object객체를 다시 원하는 타입으로 타입 변환해야 하며, 이때 오류가 발생할 가능성도 존재한다. 하지만 자바5부터 도입된 제네릭을 사용하면 컴파일 시에 미리 타입이 정해지므로, 타입 검..
Q. 컬렉션 프레임워크에 대해 설명해주세요. A. 자바 컬렉션은 널리 알려져 있는 자료구조를 바탕으로 객체, 데이터들을 효율적으로 관리할 수 있는 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고 합니다. List, Set은 컬렉션 인터페이스를 상속받지만 Map 인터페이스는 구조상의 차이라 별도로 정의합니다. https://coding-review.tistory.com/127 컬렉션 프레임워크 (Collection Framework) 컬렉션 프레임워크란? 배열을 사용하다 보면 여러가지 비효율적인 문제가 생긴다. 가장 큰 문제점은 크기가 고정적이라는 것이다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게 되면 coding-review.tistory.com
컬렉션 프레임워크란? 배열을 사용하다 보면 여러가지 비효율적인 문제가 생긴다. 가장 큰 문제점은 크기가 고정적이라는 것이다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게 되면 더이상 데이터를 저장할 수 없다. 또 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생한다. 그렇기에; 자바는 배열의 이러한 문제점을 해결하기 위해, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리할 수 있는 자료구조들을 만들어두었다. 이러한 자료구조들이 있는 라이브러리를 컬렉션 프레임워크라고 한다. 대표적으로는 List, Set, Map, Stack, Queue등이 있다. List 컬렉션 컬렉션 프레임워크를 상속받고 있는 List컬렉션은 객체를 일렬로 늘어..
Q. GC가 무엇이고 필요한 이유는 뭔가요? A. GC는 힙 영역에서 사용하지 않는 객체들을 제거하는 작업을 총칭합니다. 이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메모리를 직접 해제해줄 수 없는 언어이기 때문입니다. 따라서 객체를 사용하고 제거하는 기능이 필요하게 됩니다. Q. GC의 동작방식에 대해 설명해주세요 A. GC의 동작방식은 가장 간단한 Serial GC 방식으로 설명합니다. GC는 Minor GC, Major GC로 구분할 수 있습니다. Minor GC는 young한 영역에서, Major GC는 old한 영역에서 일어난다고 정의합니다. GC를 수행할 때는 GC를 수행하는 스레드 이외의 스레드는 모두 정지합니다. 이를 Stop-the-world라고 합니다. Minor GC는 E..
GC의 정의 GC는 Garbage Collector의 약자로 힙 영역에서 사용하지 않는 객체들을 제거하는 작업을 총칭한다. 이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메모리를 직접 해제해줄 수 없는 언어이기 때문이다. 따라서 객체를 사용하고 제거하는 기능이 필요하게 된다. GC의 동작방식 GC의 동작방식을 정리하면 다음과 같다. GC의 동작방식은 가장 간단한 Serial GC 방식으로 설명한다. GC는 Minor GC, Major GC로 구분한다. Minor GC는 young한 영역에, Major GC는 old한 영역에서 일어난다. GC를 수행할 때는 GC를 수행하는 스레드 이외의 스레드는 모두 정지한다. Minor GC는 Eden 영역이 가득 차면 시작한다. Eden 영역에서 참조가 남아..
Q. JVM이 뭔가요? / JVM에 대해서 설명해주세요 A. 자바 가방 머신의 약자로 JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것입니다. 메모리 관리를 수행하며 스택 기반의 가상머신입니다. Q. JVM의 구조를 설명해주세요 A1. JVM의 구조는 Class Loader, Execution Engine, Runtime Data Areas, JNI, Native Method Library로 이루어져 있습니다. 이 뒤는 자세하게 듣기를 원하면 대답하기 A1-1. Class Loader는 JVM내로 클래스들을 로드하고 링크를 통해 배치하는 작업을 수행합니다. Execution Engine은 바이트 코드를 실행시키는 역할을 하며, 구성 요소로는 인터프리터, JIT ..
위 그림은 자바 코드의 실행 과정을 간략하게 보여준다. 프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로하는 메모리를 할당 받는다. (JVM은 이 때 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.) 자바 파일(.java)이 자바 컴파일러에 의해 자바 바이트코드(.class)로 변환된다. 클래스 로더를 통해 자바 바이트 코드를 JVM으로 필요한 시점에 로딩한다. 해석된 바이트 코드는 런타임 데이터 영역에 배치되어 실질적인 수행이 이루어진다. 실행 과정 속에서 JVM은 필요에 따라 GC와 같은 관리 작업을 수행한다. 자바 코드가 실행되는 과정을 살펴보면 C / C++과는 다르다는 것을 알 수 있다. C / C++은 운영체제별로 컴파일러가 존재하여 해당 운영체제가 인식할 수 있는 기계어로 변환된..