Skip to content

레벨1,2는 레벨 인터뷰가 없어 직접 만들어본 레벨 인터뷰 스터디 (스터디 내용 확인은 Discussions)

License

Notifications You must be signed in to change notification settings

woowacourse-study-2024/level-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

level-interview

레벨1: JAVA

객체지향 기초 개념

  1. 클래스, 인스턴스 그리고 객체의 차이점은 무엇인가요?

상속

  1. 추상 클래스와 인터페이스는 어떤 상황에서 사용할 수 있나요?
  2. 추상클래스와 인터페이스의 차이를 설명해주세요.
  3. 상속과 조합은 각각 무엇이고 어떤 상황에서 사용할 수 있나요?
  4. 상속이 갖는 문제점은 무엇이고 이를 어떻게 해결할 수 있나요?
  5. default 메서드는 무엇이고, 왜 사용하나요?

다형성

  1. Java에서 다형성을 구현하는 방법은 무엇이 있나요?
  2. Overriding의 조건은?
  3. method overridding과 overloading의 차이점은 무엇인가요?
  4. 다형성은 무엇이고, 사용했을 때 어떤 이점을 얻을 수 있나요?

캡슐화

  1. 클래스의 변수를 public이 아닌 private으로 설정하고 getter/setter를 사용하는 이유가 있나요?
  2. Java에서 접근 제어자에 대해 설명해주세요.

추상화

  1. 강한 결합과 느슨한 결합의 차이를 설명해주세요.

JVM

  1. Java 파일이 실행되는 과정을 설명해보세요.
  2. 클래스와 인스턴스는 JVM내에서 어떻게 동작하나요?
  3. JVM이란 무엇이고 왜 사용하나요?
  4. JRE, JDK, JVM이 각각 무엇이고 어떤 관계인지 설명해주세요.
  5. JVM의 구조에 대해 설명해주세요.
  6. JVM의 Runtime Data Area에 대해 설명해주세요.
  7. JVM의 ClassLoader에 대해 설명해주세요.

GC

  1. GC가 무엇이고 언제 발생하는지 설명해주세요.
  2. Stop the world 이벤트가 무엇인지 설명해주세요.
  3. Major GC와 Minor GC에 대해 설명해주세요

리소스 관리

  1. Java에서 어떤 경우에 리소스 반납을 해야 하나요?
  2. Try-with-resources는 어떻게 사용하나요?

불변성과 복사

  1. 가변과 불변의 차이는 무엇인가요?
  2. 깊은 복사와 얕은 복사의 차이점은 무엇인가요?
  3. unmodifiable 자료형을 사용하는 것과 copyOf를 사용하는 것은 어떤 차이점이 있나요?
  4. 방어적 복사는 무엇이고 왜 필요한가요?
  5. String, StringBuilder, StringBuffer의 차이점은 무엇인가요?

동일성 & 동등성

  1. 동등성과 동일성의 차이에 대해서 설명해주세요
  2. Equals&HashCode는 언제 재정의해서 사용할까요? 그리고 그 둘을 항상 같이 재정의해야하는 이유도 설명해주세요.

타입 안정성

  1. 제네릭이란 무엇이며 언제 사용할까요?
  2. Enum은 무엇이며 어떤 상황에 사용할 수 있을까요?
  3. Varargs는 무엇이며 언제 사용할 수 있을까요?

예외

  1. 예외의 종류는 무엇이 있을까요? 그리고 각 예외 종류에 따라 어떤 특징이 있는 지 설명해주세요.

Serializable

  1. Serializable 인터페이스는 어떤 역할을 하나요?
  2. Serializable 대신 사용할 수 있는 다른 직렬화 방법에는 어떤 것이 있나요? 각각의 장단점을 설명해주세요.

Java 8

Optional

  1. 자바에서 null을 안전하게 다루는 방법에 대해 설명해주세요.
  2. Optional이란 무엇이며, 어떤 문제를 해결하기 위해 도입되었나요?
  3. Optional을 사용할때 주의해야 할 부분은 어떤 것이 있을까요?

