230530 TIL #98 기술 면접 스터디 - 1

김춘복·2023년 5월 29일
0

TIL : Today I Learned

목록 보기
98/494

230530 Today I Learned

기술 면접 스터디를 시작했다. 2주간 기술 면접 질문에 대한 답변을 정리할 예정이다.


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

객체지향 프로그래밍은 현실세계에서 우리가 사물을 인지하는 것 처럼 프로그래밍하기 위해 고안되어, 프로그램을 상태와 행동을 가진 다수의 객체로 만들고 서로 상호작용하며 데이터를 처리하는 방식의 개발 방법입니다. 유지보수가 용이하고 재사용성이 높다는 장점이 있지만, 개발속도와 실행속도가 다른 개발방법에 비해 느리다는 단점이 있습니다.

객체지향의 기본요소로는 상속, 캡슐화, 추상화, 다형성이 있습니다. 상속은 상위 개념의 특징을 하위 개념이 전부 물려받아 코드의 중복을 줄이고 재사용할 수 있게 하는 것입니다.
캡슐화는 관련된 필드와 메서드을 하나로 묶어 표시할 속성과 숨길 속성을 선택할 수 있게 하는 것입니다.
추상화는 복잡한 시스템이나 개념을 단순화해서 필요한 부분에 집중할 수 있도록 합니다.
다형성은 하나의 객체가 다른 여러 객체로 재구성되는 것으로 오버라이딩과 오버로딩이 대표적인 예입니다.

객체지향에는 SOLID 원칙이 있습니다.
SRP, 단일 책임 원칙은 하나의 객체는 하나의 책임만 가져야 한다는 원칙입니다. 한 클래스에 여러 책임이 따르면 수정 시 너무 많은 영향을 끼칠 수 있기 때문입니다.
OCP, 개방-폐쇄 원칙은 자신의 확장에 있어서는 열려있어야하고, 주변의 변경에 대해서는 닫혀있어야한다는 원칙입니다. 기존의 코드를 바꾸지 않고 기능을 수정하고 추가할 수 있도록 설계해야합니다.
LSP, 리스코프 치환 원칙은 하위타입은 상위타입을 대체할 수 있어야 한다는 원칙입니다. 하위타입의 객체는 상위 타입 객체에서 가능한 행위를 수행할 수 있어야 합니다.
ISP, 인터페이스 분리 원칙은 객체가 자신이 호출하지 않는 메서드에 의존하지 않아야 한다는 원칙입니다. 범용 인터페이스 하나보다 특정 클라이언트를 위한 인터페이스 여러개가 낫다는 원칙입니다.
DIP, 의존성 역전 원칙은 변하기 쉬운 구체적인 것보다 변하기 어려운 추상화된 것에 의존해야된다는 원칙입니다. 변하기 어려운 상위 클래스나 인터페이스, 추상클래스에 의존해 변화에 영향을 받지 않게 하려는 원칙입니다.
객체지향에서 SOLID 원칙 준수를 통해 유지보수와 확장성을 높일 수 있습니다.


2. REST API란 무엇인가요? 프로젝트에 REST API를 사용한 이유가 무엇인가요?, REST API 말고 다른 비교할만한 것을 알고 있나요?

REST API는 웹 서비스를 개발하기 위한 아키텍처 스타일로 REST 원칙을 따르는 API를 말합니다.
REST는 자원을 나타내는 URI를 통해 나타내고, GET, POST, PUT, DELETE와 같은 HTTP 메서드를 사용해 리소스에 대한 CRUD 작업을 수행합니다. JSON이나 XML같은 형식으로 데이터가 전달되고, 각 요청이 독립적으로 처리되어 Stateless 특징을 가집니다.

프로젝트에 REST API를 사용한 이유는 일반적으로 널리 알려진 표준이라 사용하기 쉽고, 다양한 플랫폼에서 사용할 수 있어 범용성이 좋기 때문이었습니다.

REST API말고 다른 웹서비스 아키텍처 스타일로는 어플리케이션을 작고 독립적인 여러개의 서비스로 분할하는 마이크로서비스 아키텍처와 XML기반의 SOAP가 있습니다.

  • REST의 단점 : 정보가 계속 변하는 경우 그 정보를 계속 받아오려면 요청을 반복해서 보내야 한다. 이를 웹소켓이 보완. 웹소켓은 한번 요청이 가면 데이터를 쭉 제공한다. 실시간 채팅이나 온라인 게임, 스트리밍 서비스에서 활용.

3. 이벤트 루프 (Event Loop)에 대해 설명해보세요.

이벤트 루프는 자바스크립트와 같은 단일 스레드 기반의 비동기 프로그래밍 환경에서 이벤트 처리와 콜백 함수 실행을 관리하는 메커니즘입니다. 이벤트 큐와 콜 스택을 모니터링해 비동기 작업이 완료되면 해당 작업의 콜백 함수를 콜스택에 넣어 실행합니다. 무한루프로 동작하며 이벤트 큐에 이벤트가 있고, 콜스택이 비어있는 경우에만 작업을 처리합니다.


4. 콜백 함수 (Callback Function)가 무엇인지, 어떻게 사용되는지 설명해보세요.

다른 함수의 인자로 전달되어 해당 함수가 완료되었을 때 호출되는 함수입니다. 이벤트처리, 타이머, 네트워크 요청 등의 비동기 작업이 완료되었을 때에도 사용되어 특정 동작을 수행하도록 지정할 수 있습니다.

  • 비동기작업 : 프로그램이 특정 작업을 시작하고, 그 작업이 완료될때 까지 기다리지 않고 즉시 다음 작업을 수행하는 것. 프로그램이 여러 작업을 동시에 처리할 수 있도록 해준다.
profile
꾸준히 성장하기 위해 매일 log를 남깁니다!

0개의 댓글