[
  {
    "courseSlug": "coding",
    "question": "이 코스에서는 '코딩'을 무엇이라고 정의하나요?",
    "option1": "컴퓨터가 스스로 배우도록 데이터를 주는 일",
    "option2": "컴퓨터에게 일을 시키는 글쓰기",
    "option3": "컴퓨터 부품을 조립해 성능을 높이는 작업",
    "option4": "컴퓨터 화면을 예쁘게 꾸미는 디자인 작업",
    "answerIndex": 1,
    "explanation": "섹션 ①에서 코딩은 '컴퓨터에게 일을 시키는 글쓰기'라고 정의합니다. 컴퓨터는 적힌 대로만 움직이므로 무엇을, 어떤 순서로, 어떤 조건에서 할지 빠짐없이 적어야 합니다."
  },
  {
    "courseSlug": "coding",
    "question": "로그인 페이지 코드에서 setUsername 같은 set 함수로 상태(state) 값을 바꾸면 React는 어떤 일을 하나요?",
    "option1": "바뀐 값을 서버에 자동으로 저장한다",
    "option2": "브라우저 전체를 새로고침해서 초기화한다",
    "option3": "값이 바뀐 것을 알아채고 화면을 다시 그린다",
    "option4": "에러가 없는지 검사해 콘솔에 결과를 출력한다",
    "answerIndex": 2,
    "explanation": "섹션 ②의 useState 설명대로, set 함수로 값을 바꾸면 React가 '값이 바뀌었네? 화면도 다시 그리자'라고 알아챕니다. 입력창에 한 글자 칠 때마다 이 일이 일어납니다."
  },
  {
    "courseSlug": "coding",
    "question": "대시보드 체크리스트 코드에 나오는 done ? ' done' : '' 한 줄의 의미로 알맞은 것은?",
    "option1": "체크된 항목이면 done이라는 CSS 클래스를 붙이고, 아니면 붙이지 않는다",
    "option2": "체크된 항목이면 그 항목을 목록에서 바로 삭제한다",
    "option3": "체크 여부와 상관없이 모든 항목에 done 클래스를 붙인다",
    "option4": "체크된 항목이면 서버에 완료 알림 요청을 보낸다",
    "answerIndex": 0,
    "explanation": "섹션 ③에서 이 조건식은 '체크됐으면 done 클래스를 붙이고, 아니면 붙이지 마라'는 if문과 같다고 설명합니다. 체크할 때 글자에 취소선이 생기는 이유가 바로 이 한 줄입니다."
  },
  {
    "courseSlug": "coding",
    "question": "이 앱에서 '비밀번호가 맞는지' 같은 믿을 수 있는 판단을 프론트엔드가 아니라 백엔드(서버)가 맡는 이유는 무엇인가요?",
    "option1": "브라우저에서는 자바스크립트로 비교 연산을 할 수 없기 때문",
    "option2": "서버가 브라우저보다 계산 속도가 훨씬 빠르기 때문",
    "option3": "프론트엔드는 화면을 그리는 기능이 아예 없기 때문",
    "option4": "브라우저에서 도는 코드는 사용자가 열어보고 고칠 수 있기 때문",
    "answerIndex": 3,
    "explanation": "섹션 ④에서 브라우저 코드는 사용자가 얼마든지 열어보고 고칠 수 있어, 검사 코드를 지워버리면 통과할 수 있다고 설명합니다. 그래서 로그인·권한·저장 같은 판단은 전부 서버가 합니다."
  },
  {
    "courseSlug": "coding",
    "question": "수습생 A가 회원가입 화면에서 이미 다른 사람이 쓰고 있는 아이디를 입력하자 '이미 사용 중인 아이디예요'라는 문구가 떴습니다. 이 동작을 만들어 낸 규칙은 코스의 어느 부분일까요?",
    "option1": "passwordHash 필드가 비밀번호를 해시로만 저장하는 보안 수칙",
    "option2": "User 엔티티의 username 컬럼에 붙은 unique = true 규칙",
    "option3": ".map()이 배열의 각 항목마다 화면을 하나씩 만들어 내는 반복 규칙",
    "option4": "try/catch 구조로 실패 상황을 미리 준비해 두는 함수 작성법",
    "answerIndex": 1,
    "explanation": "섹션 ⑤의 '직접 확인해 보기'에서 다룬 상황입니다. users 테이블의 username에 unique = true가 붙어 있어 같은 아이디로 두 명이 가입할 수 없다는 규칙이 데이터베이스 차원에서 강제됩니다."
  }
]
