Spring 기술면접 예상질문 미리보기 <8>

객체지향프로그램, 대용량트래픽, ORM, GET/POST에 관한 질문, 뭐라고 답해야 할까?
Feb 13, 2025
Spring 기술면접 예상질문 미리보기 <8>
 
🌊
스프링(Spring)은 국내 기업에서 많이 쓰이는 Java 기반 프레임워크 중 하나입니다. 현재 스프링 기술 면접 준비를 하고 계시다면 이번 아티클에 주목해주세요. 많이 물어보시는 스프링 기술 면접 질문을 추렸습니다. 예상 질문부터 수강생의 답변과 멘토님의 피드백까지 한눈에 확인해보세요.
 

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

핵심 키워드 : 절차 지향과 객체 지향, 클래스, 캡슐화, 상속, 유지 보수

수강생 답변

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 현실 세계의 사물이나 개념을 '객체'로 모델링하여 소프트웨어를 개발하는 프로그래밍 패러다임 중 하나입니다. 객체지향 프로그래밍에는 다섯 가지 주요 개념이 있습니다. 첫째, '객체'는 속성과 행위를 가진 독립적인 단위입니다. 예를 들어 '자동차' 객체는 '색상', '모델'과 같은 속성과 '달리다', '멈추다'와 같은 행위를 가질 수 있습니다. 둘째, '클래스'는 이러한 객체를 생성하기 위한 틀 또는 설계도로, 이를 통해 여러 객체를 생성할 수 있습니다. 셋째, '상속'은 한 클래스의 속성과 메서드를 다른 클래스가 물려받는 것으로, 이를 통해 코드의 재사용성을 높이고 계층적 구조를 만들 수 있습니다. 넷째, '캡슐화'는 객체의 상태를 외부에서 직접 변경할 수 없도록 하고 메서드를 통해서만 접근하게 함으로써 데이터를 보호하고 내부 구현의 변경에 유연하게 대응할 수 있게 합니다. 다섯째, '다형성'은 하나의 인터페이스나 클래스가 여러 형태로 동작할 수 있게 하여 코드의 유연성과 확장성을 높여줍니다. 객체지향 프로그래밍은 다양한 방식으로 활용될 수 있습니다. 첫째, '재사용성' 측면에서 클래스와 메서드를 재사용하여 코드의 중복을 줄일 수 있습니다. 둘째, '확장성' 측면에서 새로운 기능이나 변경사항이 생겨도 기존 코드를 최소한으로 수정하여 대응할 수 있습니다. 셋째, '유지보수' 측면에서 코드의 구조가 체계적이어서 버그 수정이나 기능 추가가 용이합니다. 넷째, '모듈성' 측면에서 각 객체가 독립적으로 동작하기 때문에 팀 프로젝트에서 기능별로 분담하여 개발할 수 있습니다. 결론적으로 객체지향 프로그래밍은 현실 세계의 개념을 프로그래밍에 반영하여 보다 체계적이고 유연한 코드를 작성할 수 있게 해주는 방법론입니다.
 

멘토님 피드백

객체지향 프로그래밍의 구현 도구들과 이를 통해 달성하고자 하는 목표를 논리적으로 잘 연결해서 설명했습니다.
 

☑︎ 체크 포인트

  • 객체지향 프로그래밍이 지향하는 바를 잘 설명한 부분
    • 재사용성, 확장성, 유지보수, 모듈성
 
 
 

Q (2). 대용량 트래픽 발생 시 어떻게 대응해야 하나요?

핵심 키워드 : 부하 분산, 캐싱, CDN, 성능 최적화, 비동기 처리

수강생 답변

