벡엔드 개발자 면접 질문 정리

마라탕천재 ㅣ 2024. 8. 30. 14:55

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

  • 단순성과 확장성 : Restful한 API를 설계하면 HTTP 메서드를 사용해 직관적인 인터페이스를 제공한다. 또한 서버 - 클라이언트 분리 원칙을 따르기 때문에 기능을 확장하기 수월해진다.

 

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

  • 유지보수성 개선 : 관심사에 따른 모듈화를 통해 특정 기능을 수정하거나 업그레이드할 때, 다른 부분에 미치는 영향을 최소화한다. 예를 들어 UI변경 시 벡엔드 로직을 건드리지 않고 쉽게 수정할 수 있고, 데이터베이스 스키마 변경 시에도 다른 레이어에 미치는 영향을 최소화 하여 유지보수성이 개선 된다.

3. Setter를 남용하면 안되는 이유는?

  • 캡슐화 위반 : Setter를 남용하면 내부 상태를 외부에서 쉽게 변경할 수 있어, 데이터의 무결성이 저하될 뿐더러, 객체지향의 기본원칙인 캡슐화를 위반하게 된다.
  • 비즈니스 로직 분리 : 상태변화를 추적하기 어려워지고, 비즈니스 로직이 분산되어 코드의 응집도가 낮아지고 유지보수가 힘들어질 수 있습니다.

→ 해결 방안 ? : 의미 있는 메서드를 통해 객체의 상태를 변경해서 코드의 의도를 더 명확하는 것이 더 바람직.

 

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

  • RDBMS는 구조화된 데이터를 테이블 형태로 저장하며, 고정된 스키마와 SQL을 사용하여 데이터 무결성을 보장한다.
    • 장점 : ACID원칙에 의해 데이터를 안전하게 처리하며, 데이터 구조가 명확하고, SQL을 통해 복잡한 데이터를 처리 할 수 있다.
    • 단점 : 데이터 구조가 변경되면 스키마를 수정해야 하는 번거로움이 있다.
  • NoSQL은 비구조화된 데이터를 다양한 형식으로 저장할 수 있으며, 스키마가 유연하고 수평적 확장이 용이합니다.
    • 장점 : 데이터 구조가 유연하고 여러가지 형태(문서, 키-값, 그래프)로 데이터를 저장할 수 있어 확장에 용이하다.
    • 단점 : SQL처럼 강력한 쿼리 언어가 없어서, 개발자가 코드단에서 추가적으로 가공해주어야 하고, 데이터 무결성을 보장 하지 않는다.

 

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

  • 객체지향 프로그래밍은 프로그램을 객체라는 독립적인 단위로 구성하여 소프트웨어를 설계하고 구현하는 방법론이다.
  • 활용 방법
    • 모델링 : 현실세계의 사물이나 개념을 객체로 모델링하여 복잡한 시스템을 이해하고 설계하는데 유용함.
    • 재사용성 : 클래스와 객체를 재사용하여 코드 중복을 줄이고 유지보수를 쉽게 할 수 있다.
    • 유지보수성 : 코드 변경이 객체 내에 국한되므로 특정 부분만 수정하면 된다.
    • 협업 : 대규모 프로젝트에서 각자 객체를 담당하여 개발할 수 있어 협업이 용이하다.

 

6. mvc 패턴에 대해서 설명해주세요.

  • MVC 패턴은 소프트웨어 설계에서 사용되는 아키텍처 패턴이다. 
    • Model: 데이터와 비즈니스 로직을 관리
    • View: 사용자에게 정보를 표시하는 인터페이스를 담당
    • Controller: 사용자 입력을 처리하고, Model과 View 사이의 상호작용을 조정
  • 웹 애플리케이션에서 Model은 데이터베이스 처리, View는 HTML 페이지, Controller는 HTTP 요청 처리를 담당할 수 있다.