728x90
반응형
- 어떤 예외가 발생하면 트랜잭션을 롤백하나요?2025-05-02 19:29:52예외 종류에 따른 트랜잭션 롤백은 개발 환경에 따라 다르게 동작합니다.Spring 트랜잭션 예외 처리 동작Checked Exception 기본적으로 Checked Exception이 발생하더라도 트랜잭션을 롤백하지 않습니다.Checked Exception은 컴파일 시점에 예외 처리를 강제하는 예외로, 개발자가 예외 발생 가능성을 예상하고 이를 적절히 처리할 수 있는 정상적인 예외 상황이라고 가정하기 때문입니다.Unchecked Exception(RuntimeException, Error) Spring은 기본적으로 Unchecked Exception 또는 Error가 발생하면 트랜잭션을 롤백합니다. 이는 Unchecked Exception이 보통 프로그래머의 실수나 시스템적인 문제로 인한 회복하기 어려운 ..
- 방어적 복사에 대해서 설명해주세요.2025-04-17 15:55:39방어적 복사(Defensive Copy) 는 원본과의 참조를 끊은 복사본을 만들어 사용하는 방식이며, 원본의 변경에 의한 예상치 못한 사이드 이펙트를 방지하여 안전한 코드를 만들 수 있는데 도움이 됩니다. 방어적 복사는 2가지 시점이 존재하는데요. 생성자의 인자로 받은 객체의 복사본을 만들어 내부 필드를 초기화하거나, getter 메서드에서 객체를 반환할 때, 복사본을 만들어 반환할 수 있습니다. 만약 컬렉션 자료구조를 반환하는 경우라면 자바의 Unmodifiable Collection을 사용하여, 외부에서 Collection에 대해 조회만 할 수 있도록 강제할 수 있습니다. 자바에서 Unmodifiable Collection은 set(), add(), addAll() 처럼 컬렉션에 요소를 추가하거나 변..
- Call By Value와 Call By Reference에 대해서 설명해주세요.2025-04-16 19:36:24특정 메서드를 호출하는 경우 인자로 전달하는 방법은 크게 2가지가 존재하는데요.값에 의한 호출(Call By Value), 참조에 의한 호출(Call By Reference)이 이에 해당됩니다. 값에 의한 호출(Call By Value) 은 메서드를 호출할 때, 값 자체를 넘겨주는 방식입니다.메서드를 호출하는 함수의 변수와 호출된 함수의 파라미터는 서로 다른 변수입니다. 반면, 참조에 의한 호출은(Call By Reference) 는 메서드를 호출할 때, 참조를 직접 전달하는 방식입니다.참조를 직접 전달하기 때문에 호출하는 함수의 변수와 호출된 함수의 파라미터는 동일한 변수입니다.따라서, 파라미터를 수정하는 경우 그대로 원본에도 영향을 미칩니다.자바는 어떤 방식을 채택하나요? 🤓자바는 값에 의한 호출(..
- 자바 프로그램이 실행되는 흐름을 설명해 주세요.2025-04-09 15:38:50우리가 작성한 .java 파일은 JDK에 포함된 javac(java compiler) 를 통해 컴파일됩니다. 이 과정에서 JVM이 이해할 수 있는 바이트 코드로 변환되어 .class 파일이 생성됩니다. 이후부터는 JVM이 담당하는데요. 먼저 클래스 로더(Class Loader) 가 바이트 코드를 JVM 메모리에 동적으로 로드합니다. 로드된 바이트 코드는 Method Area에 저장되며, 이때 로딩(Loading), 링킹(Linking), 초기화(Initialization) 단계를 거칩니다. 그다음, 실행 엔진(Execution Engine) 이 로드된 바이트 코드를 실행합니다. 하지만 바이트 코드는 컴퓨터가 읽을 수 없기 때문에 인터프리터(Interpreter) 와 JIT 컴파일러(Just-In-Time..
- 교착 상태에 대해서 설명해주세요.2025-04-01 14:19:55교착 상태(deadlock) 는 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 결과적으로 아무것도 완료되지 못하는 상태를 의미합니다. 가령, A 프로세스가 자원 A를 가지고 자원 B를 필요로 합니다. 그리고, B 프로세스는 자원 B를 가지고 자원 A가 필요할 때 두 개의 프로세스는 교착 상태에 빠져 어느 작업도 진행할 수 없는 상황이 됩니다.교착 상태가 발생하는 조건을 알고 계신가요? 🤔4가지 조건(상호 배제, 점유 대기, 비선점, 원형 대기)이 모두 만족하는 경우, 교착 상태에 빠질 수 있습니다.상호 배제(mutual exclusion) 는 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 경우를 의미합니다.점유 대기(hold and wait) 는 자원을 할당받은 상..
- Redis가 싱글 스레드로 만들어진 이유를 설명해주세요.2025-03-28 13:38:16Redis가 단일 스레드(single-threaded)로 설계된 이유는 주로 성능 최적화, 복잡성 감소, 그리고 데이터 일관성을 유지에 있습니다.단일 스레드 모델은 멀티스레드 모델에 비해 설계와 구현이 상대적으로 간단합니다. 멀티스레드 환경에서는 동시성 문제(레이스 컨디션, 데드락 등)를 처리하기 위해 복잡한 동기화 메커니즘이 필요하지만, 단일 스레드 환경에서는 이런 문제를 자연스럽게 회피할 수 있습니다. 동시에 여러 스레드가 동일한 데이터를 수정하려고 할 때 발생할 수 있는 데이터 불일치 문제를 방지합니다. 모든 명령어가 순차적으로 처리되기 때문에, 복잡한 락(lock) 메커니즘 없이도 데이터의 일관성을 자연스럽게 유지할 수 있습니다.Redis는 주로 메모리 내에서 빠르게 수행되는 I/O 작업을 처리하..
- JWT 특징과 주의 사항을 설명해주세요.2025-03-27 20:27:46JWT(Json Web Token) 은 통신 정보를 JSON 형식을 사용하여 안전하게 전송하기 위해 사용됩니다. JWT는 토큰 자체에 정보가 포함되어 있는 클레임 기반 토큰입니다. 일반적인 애플리케이션에서 JWT는 주로 인증과 인가를 구현하기 위해 사용됩니다. JWT는 헤더, 페이로드, 시그니처로 구분됩니다. 헤더에는 토큰의 암호화 알고리즘이나 타입을 가지며, 페이로드에는 데이터(만료일, 사용자 정보 등)을 가집니다. 시그니처는 헤더와 페이로드가 변조되지 않았는지 판단하기 위해 사용되는데요. 헤더와 페이로드를 비밀 키를 사용하여 헤더에 명시된 암호화 알고리즘으로 암호화하여 시그니처가 만들어집니다. JWT를 사용하여 인가를 구현하는 경우, 클레임 기반 토큰의 특성 덕분에 세션 기반 인증에 비해서 사용자 ..
- 응집도와 결합도에 대해서 설명해주세요.2025-03-11 11:13:18응집도(Cohesion) 는 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타냅니다. 결합도(Coupling) 는 의존성의 정도를 나타내며, 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 나타냅니다. 응집도와 결합도는 변경과 관련이 깊으며, 일반적으로 좋은 설계란 높은 응집도와 낮은 결합도를 가진 모듈로 구성된 설계를 의미합니다. 객체의 행동에서 객체가 알고 있는 모든 정보를 사용하거나, 변경이 존재하는 경우 특정 모듈만 수정되면 응집도가 높다고 판단할 수 있습니다. 또한, 특정 모듈을 변경하는 경우에 다른 모듈도 변경해야 하는 상황에서는 결합도가 높다고 판단할 수 있습니다.캡슐화의 정도가 응집도와 결합도에 영향을 미치는데요. 캡슐화를 지키면, 모듈 안의 응집도는 높아지고 모듈 사이의 결합도는..
728x90
반응형