본문 바로가기

프로그래밍/IT면접

[기술면접] JAVA 개발자 기술면접 예상 질문 2부

728x90
반응형

AOP 사용법

@Aspect
@Component
public class TimeTraceAop {

@Around("execution(* hello.hellospring..*(..))")
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable {

 

Annotation 동작원리와 사용법

@Target({ElementType.[적용대상]})

@Retention(RetentionPolicy.[정보유지되는 대상])

public @interface [어노테이션 이름]{ ... } 

 

@LogExecutionTime 어노테이션 만들기

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface LogExecutionTime { }

 

LogAspect 파일 만들기

@Component 

@Aspect 

public class LogAspect { 

        @Around("@annotation(LogExecutionTime)") 

        public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable{

 

Intellij 에서 Lombok setter/getter를 컴파일 안해도 쓸 수 있는 원리

setter/getter 등을 빌드 시점에 자동으로 생성

 

Jedis 와 Lettuce

Lettuces는 Netty 기반의 Redis Client로 비동기로 요청을 처리해 성능면에 장점이 있다.

Jedis 기반처럼, Pool을 별도로 사용하지 않아도 돼서 개발에 더 편함

ㄴ JesdisPool은 쓰레드로부터 안전한 커넥션 풀이며 모든 리소스를 관리 가능한 범위 내에서 유지 가능

Jedis는 Spring boot2.0부터 deprecated됨

Jedis는 쓰레드에 안전하지 않음

 

RabbitMQ 리스너 구현 2가지 방법

- @RabbitListner 어노테이션을 사용

- SimpleMessagListenerContainer를 사용해서 직접 리스너를 구현하는 방법

 

MapStruct

dto와 entity간의 Automatically Mapping

@Mapper
public interface CarMapper {
 
    CarMapper INSTANCE = Mappers.getMapper(CarMapper.class);
 
    @Mapping(source = "name", target = "modelName")
    @Mapping(source = "color", target = "modelColor")
    Car to(CarDto carDto);
}
 

몽고DB와 RDBMS 차이점

장점

- Flexibility : Schema-less라서 어떤 형태의 데이터라도 저장할 수 있다.
- Performance : Read & Write 성능이 뛰어나다. 캐싱이나 많은 트래픽을 감당할 때 써도 좋다.
- Scalability : 애초부터 스케일아웃 구조를 채택해서 쉽게 운용가능하다. Auto sharding 지원
- Deep Query ability : 문서지향적 Query Language 를 사용하여 SQL 만큼 강력한 Query 성능을 제공한다.
- Conversion / Mapping : JSON형태로 저장이 가능해서 직관적이고 개발이 편리하다.

 

몽고DB 단점

- JOIN이 없다. join이 필요없도록 데이터 구조화 필요
- memory mapped file으로 파일 엔진 DB이다. 메모리 관리를 OS에게 위임한다. 메모리에 의존적, 메모리 크기가 성능을 좌우한다. 

 

몽고DB 샤딩 아키텍처

라우터(mongos) : 사용자의 쿼리 요청을 어떤 샤드로 전달할지 정하고, 각 샤드로부터 받은 쿼리 결과 데이터를 병합해서 사용자에게 되돌려주는 역할

Config Server : 샤드 클러스터에서 사용자가 생성한 데이터베이스와 컬렉션들의 목록 등 많은 정보를 관리

Docker 장점

- 여러 서버에 동일한 환경 구성시 Docker를 활용한 좋은 사례가 많다.

- 장애 상황 발생시 기존 서버 환경을 Docker 이미지로 간단하게 구현할 수 있다.

- Docker에 이미지를 한번 생성해 놓은 후 매우 간편하게 동일 환경을 쉽게 재현 가능

- Docker Registry Server를 통해 서버 환경에 대한 버전 관리가 가능

- 웹 서버 환경 구축과 관련한 수많은 반복적인 설정 작업을 매우 간단하게 작업 가능

 

Annotation 동작 원리 : hirlawldo.tistory.com/43

RabbitMQ : brunch.co.kr/@springboot/298

몽고DB와 RDBMS 비교 : sjh836.tistory.com/98

DB - MongoDB 샤딩(Sharding,분산처리 등) : https://coding-start.tistory.com/275

Spring boot에 Redis(Lettuce) : cafe.naver.com/architectmap/44

Docker 장점 및 간단 설명 : niceman.tistory.com/35

MapStruct : velog.io/@jjang9b/JAVA-MapStruct

 

728x90
반응형

'프로그래밍 > IT면접' 카테고리의 다른 글

[IT면접] 티몬  (1) 2021.03.24
[IT면접] 우아한 형제들  (0) 2021.03.08
[IT면접] 현대오토에버  (0) 2021.03.08
[IT면접] 아모레퍼시픽  (0) 2021.03.05
[IT면접] 티맵모빌리티  (0) 2021.03.05
[기술면접] JAVA 개발자 기술면접 예상 질문  (1) 2021.02.25