기술면접 준비 24

영속성 컨텍스트(Persistence Context)란?

영속성 컨텍스트(Persistence Context)는 엔터프라이즈 자바빈(Enterprise JavaBeans, EJB) 또는 자바 퍼시스턴스 API(Java Persistence API, JPA)와 같은 프레임워크에서 객체를 영속 상태로 관리하는 메커니즘입니다. 간단히 말해, 데이터베이스와 상호작용하는 엔터티 객체(Entity Object)를 관리하는 일종의 '캐시' 역할을 합니다. 이를 통해 애플리케이션은 데이터베이스와 효율적으로 상호작용할 수 있습니다.주요 개념엔터티(Entity): 데이터베이스의 테이블에 대응되는 클래스입니다. 각 인스턴스는 데이터베이스의 한 행(row)을 나타냅니다.영속 상태(Persistent State): 엔터티 객체가 영속성 컨텍스트에 의해 관리되고 있는 상태입니다. 이 ..

기술면접 준비 2024.07.30

가비지 컬렉션(Garbage Collection, GC) 이란?

가비지 컬렉션(Garbage Collection, GC)은 컴퓨터 프로그램에서 더 이상 사용되지 않는 메모리 공간을 자동으로 해제하는 메커니즘입니다. 이는 프로그래머가 명시적으로 메모리를 해제하지 않아도 되도록 하여 메모리 누수를 방지하고, 메모리 관리의 복잡성을 줄여줍니다.주요 개념가비지(Garbage): 더 이상 참조되지 않거나 사용되지 않는 객체를 말합니다. 이러한 객체는 프로그램 실행 중에 필요 없게 된 메모리 공간을 차지합니다.힙 메모리(Heap Memory): 객체들이 동적으로 할당되는 메모리 영역입니다. 가비지 컬렉션은 이 힙 메모리에서 불필요한 객체를 식별하고 해제합니다.루트 세트(Root Set): 여전히 접근 가능한 객체들을 나타내는 기준점입니다. 일반적으로 스택 변수, 전역 변수, 레..

기술면접 준비 2024.07.30

Java가 컴파일 되는 과정은 어떻게 되는지?

답안개발자가 자바 소스코드(.java)를 작성자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드.컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올림실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행인터프리터 : 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행. 하나하나의 실행은 빠르나, 전체적인 실행 속..

기술면접 준비 2024.07.30

JVM 이란 무엇이고 왜 필요한지?

답안JVM은 자바 프로그램이 어느 플랫폼에서든지 동일하게 실행될 수 있도록 해주는 가상 머신 입니다. JVM 덕에 다양한 운영체제와 하드웨어 환경에서 앱을 쉽게 배포하고 실행할 수 있습니다.상세한 이유메모리 및 자원 관리: JVM은 메모리 할당과 해제를 자동으로 관리하여 메모리 누수와 같은 문제를 줄여줍니다. 가비지 컬렉션은 프로그래머가 직접 메모리를 관리해야 하는 부담을 덜어줍니다.보안 강화: JVM은 실행 전에 바이트코드를 검증하고, 클래스 로더를 통해 안전하게 클래스를 로드하여 보안을 강화합니다. 이는 외부 코드가 시스템에 해를 끼치는 것을 방지합니다.성능 최적화: JVM의 JIT 컴파일러와 기타 최적화 기술을 통해 자바 애플리케이션의 실행 속도가 크게 향상됩니다. JIT 컴파일러는 실행 중에 바이..

기술면접 준비 2024.07.30

JPA의 더티 체킹이란 무엇인가?

답안JPA (Java Persistence API)에서 더티 체킹(Dirty Checking)이란 영속성 컨텍스트(persistence context)에 의해 관리되는 엔티티 객체가 변경된 것을 자동으로 감지하여 데이터베이스에 반영하는 기능을 말합니다.더티 체킹을 통해 개발자는 데이터베이스에 변경사항을 직접 수동으로 적용하지 않아도 됩니다.JPA 더티 체킹 동작 (참조)엔티티 로드: JPA는 데이터베이스에서 엔티티를 조회하여 영속성 컨텍스트에 저장엔티티 수정: 애플리케이션 코드에서 엔티티의 속성 값을 변경트랜잭션 종료: 트랜잭션이 종료될 때 JPA는 영속성 컨텍스트에 있는 엔티티의 변경사항을 감지SQL 생성 및 실행: 변경된 엔티티에 대해 필요한 SQL 문(UPDATE, INSERT, DELETE)을 생..

