본문 바로가기

개발자 기술 면접/JAVA19

[JAVA] ArrayList와 LinkedList의 차이 ※ ArrayList와 LinkedList 모두 Java에서 제공하는 List 인터페이스를 구현한 Collection 구현체이다. ArrayList란? ArrayList(선형리스트)는 List 인터페이스를 구현한 클래스로, 크기가 가변적으로 변하는 선형리스트입니다. 일반적인 배열과 같이 인덱스로 내부의 객체를 관리한다는 점 등이 유사하지만, 한 번 생성되면 크기가 변하지 않는 배열과는 달리, ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있습니다. 하지만 추가되었을 때 기존 배열이 동적으로 늘어나는 것이 아니라, 기존 배열의 용량보다 더 큰 용량의 배열을 생성하여 내용을 복사하는 작업을 수행하.. 2024. 2. 1.
[JAVA] 자바 리플렉션(Java Reflection)이란? 자바 리플렉션(Java Reflection) 자바 리플렉션은 구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 입니다. - 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우에 사용됩니다. - 동적으로 객체를 생성하고 메서드를 호출하는 방법입니다. - 클래스, 인터페이스, 메서드 등을 찾을 수 있고, 객체를 생성하거나 변수를 변경하거나 메서드를 호출할 수 있습니다. - 대표적으로 여러 라이브러리, 프레임워크에서 사용되는 어노테이션이 리플렉션을 사용한 예시입니다. - Ex) 인텔리제이의 자동 완성 기능, 스프링 프레임워크의 어노테이션 등등 2024. 1. 12.
[JAVA] Mybatis와 JPA의 차이 Mybatis Mybatis는 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 Persistence Framework의 종류 중 하나입니다. 즉, Object와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술인 SQL Mapper 프레임워크의 한 종류입니다. 객체와 테이블의 관계를 매핑하는 것이 아니라, SQL을 직접 작성하고 결과를 어떠한 객체에 바인딩하는 방법으로 SQL에 의존적인 방법입니다. JPA(Java Persistence API) JPA는 Java에서 사용하는 ORM(Object Relational Mapping) 기술 표준으로 인터페이스의 모음이자 Persistence Framework의 종류 중 하나입니다. 즉, Object와 관계형 데이터베이스를 매핑해 주.. 2024. 1. 2.
[JAVA] JAVA API란? JAVA API 자바 API란, 개발에 필요한 주요 기능들을 미리 작성하고 컴파일하여 클래스 라이브러리로 묶어 놓은 패키지들이며 JDK 내에 제공됩니다. 2023. 12. 29.
[JAVA] JRE와 JDK의 차이 JRE(Java Runtime Environment) 자바 실행 환경의 약자로, 자바 프로그램을 실행하기 위한 java 클래스 라이브러리 등의 도구들이 들어있으며 JVM도 이 안에 포함되어 있습니다. JDK(Java Development Kit) 자바 개발 도구의 약자로, 자바 애플리케이션을 개발하기 위한 모든 것을 묶어 놓은 키트입니다. JRE를 포함할 뿐만 아니라 컴파일러, 디버거 등 개발에 유용한 도구들을 포함하고 있습니다. 따라서 자바 프로그램을 개발하기 위해서는 JDK를 다운로드하여야 합니다. 2023. 12. 29.
[JAVA] JVM(Java Virtual Machine)의 역할 JVM의 역할 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 역할을 합니다. 그리고 JVM은 JAVA와 OS 사이에서 중개자 역할을 수행하여, JAVA가 OS에 구애받지 않고 독립적으로 작동이 가능하게 합니다. 또한, 메모리 관리 기능인 GC(가비지 컬렉션)를 수행합니다. 2023. 12. 29.
[JAVA] JAVA 접근 제한자 접근 제한자란? 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 예약어를 통해서 지정할 수 있으며, 이러한 예약어를 접근 제한자라고 합니다. ※ JAVA의 접근 제한자로는 public, protected, default, private가 있습니다. public은 어떤 클래스에서든 접근이 가능하고 다른 클래스에서도 해당 클래스의 public 멤버에 접근할 수 있습니다. protected는 같은 패키지에 있는 다른 클래스나, 타 패키지에서 상속받아 하위 클래스에서 접근 가능합니다. default는 아무런 접근 제한자를 지정하지 않았을 때 적용되며, 같은 패키지 내에서만 접근 가능합니다. private는 해당 클래스 내에서만 접근 가능합니다. 다른 클래스에서 접근할 수 없습니다. ※ 표로 정리 ※ 접.. 2023. 12. 29.
[JAVA] JAVA 메모리 관리 기술 가비지 컬렉션 메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것입니다. 가비지 컬렉터 시스템에서 가비지 컬렉션을 수행하는 프로그램을 가비지 컬렉터라 부릅니다. JVM이 메모리를 부여받은 이후 프로그램을 실행하면서 메모리가 부족해지는 순간이 오면 추가적으로 메모리를 더 요청하게 되는데, 이때 가비지 컬렉터가 실행됩니다. 즉, 메모리가 부족할 때 쓰레기를 정리해주는 프로그램입니다. 메모리 할당 사용 중인 메모리 인식 사용하지 않는 메모리 인식 2023. 12. 29.
[JAVA] JAVA 주요 메모리 영역 ※ 프로그램 실행 시, JVM은 OS에서 할당받은 메모리 영역(Runtime Data Area)을 크게 세 영역으로 구분합니다. 메소드(Static or Method) 영역 JVM을 시작할 때 생성합니다. static 변수, 전역변수, 코드에서 사용되는 클래스 정보 등이 올라가는 영역입니다. 코드에서 사용되는 클래스들을 로더로 읽어 클래스 별로 런타임 필드 데이터, 메소드 데이터 등을 분류해 저장합니다. 모든 스레드가 공유합니다. 힙(Heap 영역) JVM을 시작할 때 생성합니다. new 연산자를 통해서 생성된 객체, 배열 등이 저장됩니다. 가비지 컬렉션에 의해서 메모리가 관리되어 지는 영역입니다. 스택(Stack) 영역 스레드 별로 생성됩니다. 지역변수, 함수(메소드) 등이 할당되는 LIFO(Last .. 2023. 12. 29.
[JAVA] 제네릭(Generic)이란? 제네릭(Generic)이란? - '타입을 일반화' 하는 것으로 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자 호출에 의해 타입이 지정되는 것을 의미합니다. - 즉, 특정 타입을 미리 지정해주는 것이 아닌, 필요에 의해 여러 가지 타입을 사용하고 싶은 경우 사용합니다. 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있습니다. 타입에 대해 유연성과 안정성을 확보할 수 있습니다. 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아집니다. 2023. 12. 25.
반응형