BEYOND SW 캠프 20기 6주차

배창민·2025년 9월 21일
post-thumbnail

6주차 회고록

1. 6주차를 시작하며

이번 주는 자바 심화 내용을 예외처리\&IO → 제네릭스&컬렉션 → Enum&람다 → 스트림&스레드 → SOLID → JUnit까지 한 번에 훑었다. 팀 단위로는 피우다 프로젝트 신청서를 작성하고 기본 UI 뼈대를 잡기 시작했다. 공모전 대비로 스프링 스터디(김영한 강의) 도 착수. 수요일엔 PCSQL 시험을 치렀고, 5문제 중 2문제 해결로 간신히 합격했다.


2. 학습 내용

2-1. 예외처리 & IO

  • 예외 기본기: Error vs Exception, Checked/Unchecked 구분.
    try-catch-finallythrows 위임, try-with-resources로 자원 누수 방지.
  • IO 흐름: 바이트(Input/OutputStream) vs 문자(Reader/Writer) 스트림,
    Buffered 계열로 성능 개선, Data/Object 스트림으로 형/객체 입출력.

2-2. 제네릭스 & 컬렉션

  • 제네릭: 타입 안전·캐스팅 제거, 와일드카드(?, extends, super)로 유연성 확보.
  • 컬렉션 지도: List(순서/중복O), Set(중복X), Map(키-값).
    정렬은 Comparable/Comparator, Collections.sort & List#sort.

2-3. Enum & 람다

  • Enum: 타입 안정 상수, values()/valueOf()/ordinal()/name()·필드/메소드·EnumSet.
  • 람다/함수형 인터페이스: Consumer/Supplier/Function/Operator/Predicate 핵심 군,
    메소드/생성자 참조(Type::method, Type::new)로 가독성 향상.

2-4. 스트림 & 스레드

  • 스트림: 생성 → 가공(filter/map/flatMap/sorted/limit) → 결과(collect/reduce/match).
    지연연산불변 처리, parallelStream() 주의점(순서/경합) 체크.
  • 스레드: 프로세스/스레드 차이, 생성(Thread 상속/Runnable 구현),
    스케줄링(우선순위/라운드로빈), 동기화(synchronized, wait/notify)와 데드락 주의.

2-5. SOLID 원칙

  • SRP(단일 책임), OCP(확장에 열림/변경에 닫힘), LSP(치환 가능),
    ISP(인터페이스 분리), DIP(구체가 아닌 추상에 의존).
    → **응집도↑ 결합도↓**를 위한 체크리스트로 활용.

2-6. JUnit (+AssertJ · TDD 흐름)

  • JUnit5 애노테이션: @Test, @BeforeEach/@AfterEach, @BeforeAll/@AfterAll, @Disabled.
    어설션: assertEquals/assertTrue/assertThrows/assertAll.
  • AssertJ로 플루언트한 검증(assertThat(...)) 도입.
  • TDD: Red → Green → Refactor 사이클 감 잡기.

3. 진행 상황

3-1. 피우다 프로젝트

  • 신청서 작성 완료, 기본 UI 와이어프레임/컴포넌트 구조 초안.
  • 다음 액션: 화면 흐름(유저 플로우) 정리 → 페이지 라우팅/상태관리 규칙 합의 → API 스펙 초안.

3-2. 공모전 준비 & 스프링 스터디

  • 김영한 스프링 강의로 스터디 시작(예습): IoC/DI 기초, @Component/@Bean, ApplicationContext 감 익히는 중.
  • 목표: 프로젝트에 바로 적용 가능한 수준으로 빈 생명주기/의존성 관리 정리.

3-3. PCSQL 시험 (9/17, 수)

  • 생각보다 많이 어려웠다...: 5문제 중 2문제 해결, 턱걸이 합격 .
  • 체감 이슈: 창의적 SQL 패턴/윈도우 함수 설계 속도 부족했다. → 실전 감각 보완 필요할 것 같다..

4. 6주차를 되돌아보며

  • 자바 심화 토픽들을 **넓고 얕게가 아니라 ‘연결’**해서 보려 노력(예: 람다→스트림, 예외→IO 자원관리, SOLID→테스트 용이성).
  • AssertJ 도입으로 테스트 가독성 개선 체감했다.
  • 실전 SQL 실력은 문제 풀이량·패턴 기억이 좌우 → 꾸준한 감 유지가 핵심.

5. 아쉬웠던 점

  • PCSQL 준비 시간 부족으로 풀이 속도/정확도 아쉬움.
  • 스터디·프로젝트 병행으로 코딩테스트 문제 풀이 빈도가 흔들림.
  • JUnit 테스트에 대해서 아직 이해가 부족함

6. 다음 주 목표

  1. 피우다 프로젝트
  2. 스프링 스터디
  3. JUnit 테스트 복습하기

profile
개발자 희망자

0개의 댓글