기술면접 준비 2024.07.30

JPA란 무엇인가? JPA는 언제 필요하고 언제 필요하지 않은지?

JPA 란 ? 자바에서 관계형 데이터베이스를 쉽게 사용할 수 있도록 도와주는 ORM(Object-Relational Mapping) 프레임워크  JPA가 필요한 경우복잡한 데이터 매핑: 데이터베이스와 객체 간의 매핑이 복잡한 경우 JPA로 처리생산성 향상: 개발 생산성을 높여주고, 데이터베이스 관련 코드를 자동으로 생성유지보수성: 엔터프라이즈 애플리케이션에서 데이터베이스 변경에 따른 코드 수정이 간편표준화: 여러 데이터베이스 제품 간에 독립적인 코드를 작성 가능JPA가 필요하지 않은 경우:단순한 데이터 접근: 데이터베이스 사용이 간단할때성능 최적화 필요: 특정 상황에서는 JPA가 직접 작성한 SQL보다 성능이 떨어질 수 있음작은 프로젝트에서 JPA를 사용하면 오히려 복잡성이 증가

기술면접 준비 2024.07.30

Override 와 Overload란?

Override부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미부모 클래스의 메서드를 상속받은 자식 클래스에서 동일한 이름과 매개변수를 가진 메서드를 다시 정의하여 다르게 동작하게 함Overload같은 이름을 가진 메서드를 여러 개 정의하되, 매개변수의 타입이나 개수를 다르게 하는 것하나의 메서드 이름으로 여러 기능을 제공

기술면접 준비 2024.07.30

Call by reference란 무엇이고 보통 어떻게 쓰이나요?

답안Call by Reference는 함수 호출 시 인자로 전달된 변수의 주소(reference)를 넘겨주는 방식을 의미합니다.Call by Reference는 보통 이럴때 쓰입니다.큰 데이터를 함수로 전달할 때, 메모리 절약을 위해(데이터 복사를 피함)함수가 원래 데이터에 직접 접근하여 값을 수정할 경우, 별도로 값을 반환하지 않음으로서 코드 간결/효율Call by value?복사된 값을 인자로 넘겨 매개변수로 전달복사하여 처리하기 때문에 안전, 원래의 값이 보존 / 하지만 메모리 사용량 증가ex) 원시값

기술면접 준비 2024.07.30

프로세스와 쓰레드 면접 질문, 답변

📎 프로세스 프로그램에 대해 설명해주세요. 프로그램을 실행하기 위해서는 OS로부터 프로그램이 동작하는데 필요한 CPU, 메모리 등을 할당 받아야 합니다. 프로그램이란 메모리에 올라가 있지 않고, 저장 장치에 저장 되어 있는 상태의 코드 파일을 의미합니다. 프로세스에 대해 설명해주세요. 디스크에 파일로 존재하던 프로그램이 메모리에 올라가서 실행되면 프로세스가 됩니다. 프로세스란 실행중인 프로그램입니다. 프로세스 문맥에 대해 설명해주세요. 프로세스 문맥이란 프로세스가 어떤 상태에서 수행되고 있는지에 대한 정보입니다. 문맥교환(context switch)에 대해 설명해주세요. 문맥교환은 언제 발생하나요? 타이머 인터럽트나 I/O 요청 시스템 콜이 들어왔을 때 발생합니다. 일반적으로 한 프로세스의 타임 슬라이스..

기술면접 준비 2023.11.16

프로세스 & 스레드

프로세스 : 프로그램을 메모리 상에서 실행중인 작업 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위 기본적으로 프로세스마다 최소 1개의 스레드 소유 (메인 스레드 포함) 프로세스는 각각 별도의 주소공간 할당 (독립적) Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령) Data : 전역변수, 정적변수, 배열 등 초기화 된 데이터는 data 영역에 저장 초기화 되지 않은 데이터는 bss 영역에 저장 Heap : 동적 할당 시 사용 (new(), malloc() 등) Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역) 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성 프로세스는 자신만의 고유 공간과 자..

기술면접 준비 2023.11.16