개발자면접질문 110

개발자 면접 질문 - 트랜잭션 격리 수준

1. 트랜잭션 격리 수준(Isolation Level) - 트랜잭션에서 일관성이 없는 데이터를 허용하도록 하는 수준 2. 필요성 - 데이터베이스는 ACID(트랜잭션 특징) 같이 원자적이면서도 독립적인 수행을 하도록 한다. - 그래서 Locking 이라는 개념이 등장한다. - 하지만 무조건적인 Locking으로 동시에 수행되는 많은 트랜잭션들을 순서대로 처리하는 방식은 성능이 떨어진다. - 그래서 최대한 효율적인 Locking 방법이 필요하다. 3. Isolation Level 종류 1) Read Uncommitted (레벨0) - 커밋되지 않는 읽기 - 트랜잭션 A가 특정 컬럼 데이터를 변경하고 있을 때(커밋하지 않은 상태) 트랜잭션 B가 read하면 트랜잭션 A가 변경한 데이터를 읽어온다. - 커밋되지..

개발자 면접 질문 - 디스패쳐 서블릿(Dispatcher-Servlet) 정의

1. 디스패쳐 서블릿(Dispatcher Servlet) - Servlet Container에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프리젠테이션 계층의 제일 앞에 배치해 중앙 집중식으로 처리해주는 프론트 컨트롤러 2. 프론트 컨트롤러 - 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아 처리해주는 컨트롤러

개발자 면접 질문 - 서블릿(Servlet) 정의

1. 서블릿(Servlet) - 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술 2. 특징 - 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트 - html을 사용하여 요청에 응답 - Java Thread를 이용하여 동작 - MVC 패턴에서 Controller로 이용된다. 3. 동작 방식 - 사용자가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송 - HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성 - web.xml은 사용자가 요청한 URL을 분석하여 어떤 서블릿에 대한..

개발자 면접 질문 - 스프링 프레임워크 정의

1. 스프링 프레임워크 - 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크 2. 스프링 프레임워크를 쓰는 이유 - DI(의존 주입) : 객체간의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행 - AOP(관점 지향 프로그래밍) : 공통 관심사항을 구현한 로직을 핵심 사항을 구현한 코드안에 삽입하는 것 * 자바는 하나의 클래스에 대한 수직적인 흐름만 제어 가능 / 스프링을 쓰면 수평 제어가 가능해진다. * 스프링을 통해 Java 가 수직, 수평 제어가 모두 가능해진다. - IOC(제어의 역전) : 프레임워크에게 제어 권한을 주는 것 * DI 와 AOP를 사용하여 IoC를 실현한다. - 예를 들어 B 클래스의 new B() 의 제어권한은 B에게 있다(능동적), B의 제어 권..

개발자 면접 질문 - AOP 정의

1. AOP - 관점을 기준으로 프로그래밍 하는 기법 - 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입하는 것 2. 주요 용어 - Joinpoint : Advice를 적용 가능한 지점을 의미한다. (메서드 호출, 필드 값 변경 등) - Pointcut : Joinpoint의 부분 집합. 실제 Advice가 적용되는 Joinpoint를 나타낸다. - Advice : 언제 공통 관심 기능을 핵심 로직에 적용할 지를 정의한다. - Weaving : Advice를 핵심 로직 코드에 적용하는 것을 의미한다. - Aspect : 여러 객체에 공통으로 적용되는 공통 관심 사항을 의미한다. * Weaving 방식 - 컴파일시 - 클래스 로딩시 - 런타임 시 (프록시를 이용하여 AOP를 적용한다.)..

개발자 면접 질문 - 의존성 주입 정의

1. 의존성 주입 - 객체 간의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행한다. 2. 구현 방식 - 생성자 방식 : 객체를 생성하는 시점에 의존하는 객체를 모두 전달받을 수 있다. - Setter (프로퍼티) 방식 : 어떤 의존 객체를 설정하는지 메서드의 이름으로 알 수 있다. - 필드(인터페이스) 방식 : 의존성을 주입하는 함수를 포함한 인터페이스를 작성하고, 인터페이스를 구현하도록 함으로써 실행시에 이를 통하여 의존성을 주입 * Field 방식을 추천하지 않는 이유 - 단일 책임의 원칙 위반 : 생성자 방식을 사용하면 파라미터가 많아짐과 동시에 하나의 클래스가 많은 책임을 갖는것을 알수 있으나 필드 방식은 의존성 주입이 쉬워 알기 어렵다. - 객체가 변할 수 있다.(불변성) : 생성자 방식과..