반응형

Iterator

컬렉션에 저장된 요소를 읽어오는 방법을 표준화한것.
다음의 메소드를 포함하고있다.

  • hasNext() : 읽어올 다음 요소가 있는지 확인하는메소드. 다음 요소가 있다면 true, 없다면 false를 반환
  • next(): 다음 데이터를 리턴
  • remove() : next()로 읽어온 요소를 제거.
반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

Interface VS Abstract  (0) 2021.01.11
WAS의 동작방식  (0) 2021.01.11
JVM의 메모리 영역  (0) 2021.01.11
DB정규화  (0) 2021.01.11
MVC란?  (0) 2021.01.11
반응형

Interface VS Abstract

Abstract class(추상 클래스)

  • 클래스 구현 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우.
  • Abstract class의 특징
    • new 연산자를 사용하여 객체르 생성할 수 없다.
      • 단일 상속만이 가능하다.
      • Abstract 클래스는 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 통하여 기능을 확장시키는것이 목적이다.

Interface

  • 모든 메소드가 추상 메소드이다.
  • Java 8 이후에서는 default 키워드를 이용하면 메소드를 구현할 수 도 있다.
  • static final필드만 가질 수 있다.
  • new 연산자를 사용하여 객체를 생성할 수 없다.
  • 다중상속이 가능하다.
  • 구현 객체가 같은 동작을 한다는것을 보장하려는 목적으로 사용된다.

Abstract class와 Interface의 공통점

  • 선먼만 있고 구현 내용은 없는 클래스이다.
  • 인스턴스화가 불가능하다.
  • 상속 / 구현한 클래스를 이용해서 객체를 생성해야한다.

Abstract class와 Interface의 차이점

  • Abstract class - 단일상송 / Interface - 다중 상속
  • Abstract 의 목적은 상속을 이용하여 기능을 확장시키는 것이다.
  • Interface의 목적은 메소드가 구현됨을 보장하는것이다.
반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

이터레이터(Iterator)  (0) 2021.01.11
WAS의 동작방식  (0) 2021.01.11
JVM의 메모리 영역  (0) 2021.01.11
DB정규화  (0) 2021.01.11
MVC란?  (0) 2021.01.11
반응형

WAS의 동작방식

  • WAS

    • Web Server와는 다르게 DB조회 등 다양한 로직 처리를 요구하는 동적인 컨텐츠를 담당.
    • 웹 컨테이너, 혹은 서블릿 컨티에너라고 불림.
    • 분산 트랜잭션, 보안, 메시징, 스레드 처리 등의 기능을 처리하는 분산환경에서 사용
    • Tomcat, JBoss 등이 대표직인 WAS이다.
  • 동작 방식

    1. Web Server 의 클라이언트의 요청에 맞는 Servlet을 메모리에 올린다.
    2. web.xml에을 참조해 해당 Servlet에 대한 Thread를 생성한다.
    3. HttpServletRequest와 HttpServletResponse 객체를 생성하고 그에 맞는 doGet 또는 doPost 메소드를 호출해 생성된 동적 페이지를 Response 객체에 담아 WAS에 전달한다. ex) doGet(HttpServletRequest request, HttpServletResponse response)가 리턴하는 Response 객체를 WAS에 전달.
    4. WAS는 HttpResponse 형태로 바꾸어 WebServer에 전달하고 생성된 스레드와 HttpServletRequest, HttpServletResponse 객체를 제거한다.

    참고자료 : https://new-be.tistory.com/3

반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

이터레이터(Iterator)  (0) 2021.01.11
Interface VS Abstract  (0) 2021.01.11
JVM의 메모리 영역  (0) 2021.01.11
DB정규화  (0) 2021.01.11
MVC란?  (0) 2021.01.11
반응형

JVM(Java)의 메모리 구조

JVM의 메모리 구조는 힙 메모리 / 비 힙메모리 / 기타 세가지로 나뉜다.

