[Interview Question] Spring에서 트랜잭션 관리 방법은 무엇인가요? Spring에서는 보통 @Transactional을 이용한 선언적 트랜잭션 관리가 가장 많이 사용됩니다. 메서드 실행 시 트랜잭션을 시작하고, 정상 종료되면 commit, 예외 발생 시 rollback 합니다. 기본적으로 RuntimeException은 롤백 대상이고, Checked Exception은 rollbackFor 옵션을 지정해야 롤백됩니다. Interview Question 2025.08.31
[Interview Question] AOP(관점 지향 프로그래밍)는 언제 사용하나요? AOP(관점 지향 프로그래밍)은 여러 모듈에서 공통적으로 필요한 기능을 분리해서 재사용할 때 사용합니다. 로깅, 트랜잭션 관리, 보안 관리 등이 필요할 때, Aop를 사용합니다. Interview Question 2025.08.31
[Interview Question] @Component, @Service, @Repository의 차이를 설명해주세요 @Component의 경우 특별하게 의미를 부여하는거 없이 spring에서 ioc 컨테이너가 관리해야 할 bean 객체이다를 의미하는 어노테이션이다. @Service의 경우 비즈니스를 수행하는 로직이다. 그 안에 @Component도 들어있으므로 결국 bean 객체로 생성된다.@Repository의 경우 DB에 접근할 수 있는 권한을 가진 저장소의 역할이다. @Component도 들어있으므로 결국 bean 객체로 생성된다. Interview Question 2025.08.31
[Interview Question] Spring Bean의 라이프사이클을 설명해보세요. spring bean은 생성, 의존성 주입, 초기화, 사용, 소멸 순으로 생명주기가 진행됩니다.ioc Container가 bean을 생성하면 @Autowired, 생성자 주입 등을 통해 주입되고 초기화를 진행시킵니다.그 이후 여러가지 로직에서 사용된 후 소멸됩니다. 이 때, 초기화는 @PostConstruct, 소멸은 @PreDestroy로 자주 처리합니다 Interview Question 2025.08.31
[Interview Question] IoC와 DI란 무엇인가요? spring boot는 IoC(제어의 역전) 컨테이너 즉, applicationContext가 spring에서 사용하는 bean이라는 객체를 직접 생성하고 관리합니다. 또한 DI(의존성 주입)을 이용해 의존 객체를 외부에서 주입해줍니다. 예를들어 service에서 repository 객체가 필요한 경우 new 연산자로 직접 객체를 생성하게 되면 결합도가 너무 높아집니다. 따라서 ioc 컨테이너가 미리 bean객체를 생성해두고 외부에서 생성자주입, 세터주입, 필드주입 등 여러가지 방식으로 넣어줍니다. Interview Question 2025.08.31
[Interview Question] kotlin에서 nullable 처리와 ?., !! 연산자의 의미를 설명해주세요. Kotlin의 경우 null type 안정성을 위해서 nullable 변수와 non-nullable변수의 타입을 구분합니다.?의 경우 nullable한 경우 사용하고, !!의 경우 non-nullable의 경우 사용합니다. Interview Question 2025.08.31
[Interview Question] 예외 처리 방식(Checked vs Unchecked Exception)은 어떻게 다른가요? Exception에는 CheckedException과 UncheckedException 두 가지 예외가 존재합니다. CheckedException 같은 경우에는 컴파일시 발생하는 에러입니다. 이 에러를 해결하지 않으면 프로그램이 컴파일 되지 않습니다. UncheckedException 같은 경우에는 런타임시 발생하는 에러입니다. 이 에러들은 개발자의 실수 또는 논리적 오류에서 발생하는 오류입니다. Interview Question 2025.08.31
[Interview Question] final, finally, finalize의 차이를 설명해주세요. final의 경우 변수, 메소드, 클래스 등을 변경 또는 확정을 막는 제어자입니다. finally의 경우 try catch문에서 예외 발생여부와 관계 없이 무조건 실행되는 부분을 의미합니다. finalize의 경우 GC(Garbage Collector)가 객체를 메모리에서 해제하기 전에 마지막으로 실행되는 메소드이다. Interview Question 2025.08.31
[Interview Question] Overloading과 Overriding의 차이점은 무엇인가요? Java에서 객체 지향의 특징 중 다형성을 구현하는 방식으로 Overloading, Overriding 2가지 방식이 존재합니다. Overloading의 경우 같은 메소드 이름을 갖지만 매개 변수의 개수, 종류들을 다르게 하여 컴파일 시점에서 메소드가 결정되도록 하는 방식입니다. 이럴 때, 같은 메소드지만 여러가지 매개변수를 활용해서 구현할 수 있습니다.Overloading을 사용했을 때 장점은 메소드 이름은 같지만 다양한 타입의 매개변수를 넣어서 메소드를 활용할 수 있다는 점에서 코드 중복을 줄일 수 있고 코드 가독성을 늘릴 수 있습니다. Overriding의 경우 상속에서 부모클래스에 있는 메소드를 자식 클래스에서 재정의하여, 실행방식과 실행시점등을 객체의 타입에 따라 다르게 실행시킬 수 있는 방식입.. Interview Question 2025.08.31
[Interview Question] Java에서 == 와 equals() 차이점은 무엇인가요? Java에서 ==는 참조값을 비교, 즉 같은 인스턴스인지 판단하는 연산입니다.equals()는 값이 같은지를 판단하는 연산입니다. 주소값을 비교하고 싶을 때는 ==을 사용해야합니다. Interview Question 2025.08.31