Stream

  1. Java Stream API에 대해 소개해주세요.
  2. 스트림과 for-loop의 차이점을 설명해보세요.
  3. Stream API를 사용할 때의 성능 고려사항에 대해 말해보세요.
  4. 자바 스트림 API와 함수형 인터페이스의 관계를 설명해주세요.

함수형 인터페이스

  1. 함수형 인터페이스는 무엇이고 어떻게 사용할 수 있나요?
  2. 자바에서 제공하는 기본 함수형 인터페이스의 종류와 각각의 용도를 설명해주세요.
  3. 람다와 익명 클래스는 어떻게 다르고 각각의 장단점은 무엇인가요?
  4. 함수형 인터페이스에 @FunctionalInterface 어노테이션을 사용하는 이유는 무엇인가요?

컬렉션

  1. JCF란 무엇인가요?
  2. 10개의 element 를 채워넣은 ArrayList 의 11번째 element 을 add 하기위해 어떤 일이 일어나는지 설명해주세요.
  3. Array와 List의 차이점은 무엇인가요?
  4. ArrayList는 어떻게 동작하나요?
  5. Stack 대신 ArrayDeque 사용을 제안하는 이유는 무엇인가요?
  6. ArrayList의 indexOf를 사용할 때 어떤 주의점이 있나요?
  7. Set과 List의 차이점은 무엇인가요?
  8. HashMap에서 Hash 충돌이 발생하면 어떤 일이 일어나나요?
  9. Java8에서부터 HashMap이 어떻게 개선됐는지 설명해주세요

자료구조

  1. Tree 탐색 방법에는 어떤 것들이 있나요?
  2. Binary Tree는 무엇인가요?
  3. B-Tree는 무엇이고 어떨 때 사용할 수 있나요?
  4. Set 자료구조에 대해 설명해주세요
  5. Queue는 어떻게 동작하나요?
  6. Stack은 어떻게 동작하나요?
  7. Map 자료구조에 대해 설명해주세요.
  8. Heap 자료구조에 대해 설명해주세요.
  9. Heap은 어떤 경우에 사용할 수 있나요?

테스트

  1. 테스트 픽스처란 무엇인가요?
  2. TDD란 무엇인가요?
  3. 단위테스트애서 AAA는 무엇을 의미하나요?
  4. JUnit5의 주요 특징과 JUnit4와의 차이점에 대해 설명해 주세요.
  5. AssertJ란 무엇이며, Junit과 AssertJ를 함께 사용하는 이유를 말씀해주세요
  6. FIRST 원칙이란 무엇이며, 각각의 원칙을 설명해 주세요.
  7. FIRST 원칙 중 가장 중요하다고 생각하시는 원칙이 무엇인가요?
  8. 단위 테스트를 작성하는 데에 FIRST원칙이 중요한 이유를 설명해주세요
  9. 테스트 더블이란 무엇이며 종류로는 무엇이 있나요?
  10. 각 종류의 테스트 더블(Stub, Fake, Dummy, Spy ,Mock) 은 언제 사용하나요?
  11. 자바의 Mockito 라이브러리에 대해서 설명해주세요.
  12. 테스트더블 중 stub과 mock 차이를 설명해주세요.
  13. 테스트더블 중 Spy는 어떤 상황에서 사용되나요?

디자인 패턴

  1. MVC 패턴이란 무엇이고, 왜 사용하나요?
  2. 디자인 패턴의 개념과, 사용이유, 종류에 대해 설명해주세요.
  3. Builder 패턴을 사용하는 상황은 언제이며, 이를 통해 얻을 수 있는 이점은 무엇인가요?
  4. 추상 팩토리는 왜 사용하며, 어떤 장단점이 있나요?
  5. 팩토리 메서드 패턴이란 무엇이며, 어떤 상황에서 유용하게 사용될 수 있는지 설명해 주세요.
  6. 추상 팩토리 패턴과 팩토리 메서드 패턴의 차이점은 무엇인가요?
  7. State 패턴을 사용하지 않고 상태 전환을 구현할 때 발생할 수 있는 문제점은 무엇인가요?
  8. Strategy 패턴은 사용하는 이유와 장단점을 설명해주세요.
  9. 템플릿 메서드의 개념과 장단점을 설명하고, 언제 사용할 수 있는지 설명해주세요.
  10. 퍼사드 패턴과 어댑터 패턴를 비교하세요.

