Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Kuma's Curious Paradise

기술면접 질문 답안 모음4 본문

기술면접

기술면접 질문 답안 모음4

쿠마냥 2024. 5. 29. 20:26

23. 즉시로딩과 지연로딩은 각각 언제 사용하면 좋을까요?

즉시 로딩은 연관된 데이터까지 한 번에 모두 로드하는 방식입니다. 지연 로딩은 필요할 때 연관 데이터를 로드하는 방식이고요. 즉시 로딩은 같이 로드하니까, 초기 로딩 시간이 좀 깁니다. 하지만 연관 데이터가 자주 필요하다면, 즉시 로딩을 쓰는 것이 추가 쿼리를 줄일 수 있겠습니다. 한 번에 로드하고 이후 캐시에 저장해서 쓰는 방법도 있겠습니다. 지연 로딩은 실제로 필요한 메모리만 로드하므로 메모리 사용이 최적화됩니다. 

 

24. Spring을 시작하여 컨테이너가 시작되고 이후 Spring 종료까지의 사이클은 어떻게 되나요? @PostConstruct, @PreDestroy 어노테이션의 역할도 함께 설명해 주세요. 

스프링을 실행하면 스프링은 IoC 컨테이너를 생성하고 컨테이너는 @Component나, @Bean이 달린 클래스나 메서드를 찾아서 빈 등록을 하고 필요한 곳에 주입합니다.  이후 @PostConstruct, 즉 컨스트럭트가 된 후에 실행하는 메서드 내용을 실행합니다. 애플리케이션이 종료될 때는 @PreDestroy, 종료 전 수행해야 하는 메서드를 호출한 후 빈을 해제하고 애플리케이션이 종료됩니다. 


25.AOP, Interceptor, Filter 의 역할과 차이점, Request가 들어올때 거치는 순서를 설명해 주세요. 

Filter, Interceptor, AOP는 모두 반복되는 공통 관심사를 처리하기 위해 사용됩니다. 핵심 비즈니스 로직 이외의 것들을 주로 처리하고, FIlter는 Servlet 앞에서 보안이나 인증을, Interceptor는 컨트롤러로 가기 전 로깅이나, 응답 전후처리를, AOP는 메서드 호출 전후나 예외 발생 시에 어떤 작업을 해 주고 싶을 때 사용합니다. 요청을 처리할 때는 Filter, Interceptor, AOP 순서로 처리되고, 응답을 할 때는 반대 순서로 처리됩니다.

 

26. Primary Key, Foreign Key 대해 설명해 주세요.

PK는 데이터 고유 식별자입니다. unique 해야 하고 null일 수 없습니다. fk는 한 테이블에서 다른 테이블의 pk를 참조하는 키를 말하는데요, 예를 들면 order 테이블에서 users 테이블의 pk를 fk로 가지고 있어서, 두 테이블이 연관되게 해 줍니다. 

 

27. HTTP 메서드에 대해 설명해 주세요.

http 요청은 5가지 주요 요청과 4가지 추가 요청이 있습니다. post, get, put delete 각각 crud 구현하며, patch 리소스를 부분 변경하고 싶을 사용합니다. 이외에 head, options, trace, connect 있습니다. head 헤더 정보 확인용, options 서버와 통신이 연결되었는지 확인용, traces 서버로 전송된 메시지를 다시 받아서 확인하고 해당 메시지가 어떻게 처리되는지 확인하는 , connect 서버로 tcp/ip 터널을 설정하는 용도입니다. 

 

28. CORS(Cross Origin Resource Sharing) 대해 설명해주세요.

CORS 다른 출처에서 리소스를 공유하는 것에 관련한 정책입니다. 여기서 출처란, 프로토콜과 호스트, 포트를 모두 합친 URL, 원래 컴퓨터가 통신을 때에는 동일한 출처에서만 리소스를 공유할 있습니다. SOP 정책에 의해서요. 정책이 없으면 해커가 만든 홈페이지에 방문했다가, 나도 모르는 사이에 어느 포털 사이트에 요청을 보내게 있습니다. 하지만 인터넷에서 다른 출처의 리소스를 가져와 사용하는 일은 매우매우 흔한 일이므로, 몇몇 예외를 두어 SOP 정책을 해제시켜 주기로 했는데, 그중 하나가 바로 CORS 정책을 지킨 리소스 요청입니다. 서버에서 ‘access-control-allow-origin’ 헤더에 허용할 출처를 기재해서 클라이언트에 응답하면 클라이언트가 이를 확인하고 접근을 허용하게 만들어 주는 것입니다. 

 

29. http, https 차이점에 대해 설명해 주세요.

