Skip to content

Latest commit

 

History

History
291 lines (256 loc) · 27.4 KB

README.md

File metadata and controls

291 lines (256 loc) · 27.4 KB

level-interview

Level 1

Java

  1. 접근 제어자의 차이점
  2. 인터페이스와 추상 클래스의 차이
  3. 원시값 포장과 VO의 차이
  4. static과 non-static의 차이
  5. 생성자 체이닝이 무엇이고 필요한 이유
  6. 일급 컬렉션이 무엇이고 사용하는 이유
  7. Checked Exception과 Unchecked Exception의 차이
  8. String Pool이 무엇이고 사용하는 이유
  9. Stack 대신 Deque를 사용하는 이유
  10. equals와 hashCode를 사용하는 이유
  11. String, StringBuffer, StringBuilder의 차이
  12. Java 파일이 실행되는 과정
  13. Optional에 대한 설명과 사용 시 주의사항
  14. try-with-resources에 대해 설명
  15. Reflection에 대한 설명과 장단점
  16. Enum의 장단점
  17. for문과 Stream 비교
  18. final 키워드에 대해 설명
  19. 동등성과 동일성의 차이
  20. Java Stream API란
  21. 익명함수와 람다 표현식에 대해 설명
  22. 컬렉션 프레임워크란
  23. 깊은 복사(deep copy)와 얕은 복사(shallow copy)에 대해 설명
  24. 함수형 인터페이스(Functional Interface)란
  25. JDBC란
  26. 제네릭이란
  27. 가비지 컬렉션이란
  28. 오버로딩과 오버라이딩의 차이
  29. synchronized 키워드에 대해 설명
  30. ArrayList와 LinkedList의 차이
  31. Sealed 클래스란
  32. Wrapper Class, Boxing, Unboxing 차이
  33. JVM 메모리 영역에 대해 설명
  34. 표준 예외와 커스텀 예외의 장단점
  35. Set과 List의 차이
  36. Inner Class의 특징
  37. 직렬화와 역직렬화에 대해 설명
  38. Record 클래스란
  39. Atomic Type이란

OOP

  1. 좋은 객체의 정의
  2. SOLID 원칙에 대한 설명
  3. God Class를 지양하는 이유
  4. Getter를 지양하는 이유
  5. 상속을 사용하는 이유
  6. 상속과 조합 비교
  7. 원시 값을 포장하는 이유
  8. 응집도와 결합도 비교
  9. 의존성에 대한 설명과 높은 의존성의 단점
  10. 캡슐화에 대한 설명과 장단점
  11. instanceof를 지양하는 이유
  12. 디미터 법칙에 대한 설명과 장단점
  13. MVC 패턴을 사용하는 이유
  14. 도메인이 뷰에 대한 의존을 지양하는 이유
  15. 싱글톤 패턴에 대한 설명과 사용 경험
  16. 템플릿 메서드 패턴에 대한 설명과 사용 경험
  17. 전략 패턴에 대한 설명과 사용 경험
  18. 상태 패턴에 대한 설명과 사용 경험
  19. 커맨드 패턴에 대한 설명과 사용 경험
  20. 캐싱의 장단점

Clean Code

  1. 클린코드에 대한 개인적인 견해
  2. 가독성이 높은 코드를 작성하기 위한 개인적인 노력
  3. 자바 네이밍 컨벤션에 대 설명
  4. 미션을 진행하면서 랜덤 값을 테스트한 경험
  5. 주석 장단점
  6. 좋은 예외 처리에 대한 개인적인 견해
  7. 명확하지만 너무 긴 메서드명 vs 명확하지 않지만 짧은 메서드명
  8. null, optional, 널 객체 특징과 어떤 방식을 선호하는지 근거와 함께 설명
  9. null 리턴의 장단점
  10. 인자가 많은 메서드의 장단점
  11. 정적 팩토리 메서드의 장단점
  12. 불변성에 대한 설명과 장단점
  13. 불변 객체와 가변 객체의 차이점
  14. 방어적 복사와 불변 컬렉션을 사용하는 상황
  15. 멤버변수가 많은 클래스의 장단점