레벨 2: Spring

Bean

  1. 스프링의 Bean이란 무엇이고 Bean은 어떻게 정의되고 관리됩니까?
  2. 스프링에서 Bean의 생명주기에 대해 설명해주세요.
  3. 스프링에서 Bean의 스코프(scope)는 어떤 것들이 있으며, 각각의 의미에 대해 설명해주세요.
  4. @Component, @Service, @Controller, @Repostiory의 차이를 설명해보세요.

Bean 생성

  1. 스프링의 IoC 컨테이너에 Bean을 등록할 수 있는 방법 두 가지 주요 방법을 설명해주세요.
  2. 스프링의 @Configuration 애노테이션의 역할에 대해서 설명해주세요.
  3. Component Scan이 무엇인지 설명해주세요.
  4. 스프링의 컴포넌트 스캔에 대해서 설명해주세요.
  5. Spring boot에서 별도로 @ComponentScan 어노테이션 설정을 하지 않아도 빈 등록이 가능한 이유는 무엇인가요?
  6. 스프링에서 Default로 등록된 Bean 과, @Configuration에 정의한 Bean이 같은 타입의 객체라면 무슨 일이 발생하나요?

IoC/DI

  1. 스프링의 IoC(Inversion Of Control)와 DI(Dependency Injection)에 대해서 설명해주세요.
  2. IoC와 DI(Dependency Injection)의 차이점에 대해서 설명해주세요.
  3. Application Context가 무엇인지 설명해주세요.
  4. Application Context의 초기화 과정을 설명해주세요.
  5. Bean Factory와 Application Context의 차이점을 설명해주세요.
  6. 스프링에서의 의존성 주입 방법 3가지를 설명해주세요

MVC Config

  1. @EnableWebMvc 어노테이션의 역할과 이를 사용했을 때의 효과를 설명해 주세요.
  2. Spring에서 MVC Config를 사용하여 어떤 설정을 할 수 있나요?
  3. WebMvcConfigurer를 구현할 때 자주 사용하는 메서드와 그 용도를 설명해 주세요.
  4. Spring MVC에서 뷰 이름이 요청 경로와 일치하지 않을 경우, View Resolver를 통해 이를 어떻게 해결할 수 있나요?

Argument Resolver

  1. Arguement Resolver란 무엇인가요, 왜 사용하나요?
  2. 커스텀 Argument Resolver를 구현할 때, WebMvcConfigurer의 addArgumentResolvers 메서드의 용도는 무엇인가요?

View Reoslver

  1. 여러 개의 View Resolver를 사용하는 경우, 그 우선순위는 어떻게 정해지나요?
  2. View Resolver란 무엇인가요, 왜 사용하나요?

Auto Configure

  1. Auto Configuration이란 무엇이고, 어떻게 동작하는지 설명해주세요.
  2. @EnableAutoConfiguration 어노테이션의 역할은 무엇인가요?
  3. Spring Boot의 Auto Configuration이 application.yml 파일의 설정과 어떻게 연관되는지 설명해 주세요.

Dispatcher Servlet

  1. Dispatcher Servlet이란 무엇이고, 왜 사용하나요?
  2. Dispatcher Servlet이 요청을 처리하는 흐름을 설명해 주세요.

Interceptor / Filter

  1. 여러 개의 Interceptor가 동일한 mapping에 등록된다면 어떤 순서로 동작하나요?
  2. Interceptor는 어떤 상황에서 주로 사용하나요?
  3. Interceptor와 Filter가 각각 무엇이고 어떤 차이점을 가지는지 설명해주세요.

