Back-End 면접질문4

Lee·2020년 10월 1일
1
post-custom-banner

4탄 가즈아~

Redis와 MongoDB에 대해 간략히 설명하세요

  • 둘다 No SQL 방식을 사용합니다. MongoDB가 document 형식으로 데이터를 저장하는데 반해, Redis는 Key-value 형식으로 데이터를 저장함
  • Redis는 인메모리DB로 데이터를 메모리에 저장하고 관리하기 때문에 성능이 좋지만, 데이터를 유한하게 저장하기 때문에, 캐시등과 같이 데이터의 저장기한이 있고, 빠른 성능이 필요한 기능에 사용됩니다.
  • MongoDB는 mysql처럼 서버-클라이언트 방식으로 설치해서 사용합니다.
    Mysql과 같은 SQL 방식이 아니므로, 가변적 데이터 구조를 다루는데 유용합니다

TCP와 UDP의 차이점과 장단점에 대해 설명해보세요

  • UDP는 비연결형 프로토콜로 흐름제어, 오류제어를 하지 않는데 반해, TCP는 연결형 프로토콜로 흐름제어와 오류제어를 합니다
  • UDP는 TCP처럼 종단간 연결설정, 흐름제어, 오류제어를 하지 않기 때문에 송수신에 적은 데이터를 필요로 하는데 반해, TCP는 데이터 송수신에 신뢰성을 가집니다

Garbage Collection의 동작방식에 대해 설명해주세요

  • 먼저 GC에 대해 설명하기 전에 JVM의 메모리 영역에 대해 설명해 보면 JVM은 운영체제로부터 할당받은 메모리 영역을 3가지로 구분합니다. Method, JVM 스택, 힙 영역으로 구분이 되구요. 이중에 힙 영역에 생성된 객체가 저장이 되며, 사용하지 않는 객체를 GC를 통해 삭제하게 됩니다.
  • 다시 JVM 힙 영역은 Young, Old, Permanet Generation으로 나뉘게 되고 Young Generation같은 경우에는 Eden과 S0, S1으로 이루어진 Survivor Space로 나뉘게 됩니다.
  • 그러면 GC는 어떻게 동작하는지 설명드리겠습니다. 처음에 새롭게 생성된 객체는 Young의 Eden으로 들어가게 되고, eden 영역이 다 차면 minor GC가 발생합니다. GC가 실행되면, GC를 실행하는 스레드 외에 나머지 모든 스레드들은 멈추게 되구요. 불필요한 객체는 삭제되고 아직 필요한 객체는 S0으로 이동되며, S0에 있던 객체는 S1으로 이동하게 됩니다. S1이 다차면 S1에 아직 필요한 객체는 OLD Generation으로 이동하게 됩니다. Old Generation은 크기가 크므로 이 영역이 다 차는 경우는 자주 발생하지 않습니다. 이 영역을 삭제할 떄 Major GC(혹은 Full GC)가 발생합니다. 이러한 경우는 자주 발생하지 않지만 GC가 오래 동작할 경우 시스템에 심각한 장애를 유발할 수 있어 주의해야 합니다. 그리고 minorGC의 경우는 자주 발생하지만, YOUNG영역은 OLD 영역보다 적기 때문에, 프로그램 중지 시간(stop-the-world)은 짧아집니다. YOUNG영역을 다 비우게 되면 YOUNG 영역에는 연속된 여유 공간이 만들어지므로 객체를 지속적으로 생성할 수 있습니다.

interface와 abstract에 대해서 설명해 보세요

  • 추상클래스(abstract class)는 추상메소드를 1개 이상 가지고 있는 클래스를 의미합니다. 기존 메소드 이외에 추상 메서드를 상속시켜서, 반드시 구현이 필요한 내용인 추상 메서드를 상속받은 클래스에서 구현시키는 것이 주목적입니다. 추상 메소드를 1개 이상 가진 클래스는 객체 생성이 안되므로, 추상 클래스를 상속받은 클래스의 객체 생성을 위해서는 추상 메서드를 구현해야 하는 강제성이 있습니다
  • 인터페이스는 상수와 메소드 선언의 집합입니다. 정의된 메소드를 implements 받은 곳에서 모두 구현을 강제합니다 .JAVSA는 단일 상속만을 지원하기 때문에, 추상 클래스를 상속받은 클래스는 다른 클래스를 상속받을 수 없습니다. 그러나 인터페이스는 인터페이스끼리 상속이 가능하므로, 여러 인터페이스 상속이 가능합니다.

디자인 패턴이 무엇인지, 그리고 싱글톤에 대해 간단히 설명하세요

  • 디자인 패턴은 공통적인 소프트웨어 코드 작성 문제를 해결하는데 도움이 될 수 있는 코드 패턴을 의미합니다.
  • 싱글톤은 전체 프로그램에서 단 1개의 객체를 생성해서 공유할 수 있는 코드 패턴을 말합니다.

객체와 클래스의 차이점에 대해 설명해주세요

객체와 클래스의 가장 큰 차이점은 그 실체를 가지느냐에 있습니다. 클래스는 어떤 분류의 기준이 되며 실체가 존재하지 않습니다. 객체는 클래스를 통해 만들어진 실체이며 예를들어 사람이라는 분류 기준이 클래스라면 그 클래스에 속하는 한국인, 미국인 등은 객체입니다.

profile
두비두비둡
post-custom-banner

0개의 댓글