학습 본문으로 건너뛰기
VAIRODE
hash table61번째 작은 수업
오늘은 질문 하나만 해결해요61 / 72

따라 해보기 · 직접 바꿔보기

동시 수정과 compound operation 경계

오늘의 질문

일반 hash map의 get/put 개별 semantics에서 check-then-act atomicity·linearizability·thread safety를 추론하지 않고 명시적 concurrent type/lock 계약을 요구한다. 이를 생략하면 fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다.에서도 작은 예시는 맞을 수 있지만 충돌·삭제·재해시·적대 입력에서 재현 가능한 판단은 남지 않습니다.

아직 답을 몰라도 괜찮아요. 아래 작은 예시를 보고 먼저 예상해 보세요.

01 · 같이 연습해요

작은 문제부터 하나씩 직접 풀어봐요

먼저 예상하고, 한 단계씩 확인하고, 막힌 곳을 고쳐 봐요. 도움을 열어도 괜찮아요. 도움을 본 문제는 나중에 모양을 바꿔 다시 풀어보면 됩니다.

연습에서 작성 중인 답0 / 8
  1. 01

    찾아보기 · 기초

    ht61 recognize · 동시 수정과 compound operation 경계: concurrent mutation·check-then-act·atomicity boundary 단서에서 “일반 hash map의 get/put 개별 semantics에서 check-then-act atomicity·linearizability·thread safety를 추론하지 않고 명시적 concurrent type/lock 계약을 요구한다.”을 만족하는 hash-table 판정을 고른다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    정답과 비교
  2. 02

    먼저 생각하기 · 기초

    ht61 predict · 동시 수정과 compound operation 경계: “fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다.” 조건에서 probe·chain·load·lookup 결과를 실행 전에 봉인한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    움직임과 비교
  3. 03

    순서 따라가기 · 익힌 것을 써보기

    ht61 trace · 동시 수정과 compound operation 경계: hash → index → collision strategy → equality → result 순서로 thread schedule·operation interleaving·documented guarantee ledger를 완성한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    움직임과 비교
  4. 04

    내 말로 설명하기 · 익힌 것을 써보기

    ht61 explain · 동시 수정과 compound operation 경계: 일반 hash map의 get/put 개별 semantics에서 check-then-act atomicity·linearizability·thread safety를 추론하지 않고 명시적 concurrent type/lock 계약을 요구한다.이 필요한 이유와 thread schedule·operation interleaving·documented guarantee ledger가 보장하지 못하는 runtime·security·concurrency 범위를 설명한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    설명 기준과 비교
  5. 05

    빈칸 채우기 · 익힌 것을 써보기

    ht61 complete · 동시 수정과 compound operation 경계: 누락된 hash/equality·bucket·probe·slot-state·load-factor 칸을 채워 “lost-update trace와 필요한 synchronization을 분리한다.”을 완성한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    답과 설명 함께 비교
  6. 06

    틀린 곳 고치기 · 익힌 것을 써보기

    ht61 debug · 동시 수정과 compound operation 경계: AI가 만든 구현에 “fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다.”를 주입하고 최초 잘못된 hash-table state transition만 수정한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    답과 설명 함께 비교
  7. 07

    직접 만들기 · 새 문제

    ht61 implement · 동시 수정과 compound operation 경계: lost-update trace와 필요한 synchronization을 분리한다.을 frozen synthetic key stream에 적용해 thread schedule·operation interleaving·documented guarantee ledger를 생성한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    정답과 비교
  8. 08

    새 문제에 써보기 · 새 문제

    ht61 transfer · 동시 수정과 compound operation 경계: shared cache·worker registry로 판단을 옮겨 보존할 계약과 달라지는 collision·cost·security 경계를 방어한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. 직전까지 참이었던 key→bucket/probe 관계와 처음 달라진 state·result를 찾으세요.

    2. 개념

      concurrent mutation·check-then-act·atomicity boundary를 ADT·collision strategy·source-level로 나눠 적으세요.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    설명 기준과 비교

8개 답이 남았습니다.

02 · 막힌 곳을 찾아요

틀린 답에서 생각이 갈라진 첫 지점 찾기

헷갈림 01

fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다.

겉으로 보이는 막힘
동시 수정과 compound operation 경계 구현이 일부 예시는 통과하지만 key lookup·duplicate·delete 결과를 재현하지 못한다.
막힌 까닭
일반 hash map의 get/put 개별 semantics에서 check-then-act atomicity·linearizability·thread safety를 추론하지 않고 명시적 concurrent type/lock 계약을 요구한다.을 mutation 전에 봉인하지 않았다.
다시 해보는 방법
lost-update trace와 필요한 synchronization을 분리한다.에서 key/equality/hash와 state transition을 고정하고 thread schedule·operation interleaving·documented guarantee ledger를 다시 만든다.
헷갈림 02

최종 key/value만 기록하고 bucket·probe·slot-state·tombstone·capacity를 생략한다.

겉으로 보이는 막힘
collision 뒤 false miss, duplicate entry, broken probe chain 또는 resize data loss가 생긴다.
막힌 까닭
logical map/set state와 physical collision state를 분리하지 않았다.
다시 해보는 방법
thread schedule·operation interleaving·documented guarantee ledger에 각 operation의 방문 순서·equality check·state change와 결과를 함께 기록한다.
헷갈림 03

단일 실행 성공이나 average/constant 문구를 portable worst-case·DoS resistance·atomicity로 확대한다.

겉으로 보이는 막힘
shared cache·worker registry에서 latency spike·collision attack·race·iteration invalidation을 놓친다.
막힌 까닭
표준·API·구현·측정·threat model을 분리하지 않았다.
다시 해보는 방법
fail-fast나 Send/Sync trait만으로 복합 update가 atomic하다고 본다. fixture의 claim을 좁히고 security·concurrency·measurement를 별도 evidence로 둔다.

03 · 내게 맞는 도움 고르기

같은 목표를 원하는 도움만큼 연습해요

안내 받으며

안내형

concurrent mutation · check-then-act · atomicity boundary 카드와 hash/bucket/probe/state 표를 제공하고 색상 외에도 key·hash·index·slot-state·result label을 표시한다.

동시 수정과 compound operation 경계에서 key hash부터 bucket 또는 probe 방문, equality, state change와 결과를 추적하는 설명도에서 색상뿐 아니라 key·hash·bucket/probe ordinal·slot state·equality·size·capacity·result·claim-level을 문자와 선 종류로 표시한다.
혼자 해보기

내 힘으로

동시 수정과 compound operation 경계의 미공개 key stream에서 contract·collision·delete/resize·cost/security claim을 독립 재구성하는 능력의 처음 보는 frozen key stream을 AI 없이 분석하고 expected lookup·logical entries·boundary verdict를 봉인한 뒤 실행 관찰과 대조한다.

공식 정의·API 문법·도구 사용법은 열 수 있지만 해당 변형의 최종 bucket/probe trace, exact slot transition, hidden fixture와 최종 structure 선택은 먼저 제공하지 않는다.
더 도전하기

심화형

shared cache·worker registry에서 high load·adversarial collision·concurrent mutation 중 두 축을 추가하고 판정이 바뀌는 최소 trace를 찾는다.

더 정밀한 trace와 threat model은 오류 탐지력을 높이지만 문서 비용도 늘리므로 decision-changing collision·delete·rehash event를 우선 기록한다.