Controller Advice

  1. Controller Advice 사용 시의 이점과 주의점을 말해주세요.
  2. Controller Advice는 무엇이고 어떤 상황에서 주로 사용하나요?

AOP

  1. AOP란 무엇인가요?
  2. Spring AOP에서 주의사항으로 무엇이 있나요?
  3. 스프링에서 사용되는 AOP의 주요 용어에 대해 설명해주세요.
  4. AOP를 언제 사용하고 왜 사용하나요? 장단점은 무엇인가요?
  5. Spring에서 어떤 프록시를 사용하나요?

Transaction

  1. Transactional 어노테이션의 동작 원리에 대해 설명해주세요.
  2. Transactional 어노테이션에 대해 설명해주세요.
  3. Transactional 어노테이션의 readOnly 옵션을 true로 설정하는 이유는 무엇인가요?
  4. 선언적 트랜잭션 방식을 사용하는 이유는 무엇인가요?
  5. Transactional의 전파에 대해 설명해주세요.

JDBC / SQL Mapper

  1. JDBC Template과 표준 JDBC API의 차이점은 무엇인가요?
  2. JDBC Template을 사용했을 때의 장점은 무엇이 있나요?
  3. JDBC Template과 표준 JDBC API의 차이점은 무엇인가요?
  4. SQL Mapper란 무엇이고, 어떤 이점을 누릴 수 있나요?

ETC

  1. @Controller와 @RestController의 역할과 차이점은 무엇인가요?
  2. ReponseBody와 ResponseEntity의 차이는 무엇인가요?

레벨2: JPA

엔티티

  1. JPA에서 엔티티(Entity)란 무엇이며, 이를 매핑하기 위한 기본 어노테이션은 무엇인가요?
  2. 엔티티에서 기본 생성자가 왜 필요한가요?
  3. JPA에서 엔티티의 기본 키 생성 전략을 설정하는 방법에는 어떤 것들이 있나요?
  4. @Embedded와 @Embeddable 어노테이션의 차이점과 사용 방법을 설명해 주세요
  5. @Table 어노테이션의 역할과 주요 속성에 대해서 설명해주세요.
  6. @Lob 어노테이션을 사용할 때 데이터베이스의 BLOB/CLOB 타입과의 매핑 과정에 대해 설명해주세요. 이 어노테이션을 사용할 때의 성능 문제는 무엇인가요?
  7. JPA에서 엔티티의 생명 주기 상태는 어떤 것이 있으며, 각각의 상태에 대해 설명해 주세요.
  8. @Transient 어노테이션의 역할과 사용 목적을 설명해주세요.
  9. @Access 어노테이션의 역할과 사용 목정에 대해서 설명해주세요.

영속성 컨텍스트

  1. 영속성 컨텍스트란 무엇이며, 그 역할은 무엇인가요?
  2. 영속성 컨텍스트를 통해 얻을 수 있는 이점에 대해 설명해 주세요.
  3. Flush와 Clear의 차이점은 무엇인가요?
  4. EntityManagerFactory와 EntityManager의 차이점은 무엇인가요?
  5. 영속성 컨텍스트는 언제 자동으로 플러시되나요?
  6. 1차 캐시, 2차 캐시에 대해 설명해주세요.

로딩 전략 및 성능 최적화

  1. 즉시 로딩과 지연 로딩이 무엇인지 설명해주세요
  2. JPA에서 Lazy Loading과 Eager Loading의 차이를 설명해 주세요.
  3. N+1 문제란 무엇이며, 이를 해결하기 위한 방법은 무엇인가요?
  4. N+1 문제가 무엇이고 어떻게 해결할 수 있는지 설명해주세요
  5. @EntityGraph 와 fetch join의 차이점을 설명해주세요
  6. fetchJoin과 페이징을 함께 시도하면 어떤 문제가 발생하고 어떻게 해결할 수 있나요?

