Skip to content

Invincible-Backend-Study/backend-interview-question

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 

Repository files navigation

목차


Java

Java의 equals() hashcode() 에 대해서 설명해주세요

자바의 오버로딩과 오버라이딩의 차이점을 설명해주세요.

Override 애노테이션을 사용할 때 주의해야 하는 점이 있을까요? 혹은 @Override 애노테이션을 사용하지 않았을 때 발생할 수 있는 문제는 무엇인가요?

String constant pool과 Runtime Constant pool, Class file constant pool의 차이점


JPA

JPA의 장점을 말씀해주세요

LazyLoading은 어떻게 구현되어있나요?

Spring에서 Transactional 어노테이션이 어떻게 동작하나요


Spring

Spring에서 빈은 무조건 싱글톤으로만 관리되나요?

Spring에서 객체지향이 어떻게 활용되었나요?


운영체제


💻 Topic: 프로세스와 스레드의 차이점

운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요.

시분할 시스템에 대해서 설명해주세요.

다중 프로그래밍 시스템(multi-programming system)에 대해서 설명해주세요.

시스템 콜에 대해 설명해주세요.

커널모드에 대해 설명해주세요.

유저모드에 대해 설명해주세요.

폴링에 대해 설명해주세요.

인터럽트에 대해 설명해주세요.

DMA에 대해 설명해주세요.

동기식 I/O에 대해 설명해주세요.

비동기식 I/O에 대해 설명해주세요.


😀 프로세스와 쓰레드

프로그램에 대해 설명해주세요.

프로세스에 대해 설명해주세요.

프로세스 문맥에 대해 설명해주세요.

문맥교환(context switch)에 대해 설명해주세요.

문맥교환은 언제 발생하나요?

문맥 교환 발생 과정에 대해서 조금 더 상세히 설명해주세요.

프로세스의 메모리 공간에 대해 설명해주세요.

프로세스 제어블록(PCB)에 대해 설명해주세요.

PCB에는 어떤 정보가 담겨있을까요?

멀티 프로세스에 대해서 설명해주세요.

프로세스 수행 상태 변화 과정에 대해 설명해주세요.

프로세스끼리 협력하는 방법에 대해서 설명해주세요.

fork() 명령어에 대해 설명해주세요.

쓰레드에 대해 설명해주세요.

쓰레드의 메모리 공간에 대해 설명해주세요.

쓰레드 제어블록(TCB)에 대해 설명해주세요.

사용자 수준 쓰레드와 커널 수준 쓰레드의 차이를 설명해 보세요.

멀티 쓰레딩 프로그래밍 대해서 설명해주세요.

멀티 쓰레드 프로그래밍의 장단점을 설명해 주세요.

멀티 프로세스대신 멀티 쓰레드를 사용하는 이유가 뭔가요?

멀티 쓰레드 프로그래밍에서 주의할 점이 있을까요?

Thread-Safe하다는 의미와 그렇게 설계하는 방법을 설명해 주세요.


⏰ CPU 스케줄링

기아 상태가 무엇인가요?

기아 상태를 어떻게 해결할 수 있나요?

CPU 스케줄링에 대해 알려주세요.

스케줄러의 종류에는 무엇이 있나요?

선점형 스케줄링과 비선점 스케줄링의 차이가 무엇인가요?

선입선출 스케줄링(FCFS)에 대해 설명해주세요.

최단 작업 우선 스케줄링(SJF)에 대해 설명해주세요.

최소 잔류 시간 우선 스케줄링(SRTF) 방식에 대해 설명해주세요.

우선순위 스케줄링에 대해 설명해주세요.

라운드 로빈 스케줄링에 대해 설명해주세요.

멀티 레벨 큐 스케줄링에 대해 설명해주세요.

멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.


📌 프로세스 동기화

병행성(동시성)에 대해 설명해주세요.

병렬성에 대해 설명해주세요.

프로세스 동기화에 대해 설명해주세요.

Critical Section에 대해 설명해주세요.

Race Condition이 무엇인가요?

Race Condition을 어떻게 해결할 수 있나요?

Mutual Exclusion에 대해 설명해주세요.

Mutual Exclusion을 할 수 있는 방법은 무엇이 있나요?

뮤텍스(Mutex)에 대해 설명해주세요.

세마포어에 대해 설명해주세요.

뮤텍스(Mutex)와 이진 세마포어의 차이에 대해 설명해주세요.

