본문으로 건너뛰기

면접 대비 질문리스트

여기에 있는 리스트 들은 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 인프라를 구축해보았다면 설명해주세요.
로드 밸런서에 대해서 설명해주세요.
리버스 프록시에 대해서 설명해주세요.

컨테이너

제가 아직 도커, 쿠버네티스에 익숙하지 않아 공부가 좀 더 필요합니다.
관련해서 질문을 받아본적은 없으나, 일반적인 질문을 담아보았습니다.

Docker란 무엇이고 컨테이너 가상화를 왜 사용할까요?

DevOps

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

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

커뮤니케이션

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

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

개인의 역량

본인이 수행한 프로젝트 중 상용화 가능한 프로젝트가 있나요?
기술을 습득할 때 어떤 식으로 습득하나요?
최신기술에 관심이 있는지
최신기술에 관심이 있는지 정도를 확인하고자 함입니다. 너무 정확하게 말하지 않아도 관심이 있다는 인상정도를 줄 수 있다면 좋겠습니다.
그 회사의 기술 스택을 찾아보고 관심을 가져봤다 정도의 느낌을 줄 수 있어야합니다.
사용까지 해보면 더더욱 좋을 것 같습니다.

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


자바에서 동기화 처리한적있나

멀티스레드에 대해서 어떻게 처리할건가(기술적인거)

CPU랑 메모리 공간 부족할 때 어떻게 해결할거같아요

교착상태 걸렸을 때 어떻게 해결하려고 어떤 기술을 사용할 거 같나

알고리즘에 대해서 제일 자신있는 거 java로 설명해달라

ArrayList는 어떻게 동기화되나?

ArrayList랑 LinkedList에서 그럼 LinkedList같은 거는 연결되어 있는데 왜 검색이 느리다고 말하는지

MSSQL(MySQL, OracleDB랑 다른데)같은 경우는 어떤 디폴트값을 갖고있나

java6이용해서 프로젝트했다고 했는데 그럼 java6와 java7(내가 읽고있는 책이 java7이였다)에대해서 뭐가 가장 달라졌나

제일 잘 설명할 수 있는 패턴에 대해 알고리즘 적으로 설명해달라(싱글패턴, 빌더패턴 제외)

싱글패턴은 어디까지 알고있나

빌더패턴은 어떤식으로 흘러가는지에 대해서 설명해달라

컬렉션 중에 자신있게 설명할 수 있는거 설명해달라

컬렉션 관련 메소드 알고있는거 있나

ORM사용해봤나

synchronized 식별자 함수에 대해서 아냐 어떻게 활용해야하나

최근에 읽은 기술관련 책 이름이 뭔가

기술적으로 나타난 트러블슈팅이 뭐가있나 어떤 기술로 해결했나(기술적인걸로 대답해주세요)

---여기서 부터는 프론트엔드 면접관분께서 질문하셨다.

프로세스와 스레드에 대해서 설명해달라

쿠키와 세션에 대해서 설명해달라

쿠키는 클라이언트 어느부분에 저장되는지


  • MVC 패턴에 대해서 설명해주세요.
  • 데이터베이스 정규화 과정에 대해 설명해주세요.
  • 자바 컬렉션 종류와 특징에 대해 설명해주세요.
  • 본인이 남들보다 뛰어난 점이 뭔지 소개해주세요.
  • 정렬의 종류 및 특징을 설명해 주세요.
  • WAS의 동작방식에 대해서 설명해주세요.
  • 자바의 메모리 영역에 대해 설명해주세요.
  • 객체지향 프로그래밍에 대해 설명해주세요.
  • 세션과 쿠키를 사용하는 이유는 무엇일까요?
  • Interface와 Abstract에 대해 말해주세요.
  • 디자인 패턴을 아십니까?
  • TDD를 해보셨습니까?
  • TCP 와 UDP 의 차이점은 무엇일까요?
  • OSI 7계층에 대해 아는대로 말해주세요.
  • 스트링과 스트링버퍼의 차이에 대해 설명해주세요.
  • 자바의 데이터 타입인 Primitive Type(기본형) 에 대해 말해보세요.
  • 접근제어자의 종류와 특성에 대해 설명해보세요.
  • 쓰레드를 구현하기 위한 인터페이스, 클래스는 무엇이 있나요?
  • static 키워드에 대해 설명해주세요.
  • 자바 코드의 실행 과정을 설명해주세요.
  • 오버로딩과 오버라이딩에 대해 설명해주세요.
  • 쓰레드와 프로세스의 차이는 무엇일까요?
  • 해시테이블에 대해 설명해주세요.
  • 데이터베이스 트랜잭션이란 무엇인가요?
  • JVM, JRE, JDK 를 설명해주세요.
  • final 키워드에 대해 설명해주세요.
  • API 에 대해 설명해주세요

