GitHub Foundations #10 보너스 — 풀스케일 객관식 모의고사 (50문항 + 해설)
#1부터 #9까지 정리한 개념이 머릿속에 확실히 잡혔는지 확인하는 단계입니다. 실제 GitHub Foundations 시험의 7개 도메인 구성에 맞춰 50문항을 풉니다. 이번 글이 시리즈의 마지막 글입니다.
실제 시험은 채점 대상 75문항을 120분에 풉니다. 본 모의고사는 50문항 기준이므로 시간과 합격선을 비례해서 잡았습니다. 38문항(76%) 이상을 맞추면 합격권으로 보고 시험을 예약해도 좋습니다.
풀이 방법 #
- 90〜110분 안에 풀어 봅니다 (실제 시험은 75문항/120분이지만 본 모의고사는 50문항 기준)
- 한 문항씩 풀되 즉시 해설을 보지 말고, 끝까지 푼 뒤 채점합니다
- 38문항(76%) 이상 맞추면 합격권으로 봅니다
- 부족한 도메인이 보이면 해당 편(#2〜#9)으로 돌아가 다시 정리합니다
도메인 분포 #
실제 시험의 도메인별 가중치는 공식 study guide 에서 공지되며 개정될 수 있습니다. 본 모의고사는 협업 기능과 Git·GitHub 입문의 비중을 높게 잡은 자체 분포입니다.
| 도메인 | 문항 수 | 범위 |
|---|---|---|
| Domain 1: Git과 GitHub 입문 | 10 | Q1〜Q10 |
| Domain 2: 저장소 다루기 | 7 | Q11〜Q17 |
| Domain 3: 협업 기능 | 14 | Q18〜Q31 |
| Domain 4: 모던 개발 | 7 | Q32〜Q38 |
| Domain 5: 프로젝트 관리 | 3 | Q39〜Q41 |
| Domain 6: 프라이버시·보안·관리 | 6 | Q42〜Q47 |
| Domain 7: GitHub 커뮤니티 | 3 | Q48〜Q50 |
Domain 1: Git과 GitHub 입문 (Q1〜Q10) #
Q1. Git과 GitHub의 관계를 옳게 설명한 것은 무엇인가?
해설
Git은 2005년에 만들어진 독립적인 분산 버전 관리 시스템이고, GitHub는 Git 저장소를 올려 두고 Pull Request, Issue 같은 협업 기능을 제공하는 호스팅 서비스입니다. Git은 GitHub 없이도 완전하게 동작하며 GitLab, Bitbucket 같은 다른 호스팅 서비스와도 함께 쓸 수 있습니다.
Q2. 다음 커밋에 포함할 변경을 미리 골라 두는 Git의 영역은 무엇인가?
해설
staging area는 다음 커밋에 담을 변경을 선별해 두는 대기 영역입니다. working directory는 파일을 실제로 편집하는 공간이고, repository(.git)는 커밋이 영구 기록되는 곳입니다. 세 영역 모델은 Git 동작 이해의 기본 틀입니다.
Q3. 수정한 파일을 staging area에 올리는 명령은 무엇인가?
해설
git add가 working directory의 변경을 staging area에 올리고, git commit이 그 내용을 스냅샷으로 확정합니다. git push는 로컬 커밋을 원격 저장소로 보내는 명령이라 단계가 다릅니다.
Q4. Git이 커밋마다 저장하는 것은 무엇인가?
해설
Git은 델타가 아니라 스냅샷 모델을 씁니다. 커밋은 그 시점 전체 파일 상태를 가리키는 기록이며, 내용이 바뀌지 않은 파일은 이미 저장된 동일 객체를 참조해 중복 저장을 피합니다. 이 모델 덕분에 브랜치 생성과 시점 이동이 가볍습니다.
Q5. git init이 실제로 하는 일은 무엇인가?
해설
git init은 현재 디렉터리 안에 .git이라는 숨김 디렉터리를 만드는 것이 전부입니다. 이후의 모든 커밋과 설정이 그 안에 저장됩니다. 원격 저장소 생성은 GitHub 웹이나 API에서 별도로 하고, 파일 기록은 add와 commit을 거쳐야 합니다.
Q6. 분산 버전 관리 시스템의 특징으로 옳은 것은 무엇인가?
해설
분산 버전 관리에서는 clone 한 저장소마다 첫 커밋부터 지금까지의 전체 히스토리가 들어 있습니다. 그래서 네트워크 없이도 커밋, 브랜치, 이력 조회가 전부 가능합니다. 서버에 접속해야만 커밋할 수 있는 중앙집중식 시스템과 구분되는 지점입니다.
Q7. 커밋에 기록될 작성자 이름과 이메일을 설정하는 방법은 무엇인가?
해설
git config –global user.name, user.email 설정이 이후 모든 커밋의 작성자 정보로 기록됩니다. GitHub 프로필과 로컬 Git 설정은 별개이며, 커밋 이메일이 GitHub 계정 이메일과 일치해야 기여 그래프에 연결됩니다.
Q8. GitHub의 organization 계정을 옳게 설명한 것은 무엇인가?
해설
GitHub 계정은 개인(personal), organization, enterprise 계층으로 나뉩니다. organization은 개인 소유가 아니라 구성원과 팀 단위 권한으로 저장소를 공동 관리하는 계정입니다. 유료 여부나 2단계 인증은 계정 유형과는 별개의 설정입니다.
Q9. git status가 보여 주는 정보는 무엇인가?
해설
git status는 어떤 파일이 추적되지 않았고(untracked), 수정되었고(modified), 커밋 대기 중인지(staged)를 요약합니다. 히스토리 조회는 git log의 영역입니다. status 출력에는 다음에 쓸 명령 힌트도 함께 표시됩니다.
Q10. 커밋 객체에 포함되지 않는 것은 무엇인가?
해설
커밋은 자신의 부모만 가리키고 미래의 자식 커밋은 알 수 없습니다. 히스토리는 최신 커밋에서 부모 방향으로 거슬러 올라가며 복원됩니다. 스냅샷, 부모 포인터, 작성자·시각·메시지 메타데이터가 커밋의 구성 요소입니다.
Domain 2: 저장소 다루기 (Q11〜Q17) #
Q11. fork를 옳게 설명한 것은 무엇인가?
해설
fork는 GitHub 서버 안에서 저장소를 내 계정으로 복사하는 기능으로, 원본과의 연결이 남아 있어 Pull Request로 변경을 제안할 수 있습니다. 로컬로 내려받는 것은 git clone이며 둘은 단계가 다릅니다. 오픈소스 기여의 표준 흐름이 fork 후 clone입니다.
Q12. template repository로 새 저장소를 만들 때의 특징은 무엇인가?
해설
template repository에서 Use this template로 만든 저장소는 파일과 디렉터리 구조만 물려받고 히스토리는 첫 커밋 하나로 새로 시작합니다. fork와 달리 원본과의 연결도 없습니다. 프로젝트 보일러플레이트를 배포할 때 적합한 방식입니다.
Q13. 태그(tag)와 릴리스(release)의 관계를 옳게 설명한 것은 무엇인가?
해설
태그는 v1.0.0처럼 특정 커밋에 붙이는 Git 자체의 포인터입니다. 릴리스는 그 태그를 기반으로 GitHub가 릴리스 노트, 빌드 산출물 첨부, 다운로드 페이지를 제공하는 기능입니다. 릴리스를 만들면 태그가 함께 생성될 수 있지만 반대는 자동이 아닙니다.
Q14. gist의 주된 용도는 무엇인가?
해설
gist는 파일 몇 개 수준의 코드 조각, 설정 예시, 메모를 공유하는 가벼운 수단입니다. gist 하나하나가 Git 저장소이기도 해서 clone과 버전 관리가 가능합니다. 공개(public)와 비공개(secret) 중에서 선택할 수 있습니다.
Q15. 저장소 루트의 README.md 파일이 하는 역할은 무엇인가?
해설
루트의 README.md는 저장소 첫 화면에 자동으로 표시되는 문서로, 프로젝트가 무엇인지와 시작 방법을 안내하는 입구 역할을 합니다. 저장소 description은 별도의 짧은 한 줄 필드입니다. 프로필용 특수 저장소의 README는 프로필 페이지에 표시됩니다.
Q16. LICENSE 파일이 없는 공개 저장소의 코드에 대한 설명으로 옳은 것은 무엇인가?
해설
라이선스가 없으면 기본 저작권법이 적용되어 코드를 읽을 수는 있어도 재사용할 법적 권리는 부여되지 않습니다. 소스가 공개된 것과 오픈소스 라이선스가 부여된 것은 다른 문제입니다. 그래서 공개 프로젝트에는 LICENSE 파일을 명시하는 것이 관례입니다.
Q17. internal 가시성(visibility)을 가진 저장소를 볼 수 있는 범위는 어디까지인가?
해설
가시성은 public, private, internal 세 종류입니다. internal은 enterprise 계정에서 쓸 수 있는 단계로, 같은 enterprise 구성원 전원에게 보이되 외부에는 비공개입니다. 조직 내부 공유(InnerSource)에 활용되는 설정입니다.
Domain 3: 협업 기능 (Q18〜Q31) #
Q18. Pull Request 본문에 적으면 머지될 때 12번 Issue가 자동으로 닫히는 표기는 무엇인가?
해설
closes, fixes, resolves 같은 닫기 키워드 뒤에 이슈 번호를 적으면 PR이 기본 브랜치에 머지되는 시점에 해당 Issue가 자동으로 닫힙니다. 번호만 적거나 ref로 언급하면 상호 참조 링크만 생기고 닫히지는 않습니다.
Q19. 라벨(label)의 용도는 무엇인가?
해설
라벨은 Issue와 PR을 유형이나 상태별로 분류하고 필터링하는 태그입니다. 커밋에 이름을 붙이는 것은 태그(tag)이고, 권한은 role로 관리하므로 서로 다른 기능입니다. 저장소마다 기본 라벨 셋이 제공되며 자유롭게 추가할 수 있습니다.
Q20. 마일스톤(milestone)을 옳게 설명한 것은 무엇인가?
해설
마일스톤은 v2.0 릴리스처럼 하나의 목표 아래 Issue와 PR을 묶고, 완료 비율과 기한을 함께 보여 줍니다. 릴리스 단위의 작업 관리에 쓰이는 도구로, 라벨이 분류 축이라면 마일스톤은 일정 축입니다.
Q21. Issue template은 어디에 두는가?
해설
Issue template은 .github/ISSUE_TEMPLATE 디렉터리에 마크다운 또는 YAML 폼 형식 파일로 저장합니다. 템플릿이 있으면 새 Issue 작성 화면에서 유형을 선택하는 단계가 생겨 버그 신고와 기능 요청의 품질이 일정해집니다. PR 템플릿은 .github/pull_request_template.md를 씁니다.
Q22. Issue 코멘트에서 @username으로 멘션하면 어떤 일이 일어나는가?
해설
멘션은 해당 사용자에게 알림을 보내 대화로 불러오는 기능입니다. 권한 부여나 리뷰어 지정과는 무관합니다. 팀 멘션(@org/team-name)을 쓰면 팀 구성원 전체에게 알림이 갑니다.
Q23. GitHub Flavored Markdown에서 체크리스트 항목을 만드는 문법은 무엇인가?
해설
하이픈 뒤에 대괄호를 붙인
- [ ]가 미완료, - [x]가 완료 항목입니다. Issue와 PR 본문의 체크리스트는 클릭으로 토글할 수 있고 진행률로 집계됩니다. 대괄호 앞의 목록 마커와 공백이 있어야 체크박스로 렌더링됩니다.Q24. GitHub Flavored Markdown에서 여러 줄 코드 블록을 만드는 문법은 무엇인가?
해설
백틱 3개로 감싼 블록이 코드 블록이 되고, 여는 백틱 뒤에 python처럼 언어를 지정하면 문법 하이라이트가 적용됩니다. 4칸 들여쓰기도 코드 블록이 되지만 언어 지정이 안 되므로 백틱 방식이 표준으로 쓰입니다.
Q25. Pull Request를 옳게 설명한 것은 무엇인가?
해설
PR은 브랜치의 변경을 대상 브랜치로 합쳐 달라는 요청이며, 그 위에서 코드 리뷰, 코멘트, 추가 커밋이 오갑니다. git pull 명령과 이름이 비슷하지만 별개이고, PR은 Git 자체가 아니라 GitHub 같은 호스팅 서비스의 기능입니다.
Q26. draft Pull Request의 특징은 무엇인가?
해설
draft PR은 작업 방향 공유나 CI 선확인 용도로 일찍 열어 두는 미완성 상태의 PR입니다. draft 동안에는 머지 버튼이 비활성화되고, 준비가 되면 Ready for review로 전환해 정식 리뷰를 요청합니다.
Q27. Pull Request 리뷰를 제출할 때 선택할 수 있는 상태가 아닌 것은 무엇인가?
해설
리뷰 제출 상태는 의견만 남기는 Comment, 승인하는 Approve, 수정을 요구하는 Request changes 세 가지입니다. Force merge라는 리뷰 상태는 존재하지 않습니다. Request changes가 있으면 보호 규칙에 따라 머지가 차단될 수 있습니다.
Q28. CODEOWNERS 파일이 하는 일은 무엇인가?
해설
CODEOWNERS는 경로 패턴과 담당자(사용자 또는 팀)를 매핑하는 파일로, 해당 경로를 건드리는 PR이 열리면 담당자가 자동으로 리뷰어로 배정됩니다. branch protection과 결합하면 code owner의 승인 없이는 머지를 막을 수도 있습니다.
Q29. 머지 방식 중 Squash and merge의 동작은 무엇인가?
해설
Squash and merge는 PR의 여러 커밋을 하나로 합쳐 대상 브랜치에 추가하므로 기본 브랜치의 히스토리가 PR 단위로 깔끔해집니다. A는 Merge commit, B는 Rebase and merge의 동작입니다. 어떤 방식이든 충돌은 사람이 해결해야 합니다.
Q30. Issues 대신 Discussions를 쓰기에 적합한 경우는 무엇인가?
해설
Discussions는 결론이 작업으로 정해지지 않은 대화(질문과 답변, 아이디어, 공지)를 위한 공간입니다. 버그와 작업 추적은 Issues, 줄 단위 리뷰는 PR, 취약점 신고는 security advisory가 각각의 전용 통로입니다.
Q31. GitHub Pages를 옳게 설명한 것은 무엇인가?
해설
GitHub Pages는 저장소의 HTML, CSS, 마크다운 콘텐츠를 정적 사이트로 빌드해 github.io 도메인(또는 커스텀 도메인)으로 제공하는 기능입니다. 프로젝트 문서 사이트나 개인 페이지에 널리 쓰입니다. 동적 서버 코드는 실행할 수 없습니다.
Domain 4: 모던 개발 (Q32〜Q38) #
Q32. GitHub Actions 용어의 계층 관계로 옳은 것은 무엇인가?
해설
workflow는 이벤트로 트리거되는 자동화 프로세스 전체이고, 그 안의 job은 runner 하나에서 실행되는 묶음이며, job은 순차 실행되는 step들로 이루어집니다. job끼리는 기본적으로 병렬 실행되고 needs로 순서를 걸 수 있습니다.
Q33. GitHub Actions의 workflow 파일은 어디에 어떤 형식으로 두는가?
해설
workflow는 저장소의 .github/workflows 디렉터리(복수형) 아래 YAML 파일로 정의합니다. 파일로 관리되므로 코드와 함께 버전 관리되고 리뷰할 수 있습니다. 웹 편집기는 이 파일을 편집하는 인터페이스일 뿐입니다.
Q34. workflow가 언제 실행될지 정의하는 방법은 무엇인가?
해설
on 키가 트리거 정의부입니다. push, pull_request, schedule(크론), workflow_dispatch(수동 실행) 같은 이벤트를 지정할 수 있습니다. runs-on은 job이 실행될 runner의 종류를 정하는 키라서 역할이 다릅니다.
Q35. GitHub Actions의 runner란 무엇인가?
해설
runner는 job이 올라가 실행되는 실행 환경입니다. GitHub가 제공하는 호스팅 runner(Ubuntu, Windows, macOS)를 쓰거나, 자체 서버를 self-hosted runner로 등록할 수 있습니다. 산출물 보관은 artifacts 기능의 몫입니다.
Q36. Codespaces와 github.dev 편집기의 차이는 무엇인가?
해설
github.dev는 저장소에서 마침표 키로 여는 무료 웹 편집기로, 코드를 고치고 커밋할 수는 있지만 코드를 실행할 컴퓨팅이 없습니다. Codespaces는 클라우드 VM 위의 완전한 개발 환경이라 터미널, 빌드, 디버깅, 포트 포워딩까지 가능합니다.
Q37. GitHub Copilot을 옳게 설명한 것은 무엇인가?
해설
Copilot은 에디터 안에서 문맥에 맞는 코드를 제안하고 채팅으로 질문에 답하는 AI 페어 프로그래밍 도구입니다. CI는 Actions, 일정 관리는 Projects가 담당하는 영역이므로 역할을 구분해 두면 시험 문항에서 혼동을 피할 수 있습니다.
Q38. GitHub Packages를 옳게 설명한 것은 무엇인가?
해설
Packages는 npm, Maven, NuGet, RubyGems, 컨테이너 이미지(GHCR) 등을 저장소 권한 체계 그대로 호스팅하는 레지스트리입니다. Marketplace는 Actions와 앱을 찾는 장터라서 성격이 다릅니다. release는 태그 기반 배포 페이지로 패키지 레지스트리가 아닙니다.
Domain 5: 프로젝트 관리 (Q39〜Q41) #
Q39. GitHub Projects가 제공하는 뷰의 조합으로 옳은 것은 무엇인가?
해설
Projects는 같은 데이터를 스프레드시트형 table, 칸반형 board, 일정형 roadmap 뷰로 바꿔 볼 수 있습니다. Issue와 PR을 item으로 추가하고 커스텀 필드로 우선순위나 크기 같은 속성을 붙여 관리합니다.
Q40. GitHub Projects의 built-in 자동화로 가능한 것의 예는 무엇인가?
해설
Projects의 built-in workflows는 item의 상태 변화에 반응하는 자동화입니다. Issue나 PR이 닫히면 Status를 Done으로 바꾸거나, 새로 추가된 item에 기본 Status를 지정하는 식입니다. 커밋 작성이나 리뷰 승인 같은 코드 영역의 자동화는 범위 밖입니다.
Q41. 저장소의 Insights 탭에서 확인할 수 있는 것은 무엇인가?
해설
Insights는 Pulse 요약, 커밋 빈도, 기여자 통계, 트래픽 같은 저장소 활동 데이터를 보여 주는 탭입니다. 보안 알림은 Security 탭, 결제는 계정 설정의 영역입니다. 프로젝트의 활동 상태를 파악하는 용도라는 점을 기억해 두면 됩니다.
Domain 6: 프라이버시·보안·관리 (Q42〜Q47) #
Q42. 코드 push 권한 없이 Issue와 PR에 라벨을 붙이고 담당자를 지정하는 등 분류 작업이 가능한 저장소 role은 무엇인가?
해설
organization 저장소의 role은 Read, Triage, Write, Maintain, Admin 다섯 단계입니다. Triage는 코드를 수정하지 않으면서 Issue·PR 정리를 담당하는 커뮤니티 매니저에게 알맞은 단계입니다. Write부터 push가 가능하고 Admin은 설정 전체를 관리합니다.
Q43. 2단계 인증(2FA)이 보호하는 것은 무엇인가?
해설
2FA는 로그인 시 비밀번호에 더해 인증 앱 코드나 보안 키 같은 두 번째 요소를 요구하는 계정 보호 장치입니다. 코드 암호화나 취약점 스캔과는 무관합니다. organization은 구성원에게 2FA를 필수로 강제할 수 있습니다.
Q44. fine-grained personal access token이 classic 토큰과 다른 점은 무엇인가?
해설
fine-grained PAT는 특정 저장소만 지정하고 권한도 항목별 읽기·쓰기 수준으로 좁힐 수 있어 최소 권한 원칙에 맞습니다. classic 토큰은 scope 단위가 넓어 과잉 권한이 되기 쉽습니다. 만료 설정과 organization 사용 모두 fine-grained 쪽이 더 정교하게 통제됩니다.
Q45. branch protection 규칙으로 강제할 수 있는 것은 무엇인가?
해설
branch protection은 보호 대상 브랜치에 대해 승인 리뷰 수, 필수 status check, 직접 push 금지, force push 차단 같은 규칙을 강제합니다. 사람의 습관 대신 서버 설정이 규칙을 지키게 만드는 장치입니다.
Q46. Dependabot의 기능이 아닌 것은 무엇인가?
해설
Dependabot은 의존성 취약점 알림(alerts), 보안 패치 PR(security updates), 정기적인 버전 업데이트 PR(version updates) 세 가지를 담당합니다. 코드 스타일 정리는 린터와 포매터의 영역이라 Dependabot과 무관합니다.
Q47. secret scanning의 push protection 기능은 무엇을 하는가?
해설
push protection은 API 키나 토큰처럼 알려진 패턴의 secret이 커밋에 들어 있으면 push 자체를 서버가 거부하는 기능입니다. 유출 후 탐지가 아니라 유출 전 차단이라는 점이 핵심입니다. force push 차단은 branch protection의 역할입니다.
Domain 7: GitHub 커뮤니티 (Q48〜Q50) #
Q48. InnerSource를 옳게 설명한 것은 무엇인가?
해설
InnerSource는 조직 안에서 팀 간 저장소를 열어 두고 오픈소스처럼 기여를 주고받는 문화입니다. internal 가시성, CONTRIBUTING 문서, PR 리뷰 같은 오픈소스 도구가 그대로 쓰입니다. 코드 공개 범위가 조직 내부라는 점만 다릅니다.
Q49. CONTRIBUTING.md 파일의 역할은 무엇인가?
해설
CONTRIBUTING.md는 브랜치 규칙, 커밋 컨벤션, 리뷰 절차처럼 프로젝트에 기여하는 방법을 안내하는 문서입니다. 새 Issue나 PR을 열 때 GitHub가 이 문서로의 링크를 보여 줍니다. 라이선스와 행동 강령은 각각 LICENSE, CODE_OF_CONDUCT.md라는 별도 파일을 씁니다.
Q50. GitHub Sponsors를 옳게 설명한 것은 무엇인가?
해설
Sponsors는 오픈소스 생태계를 지탱하는 개발자와 조직에 금전 후원을 보내는 기능입니다. 프로필과 저장소에 Sponsor 버튼이 노출되고 월 단위 후원 티어를 설정할 수 있습니다. 광고나 채용과는 무관합니다.
채점과 다음 단계 #
- 43문항 이상 — 충분히 준비된 상태입니다. 실제 시험을 예약해도 좋습니다.
- 38〜42문항 — 합격권입니다. 틀린 문항의 도메인을 해당 편에서 한 번 더 정리한 뒤 예약하기 바랍니다.
- 37문항 이하 — 틀린 문항이 몰린 도메인(#2〜#9)으로 돌아가 개념을 다시 세우고, 며칠 뒤 이 모의고사를 다시 풀어 보기 바랍니다.
실제 시험은 본 모의고사보다 문항 수가 많고 표현이 다양하지만, 묻는 개념의 범위는 같습니다. 기능의 이름과 역할을 정확히 짝짓는 훈련이 되어 있다면 시간은 충분합니다.
이상으로 GitHub Foundations 시리즈를 마칩니다.