모니터에 대해 설명해주세요.

데드락이 무엇인가요?

데드락 발생 조건 4가지를 설명해주세요.

데드락을 막는 방법에 대해 설명해주세요.


💿 가상 메모리

절대 주소 지정과 상대주소 지정의 차이점은 뭘까요?

메모리 분할에 대해 설명해주세요.

메모리 배치 기법(메모리 관리 전략)에 대해 설명해주세요.

외부 단편화와 내부 단편화의 차이가 무엇인가요?

메모리 배치 기법중 하나인 colaescing(통합)에 대해 설명해주세요.

메모리 배치 기법중 하나인 compaction(압축)에 대해 설명해주세요.

메모리 배치 기법중 하나인 버디 시스템에 대해 설명해주세요.

메모리 배치 기법중 하나인 페이징에 대해 설명해주세요.

메모리 배치 기법중 하나인 세그멘테이션에 대해 설명해주세요.

가상 메모리에 대해 설명해주세요.

가상 주소와 물리 주소(실주소)에 대해 설명해주세요.

가상 주소를 물리 주소(실주소)로 어떻게 변환할까요?

Swapping이란 무엇인가요?

Swapping의 과정을 설명해 주세요.

Swapping의 장단점을 설명해 주세요.

페이지 교체에 대해서 설명해주세요.

페이지 부재를 최소화하려면 어떻게 해야 하나요?

페이지 교체 알고리즘 FIFO에 대해 설명 해주세요.

페이지 교체 알고리즘 LRU에 대해 설명 해주세요.

페이지 교체 알고리즘 LFU에 대해 설명 해주세요.

페이지 교체 알고리즘 클럭 알고리즘에 대해 설명해주세요.

쓰레싱에 대해 설명해주세요.

워킹 알고리즘에 대해 설명해주세요.

페이지 부재 빈도 알고리즘에 대해 설명해주세요.


네트워크

네트워크 기초

컴퓨터 네트워크는 무엇인가요?

컴퓨터 네트워크에서 데이터를 전송하는 방식에 대해 설명해주세요.

⭐️ 프로토콜에 대해서 설명해주세요.

⭐️ TCP/IP에 대해서 설명해주세요.

⭐️ OSI 7 Layer에 대해서 설명해주세요.

OSI 7 Layer, TCP/IP 처럼 프로토콜을 계층화하는 이유가 뭘까요?

컴퓨터 네트워크에서 캡슐화와 비캡슐화에 대해서 설명해주세요.

NIC와 리피터에 대해서 설명해주세요.

브리지에 대해서 설명해주세요.

L2 스위치에 대해서 설명해주세요.

라우터에 대해서 설명해주세요.

L3 스위치에 대해서 설명해주세요.

L7 스위치에 대해서 설명해주세요.

LAN과 WAN에 대해서 설명해주세요.


Http와 Https

⭐️ HTTP 프로토콜에 대해서 설명해주세요.

HTTP의 요청/응답 모델에 대해 설명해주세요.

HTTP 메서드중 GET과 POST의 차이점에 대해 설명해주세요.

HTTP 메서드중 PUT과 PATCH의 차이점에 대해 설명해주세요.

HTTP 상태 코드가 뭔가요? 알고 있는 상태 코드 몇가지 설명해주세요..

HTTP 헤더가 뭘까요? 알고 있는 헤더 몇 가지 설명해주세요.

⭐️ HTTP의 무상태성(Stateless)에 대해서 설명해주세요.

HTTP Keep-Alive에 대해서 설명해주세요.

HTTP 파이프라이닝에 대해서 설명해주세요.

HTTP/1.1, HTTP/2, HTTP/3 각각의 특징에 대해 설명해주세요.

HTTPS에 대해서 설명해주세요.

SSL/TLS이 뭔가요?

대칭키 암호화 방식에 대해 설명해주세요.

비대칭키(공개키) 암호화 방식에 대해서 설명해주세요.

전자 서명에 대해서 설명해주세요.

⭐️ HTTPS 암호화 과정에 대해 설명해주세요. (SSL Handshake의 동작 과정을 설명해 주세요.)


DNS

⭐️ DNS가 뭔가요?

DNS 작동 방식에 대해 설명해주세요.

DNS 질의 종류에 대해 설명해주세요.

DNS 서버에게 IP 주소를 요청할 때, 왜 UDP를 사용하나요?