힙 메모리(Heap memory)

  • 힙영역은 자바 클래스의 인스턴스와 배열이 할당되는 영역
  • Run Time시 데이터를 저장.
  • JVM이 시작될때 생성되어 어플리케이션 실행동안 크기가 변동된다.
  • 힙영역의 크기는 -Xms VM option 으로 지정된다.
  • 힙영역의 크기는 가비지 컬렉션의 전략에따라 고정 / 변동 적으로 설정이 가능하다.
  • 힙영역의 퇴대크기는 Xms option으로 설정한다. 디폴트는 64MB이다.
  • 힙영역은 물리적으로 nursery(young space / young generation) 파트와 old space(old generation) 두 부분으로 나뉜다.
    • nursery : 새로운 객체 할당을 위해 확보된 공간. 이곳이 가득차면 young collection을 실행하여 가비지를 수집한다. young collection은 nursery에 어느정도 모문 객체를 old space로 이동시켜서 nursery에 더 많은 객체를 할당할 수 있도록 한다. 이런 가비지 컬렉션을 Minor GC라고한다.

비 힙 메모리(Non-Heap memory)

  • Heap과 마찬가지로 JVM시작시 생성된다.
  • 런타임 상수 풀, 필드 및 메소드 데이터같은 크래스별 구조와 메소드 및 생성자에 대한 코드, 나부 문자열이 저장된다.
  • 디폴트 크기는 64M, XX:MaxPermSize VM Option을 이용해서 변경 가능

기타 메모리

  • JVM 자체의 코드와 내부 구조, 로드된 프로피일러 에이전트 코드와 데이터 등을 저장하기 위해 사용.

침고 : https://shinjekim.github.io/java/2020/01/06/%EC%9E%90%EB%B0%94%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0/

반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

Interface VS Abstract  (0) 2021.01.11
WAS의 동작방식  (0) 2021.01.11
DB정규화  (0) 2021.01.11
MVC란?  (0) 2021.01.11
Java Collection framework interface의 특징  (0) 2021.01.11
반응형

DB 정규화

정규화란: 데이터를 저장할때 불필요한 데이터를 제거하고, CRUD시 발생할 수 있는 각종 사이드이팩틀르 방지한다.

1차 정규화 : 도메인 원자성을 확보 ( 한 컬럼이 하나의 값만을 가진다.)
2차 정규화 : 부분적 함수 종속 제거(즉, 완전 함수적 종속으로 만든다.)
3차 정규화 : 이행적 함수종속 제거 (즉, 키 이외의 다른 값이 다른 컬럼을 결정할 수 없다.)
BCNF: 모든 결정자가 후보키 집합에 속하게 만든다.

반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

WAS의 동작방식  (0) 2021.01.11
JVM의 메모리 영역  (0) 2021.01.11
MVC란?  (0) 2021.01.11
Java Collection framework interface의 특징  (0) 2021.01.11
Error와 Exception  (0) 2021.01.10
반응형

MVC란?

MVC : Model, View, Controller

  • 어릎리케이션 / 프로젝트를 구성할때 구성요소를 모델 / 뷰 / 컨트롤러 세가지로 구분한 패턴.

    Model : 어플리케이션의 정보, 데이터를 나타냄. DATA / 정보의 가공을 책임지는 컴포넌트.

  • Model이 지켜야하는 규칙

    1. 사용자가 편집하길 원하는 모든 데이터를 가지고있어야한다.
    2. 뷰나 컨트롤러에 대해서 어떤 정보도 알 필요가없다.
    3. 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야한다.

    View : 사용자와의 인터페이스를 담당하는 컴포넌트.

  • View가 지켜야하는 규칙

    1. 모델이 가진 정보를 따로 저장해서는 안된다.
    2. 모델이나 컨트롤러와 같이 다른 구성요소들을 알 필요가 없다.
    3. 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야한다.

Controller: 모델과 뷰를 연결해주는 컨트롤러 역할

  • Controller가 지켜야하는 규칙
    1. 모델 / 뷰에 대해 알고있어야한다.
    2. 모델 / 뷰의 변경을 모니터링해야한다.

MVC 패턴의 장점

  • 각각의 역할을 정한 컴포넌트를 만들어 각각의 역할에 집중할 수 있도록한다.
  • 각각의 역할에 집중하고있기때문에 유지보수성 / 확장성 / 유연성이 증가한다.
반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

JVM의 메모리 영역  (0) 2021.01.11
DB정규화  (0) 2021.01.11
Java Collection framework interface의 특징  (0) 2021.01.11
Error와 Exception  (0) 2021.01.10
REST API에 대해서  (0) 2021.01.10
반응형

Java Collection framework interface의 특징

 - List : 순서가 있는 데이터의 집합, 데이터의 중복을 허용
