기술 면접 질문
Q.
HTTP 메서드에 대해 설명해주세요.
A.
주요 HTTP 메서드는 다음과 같습니다:
- GET: 서버로부터 리소스를 요청합니다.
- POST: 서버에 데이터를 제출하여 리소스를 생성합니다.
- PUT: 서버의 리소스를 업데이트합니다. 전체 엔티티를 교체합니다.
- PATCH: 리소스의 일부를 업데이트합니다.
- DELETE: 서버의 리소스를 삭제합니다.
그 외의 몇 가지 HTTP 메서드로는:
- HEAD: GET과 유사하지만, 실제 데이터를 요청하지 않고 헤더 정보만 요청합니다.
- OPTIONS: 서버에서 지원되는 메서드들을 확인하기 위해 사용됩니다.
- CONNECT: 프록시를 통해 연결을 설정하기 위해 사용됩니다.
- TRACE: 서버에게 보낸 요청을 다시 돌려받기 위해 사용됩니다.
Q.
CORS(Cross Origin Resource Sharing)에 대해 설명해주세요.
A.
CORS(Cross-Origin Resource Sharing)는 브라우저 보안 메커니즘인 SOP(Same-Origin Policy)를 우회하여 다른 출처(origin) 간에 리소스를 공유할 수 있게 해주는 메커니즘입니다.
SOP는 브라우저가 웹 페이지의 스크립트가 다른 출처의 리소스에 접근하는 것을 방지합니다. 이로 인해 스크립트가 동일 출처에서만 리소스를 요청할 수 있습니다. 그러나 CORS는 서버가 다른 출처로부터의 요청을 승인하는 방법을 제공하여, 특정 출처에서 외부 리소스에 안전하게 접근할 수 있도록 허용합니다.
CORS는 서버가 특정 HTTP 헤더를 포함하여 클라이언트의 브라우저에게 자원 접근을 허용하도록 허가하거나 거부하는 방식으로 동작합니다. 이를 통해 다른 출처 간의 데이터 교환을 안전하게 할 수 있습니다.

프로젝트 진행
댓글 생성
오늘 그리 오래 걸렸던 댓글생성 API를 만들었다.
처음 써보는 @Builder 와 @Mapper를 써보면서 머리가 좀 어지러웠다.. ㅎ
이번에 사용하면서 배운다는 느낌으로 여기에 정리해서 적어보려한다.
@Builder
Builder을 배우기 전에 먼저 빌터 패턴에 대해 알아보아야한다.
빌터 패턴이란?
객체를 정의하고 그 객체를 생성할때 보통 생성자를 통해 생성한다.
하지만 생성자를 통해 객체를 생성하는데 몇가지 단점이있다.
- 생성자를 통한 객체 생성시 단점
- 매개변수의 길이와 복잡성
- 가독성과 유지보수성
- 옵셔널한 매개변수 처리의 어려움
- 객체불변성 유지의 어려움
이 단점을 빌터패턴으로 해결할수있다.
객체의 생성과정의 유연성과 확장성을 제공하며, 객체를 생성하는 방법을 캡슐화 하여 클라이언트 코드가 복잡한 생성로직에 대해 알필요 없이 객체를 생성할수있게 도와준다.
이로인해 코드의 가독성을 향상시키고 유지보수를 용이하게만든다.
Comment.builder()
.content(commentSaveReq.getContent())
.fileUrl(commentSaveReq.getFileUrl())
.user(user)
.build()));
객체를 생성할수있는 빌더를 builder()함수를 통해 얻고 거기에 셋팅하고자 하는 값을 셋팅하고 마지막에 build()를 통해 빌더를 작동시켜 객체를 생성한다.
빌더를 써야하는 이유
생성자를 만들어서 사용할수있는데 빌더를 왜 사용할까??
위에 말했듯이 생성자는 파라미터가 많을경우 가독성이 좋지 않다.
예를들어 comment의 파라미터값이 많아진다면 보기 힘들것이다.
Comment comment = new Comment(content, fileUrl, user, nickname, score, ......)
이를 빌더페턴으로 구현하면 각 값들은 빌더의 값들의 이름 함수로 셋팅이 되어 각각무슨 값을 의미하는지 파악하기 쉽다.
파라미터 값이 많을 경우 빌더를 사용하는것이 생성자보다 가독성이 좋다. 이는 같은 타입의 다른변수의 값을 서로 바꿔넣는것도 방지할수있다.
어떤값을 먼저 설정하던 상관없닫.
생성자의 경우 파라미터 순서대로 값을 넣어 주어야한다. 빌더는 순서를 무시하고 값을 넣을수있다.
자세한 내용은 아래의 블로그를 참고해서 보면될것같다.
빌더 관련 참고
https://pamyferret.tistory.com/67
빌더 패턴(Builder pattern)을 써야하는 이유, @Builder
빌더 패턴(Builder pattern)이란? 객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각한다. Bag bag = new Bag("name", 1000, "memo"); 하지만 생성자를 통해 객체를 생성하는데 몇 가
pamyferret.tistory.com
너무 많은 내용이라 정리하기 쉽지않은것같다 내일 이어서 정리해보겠다.
'내배캠_Spring _3기 > 프로젝트' 카테고리의 다른 글
| [프로젝트] "사뿐" 최종 프로젝트 - 6 (0) | 2024.01.12 |
|---|---|
| [프로젝트] "사뿐" 최종 프로젝트 - 5 (0) | 2024.01.11 |
| [프로젝트] "사뿐" 최종 프로젝트 - 3 (1) | 2024.01.08 |
| [프로젝트] "사뿐" 최종 프로젝트 - 2 (0) | 2024.01.05 |
| [프로젝트] "사뿐" 최종 프로젝트 - 1 (1) | 2024.01.04 |