반응형
기술 면접 질문
Q.
- NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해 주세요.
A.
- RDBMS는 관계형 데이터베이스로, 구조화된 데이터와 SQL을 활용하며 안정성과 일관성을 제공합니다. 하지만 스케일링이 어렵고 고정된 스키마로 유연성이 제한됩니다.
- NoSQL은 대용량 비구조화된 데이터를 다루며, 확장성이 뛰어나지만 일관성 유지와 복잡한 쿼리 처리에 어려움이 있을 수 있습니다.
Q.
- mvc 패턴에 대해서 설명해 주세요.
A.
- MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 구성됩니다.
- 모델은 데이터 처리를 담당하며, DB와 상호작용하여 비즈니스 로직을 처리합니다.
- 뷰는 사용자에게 결과를 보여주는 역할을 하며, 컨트롤러로부터 모델의 결과를 받아 화면에 표시합니다.
- 컨트롤러는 모델과 뷰를 연결하고 사용자 입력을 처리하여 모델에 명령을 전달하는 중간 역할을 합니다.
프로젝트 기획 수정
기능 추가
지역별 채팅 기능을 추가하기로했다.
그에 따른 와이어 프레임, API 명세표, ERD가 변경되었다.
와이어프레임
ERD
Spotless 적용
- spotless란 Junit5에서 컨벤셔녀을 지키고 쉽게 유지보수하기 위해 사용하는 플러그인이다.
우리 팀은 다음과 같이 설정하기로 했다.
plugins {
id 'com.diffplug.spotless' version '6.11.0'
}
spotless {
java {
// 사용하지 않는 import 제거
removeUnusedImports()
// 구글 자바 포맷 적용
googleJavaFormat()
indentWithTabs(2)
indentWithSpaces(4)
// 공백 제거
trimTrailingWhitespace()
// 끝부분 New Line 처리
endWithNewline()
}
}
// 의존성을 설정해줌 test 끝나고 spotlessjava 수행되도록
tasks.named("spotlessJava").configure { dependsOn("compileTestJava") }
팀원 중 한 분이 알려준 플러그인인데 매우 유용할 것 같다.
사람마다 코드작성하는 스타일이 다를 수 있는데 이 플러그인을 사용하게 되면 다 동일한 스타일의 코드 작성이 되어 다른 팀원의 코드를 해석할 때 좀 더 코드를 읽기 쉽게 해 줄 수 있을 것이다.
유스케이스
- 시스템의 하나 이상의 액터 또는 이해관계자에게 관측 가능한 결과를 산출하는 시스템에 의해 수행되는 일련의 활동의 명세
사뿐 프로젝트의 유스케이스를 진행하였다.
더보기
- 사용자는 메인화면에 접속한다.
- 로그인하지 않아도 조회 가능하다.
- 글을 작성하려고 하는 경우 로그인이 필요하다.
- 사용자는 로고를 클릭해서 메인화면으로 이동할 수 있다.
- 사뿐은 회원가입을 할 수 있다.
- 회원가입을 할 때 아이디, 닉네임, 비밀번호, 비밀번호 확인은 **필수 값**이다.
- 프로필 사진을 입력하지 않으면 기본 프로필 사진으로 자동 등록한다.
- 비밀번호와 비밀번호 확인이 일치해야 한다.
- 회원가입을 할 때 아이디와 닉네임은 고유한 값이다. → 각각 중복확인 필요
- 사뿐은 로그인을 할 수 있다.
- 로그인을 하면 AccessToken과 RefreshToken을 발급받는다.
- 소셜로그인 & 로컬로그인 두 가지 방법이 존재한다.
- 로컬로그인을 할 때 아이디+ 비밀번호 로그인을 할 수 있다.
- 소셜로그인은 KAKAO, google, naver 총 3가지 방법이 있다.
- 로그인 유형은 ENUM으로 LOCAL, KAKAO, GOOGLE, NAVER 로 구분한다. → 역할 맡은 사람 마음대로
- 관리자는 게시글을 관리할 수 있다.
- 관리자는 DB를 통해 저장한다.
- 블라인드 처리된 게시글 목록을 조회할 수 있다.
- 블라인드 처리된 게시글을 삭제하거나 복구할 수 있다.
- 복구하는 경우 신고건수를 0회로 초기화된다.
- 사용자는 로그아웃할 수 있다.
- 로그아웃한 사용자는 블랙리스트 처리한다.
- 사용자는 자신의 프로필을 수정할 수 있다.
- 닉네임을 변경할 수 있다. (중복체크)
- 자신의 프로필 이미지 사진을 변경할 수 있다.
- 입력하지 않은 경우 기본 프로필 사진으로 자동 등록한다.
- 비밀번호를 변경할 수 있다.
- 기존 비밀번호, 변경할 비밀번호, 비밀번호 재입력을 입력한다.
- 기존 비밀번호가 일치하지 않거나 변경할 비밀번호와 재입력한 비밀번호가 일치하지 않으면 변경 불가능하다.
- 사용자는 메인화면에서
- 베스트로 선정된 3개의 산책로 공유글을 볼 수 있다.
- 각 게시글을 클릭해 상세 조회할 수 있다.
- 좌측의 메뉴탭을 통해 지역별 게시글로 이동할 수 있다.
- 우측의 프로필 사진으로 프로필 페이지로 이동할 수 있다.
- 글쓰기 버튼으로 게시글을 작성할 수 있다.
- 로그아웃 버튼으로 로그아웃할 수 있다.
- 사용자는 지역별 페이지에서
- 좌측의 메뉴탭을 통해 다른 지역별 게시글로 이동할 수 있다.
- 해당 지역의 게시글들을 조회할 수 있다.
- 게시글의 제목, 작성자, 지도를 표시한다.
- 정렬 옵션을 지정할 수 있다 : 좋아요순, 최신순, 오래된순
- 페이징 옵션: size = 8
- 신고건수가 3회 이상인 게시글은 블라인드 처리한다.
- 각 게시글을 클릭해 상세 조회할 수 있다.
- 글쓰기 버튼으로 게시글을 작성할 수 있다.
- 추가) 지역별 실시간 채팅방으로 이동할 수 있다
- 사용자는 게시글 작성 페이지에서 게시글을 작성할 수 있다.
- 로그인한 사용자만 작성 가능하다.
- 지역, 제목, 출발지, 목적지, 내용은 필수값이다.
- 경유지(최대 5개), 사진(제한은 추후 설정)을 추가할 수 있다.
- 사용자는 게시글 상세 조회 페이지에서
- 제목, 지도, 이미지 파일, 내용, 댓글 목록을 조회할 수 있다.
- 작성자는 수정, 삭제할 수 있다.
- 관리자는 삭제할 수 있다.
- 사용자는 댓글을 작성할 수 있다.
- 사진 파일을 1장까지 첨부할 수 있다.
- 작성자와 관리자는 댓글을 삭제할 수 있다.
- 사용자는 댓글을 수정할 수 있다.
- 사진 파일이나 내용을 변경할 수 있다.
- 사용자는 게시글을 신고할 수 있다.
- 신고 사유를 작성한다.
- 사용자는 지역별 실시간 채팅방에 참가할 수 있다.
- 특정 기간(미정) 이후에 입력된 채팅 목록을 보여준다.
- 작성자, 내용, 일시를 보여준다.
- 비속어 필터링 기능을 제공한다.
- 비속어를 입력한 경우 *로 변경한다.
<추가구현>
- 실시간 채팅
- 친구 추가를 하기(DM)
- 산책로 게시글에서 작성자와 채팅창으로
- 지역별 실시간 채팅 → 알림 x
- 게시글 - 하이퍼링크, 음악(멜론 api) 등…
- 사용자 등급
- 사용자 필드로 ‘점수’ 추가
- 프로필 조회 시 점수에 따른 등급 표시
- 점수 증가 상황
- 게시글 작성한 경우
- 사용자의 게시글의 좋아요가 등록된 경우
- 당한 신고가 취소된 경우
- 점수 감소 상황
- 게시글 삭제한 경우
- 사용자의 게시글의 좋아요가 취소된 경우
- 신고를 당한 경우
- 허위 신고를 한 경우
유스케이스를 작성하면서 사뿐 프로젝트의 기능적 정의? 가 머리에 잡히게 되었다.
팀원들과의 소통을 하면서 작성하다 보니 이해가 안 되던 부분도 소통을 통해 이해가 되어가면서 팀원 모두가 서비스에 대한 기능적 요소들을 파악할 수 있었던 것 같다.
매번 프로젝트 시작전 유스케이스 하는 습관을 들여야할것같다.
반응형
'내배캠_Spring _3기 > 프로젝트' 카테고리의 다른 글
[프로젝트] "사뿐" 최종 프로젝트 - 4 (0) | 2024.01.09 |
---|---|
[프로젝트] "사뿐" 최종 프로젝트 - 3 (1) | 2024.01.08 |
[프로젝트] "사뿐" 최종 프로젝트 - 1 (1) | 2024.01.04 |
[프로젝트] Trello 협업 툴 만들기 - 4 (1) | 2024.01.03 |
[프로젝트] Trello 협업 툴 만들기 - 3 (0) | 2023.12.28 |