연관관계

  1. @ManyToOne , @OneToMany , @OneToOne 어노테이션에 대해 설명해주세요
  2. @JoinColumn의 역할과 사용시 주의점을 설명해주세요
  3. JPA CascadeType.REMOVE와 orphanRemoval = true가 각각 무엇이고 어떤 차이점이 있는지 설명해주세요
  4. 연관관계의 주인이 무엇이며 왜 명확히 해야 하는지 설명해주세요
  5. 양방향 연관관계를 맺을 경우의 주의점을 설명해주세요

쿼리

  1. JPQL을 통해 Update, Delete 쿼리 사용 시 발생할 수 있는 문제점과 해결방안을 설명해주세요

트랜잭션 & 동시성 제어

  1. @Version 어노테이션을 활용해 낙관적 락을 시도할 때 연관된 엔티티간의 버전 관리 문제를 어떻게 처리할 수 있을까요?
  2. @Version 어노테이션의 역할과 이를 통해 데이터베이스에서 낙관적 락을 구현하는 방법에 대해 설명해주세요.

기타 설정

  1. JPA에서 데이터베이스 스키마를 자동 생성하도록 설정하는 방법을 설명해주세요.

레벨3: 데이터베이스

  1. 무결성이란 무엇인가요? 그리고 무결성 제약조건이란 무엇인까요?
  2. 무결성 제약조건의 종류에 대해서 설명해주세요
  3. 기본 키(Primary Key)와 고유 키(Unique Key)의 차이점은 무엇인가요?
  4. 어떤 경우에 무결성 제약조건을 사용하지 않는 것이 좋다고 생각하나요?
  5. 외래 키(Foreign Key)의 역할은 무엇이며, 데이터 무결성에 어떤 도움을 주나요?
  6. 무결성 제약조건을 적용할 때 성능 이슈가 발생할 수 있는 상황은 어떤 경우인가요?
  7. 외래 키 제약조건이 있는 테이블에서 데이터 삭제를 할 때 발생할 수 있는 문제는 무엇이며, 이를 해결하기 위한 방법은 무엇인가요?
  8. 외래 키 제약조건과 관련이 있는 CASCADE와 CASCADE의 장단점에 대해서 설명해주세요.

정규화

  1. 데이터베이스 정규화가 무엇인가요?
  2. 데이터베이스에서 발생할 수 있는 이상 현상의 종류에 대해 설명해주세요.
  3. 함수 종속성이 무엇이고 어떤 종류가 있는지 설명해주세요.
  4. 1 정규형에 대해 설명해주세요.
  5. 2 정규형에 대해 설명해주세요.
  6. 3 정규형에 대해 설명해주세요.
  7. BCNF, 4, 5 정규형에 대해 설명해주세요.
  8. 데이터베이스의 정규화는 왜 필요한가요?
  9. 과도한 정규화 적용 시 발생할 수 있는 문제점에 대해 설명해주세요.
  10. 반정규화는 무엇이며 왜 적용하나요?

  1. 데이터베이스에서 S-lock과 X-lock에 대해 설명해주세요.
  2. 2단계 락킹이란 무엇인가요?
  3. MySQL에서 사용되는 락에 대해 설명해주세요.
  4. 낙관적 락과 비관적 락의 차이점은 무엇인가요?

트랜잭션

  1. 트랜잭션이란 무엇인가요?
  2. 트랜잭션의 ACID에 설명해주세요.
  3. 트랜잭션 격리수준이 무엇인가요? 어떤 격리수준이 있나요?
  4. 트랜잭션 격리 수준이 낮을 때 발생할 수 있는 문제는 무엇인가요?

인덱스

  1. 인덱스란 무엇이고, 어떻게 동작하나요?
  2. 인덱스에서 사용하는 자료구조를 설명해주세요.
  3. B-Tree 인덱스 사용에 영향을 미치는 요소에 대해 설명해주세요.
  4. 인덱스 스캔 방식의 종류와 특징을 설명해주세요.
  5. 복합 인덱스를 설정할 때 쿼리 성능에 영향을 미치는 요소에 대해 설명해주세요.
  6. 인덱스가 존재함에도 불구하고 쿼리에서 사용되지 않는 경우를 설명해주세요.
  7. 데이터베이스 쿼리가 여러 개의 인덱스를 사용할 수 있는 경우, 어떤 기준으로 인덱스가 선택되나요?

