이번 글에선 최근에 풀어본 2025학년도 안드로이드 수능(안드로이드 탐구 영역)에 대한 후기를 작성해보려고 한다.
GDG Android Korea 오픈 카톡방에서, 수능 시즌에 맞춰 다음과 같은 홍보 글을 올라온 것을 확인할 수 있었다.
솔직히 첫 문장을 보고, 개발자 커뮤니티에 이번 수능을 본 사람은 아마 없을거라 생각했기에, 약간의 의문은 있었지만, 두번째 문단부터가 본론이었다.
문제지 배송비 정도만 지불하면, 수능 형태로 구성된 Android 시험를 치뤄볼 수 있었기에 응시를 희망하여 행사에 참여하게 되었다.
집에서는 절대 안풀거라는 것을 내가 너무나 잘 알고 있기 때문에, 회사에서 업무 이후에 틈틈히 풀었다. 회사 분들께도 문제를 보여드렸는데 신기해 하시고, 재밌어 보인다고 하셨다.
나는 거의 대부분의 Android 오픈 카톡방에 참여하고 활동하고 있는데, GDG Android Koread 운영진 분께서 이러한 사실을 아시고, 다른 방들에 홍보를 해달라고 부탁을 해주셨다.
좋은 취지의 활동이었기에 거절할 수 없었고, 현재 활동하고 있는 다른 방의 방장님들께 양해를 구하고 홍보를 진행 하였다.내가 부방장으로 활동하고 있는 방에서는 선 홍보 후 양해를
공통 과목과 선택 과목 3개로 이뤄졌으며 구성은 다음과 같았다.
선택 과목으로는 코루틴 같은 경우, 상대적으로 약한 과목이고, 어렵게 내면 한없이 어렵게 낼 수 있는 과목이기에 패스했고, Android Library 와 Jetpack Compose 중 고민하다가, 최근에 비교적 깊게 공부한 Jetpack Compose 를 선택하였다.(물론, 문제는 다 풀어보았다. 제출시 선택을 해야했기에)
우선 선택 과목 포함 모든 문제들이 수능의 그 느낌을 아주 잘 살려, 예전 기억들이 떠올랐다.
오지선다 문제들의 경우 3개의 선지는 쉽게 지워지는데, 2개 중에 답이 무엇인지 헷갈렸다. 언제나 그랬다.
ㄱ,ㄴ,ㄷ 을 고르는 문제의 경우, 1 ~ 5번의 구성을 보면서 ㄱ 이 포함된 답이 3개 이상이라면 이건 맞겠구나 가정하고 풀이를 했다.
나중에 정말 모르는 문제의 경우, 여태까지 3번이 많이 나왔으니까 3번이 아닌 다른 번호로 찍는 객관식 답 개수 법칙
을 적용 해보는 등...
틀린 것을 고르시오. 인데 문제 제대로 안읽고 선지부터 읽던 습관은 여전했다.
각설하고, 인상 깊었던 문제에 대한 얘기를 하자면
수능 과학 탐구영역에서 많이 봤던 ㄱ,ㄴ,ㄷ - A,B,C 매칭 문제이다.
어느 하나 공개된 특징 및 컴포넌트가 없기에 A, B, C 가 어떤 컴포넌트일 것이다
가정을 한 뒤에, 각각의 특징과 부합되는지 확인 후, 모순이 존재하면 해당 가정을 소거법을 통해 제거하는 식으로 풀이하였다.
푸는 데 오래걸렸지만, 회사에서 현재 운영 중인 앱에서 브로드캐스트 리시버와 서비스를 통해 시행착오를 겪어봤기에 정답을 맞출 수 있었다.
면접 준비로 Handler, Message Queue, Looper 및 Thread 등의 Android 개념을 정리를 했던 경험을 통해 각 글이 의미하는 바를 찾아서 풀이할 수 있었다.
하지만 출제자의 입장에서 생각해보면 빈칸의 들어갈 숫자들의 합으로 끝자리가 5를 만들어내는 것이 쉽지 않을 것이라 생각했다. 0 으로 끝나는 선지가 3개이기도 함
따라서 끝자리가 0으로 끝날 것이다 가정하고, 선지 중 3) 100, 5) 110 중 고민하다가 3번을 찍어서 맞췄다. (처음 빈칸은 2, 마지막 빈칸은 34인 것은 알겠는데, 나머지 두개의 합이 74 는 물리적으로 불가능 하기에 100을 고름)
Android 최신 API Level 은 35 이다.
같은 성격의 문제로 공통 문항 21번이 있는데, 그 덕후스러운 임팩트는 18번이 더 쎘다.
보충)
각각의 빈칸에 대한 정보는 아래 링크들을 통해 확인할 수 있었다.
따라서 각각의 빈칸은 2, 30, 33, 35 총합은 100 이다.
이전에 api 와 implementation 의 차이를 알지 못해, 블로그 글들을 보면서 학습을 했을 무렵, api 는 정~~말 필요한 상황이 아니라면 사용하는 것을 지양하라고 배웠었다.(남들 말을 잘 따르는 편)
따라서, A 라는 모듈에서 C 에서 정의한 클래스 또는 함수를 사용하려면 직접 C 를 A 에 implementation 을 사용하여 주입하는 방식을 택했었기에, A -> B -> C 관계에서 A 가 C 에 정의된 클래스 또는 함수에 접근이 가능한 것인지 솔직히 풀면서 헷갈렸다...반성
문제의 선지를 읽다보면, 내가 아는 내용이 진짜 맞나? 의구심이 들기도 했다.
차분하게 다시 풀어보면서 모듈 주입 방식의 따른 참조 관계의 대한 복습을 해봐야겠다.
19번 문제에 대한 풀이는 이 블로그 글을 참고하면 좋을 것 같다. 정말 설명을 잘 해주셨음
캐싱을 지원하는 것도 이때 처음 알았다.
그 분께 감사를...
실험 3에 대한 언급이 문제 보기에 전혀 없었기에, 당황했지만 어쨌든 실험 3에서도 무언가를 요청하거나, 실행 했을 것이기 때문에 ㄱ, ㄴ 이 무엇인지 매칭만 할 수 있다면 a 가 무엇인지 알 수 있을 것이라고 파악했다.
항상 나를 겸손하게 만드는 코루틴... Android 의 난이도를 어렵게 만드는 주범
코루틴의 취소, 에러 전파 및 처리에 관련해선 면접의 단골 질문 소재이고, 그 중요성을 알고 있기 때문에, 꾸준한 복습을 해오고 있지만, 각 상황에 따라 Job 의 상태가 어떻게 변하는지까지는 판단하기 어려웠다. 이해를 통한 암기를 이전에 했었다고 생각했는데, 나이를 먹으면서 점점 기억의 휘발이 빨라지는 것 같아 서럽다.
해당 문제의 설명과 관련해선 이미 좋은 글이 있기 때문에 해당 글의 링크로 설명을 대신하도록 하겠다. 절대 어려워서 설명을 못하는 것은 아니다. ^>^
마음 같아선 멋지게 모든 Kotlin Coroutines 문제들의 대한 해설을 작성하고 싶지만, 우선 틀린 문제들의 코드들을 직접 돌려보면서, 개념 복습 및 내부 코드들을 봐보면서 찬찬히 음미해봐야겠다. 양질의 문제들 출제 해주셔서 정말 감사드린다.
Jetpack Compose 관련 문제들에 대한 언급이 없었는데, 최근에 Navigation 과 Slack 의 Circuit 에 대한 블로그 글들을 작성하면서, ViewModel 의 동작 방식과 Compose Runtime 과 관련한 깊이있는 분석을 했던 경험 덕에, 비교적 쉽게 문제들을 풀이할 수 있었다고 생각한다.
앞으로도 블로그 주도 학습 방법론을 계속 이어나가야겠다.
수능을 3번이나 봤던 수능 경력자로서, 이번 행사에 참여하면서 감회가 새로웠다.
선택과목으로 택한 자신 있던 Jetpack Compose 의 경우 전부 정답을 맞출 수 있었지만, 공통 과목, 그리고 특히 선택과목인 Kotlin Coroutines 에서 많은 비가 내렸다...오랜만에 써보는 표현
최근에 면접을 준비하면서, 공부를 많이 했다고 생각했는데... 역시 벼락치기식, 면접 예상 질문 준비식 공부는 빠르게 휘발되는 것 같다.
직접 코드를 작성해보면서, 프로젝트에 적용해보고 내 것으로 만들어봐야 할 것 같다.
이번 기회를 통해 내가 부족한 부분들을 확인 해볼 수 있었고, 틀린 문제들에 대한 오답 노트를 만들어보면서 이를 매꿔보도록 해야겠다.
혹시 문제를 직접 풀어보고 싶은 분들은 아래의 링크를 통해 문제를 확인할 수 있습니다.
https://android-exam25.gdg.kr/
레퍼런스)
https://velog.io/@murjune/GDG-Korea-Android-2025-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%83%90%EA%B5%AC%EC%98%81%EC%97%AD%ED%9B%84%EA%B8%B0-%EB%B0%8F-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4
https://thdev.tech/coroutines/2024/12/08/Kotlin-Coroutines-effect-exception/
너무 재밌게 잘 봤습니다~
18번 관련 링크 정리해주셔서 감사해요 😉