면접 대비 질문리스트
여기에 있는 리스트 들은 CS기본지식 혹은 개발자 기본지식 으로써
누군가에게 설명할 수 있을 정도의 레벨로 익혀두는것이 좋다.
훗날 부끄러운 시니어가 되고싶지 않다면 말이다.
아래의 내용들이 꼭 이직이나 면접이 아니라,
내 자신 스스로에게 물어보고 답해보고, 부족하다면 학습하자 !!
네트워크
웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일
TCP와 UDP의 차이점에 대해서 설명해보세요.
TCP 3, 4 way handshake에 대해서 설명해보세요.
HTTP와 HTTPS의 차이점에 대해서 설명해보세요.
HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명해보세요.
GET과 POST의 차이점에 대해서 설명해보세요.
HTTP 메서드와 이것이 하는 역할에 대해서 설 명해보세요.
RESTful이란 무엇이며, 이것에 대해서 아는대로 설명해보세요.(보충필요)
CORS란 무엇이며 이것에 대해서 설명해보세요.
OSI7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요.
운영체제
프로세스와 스레드의 차이를 설명해보세요.
컨텍스트 스위칭에 대해 설명해보세요.
동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요.
멀티스레드 프로그래밍에 대해 설명해보세요.
Thread-safe 하다는 의미와 설계하는 법을 설명해보세요.
프로세스 동기화에 대해 설명해보세요.
교착상태와 기아상태의 해결방법에 대해 설명해보세요.
세마포어와 뮤텍스의 차이에 대해 설명해보세요.
가상 메모리에 대해 설명해보세요.
캐시의 지역성에 대해 설명해보세요.
프로세스 관련 용어를 설명해보세요. (알아만 둡시다.)
데이터베이스
데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요.
트랜잭션에 대해서 설명해주세요.
ACID에 대해서 설명해주세요.
트랜잭션 격리 수준(Transaction Isolation Levels)에 대해서 설명해주세요.
정규화에 대해서 설명해주세요.
JOIN에 대해서 설명해주세요.
RDBMS vs NOSQL에 대해서 설명해주세요.
Redis에 대해서 간단히 설명해주세요.
Redis와 Memcached의 차이에 대해서 설명해주세요.
Elastic Search에 대해서 간단히 설명해주세요.
Elastic Search의 인덱스구조와 RDBMS의 인덱스 구조의 차이에 대해 설명해주세요.
Elastic Search의 키워드 검색과 RDBMS의 LIKE 검색의 차이에 대해 설명해주세요.
MongoDB에 대해서 간단히 설명해주세요.
CAP 이론과, Eventual Consistency에 대해서 설명해주세요.
자료구조/알고리즘
시간 복잡도를 계산해주세요.
배열과 링크드 리스트의 차이를 설명해주세요.
Hash Function, HashTable에 대해서 설명해주세요.
Stack, Queue에 대해서 설명해주세요.
Heap, Priority Queue에 대해서 설명해주세요.
Tree, Binary Tree, BST, AVL Tree에 대해서 설명해주세요.
BST의 최악의 경우의 예와 시간복잡도에 대해서 설명해주세요.
피보나치 수열을 코드로 구현하는 방법에 대해서 설명해주세요.
DFS, BFS에 대해서 설명해주세요.
정렬, 탐색에 대해 설명해주세요.
암호학/보안(간단한 정도)
비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요.
단방향 암호화에 대해서 간단히 설명해주세요.
JWT에 대해서 간단히 설명해주세요.
OAuth에 대해서 간단히 설명해주세요.
SQL Injection에 대해서 간단히 설명해주세요.
XSS에 대해서 간단히 설명해주세요.
CSRF에 대해서 간단히 설명해주세요.
Java
JVM의 구조와 Java의 실행방식을 설명해주세요.
GC가 무엇인지, 필요한 이유는 무엇인지, 동작방식에 대해 설명해주세요.
컬렉션 프레임워크에 대해서 설명해주세요.
제네릭에 대해서 설명해주세요.
애노테이션에 대해서 설명해주세요.
오버라이딩과 오버로딩이 무엇이며 어떤 차이가 있을까요?
인터페이스와 추상클래스의 차이점에 대해 설명해주세요.
클래스는 무엇이고 객체는 무엇인가요?
자바의 원시타입들은 무엇이 있으며 각각 몇 바이트를 차지하나요?
접근 제어자의 종류와 이에 대해 설명해주세요.
객체지향에 대해서 설명해주세요.
SOLID(객체지향 5대원칙)에 대해서 설명해주세요.
동일성(identity)와 동등성(equality)에 대해 설명해주세요. (equals(), ==)
원시타입과 참조타입의 차이에 대해 설명해주세요.
String, StringBuilder, StringBuffer 각각의 차이에 대해 설명해주세요.
Checked Exception과 Unchecked Exception에 대해 설명해주세요. JPA에서 rollback 대상은 무엇일까요?
Java8에서 추가된 Feature에 대해서 설명해주세요.
try-with-resource에 대해서 설명해주세요.
강결합과 느슨한 결합이 무엇인지 설명해주세요.
직렬화와 역직렬화에 대해서 설명해주세요.
자바의 동시성 이슈(공유자원 접근)에 대해 설명해주세요.
Mutable 객체와 Immutable 객체의 차이점에 대해 설명해주세요.
Spring
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만 생성될 수 있을까요?
JPA
JPA 영속성 컨텍스트의 이점(5가지)을 설명해주세요.
JPA를 쓴다면 그 이유에 대해서 설명해주세요.
N + 1 문제가 발생하는 이유와 이를 해결하는 방법을 설명해주세요.
기타
디자인 패턴
싱글톤 패턴에 대해서 설명해주세요.(생각보다 어려움)
빌더 패턴에 대해서 설명해주세요.
팩토리 메서드 패턴에 대해서 설명해주세요.
퍼사드 패턴에 대한 예를 들어주세요.
테스트
테스트 코드에 대해서 어떻게 생각하고, 작성하나요?
TDD를 알고 있나요? TDD에 대해서 어떻게 생각하나요?
테스트 커버리지에 대해서 어떻게 생각하나요?
인프라/클라우드
AWS 인프라를 구축해보았다면 설명해주세요.
로드 밸런서에 대해서 설명해주세요.
리버스 프록시에 대해서 설명해주세요.