자바 수행평가

면접 상황 준비 프로젝트 면상 프로젝트

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 설계의 중요성도 깨달을 수 있었습니다. 또한 해당 프로젝트는 수행평가로 팀프로젝트로 진행하였는데, 각자의 역할을 명확히 분담하여 효율적으로 개발할 수 있었습니다.