면접 준비 step1

KangWook·2024년 8월 30일
0

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

RESTful API는 HTTP 표준을 활용해 클라이언트-서버 간 통신을 단순화하고 확장성을 제공합니다. 상태 비저장성으로 인해 서버 부하가 적고, 클라이언트는 독립적으로 서버와 통신할 수 있습니다.

  • RESTful API가 상태 비저장성을 유지하는 이유는 무엇인가요?

    • 각 요청이 독립적으로 처리되어 서버는 클라이언트의 이전 상태를 기억할 필요가 없기 때문에 확장성과 안정성이 높아집니다.
  • RESTful API에서 HTTP 메서드의 역할은 각각 무엇인가요?

    • GET, POST, PUT, DELETE와 같은 메서드는 각각 자원의 조회, 생성, 수정, 삭제를 의미하여 자원에 대한 명확한 행동을 정의합니다.
  • RESTful API 설계에서 URI의 가독성과 일관성을 유지하는 방법은 무엇인가요?

    • URI는 명사 기반으로 설계하고, 일관된 경로 구조와 소문자를 사용하여 유지보수와 가독성을 높입니다.

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

관심사 분리는 코드의 모듈화와 유지보수를 쉽게 하여 변경 시 다른 부분에 미치는 영향을 최소화합니다. 이를 통해 팀 간 협업이 원활해지고, 코드의 재사용성이 높아집니다.

  • 관심사 분리가 코드 유지보수에 어떻게 도움이 되나요?

    • 코드의 특정 부분이 변경될 때, 그 변경이 다른 부분에 미치는 영향을 최소화하여 수정과 확장이 용이합니다.
  • 관심사 분리가 객체지향 설계 원칙(SOLID)과 어떻게 관련이 있나요?

    • 단일 책임 원칙(SRP)은 관심사 분리의 핵심으로, 코드의 각 모듈이 하나의 책임만 가지도록 하여 가독성과 유지보수성을 높입니다.
  • 관심사 분리를 통해 코드의 재사용성을 어떻게 높일 수 있나요?

    • 모듈화된 코드는 독립적으로 동작할 수 있어, 다른 프로젝트나 시스템에서 쉽게 재사용할 수 있습니다.

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

Setter의 과도한 사용은 객체의 캡슐화를 약화시켜 데이터의 무결성을 해치고, 객체 간 결합도를 높여 유지보수를 어렵게 만듭니다. 또한, 불변성을 깨트려 예측 가능성을 저하시킬 수 있습니다.

  • 객체지향 프로그래밍에서 캡슐화의 개념과 Setter의 관계는 무엇인가요?

    • 캡슐화는 객체의 내부 상태를 보호하며, Setter는 외부에서 그 상태를 변경할 수 있게 하여 캡슐화를 약화시킬 수 있습니다.
  • Setter를 과도하게 사용하면 객체의 불변성에 어떤 영향을 미치나요?

    • Setter는 객체의 상태를 외부에서 변경할 수 있게 하여, 불변성을 유지하지 못하게 하고 상태 일관성을 저해할 수 있습니다.
  • Setter를 남용하면 코드의 결합도가 높아지는 이유는 무엇인가요?

    • Setter를 통해 외부에서 객체의 상태를 직접 변경하면, 객체 간 의존성이 증가하여 코드의 결합도가 높아집니다.

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

RDBMS는 관계형 데이터를 정규화된 테이블 구조로 관리하며, 트랜잭션을 통해 일관성과 무결성을 보장합니다. NoSQL은 비정형 데이터와 대규모 데이터를 처리하는 데 유연하며, 수평 확장성이 뛰어납니다.

  • NoSQL 데이터베이스의 주요 유형은 무엇인가요?

    • 문서형, 키-값, 열 기반, 그래프 데이터베이스 등 다양한 유형이 있으며, 각각 특정 데이터 구조에 최적화되어 있습니다.
  • RDBMS가 관계형 데이터베이스를 효율적으로 관리할 수 있는 이유는 무엇인가요?

    • ACID 특성을 통해 데이터 일관성을 유지하고, SQL을 사용해 복잡한 쿼리를 효율적으로 처리합니다.
  • NoSQL 데이터베이스가 수평 확장성을 잘 지원하는 이유는 무엇인가요?

    • 데이터가 분산된 노드에 저장되며, 노드를 추가하는 것만으로 성능을 확장할 수 있어 대규모 데이터를 효율적으로 처리합니다.

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

객체지향 프로그래밍(OOP)은 객체와 클래스 개념을 활용하여 코드의 재사용성과 유지보수성을 높이는 프로그래밍 패러다임입니다. 상속, 다형성, 캡슐화, 추상화를 통해 복잡한 시스템을 효과적으로 관리할 수 있습니다.

  • 객체지향 프로그래밍(OOP)의 네 가지 주요 원칙은 무엇인가요?

    • 캡슐화, 상속, 다형성, 추상화로, 각각 객체의 데이터 보호, 코드 재사용성, 유연성, 복잡도 관리를 도와줍니다.
  • OOP에서 클래스와 객체의 차이점은 무엇인가요?

    • 클래스는 객체를 생성하기 위한 설계도이며, 객체는 클래스에 기반하여 생성된 구체적인 실체입니다.
  • OOP의 상속이 코드를 재사용하는 데 어떻게 도움을 주나요?

    • 상속을 통해 자식 클래스는 부모 클래스의 속성과 메서드를 물려받아 코드 중복을 줄이고 재사용성을 높입니다.
profile
꾸준히 성장하는 개발자

0개의 댓글