10/29(금) 10:00 ~ 18:00의 긴 시간 동안 마지막 시험을 치렀다.
문제 구성
원래는 한 문제당 14점에서 16점 정도의 배점이 주어져서, 6 ~ 8문제가 출제되었다.
이번 마지막 시험은 한 문제당 6점이었다.. 그렇기에 15문제를 해결하면 90점, 마지막 문제는 10점이 주어졌다.
level 00 ~ level 14까지 6점이고, level 15가 10점인 셈이다.
문제가 너무 많았어서 기억이 잘 안 나지만, 대략 10번까지는 쉬운 문제들로 구성됐다.
level 10 넘어서부터는 이전 Exam들의 마지막 문제들이 포함되었고, 그 때문에 난이도 상승이 체감됐다.
내 경우에는 Exam01에서 나왔던 마지막 문제, Exam02에서 나왔던 마지막 문제가 순서대로 나왔다.
level 14, 15번 문제는 그동안 공부했던 모든 개인과제들을 다 활용해야 해결이 가능했던 것 같다.
대략적인 점수 분포
Final Exam직전까지의 레벨을 기준으로 상위권들의 점수를 대략 확인했을 때,
72점(level 12) ~ 90점(level 14)까지 분포가 다양했다.
intra가 닫히는지 모르고, 모든 사람들을 확인한 것이 아니라 정확하진 않지만
100점은 손에 꼽았다.
개인과제 진도와 점수 분포에 대한 개인적인 생각
이번 5기 2차 피 시너들의 개인과제 진도는 빠르신 분들 중에서는 C9가 정말 많았고, C11은 극소수였다.
또한 평균적인 진도는 대략 C6 ~ C7정도 수준이었다.
나중에 정확한 분석을 해 봐야 알 것 같지만 진도가 빠르다고 시험을 잘 보는 것은 아니었다.
개인적인 생각으로는 시험 문제에 개인 과제에 포함된 문제들을 활용하는 경우가 많았기 때문에
진도에 비해서 시험 점수가 낮은것은 그만큼 과제에 대한 공부를 제대로 한 것이 아니라고 판단이 되고,
아마 평가자분들도 그런 부분을 생각하지 않을까 조심스럽게 추측해본다.
경험치 관점(?)에서 봤을 때, 72점(-106 exp)과 90점(-38 exp), 그리고 100점(-0 exp)은 사이에는 그렇게 차이나 보이지 않는다.
하지만 저 점수들 사이의 6점, 그리고 10점을 올리기 위해서는 정말 어려운 문제들을 해결해야 한다.
정말 실력 차이가 많이 나는 점수 구간대라고 생각하면 된다.
본 과정 합/불 여부와는 별개로, 자신이 진도가 빨랐으나 시험을 못 본 경우에는
진도를 빠르게 나가기 위한 과제를 수행하지 않았나 한번 되돌아 보는 시간도 필요할 것 같다고 생각한다.
Final Exam만을 위한 팁
문제를 잘 읽은 뒤에, 파일명
폴더 이름
Git push유무
를 잘 체크한다.
정말 기본이지만, 본인의 경우 level 14 문제를 풀 때, 폴더 이름을 잘못 작성해서 1시간을 허비했다...
특히, 문제가 어디서 틀렸는지 trace가 나오지 않는 Final 특성상 이런 사소한 실수를 줄이는 것은 필수다.
아침을 최대한 든든하게 먹고, 에너지바, 든든한 액체류를 챙겨간다.
아침 10시부터 저녁 6시까지 시험을 보는데, 아무것도 안 준다.
배고프고 집중이 잘 안된다.
하지만 클러스터에 음식물을 들고 가는 것은 금기사항이다. 알아서 잘 계획을 세우길..
문제를 다 풀었으면 적어도 누구나 생각할 수 있는 예외 케이스는 다 테스트한다.
백준과 같은 알고리즘 채점 시스템에 비해서는 깐깐하게 채점하지 않는다.
그렇지만 NULL(인자가 없는 경우)
, INT_MAX
, INT_MIN
, 0(인자가 0인 경우)
등은 당연히 확인해야 한다.
개인 과제에서도 쉽게 예상되는 예외사항을 채점 기계가 처리하지 않고 통과시켜준 경우가 종종 있었다.
fsanitize=address -g3
옵션을 활용한다.
피신 문제를 풀 때, 가장 많이 보는 오류가 Bus Error
, Segmentation Fault
인데 원인을 찾기 어렵다.
위 옵션을 활용하면, 실행했을 때 어느 부분에서 오류가 발생했는지 알려준다.
lldb
안된다.
어떤 이전 기수 블로그를 봤을 때, 시험장에서 lldb를 활용해 쉽게 디버깅했다는 글을 보았었다.
다른 방법으로 사용할 수 있으면 사용하는 것을 추천한다.
lldb를 사용할 때, 프로그램 동작을 제어하기 위해서 관리자 권한이 필요하더라..