5탄 가즈아~
JAVA에서 singleton 패턴을 쓰는 이유를 말해보세요
1) 객체를 여러개 생성하지 않아도 되서 불필요한 자원사용을 방지할 수 있습니다
2) 객체가 무조건 한번만 생성되는 것을 보장할 수 있습니다
3) 커넥션 풀이나 스레드풀과 같이 객체를 여러개 동시에 생성해서 사용하게 될 경우 프로그램이
예상치 못한 결과를 얻을 수 있습니다.
DB클러스터링과 리플리케이션의 차이점에 대해 설명해보세요
리플리케이션은 비동기화 방식이고 클러스터는 동기화 방식입니다. 리플리케이션의 경우 일방적으로 데이터를 전달하여 복제를 하지만 클러스터는 데이터 복제 후 결과를 확인하기 때문에 일반적인 경우 데이터 누락이 발생하지 않습니다. 다만 복제한 결과를 확인해야 하기 때문에 Replication에 비해 Cluster가 속도가 느린단점이 있고, Replication의 경우 확인작업이 없기 때문에 데이터에 대한 신뢰도가 떨어집니다.
Spring을 쓰는 이유?
스프링이 나오기전 자바 엔터프라이즈 개발은 굉장히 복잡했는데, 그 이유는 비즈니스 로직 외에도 타 프로젝트와의 연계, 분산 트랜잭션, 보안 등 고려할 사항들이 많았기 때문이다. 이와 같은 문제점들을 해결하기 위해서 spring이 등작하게 되었습니다
Spring 3대 요소에 대해 설명해주세요
DI(의존성 주입) : 객체간의 결합도를 낮춰주는 요소를 말합니다. Spring 에서는 IOC 컨테이너가 Bean객체를 생성하여 개발자 대신 객체를 생성하고 관리해주는것을 의미한다. 초기에는 XML로 관리하다 그 복잡성으로 현재는 주입을 위한 Anotation으로 관리되고 있다.
AOP(로직의 주입) : 객체간 공통된 로직을 따로 뽑아내어서 관리하는 것을 말합니다.
PSA(일관성 있는 서비스 추상화) : 스프링의 경우 서비스 추상화를 해주면서 일관성 이는 방식을 제공하는데 이를 PSA라 합니다. 스프링에서 데이터 베이스 연동시 어댑터 패턴을 사용하는데 이를 통해 로직의 변경 없이 DB종류를 변경할 수 있습니다. 이처럼 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 해준것을 서비스 추상화라고 합니다.
Java8에서 Stream을 사용한 경우 발생 할 수 있는 문제점은?
Java에서 가비지 컬렉터가 너무 잘 작동 했을 때 이 문제를 진단하는 방법과 해결 하는 방법은?
Restful 이란
- 일반적으로 rest원칙을 따르는 시스템을 restful이라고 하며 여기서 rest란 클라이언트와 서버사이의 통신 중 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것을 의미합니다. 즉 자원의 표현(이름)에 의한 상태전달입니다.