인성 관련 질문

  • 업무 경험을 살려 자기소개 해주세요.
  • 저희 회사에 지원하신 이유는 무엇인가요?
  • 이직하게된 이유를 알려주세요.
  • 성격의 장점과 단점에 대해 말해주세요(업무와 연관지어)
  • 입사를 하게 된다면 있었으면 하는 문화와 없었으면 하는 문화가 있을까요?
  • 입사를 해서 와서 물어보면 알려줄수 있지만 누군가 나서서 알려주지 않을수도 있는데 괜찮으신가요?
  • 만약에 입사를 하게 되신다면 저희 회사에게 이득이 될 만한 일이 있을까요?
  • 예상 질문에 대한 답변을 준비했는데 질문에 없었다면 직접 어필해주세요.
  • 스트레스를 풀기 위한 취미는 무엇인가요?
  • 억대 연봉을 받는 개발자의 강점은 무엇일까요?
  • 회사에서 오퍼가 왔을 때 가장 중요하게 생각하시는게 뭔가요?
  • 회사를 선택하실때 중점적으로 보시는 부분은?
  • 싫어하는 동료의 유형은 무엇인가요?
  • 레퍼런스 체크를 하면 자신이 어떻다고 평가해줄만한 전직장 동료는 몇명인가요? 이름까지 다 말씀해주실수 있나요?(정말로 다 물어봄)
  • 개발을 할 때 중요하다고 생각하는 3가지 말씀해주세요.
  • 다른팀과 협업시 갈등이 있었을 때 어떤식으로 해결했는지?
  • 면접자님 밑으로 직원이 왔을 경우 어떤식으로 리딩하셨나요?

기술 관련 질문

  • 객체지향에 대해 설명해주세요
  • 추상화에 대해 설명해주세요
  • MVC 패턴에 대해 설명해주세요
  • 데이터베이스 옵티마이저에 대해 설명해주세요
  • 풀스캔(FULL SCAN)에 대해 설명해주세요
  • 코드 리팩토링의 의미가 무엇일까요?
  • 자바의 컬렉션에 대해 설명해주세요
  • Java 8에서 Stream을 사용해보셨나요?
  • 가비지 컬렉션 알고리즘에 대해 설명해주세요
  • 배열 안 중복제거를 위한 방법이 뭐가 있을까요?
  • Spring DI에 대해 설명해주세요
  • JPA를 사용하면 좋은점?
  • JWT에 대해 설명해주세요, 사용하면 장점과 단점?
  • MSA란 무엇인가요? 장점과 단점을 말씀해주세요
  • Enum 사용해보셨나요? Enum이란 무엇인가요?
  • equals를 오버로딩하여 사용해봤나요? hashCode란 무엇인가요?
  • 자바 reflection에 대해 설명해주세요
  • REST API란? REST API 명령어(CRUD) 아시는것 설명해주세요.
  • 자바의 장점과 단점을 설명해주세요
  • 세션과 쿠키의 차이는?

