인터뷰
- 웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일
- TCP와 UDP의 차이점에 대해서 설명해보세요.
- TCP 3, 4 way handshake에 대해서 설명해보세요.
- HTTP와 HTTPS의 차이점에 대해서 설명해보세요.
- GET과 POST의 차이점에 대해서 설명해보세요.
- RESTful이란 무엇이며, 이것에 대해서 아는대로 설명해보세요.(보충필요)
- CORS란 무엇이며 이것에 대해서 설명해보세요.
- OSI7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요.
- 프로세스와 스레드의 차이를 설명해보세요.
- 컨텍스트 스위칭에 대해 설명해보세요.
- 동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요.
- 멀티스레드 프로그래밍에 대해 설명해보세요.
- Thread-safe 하다는 의미와 설계하는 법을 설명해보세요.
- 프로세스 동기화에 대해 설명해보세요.
- 교착상태와 기아상태의 해결방법에 대해 설명해보세요.
- 세마포어와 뮤텍스의 차이에 대해 설명해보세요.
- 가상 메모리에 대해 설명해보세요.
- 캐시의 지역성에 대해 설명해보세요.
- 프로세스 관련 용어를 설명해보세요.
- 데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요.
- 트랜잭션에 대해서 설명해주세요.
- ACID에 대해서 설명해주세요.
- 트랜잭션 격리 수준(Transaction Isolation Levels)에 대해서 설명해주세요.
- 정규화에 대해서 설명해주세요.
- JOIN에 대해서 설명해주세요.
- RDBMS vs NOSQL에 대해서 설명해주세요.
- Redis에 대해서 간단히 설명해주세요.
- Redis와 Memcached의 차이에 대해서 설명해주세요.
- 시간 복잡도를 계산해주세요.
- 배열과 링크드 리스트의 차이를 설명해주세요.
- List와 Set의 차이에 대해서 설명해주세요.
- Hash Function, HashTable에 대해서 설명해주세요.
- Stack, Queue에 대해서 설명해주세요.
- Heap, Priority Queue에 대해서 설명해주세요.
- Tree, Binary Tree, BST, AVL Tree에 대해서 설명해주세요.
- BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요.
- 피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요.
- DFS, BFS에 대해서 설명해주세요.
- 정렬, 탐색에 대해 설명해주세요.
- 비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요.
- 단방향 암호화에 대해서 간단히 설명해주세요.
- JWT에 대해서 간단히 설명해주세요.
- OAuth에 대해서 간단히 설명해주세요.
- JWT와 OAuth의 차이는 무엇이 있을까요?
- SQL Injection에 대해서 간단히 설명해주세요.
- XSS에 대해서 간단히 설명해주세요.
- CSRF에 대해서 간단히 설명해주세요.
- JVM의 구조와 Java의 실행방식을 설명해주세요.
- GC가 무엇인지, 필요한 이유는 무엇인지, 동작방식에 대해 설명해주세요.
- 컬렉션 프레임워크에 대해서 설명해주세요.
- 제네릭에 대해서 설명해주세요.
- 애노테이션에 대해서 설명해주세요.
- 오버라이딩과 오버로딩이 무엇이며 어떤 차이가 있을까요?
- 인터페이스와 추상클래스의 차이점에 대해 설명해주세요.
- 클래스는 무엇이고 객체는 무엇인가요?
- 정적(static)이란 무엇인가요?
- 자바의 원시타입들은 무엇이 있으며 각각 몇 바이트를 차지하나요?
- 접근 제어자의 종류와 이에 대해 설명해주세요.
- 객체지향에 대해서 설명해주세요.
- SOLID(객체지향 5대원칙)에 대해서 설명해주세요.
- 동일성(identity)와 동등성(equality)에 대해 설명해주세요. (equals(), ==)
- 원시타입과 참조타입의 차이에 대해 설명해주세요.
- String, StringBuilder, StringBuffer 각각의 차이에 대해 설명해주세요.
- Checked Exception과 Unchecked Exception에 대해 설명해주세요. 스프링 트랜잭션 추상화에서 rollback 대상은 무엇일까요?
- Java8에서 추가된 기능에 대해서 설명해주세요.
- try-with-resource에 대해서 설명해주세요.
- 강한 결합과 느슨한 결합이 무엇인지 설명해주세요.
- 직렬화와 역직렬화에 대해서 설명해주세요.
- 자바의 동시성 이슈(공유자원 접근)에 대해 설명해주세요.
- Mutable 객체와 Immutable 객체의 차이점에 대해 설명해주세요.
- 자바에서 null을 안전하게 다루는 방법에 대해 설명해주세요.
- Spring DI/IoC는 어떻게 동작하나요?
- Spring Bean이란 무엇인가요?
- 스프링 Bean의 생성 과정을 설명해주세요.
- 스프링 Bean의 Scope에 대해서 설명해주세요.
- IoC 컨테이너의 역할은 무엇이 있을까요?
- DI 종류는 어떤것이 있고, 이들의 차이는 무엇인가요?
- Autowiring 과정에 대해서 설명해주세요.
- Spring Web MVC의 Dispatcher Servlet의 동작 원리에 대해서 간단히 설명해주세요.
- 프론트 컨트롤러 패턴이란 무엇인가요?
- Servlet Filter와 Spring Interceptor의 차이는 무엇인가요?
- Spring에서 CORS 에러를 해결하기 위한 방법을 설명해주세요.
- Bean/Component 어노테이션에 대해서 설명해주시고, 둘의 차이점에 대해 설명해주세요.
- POJO란 무엇인가요? Spring Framework에서 POJO는 무엇이 될 수 있을까요?
- Spring Web MVC에서 요청 마다 Thread가 생성되어 Controller를 통해 요청을 수행할텐데, 어떻게 1개의 Controller만 생성될 수 있을까요?
- Filter는 Servlet의 스펙이고, Interceptor는 Spring MVC의 스펙입니다. Spring Application에서 Filter와 Interceptor를 통해 예외를 처리할 경우 어떻게 해야 할까요?
- Spring Application을 구동할 때 메서드를 실행시키는 방법에 대해 설명해주세요.
- 의존성과 설정값을 생성자 인자로 주입해야 하는 이유에 대해 설명해주세요.
- JPA 영속성 컨텍스트의 이점(5가지)을 설명해주세요.
- JPA Propagation 전파단계를 설명해주세요.
- JPA를 쓴다면 그 이유에 대해서 설명해주세요.
- N + 1 문제가 발생하는 이유와 이를 해결하는 방법을 설명해주세요.
- 대용량 트래픽에서 장애가 발생하면 어떻게 대응할 것인가요?
- 싱글톤 패턴에 대해서 설명해주세요.(생각보다 어려움)
- 가교 패턴(브릿지 패턴)에 대해서 설명해주세요.
- 전략 패턴에 대해서 설명해주세요.
- 빌더 패턴에 대해서 설명해주세요.
- 팩토리 메서드 패턴에 대해서 설명해주세요.
- 퍼사드 패턴에 대한 예를 들어주세요.
- AWS 인프라를 구축해보았다면 설명해주세요.
- 로드 밸런서에 대해서 설명해주세요.
- 리버스 프록시에 대해서 설명해주세요.
- Fault-tolerant(무정지) 시스템으로 가기 위해 필요한 방법에 대한 생각을 말해주세요.
- Docker란 무엇이고 컨테이너 가상화를 왜 사용할까요?
- 컨테이너 환경에서의 디버깅은 어떤식으로 하며 상대적으로 어려운 점은 무엇인가요?
- CI/CD가 무엇인가요? 왜 CI/CD가 장점이 될까요?
- DevOps가 무엇인지 설명해주세요.