각 과목별 키워드 모음.

2024. 2. 2. 18:46
  1. 운영체제: 프로세스, 스레드, 동시성 제어, 스케줄링, 메모리 관리, 가상 메모리, 캐시, 데드락, 동기화 기법, 시스템 콜, I/O 관리, 파일 시스템
  2. 네트워크: OSI 7계층, TCP/IP, UDP, HTTP, HTTPS, FTP, DNS, NAT, 프록시 서버, 라우터, 스위치, IP, IPv4, IPv6, 서브넷마스크, ARP, ICMP, 소켓 프로그래밍, RESTful API, 세션, 쿠키, jwt, SSH
  3. 데이터베이스: SQL, NoSQL, RDBMS, 트랜잭션, 인덱스, 정규화, 조인, 데이터 모델링, ERD, ACID, CAP 이론, 샤딩, 리플리케이션, 분산 데이터베이스 등
  4. 알고리즘: 정렬 알고리즘(버블, 선택, 삽입, 퀵, 병합, 힙 등), 탐색 알고리즘(DFS, BFS, 이진 탐색 등), 그래프 알고리즘(최단 경로, MST 등), 동적 계획법, 분할 정복, 그리디 알고리즘, NP-완전 문제 , 이진(분) 탐색  => 라이브코테식으로
  5. 자료구조: 배열, 리스트, 스택, 큐, 힙, 트리, 그래프, 해시 테이블, B-Tree, AVL-Tree, Red-Black Tree, 이진 탐색 트리 등
  6. 자바: OOP, 클래스 vs 객체, 인터페이스, 상속, 다형성, 캡슐화, 추상화, 예외 처리, 쓰레드, 제네릭, 컬렉션 프레임워크, 입출력 스트림, 람다, 스트림 API, JDBC,   동일성(identity)와 동등성(equality), SOLID(객체지향 5대원칙), static, final, Checked Exception과 Unchecked Exception, 강한 결합과 느슨한 결합, 직렬화와 역직렬화, 자바의 동시성 이슈(공유자원 접근), Mutable 객체와 Immutable 객체, 자바에서 null을 안전하게 다루는 방법, String vs StringBuilder vs StringBuffer, GC, ENUM, POJO, 내부 클래스
  7. 스프링: DI / IoC, AOP, MVC 패턴, 스프링 부트, (스프링 데이터) JPA, 스프링 시큐리티, 예외 처리, REST API, 트랜잭션 관리, Bean, 스프링 테스트, 스프링 배치, Spring에서 CORS 에러를 해결하기 위한 방법, @RequestMapping, @ModelAttribute 등 어노테이션들 설명, WAS
  8. 싱글톤패턴, TDD, 함수형 프로그래밍, 프로그래밍에서 동시성 문제
  9. 생성 디자인 패턴, 구조 디자인 패턴, 행위 디자인 패턴
  10. 암호화 : 비대칭키 암호화, 대칭키 암호화, 단방향 암호화, JWT, OAUTH, SQL Injection, XSS, CSRF
  11. 컨테이너 : Docker, Kubernetes
  12. 한바퀴 다 돌고 : 자카르타 JAVA EE, AWS, 우테코 세미나(스레드)

https://github.com/ksundong/backend-interview-question?tab=readme-ov-file#CS-%EA%B4%80%EB%A0%A8-%EC%A7%80%EC%8B%9D

 

GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질

백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - ksundong/backend-interview-question

github.com

 

✔️ 본인이 맡은 부분에 대해서는, 이 부분 외에는 더이상 공부할 것이 없을 정도로 준비해 오기

✔️ 각 키워드별 예상 질문 뽑아오기

✔️ 실제 작동원리와 등장배경 등 부수적인 부분까지 조사해오기

 

복사해서 베껴 적는게 아니라, 내가 확실히 이해하고 공부한 부분을 포스팅하기.

사진은 가져와도 되지만, 글은 무조건 내가 생각해서 적을 것.

 

기초 cs(NETWORK, OS, DATABASE), 자바 질문은 깃허브에서 직접 확인

https://github.com/ksundong/backend-interview-question?tab=readme-ov-file#CS-%EA%B4%80%EB%A0%A8-%EC%A7%80%EC%8B%9D

 

GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질

백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - ksundong/backend-interview-question

github.com

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만 생성될 수 있을까요?
Spring WEB MVC의 근간에는 Java Servlet 이 있는데요. Spring 은 Servlet을 어떻게 구성해서 이를 구현했을까요?
Filter는 Servlet의 스펙이고, Interceptor는 Spring MVC의 스펙입니다. Spring Application에서 Filter와 Interceptor를 통해 예외를 처리할 경우 어떻게 해야 할까요?
Spring Application을 구동할 때 메서드를 실행시키는 방법에 대해 설명해주세요.
의존성과 설정값을 생성자 인자로 주입해야 하는 이유에 대해 설명해주세요.