경험 및 기타 질문

  • 개발툴은 어떤걸 사용해봤나요?
  • 협업툴은 어떤걸 사용해봤나요?
  • 기록을 남기기 위한 프로그램은 어떤걸 사용해봤나요?
  • DB는 어떤걸 사용해봤나요?
  • AWS 사용해본적 있으신가요?
  • 자바말고 다른 언어 할줄 아시나요?
  • 회사 로직이 복잡하여 쿼리가 몇백줄인 경우가 많은데 이부분 적응 가능하신가요?
  • 해외 서비스(이전 회사가 해외 서비스중인 회사)를 하며 느꼈던 한계점이나 단점이 뭐였나요?
  • 입사를 하면 담당하고 싶은 파트가 있나요?
  • JWT 토큰이 아닌 인증 기능 구현을 하기 위한 다른 방법은 뭐가 있을까요?
  • 기억에 남는 프로젝트를 말씀해주세요
  • 테이블 설계시에 데이터 타입에 따라 설계를 해본적이 있을까요?

인성 질문

  • 왜 전 회사 그만두고 개발하러 오셨나요?
  • 퇴사한 것을 후회하지 않으시나요?
  • 지원한 이유는 무엇인지?
  • 개발이 왜 좋은지?
  • 개발을 왜 시작했는지?
  • 어떤 점에서 개발자가 되고 싶은지?
  • 미래에 어떤 개발자가 되고 싶은지?
  • 전공 과목중에 좋아하는 과목이랑 싫어하는 과목 각각
  • 어떤 서비스를 하고 싶은지?
  • 만약 떨어진다면 어떤 기업에 또 지원할 것인지?
  • 5년, 10년 뒤에는 어떤 엔지니어가 되어있을지?
  • 주변 친구들 중 한명 칭찬해주세요
  • 칭찬 한개만 더 해주세요
  • 지원하는 회사의 장점은?
  • 회사에 궁금하신점 있으신가요?
  • 본인의 강점, 단점은?
  • 기술적인 이슈를 해결했던 경험을 이야기 해주세요.
  • 입사한 팀이 코드리뷰, 클린코드, 테스트 아무것도 안하면 어떻게 하실 건가요?
  • 열심히 하지만 본인이 원하는 만큼 따라오지 못하는 팀 동료들이 있을 수 있는데, 이럴 때는 어떻게 하는지?
  • 본인이 팀 프로젝트에서 협업 측면에서 맡았던 역할을 이야기 해주세요.
  • 팀 프로젝트에서 아쉬웠던 점 이야기 해주세요.
  • 전공을 하셨는데, 전공 관련해서 최근에 부족하다고 느껴서 공부하고 있는 분야가 있는지?
  • 최근에 재미있어 하는 일은?
  • 시간 남을 때 하는 일은? (개발 말고..)
  • 토이프로젝트 하고 있다고 하신 거 어떤 거 하시는 지 말씀해주세요.
  • 입사해서 원하는 선배의 모습이 무엇인가요?
  • 본인이 속한 그룹에서 몇 등 정도 하는 것 같은지?
  • 그러면 본인보다 잘하는 동료들은 어떤 점에서 더 잘하는 것 같은지?
  • 더 못한다고 한 사람들은 어떤 점에서 더 못하는지?
  • 사내 스터디에서 어떤 것을 공부하고 싶은지?
  • 지금 제일 가고 싶은 회사는?
  • 특별히 가고 싶은 회사는? 특정 도메인인지? 회사의 분위기인지? 어떤 점을 중점적으로 보는지?
  • 좋아하는 앱이 있는지?
  • 그 앱에 추가하고 싶은 기능이 있는지?
  • 본인이 생각하기에 좋은 개발 문화라는 것은 어떤 것인지?
  • 팀 프로젝트에서 힘들었던 팀원이 있다면? 어떤 점에서 힘들었는지?
  • 어떻게 해결했는지?
  • 페어 프로그래밍은 어떤 식으로 진행했는지?
  • 사람들과 협업하면서 가장 어려웠던 점이 있다면?
  • 전에 했던 프로젝트가 어떤 프로젝트였고, 초기에 어떤 계획을 했고 어느정도 달성했는지, 맡은 역할은 무엇이었는지?
  • 프로젝트에서 기간이 얼마 남지 않았을 때 무엇에 집중하는지?
  • 스터디 하고 계시는 것 있는지?
  • 문서화는 왜 해야한다고 생각하시나요?
  • 다른 사람이 생각하기에 본인의 장, 단점은?
  • 그 단점을 극복하기 위해 노력했던 것은?
  • 지금 읽고 계신 책은 무엇인가요?
  • 지금 공부하고 계신 분야는 무엇인가요?
  • 좋은 개발문화는 무엇인가요?
  • 그러면 좋은 사람, 좋은 개발자는 어떤 사람인가요?
  • 좋은 개발자의 요소를 세 가지 정도만 말씀 해주세요.
  • 회사는 교육기관이 아닙니다. 당신이 회사에서 실력을 키우고 배울 수 있고 함께 성장할 동료를 얻을 수 있다면, 당신이 회사에 기여할 수 있는 - 것은 어떤 것이 있죠?
  • 페어 프로그래밍의 장점은?
  • 회사의 입장에서 페어 프로그래밍의 장점은?
  • 못하는 개발자 두명이 페어 프로그래밍을 한다면 오히려 능률이 떨어지는 것이 아닌지?
  • 협업을 하면서 가장 중요하게 생각하는 것은?
  • 소통 능력을 키우기 위해서 어떤 일을 할 수 있을까?
  • 실무에서 개발자 외의 사람들과 소통할 경우에는 어떻게 해야할까?
  • 새로운 언어를 배울 때 어느정도 시간이 걸리시나요?
  • 개인적으로 공부를 어떻게 하시는지 말씀해주세요. (강의, 책 등)
  • 리팩토링에 관한 책 읽어보셨나요?
  • 회사와 본인을 어떻게 연관짓나요?
  • 우리 회사에 기대하고 있는 것이 있나요?
  • 그러면 우리가 지원자분께 기대할 수 있는 것은 무엇이 있나요?
  • 활동하고 있는 IT 커뮤니티 있나요?
  • 최근 관심을 가지고 있는 IT 분야는?
  • 본인은 팀장 성향인지, 팀원 성향인지?
  • 그럼 예를 들어 친구들끼리 여행가자!해서 각자 의견을 물을 때 꼭 필요하지 않다면 굳이 의견을 내지 않는 스타일 이신가요?
  • 팀원과 갈등이 발생했을 때 어떻게 해결하는지?
  • 설득을 하려고 해도 끝까지 일치하지 않을 수 있는데 이럴 땐 어떻게 하는지?
  • 프로젝트의 기한도 길지 않아서 두 방식을 모두 해볼 수 없다고 가정하면 어떻게 해야할 지?
  • Frontend Framework를 사용하지 않고 바닐라 자바스크립트를 사용한 이유는 무엇인가요?
  • (어떤 프로젝트에 대한 설명을 하고 나서) 그렇게 하기로 결정한 이유는 무엇인가요?
  • (스프링 시큐리티에 관심이 있다고 하고 난 후) 스프링 시큐리티에 가장 최근에 올라온 이슈는 무엇인지?
  • 전 직장에서도 업무가 맞지 않아서 퇴사하셨다고 하셨는데, 그러면 여기서도 업무가 맞지 않으면 동일하게 하실 것인지?
  • 전 직장에서 퇴사하신 것을 후회하지 않으십니까?
  • OAuth에 대해서는 왜 공부하셨나요? (XX 에 대해서는 왜 공부하셨나요?)
  • 입사 후 쉬운 일, 어려운 일이 있을 때 이 일에 대한 분배를 어떻게 하실 건가요?
  • 만약 떨어진다면 어떤 점이 부족해서 떨어졌다고 생각할지?
  • 공백기간동안 뭘 하면서 보내셨나요?
  • 인생을 살면서 무엇인가 하나에 푹 빠져본 적이 있으신가요?
  • 인생에서 가장 후회되는 것이 있다면 어떤 것인가요?
  • 가장 자신있는 기술 분야는 어떤 분야입니까?
  • 퇴사 후에 친구들을 만나거나 하는 것이 부담스러워졌는지?
  • 협업하는 과제, 혼자하는 과제 중 어떤 것을 더 선호하는지? 그 이유는?
  • 본인의 의견을 주장할 때 강하게 주장하는 편인가요?
  • 만약 본인의 주장이 본인과 협업하는 사람(예를 들어 프론트 개발자, 기획자 등)이 받아들이지 못한다면 어떻게 해결하실 건가요?
  • 입사 후에 저희 회사에서 어떤 일을 하고 싶으신가요? (무엇을 기대하고 계신가요?)
  • 저희 회사 서비스 중 어떤 서비스가 추가되었는데, 여기에 또 다른 기능을 추가한다면 어떤 기능이 있을까요?

