ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기술 면접 스터디 - 1일차(OOP, Rest API)
    [기술 면접 준비] 2023. 3. 27. 13:34

    Q. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요.

     

    A. 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호작용을 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 프로그래밍 방식을 말합니다.

     

     

    A. 객체지향의 설계 원칙은 SOLID 원칙이 있습니다.

    • SRP(Single Responsibility Principle) : 단일 책임 원칙
      • 모든 클래스는 각각 하나의 책임만을 가져야 한다.
    • OCP(Open Closed Principle) : 개방-폐쇄 원칙
      • 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있도록 하고 수정할 때는 닫혀 있어야 한다.
    • LSP(Luskov Substitution Principle) : 리스코프 치환 원칙
      • 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 
    • ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
      • 하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 한다.
    • DIP(Dependency Inversion Princile) : 의존 역전 원칙
      • 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않게 하는 원칙 => 추상화(인터페이스) 에 의존해야지 구체화(구현클래스) 에 의존하면 안된다.
      • 즉, 상위 계층은 하위 계층의 변화에 대한 구현으로부터 독립해야 한다.

     

    A. 객체지향 프로그래밍은 추상화, 캡슐화, 상속성, 다형성 이라는 특징이 있습니다.

    • 추상화 (abstraction)
      • 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
    • 캡슐화(encapsulation)
      • 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
    • 상속성(inheritance)
      • 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것을 의미
      • 코드의 재사용, 계층적인 관계 생성, 유지 보수 측면에서 중요하다.
    • 다형성(polymorphism)
      • 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 의미
        • 오버로딩 : 같은 이름을 가진 메서드를 여러개 두는 것. 매개변수의 종류와 갯수가 달라야함. 컴파일 중에 발생하는 '정적 다형성'
        • 오버라이딩 : 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것을 의미. 런타임 중에 발생하는 '동적 다형성'

     

     

    Q. REST API란 무엇인가요? (모두가 답변) 프로젝트에 REST API를 사용한 이유가 무엇인가요? (프로젝트에 REST API를 사용하셨을 경우에만 추가 답변), REST API 말고 다른 비교할만한 것을 알고 있나요?

     

    A. REST API 란 REST 아키텍처의 조건을 준수하는 API 를 의미합니다.

     

    이때, REST 란? (Representational State Transfer)

    • 자원을 이름(표현) 으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미한다.
    • 즉, 자원의 표현에 의한 상태 전달 => 보낼 데이터의 이름을 지정해서 그 이름을 사용하여 상태를 전달하는 것을 의미
    • HTTP URI를 통해 자원을 명시하고 HTTP Method(Post, Get, Put, Delete)를 통해 자원을 교환하는 것.

     

    A. 프로젝트에 REST API 를 사용한 이유는 REST API의 장점을 취득하기 위해서 입니다.

    • HTTP 표준 프로토콜을 사용하는 모든 플랫폼에서 호환 가능
    • 서버와 클라이언트의 역할을 명확하게 분리
    • 여러 서비스 설계에서 생길 수 있는 문제를 최소화
    • REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높임
    • HTTP 표준을 따르고 있어 여러 프로그래밍 언어로 구현할 수 있음

     

    A. REST API 말고 다른 비교할만한 것

    https://appmaster.io/ko/blog/rest-apiran-mueosimyeo-dareun-yuhyeonggwa-eoddeohge-dareungayo

Designed by Tistory.