대용량 트래픽은 웹사이트, 서버 등의 시스템에 집중적으로 큰 데이터 양이나 요청이 전송되는 현상을 의미합니다. 이는 사용자 수가 급격히 증가하거나, 데이터 전송량이 폭증하는 등의 상황에서 발생합니다. 대용량 트래픽의 개념적 정의에는 두 가지가 있습니다. 첫째로 데이터 양의 증가는 짧은 시간 동안 많은 양의 데이터가 전송되는 상황을 말하며, 예를 들어 동영상 스트리밍 서비스에서 대용량 동영상이 동시에 많은 사용자에게 전송되는 경우가 있습니다. 둘째로 요청 수의 증가는 짧은 시간 동안 많은 수의 사용자로부터 요청이 발생하는 상황을 말하며, 예를 들어 특정 이벤트, 프로모션, 티켓 구매 등으로 인해 웹 사이트에 동시에 많은 사용자가 접속하는 경우가 있습니다. 이러한 상황이 발생했을 때 대응할 수 있는 방안으로는 7가지가 있습니다. 트래픽을 여러 서버에 분산시켜 부하를 줄이는 로드 밸런싱, 필요에 따라 서버 자원을 확장하는 스케일링, 자주 사용되는 데이터나 페이지를 캐시에 저장하여 빠르게 제공하는 캐싱, 사용자나 IP 주소별로 요청 횟수를 제한하여 서버에 부담을 줄이는 트래픽 제한, DDoS 공격 대비 전용 솔루션을 도입하거나 클라우드 서비스 제공자의 DDoS 보호 기능을 활용하는 DDoS 대비, 시스템의 상태를 실시간으로 모니터링하여 문제가 발생하면 즉시 대응하는 모니터링, 그리고 마지막으로 트래픽 급증 시 미리 준비된 비상 계획을 실행하는 비상 계획 마련이 있습니다. 예를 들어, 간소화된 버전의 웹페이지를 제공하거나, 사용자에게 현재 상황을 안내하는 메시지를 표시합니다.
 

멘토님 피드백

대용량 트래픽에 대한 정의를 상세히 잘 설명하고 있고, 대용량 트래픽을 해결하는 방안을 주요 키워드 중심으로 이야기하고 있어서 좋은 답변이었습니다.
 

☑︎ 체크 포인트

  • 대용량 트래픽을 해결하는 방안을 키워드 중심으로 설명한 부분 로드 밸런싱, 스케일링, 캐싱, 트래픽 제한, DDos 대비, 모니터링, 비상 계획 마련
 
 
 

Q (3). ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

핵심 키워드 : Native Query, 캐싱, Procedure, DB 정규화, 지연 로딩

수강생 답변

ORM을 사용하면서 쿼리가 복잡해지는 경우의 해결 방안으로는 7가지가 있습니다. 간단한 쿼리와 데이터 조작 작업에는 매우 유용하지만, 복잡한 쿼리의 경우 원시 SQL을 사용하는 것이 효율적일 수 있으며, ORM은 매핑과 객체 지향 작업에 유용하고 네이티브 SQL을 사용해 데이터베이스의 강력한 기능을 활용할 수 있는 Native SQL 사용이 있습니다. 복잡한 데이터베이스 로직을 저장 프로시저로 옮겨 데이터베이스에서 처리함으로써 네트워크 오버헤드가 감소하고 데이터베이스 성능을 최적화할 수 있는 Stored Procedure 활용이 있으며, 많은 ORM 프레임워크가 제공하는 복잡한 쿼리를 처리하는 데 도움을 주는 고급 기능을 활용하여 쿼리를 최적화하고 조인, 서브쿼리, 필터링 및 정렬과 같은 고급 데이터베이스 기능을 활용할 수 있는 ORM의 고급 기능 활용이 있습니다. 또한 필요한 필드만 가져오고, 인덱스를 적절히 활용하며, 불필요한 조인을 피하는 등의 쿼리 최적화가 있고, 복잡한 쿼리의 실행 결과를 캐시하여 빈번한 쿼리 요청에 대한 응답 시간을 줄일 수 있는 캐싱 활용이 있습니다. 데이터베이스 스키마와 객체 모델 사이의 일치성을 유지하기 위한 좋은 설계 원칙을 준수하여 복잡성을 최소화하고 유지보수성을 향상시키는 설계 검토가 있으며, 마지막으로 ORM 프레임워크가 프로젝트의 요구 사항을 충족하지 못하거나 복잡한 쿼리 작성이 지속적으로 어려운 경우 다른 ORM 프레임워크나 데이터베이스 액세스 기술을 고려해 볼 수 있는 ORM 변경 고려가 있습니다.
 

멘토님 피드백

해결 방안을 키워드 중심으로 다양하게 잘 설명했습니다. 다만 두 가지 아쉬운 점이 있습니다. 첫째, 각각의 해결 방안이 갖는 장단점이나 상세한 기능 정보(예: ORM의 고급 기능 중 Lazy Loading과 Eager Loading)를 다루지 않아 아쉽습니다. 둘째, 주특기가 Spring인 만큼 JPA를 기준으로 설명했다면 더 좋았을 것 같습니다.
 