DNS 레코드가 무엇인가요?


어플리케이션 레이어

쿠키와 세션에 대해서 설명해주세요.

JWT 토큰에 대해서 설명해주세요.

SOP와 CORS에 대해서 설명해주세요.

REST에 대해서 설명해주세요. Restful API는 뭘까요?

REST 제약 조건에 대해 설명해주세요.

URL, URI, URN 차이가 뭘까요?

XSS 공격이 무엇이고, 방어하는 방법을 설명해주세요.

CSRF 공격이 무엇이고, 방어하는 방법을 설명해주세요.

SQL Injection 공격이 무엇이고, 방어하는 방법을 설명해주세요.

웹 캐시에 대해 설명해주세요.

프록시 서버에 대해서 설명해주세요.

포워드 프록시에 대해서 설명해주세요.

리버스 프록시에 대해서 설명해주세요.

L7 로드 밸런서에 대해서 설명해주세요.

커넥션 타임아웃과 리드 타임아웃에 대해 설명해주세요.


UDP

UDP에 대해 설명해주세요.

UDP의 장단점을 설명해 주세요.

UDP 체크섬에 대해 설명해주세요.

신뢰적 데이터 전송의 원리

전송후 대기 프로토콜이 뭘까요?

파이프라인 프로토콜이 뭘까요?

TCP

TCP에 대해 설명해주세요.

3 way handshake에 대해 설명해주세요.

4 way handshake에 대해 설명해주세요.

TCP 빠른 재전송에 대해서 설명해주세요.

Congestion control에 대해 설명해주세요.

Flow control에 대해 설명해주세요.


네트워크 레이어, IP 프로토콜

IP주소에 대해서 설명해주세요.

IPV4와 IPV6는 어떤 차이점이 있을까요?

서브넷과 서브넷 마스크에 대해 설명해주세요.

라우팅이 뭘까요?

Public IP와 Private IP의 차이는 무엇일까요?

라우팅 프로토콜에 대해서 설명해주세요.

IP는 어떻게 할당될까요?

NAT가 뭘까요?

ICMP가 뭘까요?



데이터베이스

Key (기본키, 후보키, 슈퍼키 등등...) 에 대해 설명해 주세요.

  • 기본키는 수정이 가능한가요?

  • 사실 MySQL의 경우, 기본키를 설정하지 않아도 테이블이 만들어집니다. 어떻게 이게 가능한 걸까요?

  • 외래키 값은 NULL이 들어올 수 있나요?

  • 어떤 칼럼의 정의에 UNIQUE 키워드가 붙는다고 가정해 봅시다. 이 칼럼을 활용한 쿼리의 성능은 그렇지 않은 것과 비교해서 어떻게 다를까요?

  • UNIQUE 키워드와 PRIMARY Key의 차이는 무엇인가요?

RDB와 NoSQL의 차이에 대해 설명해 주세요.

  • NoSQL의 강점과, 약점이 무엇인가요?

  • RDBMS의 강점과 약점이 무엇인가요?

  • RDB의 어떠한 특징 때문에 NoSQL에 비해 부하가 많이 걸릴 "수" 있을까요? (주의: 무조건 NoSQL이 RDB 보다 빠르다라고 생각하면 큰일 납니다!)

  • NoSQL을 활용한 경험이 있나요? 있다면, 왜 RDB를 선택하지 않고 해당 DB를 선택했는지 설명해 주세요.

  • 실시간 데이터 처리나 스트리밍 데이터 처리에는 RDB와 NoSQL 중 어떤 것이 더 적합하다고 생각하시나요?

트랜잭션이 무엇이고, ACID 원칙에 대해 설명해 주세요.

  • ACID 원칙 중, Durability를 DBMS는 어떻게 보장하나요?

  • 트랜잭션을 사용해 본 경험이 있나요? 어떤 경우에 사용할 수 있나요?

  • 읽기에는 트랜잭션을 걸지 않아도 될까요?

  • 트랜잭션 충돌이 발생했을 때 어떻게 처리하나요?

  • 한개의 트랜잭션 안에서 여러개의 트랜잭션이 있을경우, 트랜잭션 하나가 rollback이 일어나면 전체 트랜잭션은 어떻게 될까요?

  • 데드락이 무엇인지 설명해주세요

  • 데드락을 해결할 수 있는 방법이 있나요?

