기술 면접 질문
Q.
브라우저의 작동방식에 대해서 설명해주세요.
A.
- URL 해석: 사용자가 주소를 입력하면 브라우저는 해당 URL을 해석하고 프로토콜(HTTP, HTTPS 등), 호스트명, 포트번호, 경로 등을 분석합니다.
- 서버 연결: 브라우저는 DNS를 사용하여 호스트명을 IP 주소로 변환하고, TCP/IP를 통해 서버에 연결합니다.
- 요청과 응답: 브라우저는 HTTP 요청 메시지를 서버로 전송하고, 서버는 요청을 받아서 처리한 후 HTTP 응답을 보냅니다.
- HTML 해석: 브라우저는 받은 응답을 받아서 HTML, CSS, JavaScript 등의 리소스를 파싱하고 렌더링합니다. HTML 문서는 DOM(Document Object Model)으로 파싱되고, CSS는 CSSOM(CSS Object Model)으로 파싱됩니다.
- 렌더링 트리 구축: DOM과 CSSOM은 렌더링 트리로 결합되어 브라우저에 실제로 표시되는 요소들로 구성됩니다.
- 렌더링: 브라우저는 렌더링 트리를 기반으로 화면에 내용을 표시합니다. 이때 HTML 요소의 배치, 스타일, 크기, 위치 등을 고려하여 화면에 표시됩니다.
- 상호작용 및 이벤트 처리: 사용자와 상호작용이 있을 때, JavaScript와 같은 스크립트는 이벤트를 감지하고 처리하여 새로운 내용을 렌더링하거나 다른 동작을 수행합니다.
- 페이지 로드 완료: 모든 리소스가 로드되고 렌더링이 완료되면 페이지 로드가 완료되었다는 신호를 받고, 사용자에게 완전한 웹페이지를 제공합니다.
이러한 단계를 거치면서 브라우저는 사용자가 요청한 웹페이지를 표시하게 됩니다.
Q.
쿠키, 세션의 개념과 차이를 설명해보세요
A.
쿠키와 세션은 웹 개발에서 사용되는 상태 유지 기술입니다. 기본적으로 HTTP 프로토콜은 무상태(stateless)입니다. 이것은 각 HTTP 요청이 서로 별개로 처리되어 상태 정보를 유지하지 않는다는 것을 의미합니다.
쿠키는 클라이언트 측에 저장되는 작은 데이터 조각으로, 클라이언트 브라우저에 의해 관리됩니다. 서버는 HTTP 응답 헤더를 통해 클라이언트에 쿠키를 설정할 수 있고, 그 후 클라이언트는 요청할 때마다 해당 쿠키를 함께 보냅니다. 주로 로그인 정보 유지, 사용자 환경 설정 등에 활용됩니다.
세션은 서버 측에 데이터를 저장하며, 클라이언트는 세션 식별자를 쿠키로 받아옵니다. 서버는 클라이언트의 세션 식별자를 사용하여 세션에 저장된 데이터에 액세스합니다. 사용자가 웹 애플리케이션에 접속할 때마다 새로운 세션을 생성하거나 기존 세션을 사용하여 상태를 유지합니다.
이 두 기술은 무상태 프로토콜인 HTTP에서 상태를 유지하기 위한 방법으로 발전했습니다. 쿠키는 클라이언트 측에서 정보를 유지하고, 세션은 서버 측에서 정보를 유지합니다. 주로 세션은 중요한 정보나 보안이 필요한 정보를 저장할 때 사용되며, 쿠키는 클라이언트 측에서 사용자 환경 설정 등을 저장하는 데 사용됩니다.
프로젝트 진행
@Mapper
이번 프로젝트에서 service 클래스에 @Mapper를 사용하기로했다.
사용하면 뭐가 좋은지 몰라 찾아보았다.
- 분리된 역할: 서비스 클래스가 비즈니스 로직을 다루고, 데이터 액세스 계층은 데이터베이스와의 상호작용을 처리하는데 집중합니다. Mapper를 사용하면 데이터 액세스 계층의 기능을 서비스 클래스에서 호출하여 데이터 변환 및 데이터베이스와의 상호작용을 단순화할 수 있습니다.
- 추상화와 유연성: Mapper를 사용하면 서비스 클래스는 데이터 액세스의 세부 구현을 알 필요가 없으며, 데이터베이스 스키마의 변경이나 데이터 엑세스 계층의 변경에 유연하게 대처할 수 있습니다. 이는 코드의 유지보수성과 확장성을 향상시킵니다.
- 객체 매핑과 변환: Mapper를 사용하여 데이터베이스에서 가져온 엔티티 객체를 서비스 계층에서 사용하는 DTO(Data Transfer Object)로 변환할 수 있습니다. 이는 데이터의 형태를 서비스 레이어에서 적합한 형태로 맞춰주는 역할을 수행하며, 객체 간의 매핑 작업을 편리하게 처리할 수 있습니다.
- 테스트 용이성: 서비스 클래스에서 Mapper를 사용하면 데이터 액세스 계층의 실제 구현을 Mock 또는 가짜 객체로 대체하여 테스트를 수행하기 용이합니다. 이는 단위 테스트 또는 통합 테스트를 수행할 때 도움이 됩니다.
- 개발 생산성 향상: Mapper를 사용하면 반복적인 매핑 작업을 자동화하여 개발 시간을 단축시킬 수 있습니다. 매퍼를 활용하면 개발자가 직접 객체 간의 매핑 로직을 작성하지 않아도 되므로 코드 작성에 대한 부담을 줄일 수 있습니다.
요약하자면, 서비스 클래스에서 Mapper를 사용하는 것은 데이터 액세스와 객체 간의 분리된 역할을 유지하면서 코드의 유연성, 유지보수성 및 테스트 용이성을 높이기 위한 것입니다.
'내배캠_Spring _3기 > 프로젝트' 카테고리의 다른 글
[프로젝트] "사뿐" 최종 프로젝트 - 6 (0) | 2024.01.12 |
---|---|
[프로젝트] "사뿐" 최종 프로젝트 - 4 (0) | 2024.01.09 |
[프로젝트] "사뿐" 최종 프로젝트 - 3 (1) | 2024.01.08 |
[프로젝트] "사뿐" 최종 프로젝트 - 2 (0) | 2024.01.05 |
[프로젝트] "사뿐" 최종 프로젝트 - 1 (1) | 2024.01.04 |