Backend Tech Interview

이곳은 신입 개발자로 취업을 준비하면서 공부했던 지식을 정리하는 공간입니다.
지식의 확장을 넘어서 기술 면접을 준비함에 있어서 도움이 되기를 바랍니다.
이 곳은 개인적인 공간이 아닌 여러분들과 함께 채워나갈 수 있기에,
issue와 Pull Request를 통해 이 레퍼지토리의 컨트리뷰터가 되어주세요.
내용이 마음에 들거나 유용하다면 Star를 한번씩 눌러주시면 감사하겠습니다. 🙏

📌 2022 상반기 네이버 웹툰 신입 공채 합격 회고


📝 Table of Contents


💡 Java Link

  • Java 장단점
  • Kotlin 장단점
  • 코루틴 CPS 패턴
  • OOP(객체 지향 프로그래밍) 특징
  • SOLID 원칙
  • JVM 실행과정
  • JVM 구조
  • 가비지 컬렉터
  • 접근 제한자
  • String vs Char
  • ==과 equals
  • 데이터 타입
  • Call By Value와 Call By Reference
  • hashcode
  • Wrapper class
  • 박싱, 언방식
  • non-static vs static
  • main이 static인 이유
  • final vs finally vs finalize
  • try with resources
  • 제네릭
  • 직렬화와 역직렬화
  • 오버로딩, 오버라이딩
  • 추상 클래스와 인터페이스 차이
  • Error, Exception
  • Checked Exception, Unchecked Exception
  • Java Collections
  • String, StringBuilder, StringBuffer
  • Blocking vs Non-Blocking
  • Sync vs Async
  • 리플렉션
  • Stream
  • Fork Join Pool
  • 람다식
  • Optional
  • 자바8 추가된 내용
  • 함수형 프로그래밍
  • 멀티스레드 프로그래밍
  • Java 동기화 방식

💡 Spring & JPA Link

  • 세션과 쿠키
  • 프레임워크와 라이브러리
  • Spring 정의 및 장점
  • DI (Dependency Injection)
    • 주입 방식
  • IoC
  • 스프링 컨테이너
  • Bean 정의
    • 생명주기
    • 스코프
  • Spring Annotation
  • 웹 서버와 웹 애플리케이션 서버
  • 서블릿
  • 서블릿 컨테이너
  • MVC 패턴
  • AOP(Aspect Oriented Programming)
  • AOP 적용 시점
  • AOP 적용 방식
  • JDK 동적 프록시 vs CGLIB
  • DAO, DTO, VO
  • Filter vs Interceptor
  • AOP vs Interceptor
  • 레이어드 아키텍처
  • OSIV
  • 커넥션 풀
  • DataSource
  • 트랜잭션을 추상화하는 이유
  • 트랜잭션 동기화 매니저
  • @Transactional 동작 방식
  • Propagation 전파단계
  • ORM
  • 영속성 컨텍스트
  • N+1 문제
  • fetch join 한계
    • OneToMany fetch join 페이징 쿼리 성능 이슈
    • MultipleBagFetchException
  • OneToOne 양방향 관계 Lazy 로딩 주의
  • 상속관계 매핑
  • QueryDsl을 사용하는 이유
  • Spring batch
  • MSA vs Monolithic(모놀리식)

💡 Database Link

  • 트랜잭션
  • 트랜잭션 ACID
  • 트랜잭션 격리수준
  • Commit
  • Rollback
  • 갱신 분실 문제
  • Locking
  • 스토리지 엔진 락
  • MVCC(다중 버전 동시성 제어)과 락
  • 조인
  • DDL, DML, DCL
  • 힌트
  • 인덱스
    • Cluster 인덱스
    • Non-Cluster 인덱스
    • 멀티 인덱스
    • 커버링 인덱스
    • B 트리
  • 정규화, 반정규화
  • 커넥션 풀
  • 관계형 DB vs NoSQL
  • 클러스터링
  • 레플리케이션
  • 수직 파티셔닝
  • 샤딩(수평 파티셔닝)
  • SQL Injection
  • 대용량 테이블 고려
  • Statement, PreparedStatement
  • Redis, Memcached
  • Elastic search

💡 Network Link

  • OSI 7계층
  • DNS
  • www.google.com에 접속할 때 일어나는 일
  • 4 way-hand shaking
  • 포트와 소켓
  • CIDR(사이더)
  • 서브넷
  • TCP, UDP
  • HTTP, HTTPS
  • HTTP 1.0 vs HTTP 1.1 vs HTTP 2.0
  • HTTP Method
  • HTTP Code
  • CORS
  • REST API
  • 쿠키, 세션
  • JWT
  • OAuth
  • WebSocket과 Socket.io
  • 중간자 공격
  • CSRF

💡 Operating System Link

  • 커널
  • 메모리구조
  • 스택과 힙의 차이점
  • 힙영역을 크게 잡으면 안되는 이유
  • 프로세스와 스레드
  • 멀티 스레드 vs 멀티 프로세스
  • 크롬 탭은 프로세스인지 쓰레드인지
  • 스레드마다 스택을 독립적으로 할당하는 이유
  • 스레드마다 PC 레지스터를 독립적으로 할당하는 이유
  • 컨텍스트 스위칭
  • 프로세스 종류
  • Deadlock
  • Critical Section(임계영역)
  • 경쟁 상태(Race Condition)
  • 사용자 모드와 커널 모드
  • 커널 수준, 사용자 수준 스레드
  • CPU Scheduling
  • 인터럽트
  • 시스템 콜
  • 메모리 관리 전략
  • 가상 메모리
  • Trashing
  • 캐시의 지역성

💡 Algorithm & SQL Link

  • 코딩 테스트에서 사용하는 파이썬 API
  • 코딩 테스트에서 사용하는 파이썬 정규식
  • 코딩 테스트에서 사용하는 자바 API
  • 프로그래머스 알고리즘
  • 리트코드 알고리즘
  • 프로그래머스 SQL
  • HackerRank SQL