트랜잭션 격리 레벨에 대해 설명해 주세요.

  • 모든 DBMS가 4개의 레벨을 모두 구현하고 있나요? 그렇지 않다면 그 이유는 무엇일까요?

  • 만약 MySQL을 사용하고 있다면, (InnoDB 기준) Undo 영역과 Redo 영역에 대해 설명해 주세요.

  • 그런데, 스토리지 엔진이 정확히 무엇을 하는 건가요?

  • 트랜잭션 격리 레벨과 성능 간의 관계를 설명해주실 수 있나요?

  • 격리수준에 따라 발생할 수 있는 대표적인 현상중 더티리드, 팬텀리드, 논리피터블 리드 말고 다른 현상들이 있을까요?

  • NoSql은 RDBMS와는 다르게 기본 격리수준이 read_uncommitted입니다 왜 그런걸까요?


인덱스가 무엇이고, 언제 사용하는지 설명해주세요.

  • 일반적으로 인덱스는 수정이 잦은 테이블에선 사용하지 않기를 권합니다. 왜 그럴까요?
  • 앞 꼬리질문에 대해, 그렇다면 인덱스에서 사용하지 않겠다고 선택한 값은 위 정책을 그대로 따라가나요?
  • ORDER BY/GROUP BY 연산의 동작 과정을 인덱스의 존재여부와 연관지어서 설명해 주세요.
  • 기본키는 인덱스라고 할 수 있을까요? 그렇지 않다면, 인덱스와 기본키는 어떤 차이가 있나요?
  • 그렇다면 외래키는요?
  • 인덱스가 데이터의 물리적 저장에도 영향을 미치나요? 그렇지 않다면, 데이터는 어떤 순서로 물리적으로 저장되나요?
  • 우리가 아는 RDB가 아닌 NoSQL (ex. Redis, MongoDB 등)는 인덱스를 갖고 있나요? 만약 있다면, RDB의 인덱스와는 어떤 차이가 있을까요?
  • (A, B) 와 같은 방식으로 인덱스를 설정한 테이블에서, A 조건 없이 B 조건만 사용하여 쿼리를 요청했습니다. 해당 쿼리는 인덱스를 탈까요?
  • 인덱스의 저장구조는 어떤 방식으로 이루어져 있나요?
  • 인덱스를 사용할 경우, 무조건 빠를까요?
  • 풀 테이블 스캔과 인덱스 스캔의 차이점은 무엇인가요?
  • 데이터 베이스 쿼리 튜닝에서 인덱스를 어떻게 활용할 수 있을까요?

RDBMS, NoSQL에서의 클러스터링/ 레플리케이션 방식에 대해 설명해 주세요.

  • 이러한 분산 환경에선, 트랜잭션을 어떻게 관리할 수 있을까요?
  • 마스터, 슬레이브 데이터 동기화 전 까지의 데이터 정합성을 지키는 방법은 무엇이 있을까요?
  • 다중 트랜잭션 상황에서의 Deadlock 상황과, 이를 해결하기 위한 방법에 대해 설명해 주세요.
  • 샤딩 방식은 무엇인가요? 만약 본인이 DB를 분산해서 관리해야 한다면, 레플리케이션 방식과 샤딩 방식 중 어떤 것을 사용할 것 같나요?
  • 클러스터링과 레플리케이션을 동시에 사용하면 어떠한 이점이 있을까요? 아니면 어떠한 문제점이 있을까요?

정규화란 무엇인가요?

  • 정규화를 하지 않을 경우, 발생할 수 있는 이상현상에 대해 설명해 주세요.
  • 각 정규화에 대해, 그 정규화가 진행되기 전/후의 테이블의 변화에 대해 설명해 주세요.
  • 정규화가 무조건 좋은가요? 그렇지 않다면, 어떤 상황에서 역정규화를 하는게 좋은지 설명해 주세요.
  • 정규화를 통해 데이터 무결성을 어떻게 보장할 수 있나요?
  • 정규화 이후에 데이터베이스의 성능 최적화 방법은 어떤 것이 있을까요?
  • 역정규화를 하는 과정에서 주의해야 할 사항은 무엇인가요?

View가 무엇이고, 언제 사용할 수 있나요?

  • 그렇다면, View의 값을 수정해도 실제 테이블에는 반영되지 않나요?
  • Materialized View와 일반 View의 차이점은 무엇인가요?

