CertHub 예상문제 100문항 가운데 비슷한 개념끼리 보기로 맞붙여 둔 문항을 골라 정리했습니다. 응시자 오답률 통계가 아니라 문항 구성을 보고 고른 목록입니다.
1결합도와 응집도의 방향
흔한 실수 — 둘 다 '높을수록 좋다'고 기억하거나, 반대로 둘 다 낮춰야 한다고 고르는 경우가 많아요.
바로잡기 — 결합도(모듈 사이 의존)는 낮추고, 응집도(모듈 안의 관련성)는 높여요. '밖은 느슨하게, 안은 단단하게'로 기억하세요.
2RANK와 DENSE_RANK
흔한 실수 — 공동 순위가 나온 다음 순위를 몇 위로 매기는지 둘을 섞어 버려요.
바로잡기 — RANK는 공동 순위 수만큼 다음 순위를 건너뛰고(1, 2, 2, 4), DENSE_RANK는 건너뛰지 않아요(1, 2, 2, 3).
3정규화와 반정규화의 목적
흔한 실수 — 반정규화도 중복을 없애는 작업이라고 착각해요.
바로잡기 — 정규화는 중복을 없애 이상 현상을 막고, 반정규화는 조회 성능을 위해 일부러 중복을 들여요. 목적이 정반대예요.
4테스트 스텁과 테스트 드라이버
흔한 실수 — 하향식·상향식 통합에서 어느 쪽을 쓰는지 뒤바꿔 고르는 실수가 잦아요.
바로잡기 — 하향식은 위에서 내려오니 아직 없는 '하위' 모듈을 스텁으로 대신하고, 상향식은 아래에서 올라가니 아직 없는 '상위' 모듈을 드라이버로 대신해요.
5분기 커버리지와 조건 커버리지
흔한 실수 — 조건식 전체의 참·거짓과 개별 조건의 참·거짓을 같은 것으로 봐요.
바로잡기 — 분기(결정) 커버리지는 분기점 전체 조건식이 참·거짓을 한 번씩, 조건 커버리지는 그 안의 개별 조건이 참·거짓을 한 번씩 갖도록 해요.
6후보키·슈퍼키·기본키
흔한 실수 — '기본키도 여러 속성으로 만들 수 있다'는 말을 '기본키를 여러 개 지정할 수 있다'로 잘못 읽어요.
바로잡기 — 후보키는 유일성과 최소성을 모두, 슈퍼키는 유일성만 만족해요. 기본키는 후보키 중 하나를 고른 것이라 릴레이션당 하나뿐이에요. 여러 속성으로 이뤄진 복합키여도 '하나'예요.
7LEFT OUTER JOIN의 결과 행 수
흔한 실수 — 왼쪽 테이블 행 수가 그대로 결과 행 수라고 생각해요.
바로잡기 — 왼쪽 행 하나가 오른쪽 여러 행과 매칭되면 그만큼 늘어나고, 매칭이 없으면 NULL과 붙어 한 행으로 남아요. 매칭 건수를 행마다 세어서 더해야 해요.
8WHERE와 HAVING
흔한 실수 — 그룹 함수 조건을 WHERE에 쓰거나, HAVING이 그룹 전 행을 거른다고 생각해요.
바로잡기 — WHERE는 그룹으로 묶기 전의 행을, HAVING은 GROUP BY로 묶인 뒤의 그룹을 걸러요. AVG·SUM 같은 그룹 함수 조건은 HAVING에 써요.
9REDO와 UNDO
흔한 실수 — 장애가 나면 무조건 되돌린다(UNDO)고 생각해요.
바로잡기 — 커밋이 끝난 트랜잭션은 로그로 다시 반영(REDO)하고, 커밋 전에 멈춘 트랜잭션은 취소(UNDO)해요. 기준은 '커밋했는가'예요.
10오버로딩·오버라이딩과 동적 바인딩
흔한 실수 — 참조 변수 타입이 부모면 부모 메서드가 실행된다고 답해요.
바로잡기 — 오버로딩은 한 클래스 안에서 매개변수만 다른 같은 이름, 오버라이딩은 상속받은 메서드의 재정의예요. 오버라이딩된 메서드는 참조 변수 타입이 아니라 실제 객체 타입을 따라 호출돼요.