Test

  1. 자신만의 테스트 철학
  2. 테스트 코드를 작성하는 이유
  3. 단위 테스트에 대한 설명
  4. 본인이 생각하는 좋은 테스트 코드의 특징
  5. @BeforeEach를 사용한 테스트의 장단점
  6. 주어진 테스트 코드의 문제점
  7. 테스트 대역 종류와 사용 상황 설명
  8. assertJ와 junit의 차이점
  9. TDD의 장점과 TDD를 해본 소감
  10. 예외 메세지 테스트에 대한 개인적인 견해
  11. 테스트에서만 필요한 메서드에 대한 개인적인 견해
  12. private 메서드를 테스트해야하는 지에 대한 개인적인 견해
  13. 테스트 커버리지가 높다고 무조건 좋은지에 대한 개인적인 견해
  14. 테스트 코드에서 리플렉션을 이용한 extracting 메서드에 대한 개인적인 견해

Level 2

Database

  1. Transaction Schedule이란?
  2. 비관락, 낙관락에 대한 설명
  3. 페이지네이션과 무한 스크롤링의 차이
  4. CAP
  5. OLAP, OLTP에 대한 개념 및 차이
  6. 인덱스에 대한 설명과 구조
  7. 트랜잭션에 대한 설명과 특성(ACID)
  8. 트랜잭션 Isolation Level에 대한 설명
  9. 정규화에 대한 설명과 장단점
  10. DB Lock의 종류
  11. FK 지정 시 주의해야 할 점
  12. 인메모리 데이터베이스의 특징

Network

  1. 포트에 대한 설명
  2. Private IP와 Public IP의 차이
  3. TCP와 UDP의 차이점
  4. TCP/IP 인터넷 프로토콜 스위트
  5. TCP 3-way handshake
  6. Connection Timeout, Socket Timeout, Read Timeout의 차이
  7. 서브넷 마스크에 대한 설명
  8. CIDR에 대한 설명
  9. Classless Routing 도입한 이유
  10. 검색창에 www.techcourse.woowahan.com을 검색하면 결과가 브라우저에 렌더링되기 전까지 어떤 일이 발생할까요?
  11. URI, URL, URN에 대한 설명
  12. WAS와 웹서버의 차이
  13. HTTP 메시지 구성에 대한 설명
  14. HTTP GET과 POST에 대한 설명
  15. HTTP PATCH와 PUT의 차이
  16. HTTP Status Code에 대한 설명
  17. HTTP, HTTPS의 차이와 HTTPS 동작 방식
  18. HttpOnly 쿠키 옵션을 설정하는 이유
  19. Http 멱등성
  20. CORS 에러에 대한 설명
  21. PRG 패턴에 대한 설명
  22. RESTful에 대한 설명
  23. PathVariable과 QueryParam의 차이와 주 사용처에 대한 설명
  24. Cookie와 Session의 차이
  25. 블로킹, 논블로킹, 동기, 비동기에 대한 설명

Spring Boot

  1. 톰캣이란 무엇인가?
  2. AutoConfiguration 동작 원리
  3. Spring과 Spring Boot의 차이

Spring Core

  1. @Value 어노테이션 사용 시 주의할 점
  2. AOP란
  3. 빈 스코프란
  4. 빈 주입 방식 4가지
  5. IoC Container과 Bean의 기본 개념
  6. BeanFactory와 ApplicationContext의 차이
  7. @Component, @Service, @Controller, @Repository의 차이
  8. @Configuration과 @Component의 차이
  9. jakarta.validation과 org.springframework.validation 차이
  10. Spring을 사용하는 이유와 장단점
  11. @Profile이란
  12. Spring Properties란
  13. @ConfigurationProperties의 장점
  14. CGLIB에 대한 설명과 동작방식