DB Join이 무엇인지 설명하고, 각각의 종류에 대해 설명해 주세요.

  • 데이터베이스에서 JOIN을 수행할 때 내부적으로 어떤 다양한 최적화 기법이나 알고리즘이 사용되나요? 
  • 사실, JOIN은 상당한 시간이 걸릴 수 있기에 내부적으로 다양한 구현 방식을 사용하고 있습니다. 그 예시에 대해 설명해 주세요.
  • 그렇다면 입력한 쿼리에서 어떤 구현 방식을 사용하는지는 어떻게 알 수 있나요?
  • 앞 질문들을 통해 인덱스의 중요성을 알 수 있었는데, 그렇다면 JOIN의 성능도 인덱스의 유무의 영향을 받나요?
  • 3중 조인 부터는 동작 방식이 약간 바뀝니다. 어떻게 동작하는지, 그리고 그 방식이 성능에 어떠한 영향을 주는지 설명해 주세요.
  • 그렇다면 조인의 성능이 떨어지는 시점부터 조회 성능을 올리려면 어떻게 해야할까요? (역정규화가 반드시 필요할까요?)

B-Tree와 B+Tree에 대해 설명해 주세요

  • 그렇다면, B+Tree가 B-Tree에 비해 반드시 좋다고 할 수 있을까요? 그렇지 않다면 어떤 단점이 있을까요?
  • B-Tree와 B+Tree 중 어떤 것을 선택할지 결정할 때 고려해야 할 주요 요소는 무엇인가요?
  • DB에서 RBT를 사용하지 않고, B-Tree/B+Tree를 사용하는 이유가 있을까요?
  • 오름차순으로 정렬된 인덱스가 있다고 할 때, 내림차순 정렬을 시도할 경우 성능이 어떻게 될까요? B-Tree/B+Tree의 구조를 기반으로 설명해 주세요.
  • 인덱스는 왜 B tree를 사용할까요? 다른 자료구조를 사용할 순 없을까요?

DB Locking에 대해 설명해 주세요.

  • Optimistic Lock/Pessimistic Lock에 대해 설명해 주세요.
  • 물리적인 Lock을 건다면, 만약 이를 수행중인 요청에 문제가 생겨 비정상 종료되면 Lock이 절대 해제되지 않는 문제가 생길 수도 있을 것 같습니다. DB는 이를 위한 해결책이 있나요? 없다면, 우리가 이 문제를 해결할 수 없을까요?
  • 동시성 문제를 해결하기 위해 Lock말고 다른 방법은 없을까요?
  • 트랜잭션이 긴 실행 시간을 가지고 있을 때, 비관적 락 방식을 사용하면 어떤 문제가 발생될 수 있나요?
  • 다양한 격리 수준(Isolation Levels)에서 Locking의 행동은 어떻게 다른가요?

12. 트래픽이 높아질 때, DB는 어떻게 관리를 할 수 있을까요?

  • DB 서버를 분산하지 않고, 트래픽을 감당할 수 있는 방법은 없을까요?

13. Schema가 무엇인가요?

  • Schema의 3계층에 대해 설명해 주세요.

14. DB의 Connection Pool에 대해 설명해주세요.

  • DB와 Client가 Connection을 어떻게 구성하는지 설명해 주세요.
  • Connection Pool을 사용할 때 고려해야 하는 설정값은 무엇이 있나요?
  • Connection Pool에 있는 Connection이 모두 사용중일때 요청이 오면 어떻게 될까요?

15. Table Full Scan, Index Range Scan에 대해 설명해 주세요.

  • 가끔은 인덱스를 타는 쿼리임에도 Table Full Scan 방식으로 동작하는 경우가 있습니다. 왜 그럴까요?
  • COUNT (개수를 세는 쿼리) 는 어떻게 동작하나요? COUNT(1), COUNT(*), COUNT(column) 의 동작 과정에는 차이가 있나요?
  • Table Full Scan과 Index Range Scan은 주로 어떠한 차이점이 있을까요?
  • 혹시 Table Full Scan이 Index Range Scan보다 더 유리한 경우가 있을까요?

16. SQL Injection에 대해 설명해 주세요.

  • 그렇다면, 우리가 서버 개발 과정에서 사용하는 수많은 DB 라이브러리들은 이 문제를 어떻게 해결할까요?
  • SQL Injection을 방지하기 위한 방법에는 어떤 것이 있나요?

미분류

cors에 대해 알고 있나요?

About

무적 백엔드 스터디 면접 질문 정리입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published