1) 이번 주 한 줄
공부 방법과 루틴에 대한 집착과 불안, 시행착오의 연속이지만 배운 것이 많은 한 주였다.
2) 이번 주에 내가 실제로 한 것
작성 기준:
- 저번주 목표와 직접 연결된 성취
- 목표와 달라도 이번주에 실제로 시간을 가장 많이 쓴 일
- 예상 밖이지만 의미 있었던 변화/방향 전환
- 자바의 신 1~8 챕터 읽었다.
- GPT 공부하기 모드로 컴퓨터 과학과 접목해서 내가 모르는 개념을 확인했다.
- 멘토링 스크립트에 있는 질문/인사이트를 읽고 내 이해도를 점검했다.
- 회고 템플릿을 만들었다.
3) 이번 주에 내가 얻은 변화/배움
"했다" 말고 "이해/관점이 바뀐 것"
- 실무에서 자바 구동 방식과 컴퓨터 구동 방식이 어떻게 사용되고, 왜 중요한지 알게 되었다.
- 코드에서 사용하는 방식들을 단어로 알고 있어야 그 방식을 개념화해서 기억하기 좋고, 실무에서도 소통하기 좋다.
- 말로 정리해서 바로 말하는 연습을 해야겠다.
- 노트를 정리하는 것보다 배운 내용의 연관 질문에 대한 대답을 할 수 있는지가 중요하다.
- 질문을 듣고 10초 이내로 생각 정리해서 설명을 못하면 내가 아는 것이 아니다.
4) 멘토링 핵심 3줄
- 멘토가 강조한 기준/방향:
- 실무에서 이 개념을 어떻게 사용하고 있는지 확인
- 어떠한 것을 사용할 때 사이드 이펙트를 생각해야 한다
- 내가 놓치고 있던 관점:
- 개념에 관련된 지식들만 배워야 된다고 생각했는데, 실무에서 어떻게 활용하고 사용하는 지에 대한 관점도 필요하다.
- 다음주에 검증해야 할 포인트:
5) 배운 내용 이해 체크 (O/△/X)
기준: "내 말로 60초 내로 설명 가능하면 O"
X 객체가 상태를 갖는다는 것에 대해 어떻게 생각하나요?
- 객체가 상태를 갖는다는 것은 외부에서 객체에 접근할 수 있다.
- 피드백
- “상태(state)”는 객체가 내부에 가진 데이터(필드)와 그 값을 뜻해요.
- 핵심은 객체가 값을 가지고 있고, 그 값이 행위/시간에 따라 변할 수 있다는 관점입니다.
- “외부에서 접근 가능”은 캡슐화/접근 제어 쪽 주제라 상태 개념과는 분리해서 생각하는 게 좋아요.
X 불변 클래스와 가변 클래스의 차이점과, 상태 변경이 가능한 객체가 멀티스레드 환경에서 발생시킬 수 있는 문제는 무엇인가요?
- 불변 클래스는 static 예약어로 선언하며 인스턴스 생성없이 사용 가능하다. 가변 클래스는 인스턴스를 생성해야 한다.
- 여러 스레드에서 객체에 접근이 가능하기 때문에 예상치 못한 값 변경이 일어난다.
- 피드백
- “불변 = static”은 핵심적으로 틀린 연결이에요.
- 불변(Immutable)은 객체 생성 후 상태가 바뀌지 않도록 설계된 클래스예요.
- 보통 필드
final, setter 없음, 내부 상태 변경 메서드 차단 - 예:
String,Integer,LocalDate
- 보통 필드
- 가변(Mutable)은 setter/변경 메서드로 상태가 바뀔 수 있는 객체.
- 멀티스레드 문제 설명은 방향이 맞아요.
- 더 정확히는 공유 가변 상태(shared mutable state)가 경쟁 상태/가시성 문제를 만들어 예측 불가능한 결과가 생길 수 있다는 점이 핵심입니다.
△ 컴파일 타임과 런타임의 차이를 설명할 수 있나요?
- 컴파일 타임은 소스코드를 기계어로 바꾸는 과정에서 발생하는 오류
- 런타임은 기계어를 읽어들이고 있는 과정, 즉 프로그램이 실행하고 있는 과정에서 발생하는 오류
- 피드백
- 큰 방향은 맞아요. 자바 맥락에서는 이렇게 정리하면 더 정확해요.
- 컴파일 타임: 소스 → 바이트코드 변환 과정에서 잡히는 오류(문법, 타입 등)
- 런타임: 프로그램 실행 중 발생하는 오류(NPE, 인덱스 오류 등)
O 자바에서 메인 메서드는 왜 static이어야 하나요?
- 자바 프로그램 실행 시작을 요청하는 외부에서 객체 생성없이 프로그램을 가동하기 위해서 필요하다.
- 피드백
- 핵심이 정확해요.
- JVM이 객체 생성 전에 진입점을 호출해야 해서
static이 필요합니다.
O 프리미티브 타입과 레퍼런스 타입의 기본값 차이와, 파라미터로 받을 때 방어 코드가 어떻게 달라지는지 설명해보세요.
- 프리미티브 타입은 기본값이 0이고 레퍼런스 타입은 기본값이 null이다. 레퍼런스 타입은 null 체크가 필수다.
- 피드백
- 방향은 맞아요. 다만 더 정확히는:
- 프리미티브 기본값은 타입별로 다름
int 0,long 0L,boolean false,double 0.0등
- 레퍼런스 기본값은
null - 방어 코드는
- 레퍼런스: null 체크
- 프리미티브: 범위/의미 검증(예: 음수 금지)
△ 부동 소수점 타입을 금전 계산에 사용하면 안 되는 이유는 무엇인가요?
- 소수점이 특정 자리 수에 정확하게 떨어지지 않기 때문이다.
- 타입 범위를 벗어나면 정확한 계산 값이 나오지 않는다.
- 피드백
- 첫 문장이 핵심 정답이에요.
- 더 정확한 한 줄 버전:
- 이진 부동소수점 표현 한계 때문에 0.1 같은 값이 정확히 표현되지 않아 누적 오차가 생긴다.
- 금전 계산은 보통
BigDecimal또는 정수(원/센트 단위) 방식 사용.
O 오버플로우가 발생했을 때 정수 타입의 값은 어떻게 변화하나요?
- 2의 보수 체계 때문에 오버플로우가 발생하면 부호 비트가 변경되어 계산값의 양수 음수가 바뀐다.
- 피드백
- 좋아요.
- 핵심은 범위를 넘으면 값이 래핑(wrap-around) 된다는 설명입니다.
O 단락 평가(Short-circuit evaluation)가 발생할 때 생길 수 있는 사이드 이펙트는 무엇인가요?
- 가장 앞에 있는 결과값 때문에 뒤에 있는 로직이 실행되지 않아서 조건문 자체가 다른 결과를 낳게 된다.
- 이를 방지하기 위해 미리 조건문에 필요한 결과값을 계산하는 로직을 호출하고 변수에 담아둔다. 해당 변수들을 조건문에 넣는다. 이러면 필수로 조건에 필요한 로직들이 모두 실행된다.
- 피드백
- 설명 정확해요.
- 특히 조건을 분리해 미리 계산 후 변수로 조합하는 방지 패턴이 실무적으로도 좋은 답입니다.
O 비트 플래그(Bit Flag)의 실무적 활용 사례를 설명해보세요.
- 여러 true, false 설정이 하나의 묶음으로 필요한 경우, boolean 변수 여러 개로 조건 케이스를 만들지 않고 비트로 여러 케이스를 만들 수 있다.
- 피드백
- 정확해요.
- 여러 상태 조합을 하나의 정수로 저장/전송/검사할 때 특히 유용합니다.
△ 자바의 Call by Value와 C++의 Call by Reference의 차이를 설명해보세요.
- call by value 는 값을 복사해서 전달하는 것이고, call by reference는 원본 값 자체를 전달하는 것이다.
- 자바와 C언어에서는 call by reference 는 존재하지 않는다.
- C++ 에서는 call by reference가 존재하는데 해당 원본 값이 저장되어 있는 곳에 변수명을 추가한다.
- 피드백
- 큰 방향은 좋아요. 표현만 조금 정리하면 O급이에요.
- 자바는 무조건 Call by Value
- 객체도 참조값(reference value)이 복사돼 전달됩니다.
- C++은 값 전달도 가능하고 참조 전달도 가능
- “변수명을 추가한다”는 비유보다는
- “같은 대상에 대한 별칭(alias)을 매개변수로 받는다”가 더 안전하고 정확한 표현입니다.
- “변수명을 추가한다”는 비유보다는
6) 이번 주 가장 헷갈린 것
- 주제: 객체의 상태와 행위
- 왜 헷갈렸나: 클래스의 상태와 행위의 개념적 의미와 객체 관점의 상태와 행위를 구분하지 못했다.
7) 다음 주에 딱 3가지만
"공부하기" 금지 '검증 형태'로 쓰기
- X 로 표시된 내용들 다시 배우고 GPT한테 말로 설명하기
- 자바의 신 5일동안 하루에 챕터 2개씩 진도 나가기
- 멘토링 스크립트에 "앞으로 할 것들" 에서 간략하게 한 줄로 작성할 것, 자세히 노트로 정리할 것 나눠서 정리하기 (저걸 다 하면 난 진도 못 나가ㅠ)
8) 컨디션 체크
체크 많이 할수록 다음주 계획을 더 가볍게
에너지/몸
- 수면이 부족했다
- 피로가 누적됐다
- 운동/스트레칭이 거의 없었다
- 컨디션이 무난하거나 좋았다
- 기타:
집중/멘탈
- 집중이 잘 됐다
- 집중이 자주 끊겼다
- 불안/조급함이 있었다
- 재미/흥미가 확실히 있었다
- 기타:
일정/학습 운영
- 분량이 과했다
- 주제가 너무 넓었다
- 루틴이 잘 지켜졌다
- 일요일에 일이 몰렸다
- 주중에 짧은 기록이 도움이 됐다
- 기타:
이번 주 방해 요인(1개만 체크)
- 수면
- 일정 과부하
- 체력
- 산만(폰/잡생각)
- 이해 불확실성(△가 많음)
- 기타:
다음 주에 조정할 것 1개
- 뽀모 휴식시간에만 핸드폰 사용 가능하도록 앱으로 2시간씩 잠금하기
컨디션 한 줄
머리가 너무 아프다..
'회고' 카테고리의 다른 글
| 2025년 12월 2주차 회고 (1) | 2025.12.14 |
|---|---|
| 2025년 3월 1주차 회고 (0) | 2025.03.12 |