레벨4: 톰캣, 동시성, NIO

Tomcat

  1. Tomcat이 서블릿 컨테이너로서 어떤 역할을 하며, 서블릿과의 관계는 무엇인가요?
  2. Tomcat에서 사용되는 커넥터에 대해 설명해보세요.
  3. Tomcat의 동작 과정을 설명해주세요.
  4. Tomcat을 구성하는 구조에 대해 설명해보세요.
  5. Tomcat에서 실행되는 일반적인 서블릿의 라이프사이클을 설명해주세요.
  6. Tomcat에서는 Thread Pool을 어떻게 관리하나요?
  7. Tomcat의 Session 관리 방법을 설명하세요.
  8. Tomcat은 Static Resource를 어떻게 처리하나요?

동시성

  1. Java에서 동시성을 보장하기 위해 어떠한 해결책들이 존재하는지 설명해주세요
  2. 동시성 문제란 무엇이며 왜 발생하나요
  3. Atomic객체와 그 원리에 대해서 설명해주세요
  4. Java의 synchronized 키워드는 어떻게 작동하나요?
  5. volatile 키워드에 대해서 설명해주세요
  6. Deadlock(교착 상태)이란 무엇이며, Java에서 이를 어떻게 방지할 수 있나요?
  7. Race Condition이란 무엇이며 언제 발생하나요?
  8. 스레드 안전(Thread-Safety)이란 무엇이며, 이를 지키기 위한 4가지 원칙으로 무엇이 있나요?

NIO

  1. NIO의 핵심 개념인 Channel과 Buffer에 대해 설명해 주세요. InputStream 및 OutputStream과는 어떤 차이점이 있나요?
  2. NIO에서 비동기 I/O가 어떻게 작동하는지 설명해 주세요.
  3. Java NIO에서 메모리 매핑 파일(Memory Mapped Files)을 사용하는 이유는 무엇인가요? 전통적인 파일 I/O와 비교해 장점이 무엇인가요?
  4. NIO에서 Selector의 역할은 무엇인가요?

👥 스터디 멤버

Chocochip Eden Clover Lini


📚 학습 범위

  • Java → Spring → DB → 미정
  • Java/Spring의 학습 범위는 프롤로그에서 제공하는 로드맵을 참고하여 20개의 학습 키워드를 정의하고 사다리 타기를 통해 키워드를 5개씩 랜덤으로 나눠가져 질문을 작성한다.


📆 스터디 기간

  • 레벨3 ~ 레벨5
  • 수요일을 시작일로 하여 한 사이클을 2주 로 잡아 진행 (수요일 → 다다음주 화요일)


♻️ 진행 사이클

스크린샷 2024-07-13 16 30 27

질문 작성

  • 학습 범위 중에서 자신의 질문 작성 범위 해당하는 내용의 질문을 질문 작성 기간 동안 인당 10개씩 작성한다.

답변

  • 작성이 완료된 질문은 라운드 로빈 방식으로 인당 10개씩 배정받아 답변 기간 동안 답변을 작성한다.
    • 이때 답변은 공부하는 이가 참고할 수 있도록 세세히 작성하고, 자신이 학습한 래퍼런스 등을 첨부한다.

학습

  • 질문과 답변을 바탕으로 학습 기간을 갖는다.

면접

  • 면접은 오후 6시 이후에 진행하며, 인당 30분씩 면접을 진행한다.
  • 면접관은 면접에서 꼬리질문이 발생 시, 해당 질문의 Discussion에 반드시 기록한다.


🔨 벌칙

  • 정해진 시간 내에 질문 작성 또는 답변 을 작성하지 못한 경우 면접날 스터디원 전원(4명)의 커피를 사온다.

About

레벨1,2는 레벨 인터뷰가 없어 직접 만들어본 레벨 인터뷰 스터디 (스터디 내용 확인은 Discussions)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •