ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS / Web] 프론트엔드 면접 정리
    CS/Web 2022. 5. 19. 20:55
    • GET과 POST의 차이
      • 사용목적 GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용을 합니다.
      • 요청에 body 유뮤의 차이점도 있습니다. GET은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없습니다, POST는 body에 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 존재합니다.
      • 멱등성 GET 요청은 멱등이며 POST는 멱등이 아니다.
        • 멱등이란 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다,
        • GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 동일할 것입니다.
        • POST는 리소스를 새로 생성하거나 업데이트할 때 사용되기 때문에 멱등이 아니라고 볼 수 있습니다.
    • RESTful API 가 무엇인가, 아는대로 다 말해달라
      • REST란 HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다. API란 데이터와 기능의 집합을 제공함으로써 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는 것을 의미합니다. 따라서 RESTAPI란 REST를 기반으로 서비스 API를 구현한 것으로 설명할 수 있겠습니다.
      • CRUD Operation
        • Create: 생성(POST)
        • Read: 조회(GET)
        • Update: 수정(PUT)
        • DELETE: 삭제(DELETE)
        • HEAD: header 정보 조회(HEAD)
      • REST가 필요한 이유
        • 기술의 발전으로 다양한 클라이언트가 등장하면서 자연스레 멀티 플렛폼의 지원을 위한 아키텍처가 필요해짐
      • REST의 장점
        • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없으며, HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하다. 서버와 클라이언트의 역할을 명확하게 분리할 수 있다.
      • REST의 단점
        • 구형 브라우저의 경우 PUT, DELETE 메소드를 지원하지 않으며, 사용할 수 있는 HTTP Method의 형태가 제한적입니다.
    • 프로세스와 스레드의 차이
      • 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위
      • 스레드는 프로세스가 할당받은 자원을 이용하는 실행 단위이다. 멀티프로세싱보다 멀티스레딩을 하는 이유는 운영체제로부터 자원을 할당 하는 프로세싱 작업을 많이 하는 것 보다 스레딩을 여러개 하는것이 훨씬 더 시스템 자원을 효율적으로 관리할 수 있다.
    • 객체 지향 프로그래밍이란
      • OOP란 Object Oriented Programming, 즉 객체지향프로그래밍을 말합니다. 객체지향프로그래밍이란 객체들이 유기적으로 동작하는 프로그래밍 이론을 말하며, 객체지향프로그래밍을 하는 주요 장점으로는 코드 재사용 및 중복 제거등이 있습니다.
      • 특징
        • 첫 번째는 다형성, 선언되어있는 하나의 메소드를 오버라이딩하여 여러가지의 기능으로 동작시킬 수 있는 것.
        • 두 번째는 캡슐화, 데이터와 데이터 구조를 묶음으로써 외부에 데이터를 노출시키지않는 데이터 은닉화가 가능하다는 것.
        • 세 번째는 상속, 상속관계에 있는 두 클래스에서 자식 클래스가 부모 클래스의 메소드를 상속받아 사용함으로써 코드의 재사용이 가능하는 것.
        • 마지막으로 추상화, 클래스에 대해 공통 속성이나 기능을 묶어 이름을 붙여서 객체지향관점으로 봤을 때 추상화가 가능하다는 점 입니다.
    • SSR(서버사이드 렌더링)과 SPA, CRS(클라이언트 렌더링)
      • 서버사이드 렌더링
        • 초기 로딩속도가 빠르고
        • SEO(검색 엔진 최적화)에 유리하지만,
        • View 변경시 서버에 계속 요청을 해야하므로 서버에 부담이 크다.
      • 클라이언트 렌더링
        • 초기 로딩속도는 느리지만,
        • 초기 로딩 후 서버에 다시 요청할 필요없이 클라이언트 내에서 작업이 이루어지므로 매우 빠르다.
        • but SEO에 대한 문제가 있다.
      • SPA
        • 첫 로딩시 전체 페이지를 로딩하고 필요한 데이터만 JSON형태로 받아와서 동적으로 렌더링하는 방식
    • 단방향 양방향 데이터 바인딩
      • 데이터 바인딩은 두 데이터 혹은 정보의 소스를 일치 시키는 기법으로 화면에 보이는 데이터와 브라우저 메모리에 있는 데이터를 일치시키는 것을 말합니다.
      • 양방향 데이터 바인딩
        • 장점 : 코드의 사용면에서 코드량을 크게 줄여준다.
        • 단점 : 변화에 따라 DOM 객체 전체를 렌더링해주거나 데이터를 바꿔주므로 성능이 감소되는 경우가 있습니다.
        • 양방향 데이터 바인딩은 데이터의 변경을 프레임워크에서 감지하고 있다가, 데이터가 변경되는 시점에 DOM 객체에 렌더링을 해주거나 페이지 내에서 모델의 변경을 감지해 JS 실행부에서 변경한다. 입력된 값이나 변경된 값에 따라 내용이 바로 바뀌기 때문에 따로 체크해주지 않아도 된다.
        • 양방향 데이터 바인딩은 웹 애플리케이션의 복잡도가 증가하면 증가할수록 빛을 발한다. 수많은 코드의 양을 줄여줄 뿐만 아니라 유지보수나 코드를 관리하기 매우 쉽게 해주기 때문이다.
      • 단방향 데이터 바인딩
        • 장점 : 데이터 변화에 따른 성능 저하 없이 DOM 객체 갱신 가능, 데이터 흐름이 단방향(부모->하위 컴포넌트)이라, 코드를 이해하기 쉽고 데이터 추적과 디버깅이 쉬움
        • 단점: 변화를 감지하고 화면을 업데이트 하는 코드를 매번 작성해야 함
        • 단방향 데이터 바인딩은 데이터와 템플릿을 결합해 화면을 생성하는 것이다. (JS -> HTML만 가능)
        • 사용자의 입력에 따라 데이터를 갱신하고 화면을 업데이트 해야 하므로 단방향 데이터 바인딩으로 구성하면, 데이터의 변화를 감지하고 화면을 업데이트 하는 코드를 매번 작성해주어야 한다.
        • 리액트는 자바스크립트 기반으로, 부모 뷰->자식 뷰 바뀐 내용을 직접 전달한다.

    'CS > Web' 카테고리의 다른 글

    [CS / Web] HTTP와 HTTPS의 차이점  (0) 2022.05.14
    [CS / Web] 브라우저 렌더링 과정  (0) 2022.05.13
Designed by Tistory.