- Set : 순서가 없는 데이터의 집합, 데이터의 중복을 허용하지 않는다.
- Map : key / value의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 ㅇ낳으며 키는 중복ㅇ르 허용하지 않고 값은 중복을 허용한다. 
반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

DB정규화  (0) 2021.01.11
MVC란?  (0) 2021.01.11
Error와 Exception  (0) 2021.01.10
REST API에 대해서  (0) 2021.01.10
MSA란 무엇인가?  (0) 2021.01.10
반응형

Error와 Exception

Error

컴파일시 문법적인 오류와 런타임시 예측불가능한 에러가 있다. 에러의 예로는 StackOverflowError / OutOfMemoryError 등이 있으며 발생시 프로세스가 종료된다. 핸들링이 불가능하고 회복이 불가능하다.

Exception

프로그램이 핸들링이 가능한 경우 익셉션이라한다.
처리가 가능하다.
프로그램이 동작중 예상하지 못한 상태가 발생하여 수행중인 프로그램이 영향을 받는것.
CheckedException(Compile tiem)

  • 컴파일시점에 예측이 가능하다.
    UncheckedException(Run time)
    • 컴파일 시점에는 예측이 불가능하고, 런타임시에 발생하는 예외

스프링에서의 예외처리

  1. 메소드 단위에서 try/catch를 이용하여 처리
  2. 컨트롤러 단위에서 @ExceptionHandler를 이용해서 처리
    • @Controller / @RestController 가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메소드에서 처리해주는 기능.
  3. @ControllerAdvise를 이용하여 Global level에서 컨트롤러 이후 Client에게 전달되기 직전 처리
    • @ControllerAdvise 모든 @Controller 즉, 전역(Global)에서 발생할 수 있는 예외를 잡아서 처리해주는 어노테이션
반응형

'프로그래밍 > 면접대비문제' 카테고리의 다른 글

MVC란?  (0) 2021.01.11
Java Collection framework interface의 특징  (0) 2021.01.11
REST API에 대해서  (0) 2021.01.10
MSA란 무엇인가?  (0) 2021.01.10
[IT 개발자 면접 대비문제] Spring의 원리  (0) 2016.09.17
반응형
반응형
반응형

MSA란 무엇인가?

  • MSA

    • 하나의 서비스를 만들때 도메인별로 서비스를 쪼개어 독립적으로 서비스하고, 디플로이할 수 있도록 구성하는 아키텍쳐
    • 모놀리식(monolithic) 아키텍처와 대비되는 성격의 아키텍처이다.
    • 애플리케이션 로직을 각자 책임이 명확한 도메인별로 분리하여 이를 조합해 솔루션을 제공한다.
    • 각 컴포넌트(도메인)는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포된다. 마이크로 서비스는 비지니스 영역의 한 부분에서의 책임만을 담당하고, 여러 어플리케이션에서 재사용할 수 있어야한다.
    • 어플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하기때문에 서비스 구현기술과 무관하다. 이는 한 서비스를 구축하할때 개발언어 및 기술에 종속되지 않고 다양한 언어와 기술을 사용할 수 있다는 장점이있다.
  • Monolithic

    • 모듈이 서비스 내부의 Product 현태로 종속되어있으며, 서비스에만 집중할 수 있는 구조
    • 장점
      • 개발 초기에는 단순한 아키텍처 구조와 개발의 용이함이 큰 잠점.
    • 단점
      • 규모가 커짐에따라 복잡도의 증가가 심해진다.
  • MSA의 장점

    • 각 도메인별로 서비스를 배포하고 운용하기때문에 결합도(coupling)이 낮아지는 장점이있다.
    • 배포가 유연하다.
    • 재사용성 및 확장성이 크다.
    • 서비스별 기술의 도입 및 확장이 자유롭다.
    • 하나의 서비스에 문제가생겨도 연관되지 않은 다른 도메인은 지속적으로 서비스가 가능하다.
  • MSA의 단점

    • 장애추적, 모니터링, 매시징이 어렵다(?? 이게 어렵나?)
    • 어려 도메인에 걸친 기능의 경우 트랙잭션을 다루기 어렵다.
    • 도매인간 의존성이 있는경우 릴리즈가 어렵다. <=> 도매인간 roll-out계획 마련 및 명확한 의존성 관리

** 참고 자료 https://waspro.tistory.com/429

반응형

+ Recent posts