☑︎ 체크 포인트

  • 해결 방안을 나열할 때는 각 방법의 장단점을 함께 답하기
  • 일반적인 설명보다는 본인이 가장 잘 아는 기술을 기준으로 답하기
 
 
 

Q (4). GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요.

핵심 키워드 : HTTP, header / body

수강생 답변

GET과 POST는 HTTP 프로토콜에서 사용되는 두 가지 기본적인 메서드입니다. 이 두 메서드는 클라이언트(일반적으로 웹 브라우저)와 서버 간의 통신을 관리하며, 데이터의 전송 방식과 의도를 나타냅니다. GET 메서드는 서버로부터 정보를 요청할 때 사용됩니다. URL의 쿼리 파라미터를 통해 데이터를 전송합니다. 브라우저에서 주소 표시줄에 직접 입력되는 URL이나 하이퍼링크를 통해 전송됩니다. 보안적인 이슈로 인해 민감한 데이터를 전송하기에는 적합하지 않습니다. 데이터 길이에 제한이 있으며, 대부분의 브라우저는 URL의 길이에 제한을 둡니다. POST 메서드는 서버로 데이터를 제출하고자 할 때 사용됩니다. HTTP 요청의 본문에 데이터를 포함시켜 전송합니다. 이는 URL에 직접 노출되지 않습니다. 보안적인 측면에서 GET 메서드보다 우수하며, 비밀번호나 개인 정보와 같은 민감한 데이터를 안전하게 전송할 수 있습니다. 데이터 길이에 제한이 없습니다. 데이터 흐름의 경우, GET 메서드에서는 URL에 데이터가 직접 노출되므로 보안적인 문제가 발생할 수 있습니다. 반면 POST 메서드는 데이터가 HTTP 요청의 본문에 포함되어 전송되므로 비교적 안전합니다. 클라이언트가 데이터를 서버로 보내면, 서버는 해당 요청을 처리하고 클라이언트에 응답을 전송합니다. 응답은 보통 HTML 페이지, JSON 데이터 또는 다른 유형의 데이터일 수 있습니다.
 

멘토님 피드백

GET/POST의 정의와 장점, 특징들을 잘 설명하고 있고, 데이터와 관련된 보안적인 부분도 잘 이야기하고 있는 적절한 답변입니다.
 

☑︎ 체크 포인트

  • 데이터 전송 시의 보안적인 측면까지 고려하여 설명한 부분
 
 
 
🌊
스프링(Spring) 기술 면접 질문, 도움이 되셨나요? 기술면접 대비는 현직 개발자의 시선에서 어떤 답변이 좋을 지를 파악할 수 있어서 취업 리부트 코스 수강생들의 만족도가 가장 높은 세션 중 하나 인데요. 앞으로도 React, Spring의 기술면접 Q&A를 꾸준히 발행할 예정이니, 관심이 있다면 항해99 블로그를 구독해주세요.
 
 
 

🚢 개발자 이직 준비, 어떻게 시작해야 할지 모르겠나요? 한 단계 더 도약하는 험난한 항해에서 든든한 메이트가 되어드리겠습니다.

성장의 한계를 느끼고 있는 주니어 개발자들은 항해 플러스 백엔드/프론트엔드 코스와 함께 하시면 됩니다. 기본기 역량 강화부터, 커리어 점프시켜 줄 TDD / 성능최적화, 대용량 트래픽 처리, 장애 대응 프로젝트와 이직 코칭까지 한번에 할 수 있습니다. 성장을 향한 강한 의지만 있다면 항해 플러스 10주 성장 코스로 이직을 도전해보세요.
가파르게 성장하는 AI 산업에서 AI 기술을 실무에 적용할 수 있는 역량을 키우고 싶다면 항해 플러스 AI 코스에 합류하세요. 딥러닝 이론과 자연어 처리, LLM 원리와 활용 및 구현, 클라우드 환경 배포 및 파인 튜닝 그리고 AI 전문가의 이직 코칭과 포트폴리오 코칭까지 항해 플러스 AI 코스에서 한 번에 할 수 있습니다. 갈수록 중요해지는 AI 활용 능력, 항해 플러스 AI 코스로 8주 만에 떠오르는 AI 인재로 도약하세요.
Share article
Subscribe to our newsletter

IT 커리어 성장 코스, 항해