면접 상황 준비 프로젝트 면상 프로젝트
1. 서비스 소개 및 주제 배경
프로젝트 개요
면상 프로젝트는 면접 상황 준비를 위한 AI 기반 질문 생성 및 답변 관리 시스템입니다. 팀원들과 함께 면접 준비 과정에서 겪는 문제점들을 해결하기 위해 이 서비스를 기획하였고, 저는 질문 추가,조회 (AI제외) 기능을 담당하였습니다.
면상 프로젝트의 필요성
면접 준비의 어려움: 많은 취업 준비생들이 면접 질문을 준비하는 과정에서 다양한 질문 유형을 접해보지 못해 실제 면접에서 당황하는 경우가 많습니다.
2. 기능 정의 및 본인이 맡은 역할
핵심 기능 요약
1.
커스텀 질문 생성: 사용자가 직접 면접 질문을 작성하여 저장
2.
질문 목록 조회: 저장된 모든 질문을 조회하여 면접 준비에 활용
본인이 맡은 역할 상세
저는 질문 관리 기능을 담당하였고, 다음과 같은 기술 스택을 사용하여 구현하였습니다:
•
Spring Boot: RESTful API 구현
•
Spring Data JPA: 데이터베이스 연동 및 CRUD 작업
•
H2 Database: 데이터베이스 사용
•
Lombok: 코드 최적화
구현한 클래스들
•
QuestionController: REST API 엔드포인트 제공
•
QuestionService: 비즈니스 로직 처리
•
QuestionEntity: JPA 엔티티
•
QuestionRepository: 데이터 접근 계층
•
QuestionRequest/QuestionResponse: DTO 클래스들
3. API 명세
3.1 커스텀 질문 생성 API
URL: /question
Method: POST
Request Body:
{
"question": "자신의 강점과 약점에 대해 설명해주세요."
}
JSON
복사
Response Body:
{
"id": 1,
"question": "자신의 강점과 약점에 대해 설명해주세요."
}
JSON
복사
3.2 질문 목록 조회 API
URL: /questions
Method: GET
Request Body: 없음
Response Body:
[
{
"id": 1,
"question": "자신의 강점과 약점에 대해 설명해주세요."
},
{
"id": 2,
"question": "최근 관심 있는 기술 트렌드에 대해 설명해주세요."
}
]
JSON
복사
4. API 테스트 결과
4.1 실제 API 테스트 결과 (curl 명령어 사용)
테스트 1: 커스텀 질문 생성
응답 결과:
{
"id":4,
"question":"프로젝트에서 가장 어려웠던 부분은 무엇인가요?"
}
JSON
복사
테스트 2: 질문 목록 조회
응답 결과:
[
{
"id": 1,
"question": "프로젝트에서 가장 어려웠던 부분은 무엇인가요?"
},
{
"id": 2,
"question": "지금까지 겪었던 가장 큰 실패는 무엇이며, 그 경험을 통해 무엇을 배웠습니까?\n"
},
{
"id": 3,
"question": "string"
},
{
"id": 4,
"question": "프로젝트에서 가장 어려웠던 부분은 무엇인가요?"
},
{
"id": 5,
"question": "지금까지 겪었던 가장 큰 실패와 그 경험을 통해 무엇을 배웠는지 말씀해주세요.\n"
}
]
JSON
복사
5. 느낀 점 및 후기
5.1 프로젝트를 통해 배운 점
1.
Spring Boot와 JPA의 활용
•
Spring Boot의 많은 기능들을 통해 빠르게 개발이 가능할수 있었다.
•
JPA를 사용하여 데이터베이스 작업을 쿼리문 없이 빠르게 처리할 수 있었다.
2.
RESTful API 설계
•
HTTP 메서드의 적절한 사용 (GET, POST)
•
응답 형식 설계의 중요성
5.2 트러블 슈팅 (중간에 겪은 오류 및 해결 방법)
1.
H2 데이터베이스 설정
•
문제: 초기 설정에서 데이터베이스 연결 오류가 발생하였습니다.
•
해결: application.yml에서 H2 설정을 올바르게 구성 하여 해결 하였습니다.
5.3 아쉬운 점
1.
에러 핸들링: 현재는 기본적인 에러 처리만 되어 있어, 더 세밀한 예외 처리가 필요한 것 같다.
2.
검증 로직: 입력 데이터에 대한 검증 로직이 부족하여 예외가 발생 할 수 있을것 같다
3.
테스트 코드: 실제 협업에서는 테스트코드를 많이 쓰는데 해당 프로젝트 에서는 테스트코드를 만들지 않았음
5.4 다음에 개선하고 싶은 점
1.
기능 확장
•
질문 카테고리별 분류 기능
•
질문 난이도 설정 기능
2.
보안 강화
•
입력 데이터 검증
•
Spring Security로 API 인증 및 권한 관리
3.
상세한 테스트
•
단위 테스트 및 통합 테스트 코드를 작성
5.5 전체적인 후기
이 프로젝트를 통해 Spring Boot 기반의 웹 애플리케이션 개발 과정을 체험할 수 있었습니다. 그리고 RESTful API 설계의 중요성도 깨달을 수 있었습니다. 또한 해당 프로젝트는 수행평가로 팀프로젝트로 진행하였는데, 각자의 역할을 명확히 분담하여 효율적으로 개발할 수 있었습니다.