[Interview] 면접 공부
면접 공부
1. Java
HashMap & TreeMap
primitive & reference / Boxing & Unboxing / Wrapper 끼리 비교
[Java] Primitive & Reference & Boxing & Unboxing
JVM 메모리 & 자바 변수 Scope 3가지 종류 - 저장되는 JVM 메모리 영역 (Local, Instance, Class)
Generic
GC
Java 6-8-11 차이.
JSR 310?.
문자열
Immutable Object - Java class 중 대표적인 사례
- Collections.unmodifeable
String vs StringBuffer
- immutable object?
sychronized?
java.util.concurrent.ConcurrentHashMap
- 외부에서 동시성을 확보하는 것보다 성능 상 이점 있는 이유
- [Java] java.util.concurrent
java.util.concurrent.AtomicInteger vs Integer
ConcurrentHashMap vs AtomicInteger 방식 차이점
Heap Dump, Thread Dump
jar vs war
- jar : java 명령어를 통한 실행 가능
- 자바 명령어로 -jar 패키징 이름 입력 시 스프링 부트 안에 내장 톰캣 서버가 작동하면서 스프링 부트 기동
- 자바 파일의 컴포넌트 : 컴포넌트는 배포 단위다. 컴포넌트는 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위*(클린 아키텍처 12장 컴포넌트)
- war
- web.xml 등 애플리케이션 구조가 web으로 바뀌게 됨. 내장 톰캣을 가지지 않은 상태이기 때문에 외부 톰캣 등 WAS를 사용해 배포하는 방식
- 여러 컴포넌트를 묶어 단일 아카이브로 생성한 것
2. HTTP
POST & PUT 동일 요청 반복 경우 어떠한 결과가 나오는가
Redirection
HTTP - HTTPS 차이.
http 1.0 / 1.1 / 2.0 차이점
- HTTP/1.0
- 상태코드가 응답값 시작 부분에 포함됨
- HTTP 헤더 도입 : 메타데이터 전송을 허용하고 프로토콜을 극도로 유연하고 확장 가능하도록 만듦
- Content-Type 도입으로 HTML 이외의 다른 문서들도 전송 가능
- POST, HEAD 메서드 추가
- HTTP/1.1 - 표준 프로토콜
- Connection : Keep-Alive 추가
- 커넥션이 재사용될 수 있게 하여, 탐색된 단일 원본 문서 내로 임베드된 리소스들을 디스플레이하기 위해 사용된 커넥션을 다시 열어 시간을 절약하게 함
- 파이프라이닝
- 첫번째 요청에 대한 응답이 완전히 전송되기 이전에 두번째 요청 전송을 가능케 하여, 커뮤니케이션 레이턴시를 낮춤
- HOST 헤더
- 동일 IP 주소에 다른 도메인을 호스트하는 기능이 서버 코로케이션을 가능케 함
- Connection : Keep-Alive 추가
- HTTP/2.0
- 텍스트 프로토콜 ❌, 이진 프로토콜 ⭕️
병렬 요청
이 동일한 커넥션 상에서 다루어질 수 있는 다중화 프로토콜- 요청 및 응답 다중화 : 스트림 도입으로 한 번의 커넥션으로 동시에 여러 개의 데이터를 주고 받을 수 있음.
- https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP#http2%E2%80%93%EB%8D%94%EB%82%98%EC%9D%80%EC%84%B1%EB%8A%A5%EC%9D%84%EC%9C%84%ED%95%9C%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C
3. 네트워크
Load-Balancer
TCP vs UDP
4. 데이터베이스
Sharding & Replication
[Database] Sharding & Replication & Clustering
PreparedStatement & Statement
[Java] Statement & PreparedStatement
복합키
정규화/비정규화
DISTINCT 와 GROUP BY의 차이
- http://intomysql.blogspot.com/2011/01/distinct-group-by.html
- https://stackoverflow.com/questions/164319/is-there-any-difference-between-group-by-and-distinct#comment80633329_45833583
5. 스프링
커넥션 풀
@Transactional
빈 스코프
Filter, Interceptor, Spring AOP
SpringBoot Autoconfiguration 작동방식.
Filter / Interceptor 작동 순서
6. JPA
OSIV(Open Session In View)
7. 디자인 패턴
전략패턴
옵저버 패턴
상태패턴 vs 전략패턴
- 상태 패턴 : 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다.
- 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임하기 때문에, 내부 상태가 바뀜에 따라서 행동이 달라지게 된다.
- 전략 패턴 : 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록만든다.
- 차이점
- 스테이트 패턴을 사용할 때는 상태 객체에 일련의 행동이 캡슐화된다. 상황에 따라 Context 객체에서 여러 상태 객체 중 한 객체에게 모든 행동을 맡기게 된다. 그 객체의 내부 상태에 따라 현재 상태를 나타내는 객체가 바뀌게 되고, 그 결과로 컨텍스트 객체의 행동도 자연스럽게 바뀌게 된다.
클라이언트는 상태 객체에 대해서 거의 아무것도 몰라도 된다.
수많은 조건문을 집어넣는 대신
에 사용할 수 있는 패턴- 행동을 상태 객체 내에 캡슐화시키면 컨텍스트 내의 상태 객체를 바꾸는 것만으로도 컨텍스트 객체의 행동을 바꿀 수 있음.
- Context 객체를 생성할 때 초기 상태를 지정해 주는 경우가 있지만, 그 후로는 그 Context 객체가 알아서 자기 상태를 변경.
- 스트래티지 패턴을 사용할 때는 일반적으로 클라이언트에서 컨텍스트 객체한테 어떤 전략 객체를 사용할지를 지정해 준다. 주로 실행시에 전략 객체를 변경할 수 있는 유연성을 제공하기 위한 용도로 쓰임.
서브클래스를 만드는 방법을 대신
해 유연성을 극대화하기 위한 용도로 사용됨- 구성을 통해 행동을 정의하는 객체를 유연하게 바꿀 수 있음
- 어떤 클래스의 인스턴스를 만들고 그 인스턴스에게 어떤 행동을 구현하는 전략 객체를 건네 줌
- 클래스 다이어그램은 동일하나, 용도 차이
- 스테이트 패턴을 사용할 때는 상태 객체에 일련의 행동이 캡슐화된다. 상황에 따라 Context 객체에서 여러 상태 객체 중 한 객체에게 모든 행동을 맡기게 된다. 그 객체의 내부 상태에 따라 현재 상태를 나타내는 객체가 바뀌게 되고, 그 결과로 컨텍스트 객체의 행동도 자연스럽게 바뀌게 된다.