일반 기술 질문

  • REST
  • 동등성과 동일성의 차이를 아는지?
  • 세션이 뭔가요? 서버 여러 대일 때 세션을 어떻게 처리하죠?
  • 서블릿이 뭔가요?
  • 데이터베이스 인덱스 동작 과정
  • 캐시가 무엇인가요? redis 같은 걸 캐싱 서버로 사용해보신적 있으신가요?
  • Call by value와 Call by reference 차이
  • TDD에 대해 어떻게 생각하시나요?
  • TDD가 무엇인가요?
  • TDD의 장, 단점?
  • PreparedStatment와 Statement의 차이는 무엇인가요?
  • 전 프로젝트에서 배포 구조 설명해주세요.
  • 그 방법으로 하면 완전한 무중단 배포가 구현이 될까요?
  • nginx가 어떤 방식으로 로드밸런싱을 할 지 설명해주세요.
  • 잘 모르시면, 어떻게 구현 되어있을 지 추측해서 설명해주세요.
  • 클린코드
  • 클린코드의 정의가 무엇인가요?
  • 클린코드가 뭐라고 생각하는지?
  • Docker 왜 썼는지?
  • 본인이 생각하기에 Database의 부하와 Application의 부하를 어떤 기준으로 나눌 것 같은지?
  • 만약에 일을 하게 됐을 때 그 팀이 코드 리뷰에 대해 보수적이고 페어를 완강하게 거부하는 곳이라면 어떻게 대처할 건지
  • Deep Copy와 Shallow Copy에 대해 설명해주세요.
  • OAuth 의 흐름에 대해 설명해주세요.
  • 객체를 나누는 기준이 무엇인가?
  • 커밋 컨벤션에서 feat, chore, refactor 등. 각각 어떤 기준으로 나누어 사용했는지?
  • OOP가 무엇인가요?
  • OOP를 썼을 때 어떤 점이 좋았고 안좋았는지?
  • OOP를 잘하기 위해 어떤 노력을 했는지?
  • 객체를 나누다 보면 오히려 코드가 보기 힘들지 않나?
  • 클린 코드는 무엇인가요?
  • 왜 코드는 클린해야 하죠?
  • Test코드는 왜 짜야 합니까?
  • Mock을 사용한 이유는?
  • 기능이 정상 동작하려면 데이터베이스(외부)를 의존해야 하는데 왜 이 의존을 끊으려고 하는지?
  • 사전에서 검색을 제공하는 Application을 만들건데 어떤 자료구조를 쓰실 건가요?
  • 기억에 남는 프로젝트와 어떤 점에서 기억에 남는 지 설명해주세요.
  • 여기서 아쉬웠던 점을 설명해주시고, 어떻게 개선했는지? 아니면 개선 방안을 설명해주세요.
  • 트리 구조에 대해 설명 해주세요.
  • 이진 트리에 대해 설명 해주세요.
  • Binary Search Tree에 대해 설명해주세요.
  • 브라우저에서 서버 응답까지의 흐름
  • CI/CD 에 대해 각각 설명해주세요.
  • 최근에 하신 프로젝트가 어떤 구조로 되어있는지 그림으로 그리면서 설명해주세요.
  • 프로젝트에서 Git flow 적용 하셨다고 하셨는데, 어떤 식으로 하셨는지 설명해주세요.
  • 어떤 장점, 단점이 있는지?
  • DTO가 무엇이죠?
  • Presentation - Application - Domain Layer를 나눈 기준은?
  • 각 Layer가 하는 역할은?
  • DB Optimizer
  • 아는 정렬 알고리즘 설명해주세요
  • 그 정렬 알고리즘의 시간복잡도는 어떻게 되나요
  • 프로세스와 쓰레드의 차이점은?
  • PCB에 저장되는 정보는 어떤 것들이 있나요?
  • Context Switching에 대해 설명해 주세요.
  • TCP 와 UDP의 차이점에 대해 설명해 주세요.
  • 프로젝트에서 단위 테스트 어떻게 하셨나요? 통합 테스트는 어떻게 하셨나요?
  • 알고 계신 테스트의 종류를 말씀해주세요. (유닛 테스트, 통합 테스트 등…)
  • 각 테스트들에 대해 설명해주세요.
  • 로컬 개발 환경에서도 도커를 활용해서 개발하셨는지?
  • OOP를 지향하기 위해 어떤 노력을 할 수 있는지?
  • Layered Architecture에서 Presentation, Application, Domain, InfraStructure layer의 역할에 대해 설명해 주세요.
  • DDD에 대해 알거나 공부해봤는지?
  • DDD에서 Domain이 무엇인지?
  • CQRS, 이벤트 소싱에 대해 아는지?
  • 최근 했던 프로젝트의 패키지 구조에 대해 설명해주세요. (선호하는 패키지 구조)
  • Connection Pool을 쓰는 이유는? 단순히 커넥션을 새로 만드는 것과 차이는?
  • 그러면 Connection을 만드는 시간을 제외하고는 다른 장점은 없나요?
  • Connection Pool의 최대치가 1000개, WAS가 5개라고 해보자. 각 WAS는 200개씩의 Connection을 가지는지? 그렇다면 6번째 WAS가 추가된다면 - 6번째에는 아무런 Connection도 할당되지 않는지?
  • SOLID중 한가지 설명해주세요.
  • 재귀의 장점, 단점?
  • Sync vs. Async 차이
  • MyISAM과 InnoDB의 차이점
  • 단방향 암호화의 장점이 뭐냐
  • GET/POST의 차이는?
  • HTTP vs. HTTPS의 차이는?
  • XSS 에 대해 설명해주세요
  • XSS 를 막기 위해서는 어떤 방법이 있는지?
  • 인증 토큰 방식과 세션을 통한 인증 방식은 어떤 점에서 다른지?
  • 백엔드 단에서 성능을 올릴 수 있는 방법은?
  • 데이터베이스에서 왜 여러 테이블을 두는지?
  • 최근에 했던 프로젝트 구조를 화이트보드 이용해서 설명해주세요.
  • Inner Join과 Outer Join에 대해 설명해주세요.
  • 보통 면접에선 이런거 물어보던데~ 했는데 혹시 저희가 물어보지 않아서 아쉬웠던 질문이 있나요? 있으시면 질문과 함께 답변 해주세요.
  • 마지막으로, 준비 많이 해왔는데~ 또는 이건 꼭 답하고 가고 싶다 하는 내용 있으신가요?
  • Github의 장점은?
  • Git에서 써본 명령어들은 어떤게 있나요?
  • 그 명령어들에 대해서 설명해주세요.
  • 코드 스멜을 느끼게 되는 기준은 어떻게 되시나요?
  • 코드 스멜을 느끼게 되는 것을 경험 기반으로 설명해주세요.
  • Blue-Green 배포에 대해 설명해주세요.
  • 구현 하신 부분에서 개선할 점이 있다면 어떤 것이 있는지?
  • 그 외에 무중단 배포 방법 아시는 것 설명해주세요.
  • 쿠키에 대해서 설명해주세요.
  • 로컬 스토리지에 대해 설명해주세요.
  • 프론트와 API 서버간에 어떻게 통신을 하는지, 구현을 어떻게 했는지 설명해주세요
  • HTTP Method에 대해서 각각 설명해주세요.
  • PUT은 update만 되나요?
  • CLOSE_WAIT, TIME_WAIT에 대해 설명해주세요.
  • 이벤트 같은 것을 할 때(순간적으로 트래픽이 높아질 수 있는 순간) 아키텍처적으로 어떻게 설계할 것인지?
  • 쿼리 잘 짜세요?
  • Web Server와 WAS의 차이점, 각각 설명해주세요.
  • 사용할 수 있는, 사용해본 프로그래밍 언어는 어떤 것들이 있는지? 각각 어느정도의 수준인지?
  • 정규표현식에서 =?를 부르는 이름은? 그 외 정규표현식 질문들 (어떤 정규표현식이 뜻하는 의미 해석이라던가)
  • WebSocket 사용할 때 기본 프로토콜을 사용했는지? 아니면 직접 구현한 프로토콜을 사용했는지? (어떤 의미인지 모르겠음)
  • Reactive programming과 Observable에 관해 설명해주세요.
  • Reactive programming과 함수형 프로그래밍은 어떤 차이가 있는지 각각 어떤 특징이 있는지 설명해주세요.
  • 정적타이핑 언어와 동적타이핑 언어의 장, 단점을 설명해주세요.
  • Http 제외하고 다른 프로토콜에 대해 아시는 거 설명해주세요.
  • Non Blocking I/O와 Blocking I/O에 대해서 설명해주시고, 각각 어떤 곳에 사용되는지 예시를 들어주세요.
  • List의 장점을 Array와 비교하여 설명해주세요.
  • 테스트가 무엇인가요?
  • 테스트를 왜 작성하셨나요?
  • 본인만의 리팩토링에 대한 정의?
  • 리팩토링은 어느 시점에 해야할까요?
  • 유연한 코드는 무엇인가요?
  • 응집도 vs. 결합도
  • 테스트하기 쉬운 코드는 어떤 코드인가요?

