Java
Managed - Unmanaged 언어의 차이는 무엇이고 어떤 장, 단점이 있나요?
Java 접근 제어자에는 무엇이 있는지 설명해주시고 Protect와 Private는 어느 시점에 어떻게 사용될 수 있는지 이야기 해주세요.
JVM의 메모리 구조에 대해서 설명해 주세요.
JVM은 어떤 방식으로 코드를 해석하고 실행시키는지 흐름에 맞게 설명해 주세요. (Java 실행 흐름)
Garbage Collector은 무엇이고, Parallel GC와 CMS GC, G1 GC의 큰 차이는 무엇인지 설명해주세요. (mark-sweep-compact, concurrency-sweep, garbage-first)
Java 8 버전에 추가된 중요 기능들에 대하여서 설명해주세요.
Java는 Call By Value일까요, Call By Reference 일까요?
Shallow Copy와 Deep Copy의 차이는 무엇인가요? 자바에서 Deep Copy를 하기 위해서는 무엇을 사용하여야 하나요?
Java Reflection이란 무엇이고, 어떨 때 사용되는 것인가요?
Java Instrumentation이란 무엇이고 사용했을 때 어떤 장점이 있을까요?
Java Stream API의 특징은 무엇이 있나요?
Java Lambda는 왜 만들어졌고, 어느 때 주로 사용할까요?
Java의 Functional interface는 무엇인가요?
foreach를 사용할 수 있는 자료구조는 어떤 인터페이스를 상속 받고 있나요?
iterator와 iterable 차이는 무엇인가요?
Fast-fail iterator는 무엇이고 어떤 것을 위해 사용되는 건가요?
자바의 synchronized 키워드에 대해 설명해주시고 Reentrant Lock와의 차이는 무엇인지 말씀해주세요.
Java의 synchronized Lock 범위에 대해서 알려주세요. (Class Lock, Instance Lock)
volatile 키워드에 대해 설명해 주세요.
atomic Type과 CAS는 무엇이고 언제 사용되는 것인가요?
하나의 쓰기 스레드와 여러 읽기 스레드가 존재할 때 사용되어야 하는 Java의 동기화 기능은 무엇이고 어떻게 동작하게 되는지 설명해주세요.
스레드에서 Race condition에 대해서 설명해주세요.
Java final 키워드에 대해서 설명해주세요. 각각의 쓰임에 따라 어떻게 동작하나요? (Class, Variable)
String이 final인 이유는 무엇인가요?
Wrapper Class란 무엇이고 Primitive Type과의 차이는 무엇인가요?
객체 지향의 클래스, 객체, 인스턴스 차이에 대해서 설명해 주세요.
불변 객체는 무엇이고 Java에서 어떻게 구현할까요?
Interface와 Abstract Class의 차이는 무엇인가요?
Interface가 사용되면 좋은 시점은 언제일까요?
Abstract Class가 사용되면 좋은 시점은 언제일까요?
Interface와 Abstract Class를 같이 상속받는 경우에는 왜 그렇게 작성하였을까요?
데이터 직렬화(Serialization)과 역직렬화(Deserialization)에 대해서 설명해 주세요.
Java Serialization은 왜 만들어졌고, 어떤 단점들이 있을까요?
Java Generic에 대해서 설명해 주세요.
Java Generic의 반공변, 공변, 무공변은 무엇인지 설명해주세요.
"재 정의된" equals와 ==의 차이는 무엇인가요?
hashCode의 의미는 무엇인가요?
문자열을 리터럴(string = "abcd")로 할당하는 것과 객체(string = new String("abcd"))로 할당하는 방식의 차이가 무엇인가요?
객체 지향 프로그래밍을 왜 사용한다고 생각하시나요?
Array와 ArrayList의 차이점은 무엇인가요?
LinkedList와 ArrayList의 차이점은 무엇인가요?
Java Compiler는 문자열 연산 최적화를 어떻게 진행하나요? (String Builder, String...)
SringBuilder를 사용하는 것과 String을 사용하여 연산하는 것에서 어떠한 큰 차이가 존재할까요?
Stack을 사용하지 못하는 상황에서 대체할 수 있는 Collection은 무엇이 있을까요?
Vector와 Stack을 사용하지 않는 이유는 무엇인가요?
Lock Stripping은 무엇이고 어떠한 자료구조가 해당 방식을 구현하였나요?
HashMap에 대해서 설명해주시고, Hash Collision 발생 시 자바는 어떻게 대처하나요?
Hash Collision이 많이 발생할 경우 어떤 최적화가 진행될까요?
ConcurrentHashMap은 어떤 방식으로 스레드 동시성을 보장하나요?
CopyOnWriteArrayList은 어떤 방식으로 스레드 동시성을 보장하나요?
Spring
Spring이란 무엇인가요? Spring이 이야기하는 장점에는 무엇들이 있을까요? (EJB와 비교해서 설명하면 좋을듯)
IoC, DI는 무엇이고 어떠한 장점이 있을까요?
Spring IoC Container란 무엇인가요?
Spring, Spring Boot의 차이점에 대해 각각 설명해 주세요.
Spring Boot가 해결하려고 했던 문제는 무엇이고 어떻게 해결하였나요?
Bean이란 무엇인가요?
Bean Scope와 종류에 대해 아는 만큼 설명해주세요.
Configuration은 어떻게 Bean을 등록하고 관리할까요? (Singleton을 지키는 매커니즘은?)
Bean Lite Mode는 무엇인가요?
Spring Bean Life-cycle에 대해서 말해주세요.
@Bean과 @Component은 각각 언제 사용되고 어떤 차이점을 가지나요?
순환 참조는 무엇이고 어떤 상황에서 발생할까요?
Spring으로 개발하실 때 어떠한 DI 방식을 사용하시나요? 사용하는 이유는 무엇이 있는 것일까요?
Field Injection를 왜 사용하면 안된다고 하는 것인가요? 사용할 때 어떠한 단점이 있을까요?
(Field 주입과 대비하여) 생성자 주입은 빈 생성 때 사용되는 리플랙션 외에 추가적인 리플랙션을 진행하나요?
Interceptor와 Filter의 차이점을 말해주세요.
스프링에서 Bean으로 Filter를 구현할 수 있을까요? 혹시나 가능하다면 어떻게 할 수 있을까요?
Message Converter는 어느 시점에 사용되고 어떤 기능을 제공하나요?
Value Object, Data Transfer Object, Data Access Object 대해서 각각 설명해 주세요.
Spring AOP는 어떻게 동작할까요? (프록시는 언제 생성되고 요청은 어떻게 잡아내나요?)
Spring AOP는 CTW, PCW, LTW, RTW 중에 무엇일까요?
Dynamic Proxy의 CTW, BTW, LTW, RTW은 각각 어떤 시점에 개입하는 것일까요?
(Spring AOP와 비교하여) AspectJ의 도입 시점은 어느 시점이 될까요? 본인 만의 생각을 알려주세요.
@Transactional를 스프링 Bean 메서드 A에 적용하였고, 해당 Bean의 메서드 B가 호출되었을 때 메서드 내부에서 메서드 A를 호출하면 어떤 요청 흐름이 발생하게 되나요?
MVC 1, 2 개념에 대해서 설명해 주세요.
Front Controller Pattern은 무엇인가요?
Dispatcher Servlet이란 무엇인가요?
Spring MVC에서 HTTP 요청이 들어왔을 때의 흐름을 설명해 주세요.
A 라는 Service 객체의 메서드가 존재하고 내부에서 로컬 트랜잭션이 3개가 존재한다고 할 때, @Transactional을 A 메서드에 적용하였을 때 어떠한 일이 벌어지고, 어떤 요청 흐름이 발생하게 되나요?
Reflection API는 Runtime에서 코드를 생성하는데 많이 사용됩니다. 이는 Spring에서도 자주 활용되는데요. 스프링 컨테이너는 이런 Reflection으로 생성된 Bean의 정보를 실행 이후에 알고 있네요? 어떻게 알 수 있을까요?
ORM - JPA
ORM Framework가 무엇인지 설명해주세요.
ORM Framework와 Query Mapping Framework의 차이에 대해서 설명해주세요. (JPA vs Mybatis)
ORM Framework가 해결하는 Object–relational impedance mismatch 이 무엇인지 아는 만큼 설명해주세요.
Hibernate가 제공하는 Cache 방식들에 대해서 아는 만큼 설명해주세요.
JPA의 준 영속 상태와 영속 상태에 대해서 설명해주세요.
JPA Persistence Context이 무엇인지 설명해주시고 제공하는 기능에 대해서 설명해주세요.
JPA MappedSuperclass와 Embeddable Annotation의 차이는 무엇이고 각각 언제 사용해야 되는지 설명해주세요.
JPA의 Fatch 전략 대해서 설명해주세요.
JPA의 Bulk Data Operations에 대해서 설명해주세요.
JPA의 Bulk Data Operations을 이용하였을 경우 발생하는 문제에 대해서 아는만큼 설명해주세요.
JPA N+1 문제가 언제 발생하는지 아는 만큼 설명해주세요.
JPA N+1 문제를 해결하는 방법들을 아는 만큼 설명해주세요.
Entity와 Value Object를 구분 지을만한 요소가 무엇이 있을지 말씀해주세요. (무엇이 엔티티로 선언되고, 무엇이 벨류 오브젝트로 선언되는지? 그 구분점은?)
QueryDSL 같은 JPQL Builder를 사용하는 이유를 설명해주세요.
Network, Web
TCP와 UDP의 차이는 무엇인가요?
어느 서비스에서 UDP 기반의 프로토콜을 사용하는 것이 좋을까요?
3 Way Handshake와 4 Way Handshake는 무엇인가요?
3 Way Handshake는 왜 3번 요청을 주고 받는 것인가요?
TCP Flow Control은 무엇을 해결하기 위한 기능의 집합인가요?
Sliding Window 라는 개념에 대해서 알고 계시나요?
TCP Congestion Control은 무엇을 해결하기 위한 기능의 집합인가요?
Buffer와 Stream 방식은 각각 무엇인가요? 실시간으로 처리할 필요가 없는 대량의 데이터에 대해서 어떤 방식을 사용하는 것이 효율적일까요?
HTTP 멱등성에 대해 설명해주세요.
HTTP는 무엇인가요?
HTTP의 버전별 차이를 알려주세요. (0.9 1.0 1.1 2.0)
Time wait Socket은 무엇일까요?
Keep Alive는 무엇일까요?
SYN Flooding 공격에 대해서 아시나요?
Polling, Long Polling, Pulling 기법은 각각 무엇이고 어떠한 Trade Off를 가지고 있나요?
Server Sent Events와 Web Socket 기법은 무엇이고 어떠한 장, 단점을 가지고 있나요?
HTTPS는 무엇인가요?
구현된 HTTP API는 어떠한 요소들을 만족해야 RESTful한 API 라고 부를 수 있나요?
get은 무엇이고 어느 상황에 주로 사용하나요?
put과 patch는 무엇이고 각각 언제 사용되나요?
User라는 리소스가 하위로 item이라는 리소스를 가지고 있습니다. 이를 조회해야할 때 RESTful하게 URL을 설계한다면 어떤 형태의 URL에 GET을 요청하게 되나요?
통신시 사용되는 대표적인 Format으로는 무엇이 있나요?
JSON은 무엇인가요?
Cookie와 Session 방식은 어떠한 차이점을 가지나요?
Local, Global, Distributed Session에 대해서 아는 만큼 설명해주세요.
JWT란 무엇인가요? 왜 사용하게 되는 것인가요?
Servlet Spec은 무엇이고 CGI와 어떠한 차이점을 가지고 있나요?
WAS는 무엇인가요?
gRPC에 대해서 아시나요?
(HTTP API(RESTful)와 비교했을 때)gRPC API는 어떤 이점을 제공하나요?
Etc.
프레임워크와 라이브러리 차이는 무엇인가요?
디자인 패턴이란 무엇인가요?
Monolitc Architecture, Micro Service Architecture에 대해 각각 설명해 주세요.
Thread-safe한 프로그래밍이란 어떤 것인가요?
CAP 이론에 대해서 아시나요?
WEB API의 성능 최적화를 위해서는 어떤 부분들을 고려해야 할까요?
Stateless와 Stateful의 차이점은 무엇인가요?
RDBMS, NoSQL
RDBMS에서 지원하는 Transcation의 ACID에 대해서 아시나요?
인덱스는 왜 사용하는 것인가요?
인덱스는 크게 Hash 인덱스와 B-Tree 인덱스가 있습니다. 어떠한 차이가 있을까요?
B-Tree 인덱스와 B+-Tree 인덱스의 차이는 무엇인가요?
Transcational의 ACID 속성에 대해서 아시나요?
인덱스 Scan 방식은 무엇이 있나요?
클러스터 인덱스와 논클러스터 인덱스는 어떤 차이가 있나요?
인덱스 설계시 NULL값은 고려되야 할까요? 고려해야 한다면 어떤 이유인가요?
좋은 인덱스를 설계하기 위해 고려해야 하는 조건으로는 무엇이 있는지 아시나요?
인덱스 적용이 어려운 요인에는 무엇이 있을까요?
Nested Loop 조인은 무엇일까요?
데이터베이스 레플리케이션이 무엇이고 왜 사용하는지 아시나요?
데이터베이스 레플리케이션의 실행 방식을 설명해주세요. (MySQL 기준)
데이터베이스 레플리케이션시 발생하는 문제점은 무엇이 있을까요?
데이터베이스 정규화와 역정규화는 무엇인가요?
데이터베이스 파티셔닝은 무엇인가요?
데이터베이스 샤딩은 무엇이고 어떤 종류가 있는지 아시는데로 말씀해주세요.
레인지, 모듈러 샤딩 방식은 무엇이고 어느 장, 단점이 존재하나요?
모듈러 샤딩 방식을 확장해야할 때 사용할 수 있는 방법에는 무엇이 있고, 어떤 Trade Off들이 있나요?
인덱스(Index Server) 샤딩 방식에 대해서 아시나요?
2-Phase Commit이 무엇인지 아시나요?
S lock, IS lock, X lock, IX lock에 대해서 아시나요?
Optimistic Lock에 대해서 아시나요?
InnoDB의 Consistent Non-Locking Read 기능이 무엇인지 아시나요?
Gap, Record, Next Key Lock에 대해서 아시나요?
많은 사용자들에게 News feed를 제공하는 서비스가 있고, 주간 인기 Feed를 보여주는 것과 일간 Feed를 보여주는 페이지가 있다고 가정할 많은 량의 읽기 트래픽이 존재한다면 어떻게 대처할 수 있을지 말씀해보세요. (주간 인기 Feed에 대한 대처와 일간 Feed에 대한 대처)
NoSQL과 RDBMS의 차이는 무엇이 있을까요?
(RDBMS와 비교 했을 때) NoSQL가 가지는 장점은 무엇이 있을까요?
NoSQL에서 지원하는 Transcation의 BASE에 대해서 아시나요?
MongoDB의 Compound-key Index란 무엇인가요?
MongoDB의 Compound-key Index 선언 시 효율을 높이기 위해서 포함하는 필드 순서를 어떻게 정의하면 좋을까요?
Write Conflict 발생 시 MongoDB는 어떻게 이를 해결하려고 시도할까요?
readConcern Option은 어떠한 이점을 제공할까요? (read staleness)
readConcern Option의 linerizable과 majority 속성은 어떤 차이가 있나요?
writeConcern Option은 어떠한 이점을 제공할까요?
replicaset을 구성할 때 buildIndexes false로 설정하는 경우는 어떤 것을 위해서 사용하는 것인가요?
MongoDB Cluster의 구성 요소로는 무엇이 있나요?
Journaling은 무엇이고, MongoDB의 Journal은 어떠한 방식으로 구현되어 있나요?
Infra.
On-Premise 환경은 무엇인가요?
On-Premise와 비교하여 Cloud 환경의 장점과 차이는 무엇인가요? 그리고 On-Premise의 단점은 무엇인가요?
VM 환경과 Container 환경의 차이는 무엇인가요? 무슨 장점을 가지나요?
Docker 환경에서 제공되는 Port Forwarding 에 대해서 아시는지, 왜 사용하는지 아시나요?
Docker Network란 무엇인가요?
Docker Image를 통한 배포가 기존 배포 방식(VM 이나 Web Server, CGI process 등으로 제공하는 것)에 비해서 얻는 이점이 무엇인지 설명해주세요.
CIDR을 사용하는 이유에 대해서 아시나요?
AWS VPC가 무엇인지 아시나요?
Public VPC Subnet과 Private VPC Subnet이 무엇인지 설명해주시고 왜 이렇게 구조가 분리 되어야 하는지 설명해주세요.
AWS VPC Peering이 무엇이고 왜 사용하는 것인지 아시나요?
Service Discovery가 무엇인지 아시나요?
Load Blancer가 무엇이고 무슨 역할을 하는지 아시나요?
SPoF(Single Point of Failure) 에 대해서 아시나요?
Active-Stand by 모델이 무엇인지 아시는데로 설명해주세요.
Automatic Leader Election (리더 선출 알고리즘)이 무엇인지 아시나요?
Redis에 대해서 아시는 만큼 설명해주세요.
Redis Persistence의 종류로는 무엇이 있나요?
Redis Sentinel이 무엇인지 아시나요?
Redis Cluster가 무엇인지 아시나요?
Read Cache Pattern에 대해서 아시는 것이 있으신가요?
Write Cache Pattern에 대해서 아시는 것이 있으신가요?
Message Broker가 무엇인지 아시나요?
CDN이 무엇인지 아시나요?