HTTP 인터넷에서 데이터를 주고받을 지켜야 하는 통신 규약입니다. post, get, put, delete메서드를 사용하여 리소스 crud 구현합니다. 요청은 독립적이며, 요청을 하면 응답을 주는 구조입니다. http 암호화되지 않은 평문을 주고받기 때문에 중요한 정보가 노출될 위험이 있는데요, 따라서 여기에 암호화 프로토콜인 ssl이나 tls 추가한 것이 https입니다. 

 

30. 트랜잭션이란 무엇이며, 트랜잭션의 ACID 속성이란 무엇인가요?

트랜잭션은 서버와 db 서버가 연결되어 데이터를 주고받는 하나의 작업 단위를 말합니다. 예를 들어, db 서버에서 멤버를 찾고 멤버의 내용을 수정하고 다시 저장하는 과정이 있다면, 하나의 작업 단위를 트랜잭션이라고 부릅니다. 

트랜잭션은 ACID 속성을 가져야 합니다. A 원자성으로, 트랜잭션은 아예 성공하거나 아예 실패해야 한다는 뜻입니다. 중간에 멤버를 찾고 수정하는 도중에 오류가 났다면, 수정한 채로 저장되는 것이 아니라 그냥 아예 롤백을 수행해야 한다는 의미입니다. C 일관성으로, 트랜잭션이 수행되기 전이나 후나 db 지켜야 하는 규칙이 지켜져야 함을 의미합니다. 예를 들어, 송금 트랜잭션이 수행된 후에 잔액이 마이너스가 되면 된다든지하는 규칙을 지켜야 함을 말합니다. I 모든 트랜잭션은 분리되어야 한다이고, D 트랜잭션의 결과는 영구적으로 저장되어야 함을 말합니다. 

 

31. OAuth2.0에 대해 설명해 주세요.

카카오로 1초만에 로그인을 누르면…
클라이언트는 카카오에게 redirect uri와 client id를 보내며 로그인 페이지를 요구한다 -> 카카오 서버는 해당 내용을 확인하고 로그인 페이지를 보내준다 -> 사용자는 로그인 정보를 입력한다 -> 클라이언트는 이 정보를 카카오 서버에 전달하며 code를 보내달라고 한다 -> 카카오는 로그인 정보를 확인하고 코드를 보내준다 -> 이 코드가 있어야 토큰 요청이 가능하다 -> 클라이언트는 백엔드 서버에게 해당 코드를 보내며 카카오 로그인 요청을 보낸다 -> 백엔드 서버는 코드를 들고 가서 토큰을 달라고 요청한다 -> 카카오는 토큰을 발급해 준다 -> 이를 가지고 백엔드 서버는 카카오의 리소스 서버에 사용자의 정보를 달라고 요청한다 -> 리소스 서버는 사용자의 정보를 준다 -> 백엔드 서버는 이를 가지고 사용자의 정보를 구성한다
OAuth2.0은 신뢰 받는 인증 서버에 인증을 위임하는 일을 말합니다. OAuth를 할 경우 사용자는 따로 아이디나 비밀번호를 만들 필요가 없으며 간편하게 로그인할 수 있습니다. 서비스 제공자 측은 신뢰성을 얻을 수 있으며 인증 서버에 사용자 정보도 편리하게 요청할 수 있습니다. 

 

32. HTTP Only, Secure Cookies와 같은 쿠키 보안 옵션에 대해 이야기해 주세요.

HttpOnly 옵션은 http나 https 요청과 응답을 통해서만 쿠키에 접근할 수 있음을 의미합니다. 이러면 클라이언트에서 자바 스크립트로 쿠키에 접근할 수 없습니다. 따라서 xss(Cross-site scripting)으로부터 쿠키가 안전해집니다.
Secure 쿠키는 쿠키가 https 연결을 통해서만 보내지도록 하는 옵션입니다. https는 ssl 혹은 tls 프로토콜로 암호화하여 정보를 전달하기 때문에 쿠키를 탈취하거나 변조하는 것이 어려워집니다. 이렇게 httponly로 클라이언트의 쿠키 접근을 막고 secure cookies로 쿠키를 https로만 전송하면 쿠키 보안을 향상시킬 수 있습니다. 

'기술면접' 카테고리의 다른 글

[cs] MVVM 예시와 함께 이해하기  (1) 2024.09.03
[cs] 노출식 모듈 패턴  (0) 2024.08.06
기술면접 질문 답안 모음3  (0) 2024.05.16
기술면접 질문 답안 모음2  (1) 2024.05.09
기술면접 질문 답안 모음1  (0) 2024.05.06