Spring 질문

  • Spring에서 DI나 IOC 개념을 설명해주세요.
  • Spring에서 Service, Controller, Repository annotation의 차이점
  • Controller, RestController는 뭐가 다른가요? 응답이 어떻게 다른가요?
  • Spring에서 서비스와 컴포넌트의 차이
  • 다른 프레임워크들도 많이 있는데, 특별히 Spring boot를 사용한 이유가 있는지?
  • IoC Container 직접 만든다면 어떻게 구현하실 생각인가요?
  • 스프링에서 빈 등록 방법
  • Spring MVC 설명
  • Spring MVC 에서 요청이 들어왔을 때부터 응답이 나갈 때까지의 흐름을 설명해주세요.
  • ControllerAdvice가 무엇인가요?
  • Interceptor와 Filter 차이
  • Field 주입과 생성자 주입, Setter 주입
  • Spring Web MVC에서 요청이 들어와서 Database까지의 흐름
  • AOP에 대해 설명해주세요
  • SpringBoot 왜 쓰셨나요?
  • SpringBoot의 장점은 무엇인가요?

JPA 질문

  • ManyToOne 쓴 이유는? 반대쪽에서 OneToMany 쓸수도 있지 않나요?
  • JPA를 왜 쓰나요?(ORM이 나오게 된 이유) 어떤 장점이 있죠?
  • 쓰면서 불편한 점 없었는지?
  • Hibernate는 뭘까요?
  • Open Session In View
  • JPA 사용할때랑 직접 SQL 사용할때랑 어떤 차이?
  • @transactional 동작 과정
  • readOnly 붙인 이유
  • JPA FetchType
  • LAZY와 EAGER 각각 어떤 기준으로 사용하시는지?
  • N+1 문제
  • 엔티티 매핑을 할 때 ManyToOne을 lazy로 설정해주지 않았던 이유
  • JPA 사용하면서 맞닥뜨린 문제 있는지?
  • 본인이 생각하기에 칼럼이 많고 적고의 기준은 어떻게 되는지?
  • JPA에서 PK는 어떻게 설정하는지?
  • Java 관련 질문

  • 객체가 JVM 메모리에 저장될 때 어디에 저장되는지?
  • Stream이 무엇인가요?
  • 롬복이 생성하는 메서드가 어느 시점에서 생성되는 지 아는지?
  • 메서드를 분리하는 자신만의 기준이 있는지?
  • REST Docs 왜 썼는지?
  • StringBuilder와 StringBuffer
  • HashMap의 시간 복잡도 말해주세요.
  • 해당 사전에서 단어의 일부분으로 검색할 수 있는 일종의 자동완성 기능을 추가하려고 한다. 예를 들어 a를 찾으면 a로 시작하는 단어 5개, - ap로 찾으면 ap로 시작하는 단어 상위 5개, 이걸 어떤 식으로 구현할 것인지?
  • Enum, 추상 클래스 어떤 식으로 사용했는지 설명해주세요.
  • domain package에 repository, entity 들어있는데 그렇게 한 이유?
  • 그러면 domain은 무엇인가요?
  • Integer 하나만 있는 Vo 객체를 만든 이유는 무엇인가요?
  • 자바 디자인패턴 아는 것 중 하나 설명해주세요.
  • Checked Exception은 언제 사용하나요?
  • Unchecked, Checked Exception 차이가 뭔가요?
  • Custom Exception은 다 RuntimeException 상속 했는데, 특별한 이유가 있는지?
  • equals and hashcode 재구현한 이유?
  • JVM과 GC에 대해 설명해주세요.
  • GC가 언제 동작하는지 설명해주세요.
  • JUnit의 생명주기에 대해 아는지?
  • Java의 세 가지 변수에 대해 JVM 메모리와 연관지어 설명해주세요.
  • Generic을 쓰는 이유는?
  • Java에서 동일한 String을 새로 만들 때마다 객체가 생성되는지?
  • 예를 들어 String a = Apple; 해놓고, String b = Apple;하면 String b를 위한 공간이 새로 할당 되는지?
  • Java에서 람다가 무엇인지 말씀해주세요.
  • JVM 기반 언어의 특징을 설명해주세요.
  • Java 8 에서 나온 Date, Time API에 대해 아는대로 말씀해주세요.
  • Overloading, Overriding을 각각 설명해주세요.
  • String을 ==로 비교하면 안되는 이유를 설명해주세요.
  • Integer.MIN_VALUE에는 어떤 값이 들어가있나요? 어떤 컴퓨터에서 찍어도 동일한 값인가요?
  • JUnit 4 와 JUnit 5의 차이를 설명해주세요.

Kotlin 관련 질문

  • Kotlin과 Java의 차이점과 kotlin은 어떤 장점이 있는지?
  • Kotlin의 coroutine?

Javascript 관련 질문

  • ES6 랑 ES5 차이를 설명해주세요.
  • const 가 뭔가요?
  • function() 이랑 arrow function이랑 차이가 뭔가요? 어떤 기준에서 각각 사용하셨나요?

손코딩 테스트

입력 문자열을 거꾸로 출력하는 코드를 짜주세요. Stack에서 계속해서 push/pop 되는 상황에서 O(1)로 최소값을 찾는 스택 구현 Array에서 index와 값이 일치하는 index 찾기(정렬된 배열) 예시로 -10, -4, -3, -1, 0, 1, 4, 7, 10, 13, 15 이런식이면 7이 답