JPA

JPA 영속성 컨텍스트의 이점(5가지)을 설명해주세요.
JPA Propagation 전파단계를 설명해주세요.
JPA를 쓴다면 그 이유에 대해서 설명해주세요.
N + 1 문제는 무엇이고 이것이 발생하는 이유와 이를 해결하는 방법을 설명해주세요.

기타

트러블 슈팅

대용량 트래픽에서 장애가 발생하면 어떻게 대응할 것인가요?

디자인 패턴

싱글톤 패턴에 대해서 설명해주세요.(생각보다 어려움
)가교 패턴(브릿지 패턴)에 대해서 설명해주세요.
전략 패턴에 대해서 설명해주세요.
빌더 패턴에 대해서 설명해주세요.
팩토리 메서드 패턴에 대해서 설명해주세요.
퍼사드 패턴에 대한 예를 들어주세요.

테스트

테스트 코드에 대해서 어떻게 생각하고, 작성하나요?
TDD를 알고 있나요? TDD에 대해서 어떻게 생각하나요?
테스트 커버리지에 대해서 어떻게 생각하나요?

인프라/클라우드

AWS 인프라를 구축해보았다면 설명해주세요.
로드 밸런서에 대해서 설명해주세요.
리버스 프록시에 대해서 설명해주세요
.Fault-tolerant(무정지) 시스템으로 가기 위해 필요한 방법에 대한 생각을 말해주세요.

컨테이너

Docker란 무엇이고 컨테이너 가상화를 왜 사용할까요?
컨테이너 환경에서의 디버깅은 어떤식으로 하며 상대적으로 어려운 점은 무엇인가요?

DevOps

DevOps는 어쩌면 신입에겐 물어보지 않을 수도 있습니다. 하지만 DevOps가 무엇인지 정도는 알아두는게 좋을 것 같습니다.

CI/CD가 무엇인가요? 왜 CI/CD가 장점이 될까요?
DevOps가 무엇인지 설명해주세요.

커뮤니케이션

정답이 없는 질문입니다. 면접관마다 의도하는 답이 다 다를테니 자신만의 방법을 한 번 쯤 생각해보고 답변에 막힘이 없도록 준비합시다.

코드리뷰중 갈등이 있을 경우, 이를 어떻게 해결할 것인가요?
어떤 기술이나 방법론이 좋아보일 때, 이를 어떻게 설득할 것인가요?
일정이 예상보다 지연될 것 같습니다. 어떻게 해결하실 것인가요?
팀원과의 갈등이 있었나요? 있었다면 어떻게 대처했나요?

기타

좋은 소스란, 좋은 코드, Clean Code란 어떤것인가요?
코딩테스트의 해당 언어를 선택한 이유는 무엇인가요?

개인의 역량

본인이 수행한 프로젝트 중 상용화 가능한 프로젝트가 있나요?
기술을 습득할 때 어떤 식으로 습득하나요?

최신기술에 관심이 있는지

최신기술에 관심이 있는지 정도를 확인하고자 함입니다. 너무 정확하게 말하지 않아도 관심이 있다는 인상정도를 줄 수 있다면 좋겠습니다.
그 회사의 기술 스택을 찾아보고 관심을 가져봤다 정도의 느낌을 줄 수 있어야합니다.
사용까지 해보면 더더욱 좋을 것 같습니다.

protobuf에 대해서 알고계신가요? 이것은 왜 사용할까요?
gRPC는 무엇이며, RPC는 무엇인가요? 왜 쓸까요?
쿠버네티스가 무엇인가요? 왜 쿠버네티스를 쓸까요?

웹서버의 동작과정

면접 꿀팁

회사의 기술스택에 관심을 가져보세요. 학습능력이 좋음을 어떤식으로 보여줄 수 있을까요?

본인이 수행한 프로젝트를 유의미한 트래픽이 나올정도로 해본 경험을 높게 평가하는 회사가 많습니다.

두괄식으로 답변하도록 합시다. (사실 힘듭니다. 그렇게 될 수 있게끔 연습 또 연습!)

프로젝트를 수행할 때, 내가 이 기술을 단순히 좋아보여서 사용한 것이 아니라, 많은 고민을 했음을 보여주도록 하세요. 가장 간단한 질문으로는 '왜 그 기술을 사용했나요?', '그 기술 말고 다른 기술은 왜 사용하지 않았나요?', '대체할만한 기술이 있나요?' 등이 있습니다.

https://www.youtube.com/watch?v=4XNJFAPnZrY