TIL

TIL : 2024/09/03 뉴스피드 프로젝트 개발 시작 및 모의면접 준비

banasu0723 2024. 9. 4. 02:06

TIL 쓰기 전 오늘의 목표 !

  • 목표
    • 팀 프로젝트 필수설계 마무리
    • 모의면접 준비

< 1번째 모의면접 질문 >

1. RESTful한 API를 설계하는 장점은?
2. 적절한 관심사 분리의 필요한 이유는?
3. Setter를 무분별하게 사용하면 안되는 이유 무엇인가요?
4. NoSQL과 RDBMS에 대해 아는대로 설명해주세요.
5. 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?

 


1. RESTful한 API를 설계하는 장점은?

 

  • HTTP 프로토콜을 기반으로 하기 때문에, 웹에서 널리 사용되는 기술과 호환됩니다. 이는 개발자가 쉽게 접근할 수 있으며, 기존 웹 인프라를 활용할 수 있다는 의미입니다. 왜냐하면 RESTful API는 웹의 기존 표준을 그대로 활용하기 때문입니다.
  • 둘째, 플랫폼과 언어에 독립적입니다. RESTful API는 JSON, XML 같은 표준 포맷을 사용하여 데이터를 교환하기 때문에, 다양한 플랫폼과 프로그래밍 언어에서 사용할 수 있습니다.
  • 셋째, 간단하고 이해하기 쉬운 인터페이스를 제공합니다. RESTful API는 URI로 자원을 식별하고, HTTP 메서드로 해당 자원에 대한 행위를 정의하기 때문에, API의 구조를 쉽게 이해할 수 있습니다.
  • 넷째, 확장성과 재사용성이 뛰어납니다. RESTful API는 상태를 클라이언트에 저장하지 않는 Stateless 아키텍처를 따르기 때문에, 서버와 클라이언트가 독립적으로 확장될 수 있습니다.

 


2. 적절한 관심사 분리의 필요한 이유는?

 

 복잡성을 줄이고, 시스템의 유지보수성과 확장성을 향상시킬 수 있습니다.

 

 

출처 : https://velog.io/@okko8522/%EC%84%9C%EB%B2%84-%EA%B4%80%EC%8B%AC%EC%82%AC-%EB%B6%84%EB%A6%AC%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%95%BC%ED%95%98%EB%82%98%EC%9A%94-%EA%B3%84%EC%B8%B5%ED%99%94-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EA%B0%9C%EB%85%90

 

 

 


3. Setter를 무분별하게 사용하면 안되는 이유 무엇인가요?

 

사용한 의도를 쉽게 파악하기 어렵다.

Post post = new Post();
post.setId(1L);
post.setUserId("member1");
post.setTitle("제목입니다.");
post.setCont("내용입니다.");

위 코드의 경우 게시글 정보 Entity인 post를 set 메서드를 통해 값을 변경하는데 게시글의 값을 생성하는 구문인지, 변경하는 구문인지 정확한 의도를 파악하기 어렵다. 더군다나 객체의 내부 값이 많거나 복잡하다면, 더더욱 한눈에 알아보기 힘들 것이다.

🧐 일관성을 유지하기 어렵다.

public Post updatePost(Long id) {
    Post post = findById(id);
    post.setTitle("제목을 수정합니다.");
    post.setCont("내용을 수정합니다,");
    return post;
}

다음으로 위 코드의 경우 게시글을 변경하는 메소드인데, public으로 작성된 setter 메소드를 통해 어디서든 접근이 가능하기에 의도치 않게 post의 값을 변경하는 경우가 발생할 수 있다. 그렇다면 결국 post 객체의 일관성은 무너지게 된다.

 

출처 : https://velog.io/@langoustine/setter-%EC%A7%80%EC%96%91-%EC%9D%B4%EC%9C%A0

 


 

4. NoSQL과 RDBMS에 대해 아는대로 설명해주세요.

 

 

 

 

NoSQL

  • 비관계형 데이터베이스 유형
  • not only SQL 데이터베이스
  • 높은 확장성과 가용성이 주요 장점 : 변화하는 요구 사항에 빠르게 적응함으로써 민첩한 개발 패러다임에 자연스럽게 활용되는 이점
  • 데이터는 보다 직관적이고 이해하기 쉬운 방식 또는 애플리케이션이 사용하는 것에 가까운 방식으로 저장
  • NoSQL 스타일의 API를 사용하면 저장 또는 검색 시 데이터 변환의 필요성이 줄어든다
  • 다운타임이 없는 클라우드의 이점

RDBMS

  • 관계형 데이터베이스 관리 시스템
  • DBMS 앞에 R ( Relational ) 이 추가 / DBMS(Database Management System)
  • 대표적으로 MySQL, 오라클(Oracle), SQL 서버, MariaDB 등이 있다

DBMS의 유형은 크게 RDBMS ( 관계형 데이터베이스 관리 시스템 ) 과 NoSQL DBMS ( 비 관계형 데이터베이스 관리 시스템 ) 으로 나눌 수 있습니다.

 

출처 : https://hstory0208.tistory.com/19

 

 


5. 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?

 

 

 

객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법

 

출처 :https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80