Spring Data

  1. JPA를 사용하는 이유
  2. JPA, Hibernate, Spring Data JPA의 차이점
  3. JPA에서 새로운 Entity인지 판단하는 방법
  4. ddl-auto 옵션에 대한 설명
  5. 엔티티 매니저에 대한 설명
  6. 더티 체킹 동작 방식에 대한 설명
  7. 영속성 컨텍스트에 대한 설명
  8. 엔티티의 생명주기에 대한 설명
  9. JPA Entity에서 기본 생성자가 필요한 이유
  10. JPA에서 ID 생성 전략에 대한 설명
  11. JPA 엔티티에 대한 equals 재정의 시 주의해야할 점
  12. JPA에서 양방향 연관관계가 필요한 경우와, 사용할 때 주의할 점
  13. 즉시 로딩과 지연 로딩의 차이점
  14. N + 1 문제와 해결 방법
  15. @OneToMany에서 fetch join과 페이지네이션 API 함께 사용하면 발생하는 일
  16. @Embedded와 @Embeddable의 차이점
  17. @EntityGraph와 fetchJoin의 차이점
  18. @OneToOne 연관관계일 때 지연 로딩으로 설정하면 발생하는 일
  19. @Modifying에 대한 설명과 주의사항
  20. JPQL과 JPA 기본 메소드, 쿼리 메소드의 차이점
  21. cascade.REMOVE 와 orphanRemoval의 차이
  22. @JoinColumn 과 mappedBy 속성에 대한 설명
  23. @Transactional(readOnly = true)를 적용했을 때와 아무 어노테이션을 적용하지 않았을 때 차이
  24. @Transactional에 readOnly 옵션을 사용하는 이유
  25. @Transactional 전파 속성에 대한 설명
  26. @Transactional에 대한 설명
  27. OSIV 옵션에 대한 설명
  28. 왜 JpaRepository를 impelement한 인터페이스를 사용하기만 하는데, save()와 같은 함수를 통해 DB에 저장할 수 있나?

Spring MVC

  1. ExceptionHandler은 어떻게 작동하는지
  2. @ResponseBody(or ResponseEntity)가 있을 때와 없을 때의 동작 방식 차이
  3. Filter와 Interceptor의 차이
  4. Spring MVC의 실행 흐름에 대해 설명
  5. @Controller 와 @RestController 의 차이
  6. ControllerAdvice에 대해 설명
  7. RequestBody와 ModelAttribute 차이

Spring Test

  1. Classist vs Mockist
  2. Spring Test에서 @Mock과 @Spy의 차이
  3. 단위 테스트, 통합 테스트, 슬라이스 테스트, 인수 테스트
  4. 스프링 테스트에서 @Autowired 어노테이션을 달아줘야만 객체 주입이 되는 이유
  5. MockMvc와 Restassued의 차이점
  6. SpringBootTest의 WebEnvironment 설정 종류
  7. SpringBootTest와 WebMvcTest의 차이
  8. 테스트 격리 방법과 차이

Spring 뒷고기

  1. 배포 환경 민감 정보(시크릿 키, DB 비밀번호 등)를 숨기는 방법
  2. openapi vs swagger
  3. 서블릿이란?
  4. SSR과 CSR의 차이
  5. RestDocs와 Swagger의 장단점
  6. RestTemplate vs RestClient vs WebClient vs Feign
  7. JWT가 무엇이고, 세션 대신 사용하는 이유
  8. Dto와 Entity의 변환 layer는 어디가 적당한가?
  9. Repository, DAO의 차이와 패키지 구조
  10. Layered Architecture의 장점

Level 3

컴퓨터구조

  1. 명령어 사이클
  2. CPU 성능 높이는 방법
  3. 명령어 파이프라이닝과 해저드
  4. 명령어 병렬 처리 기법
  5. CISC와 RISC
  6. DRAM, SRAM 차이
  7. 물리주소와 논리주소, 메모리 보호 기법
  8. 참조 지역성
  9. 하드디스크 접근 시간
  10. RAID
  11. 인터럽트 기반 입출력, DMA 입출력

운영체제

  1. 이중 모드와 시스템 콜
  2. 프로세스
  3. 스레드
  4. 컨텍스트 스위칭
  5. IPC
  6. CPU 스케줄링 알고리즘
  7. 프로세스 간 동기화 기법
  8. 데드락
  9. 메모리 스와핑
  10. 연속 메모리 할당과 외부 단편화
  11. 가상 메모리
  12. 페이징
  13. 페이징 이점
  14. 계층적 페이징
  15. 페이지 교체 알고리즘
  16. 프레임 할당 방식과 스레싱
  17. 파일 할당 방법
  18. 파일 시스템(FAT,UNIX)
  19. 마운트

미션 뒷고기

  1. 어드민 뒷고기
  2. 멤버 뒷고기
  3. 웨이팅 뒷고기
  4. 결제 뒷고기