AI 활용 개발 역량 평가

총 50문항 · 각 2점 · 만점 100점

프론트엔드 · AI 활용 · 데이터베이스 · Python 자동화 · SEO · 배포 · 보안 · UX 기획

영역 1 · AI 활용 (문항 1~10)

AI활용

1. 대형 언어 모델(LLM)에서 '할루시네이션(Hallucination)'이 발생하는 주된 이유로 가장 적절한 것은?

정답 B — LLM은 다음 토큰의 확률 분포에서 샘플링하므로 사실 여부와 무관하게 유창한 문장을 생성할 수 있습니다.
AI활용

2. RAG(Retrieval-Augmented Generation) 아키텍처의 핵심 목적은?

정답 B — RAG는 벡터 검색으로 관련 문서를 가져와 LLM의 컨텍스트에 삽입함으로써 최신·도메인 정보에 기반한 답변을 생성합니다.
AI활용

3. 다음 중 '퓨샷(Few-shot) 프롬프팅'에 대한 설명으로 올바른 것은?

정답 B — Few-shot prompting은 예시(example)를 프롬프트에 직접 삽입해 모델이 원하는 형식·톤으로 응답하도록 유도하는 in-context learning 방법입니다.
AI활용

4. LLM API 호출 시 'temperature' 값을 0에 가깝게 설정했을 때의 효과로 옳은 것은?

정답 C — temperature≈0은 greedy decoding에 가까워지며 동일 입력에 대해 거의 같은 출력을 생성합니다.
AI활용

5. AI 에이전트(Agent)가 'Tool use(함수 호출)'를 사용하는 주된 이유는?

정답 B — Tool use는 LLM이 텍스트 생성에서 벗어나 실제 코드 실행, API 호출, 파일 조작 등을 수행할 수 있게 합니다.
AI활용

6. 임베딩(Embedding) 벡터를 이용한 의미 검색(semantic search)에서 코사인 유사도(cosine similarity)가 1에 가까울수록 의미하는 것은?

정답 A — cosine similarity는 벡터 방향의 유사도를 측정하며, 1에 가까울수록 의미적으로 유사한 문서입니다.
AI활용

7. 프롬프트 엔지니어링에서 'Chain-of-Thought(CoT)' 기법의 핵심은?

정답 B — "단계적으로 생각하라(Let's think step by step)"처럼 추론 과정을 명시하게 하면 복잡한 문제의 정확도가 높아집니다.
AI활용

8. 다음 중 AI 코드 어시스턴트를 업무에 효과적으로 활용하는 방법으로 가장 부적절한 것은?

정답 B — AI 생성 코드는 오류, 보안 취약점, 비효율이 포함될 수 있으므로 반드시 검토 후 사용해야 합니다.
AI활용

9. LLM의 '컨텍스트 윈도우(context window)' 크기가 중요한 이유는?

정답 B — 컨텍스트 윈도우를 초과하면 이전 대화나 문서를 잘라내야 하므로, 장문 처리·대화 유지 여부에 직접 영향을 줍니다.
AI활용

10. 멀티-에이전트 시스템에서 '오케스트레이터(Orchestrator)' 에이전트의 역할로 가장 적절한 것은?

정답 B — 오케스트레이터는 계획(planning)·위임(delegation)·통합(synthesis)을 담당하며, 실제 실행은 서브에이전트가 수행합니다.

영역 2 · 웹 프론트엔드 (문항 11~20)

프론트엔드

11. CSS에서 position: sticky가 동작하려면 반드시 필요한 조건은?

정답 B — sticky는 임계값(top/left/right/bottom) 없이는 static처럼 동작합니다. 또한 부모에 overflow:hidden이 있으면 오히려 작동이 안 됩니다.
프론트엔드

12. Tailwind CSS에서 반응형 접두어 md:가 적용되는 기본 기준 너비는?

정답 C — Tailwind 기본 중단점: sm=640px, md=768px, lg=1024px, xl=1280px, 2xl=1536px.
프론트엔드

13. JavaScript의 event.preventDefault()를 폼 submit 이벤트 핸들러에서 호출하는 이유는?

정답 B — preventDefault()는 브라우저의 기본 submit 동작(GET/POST 전송 후 리로드)을 막아 fetch/XHR로 직접 처리하는 SPA 패턴에서 핵심입니다.
프론트엔드

14. 웹 성능 최적화를 위해 이미지에 loading="lazy" 속성을 추가하는 효과로 옳은 것은?

정답 B — Lazy loading은 화면 밖의 이미지 다운로드를 뒤로 미뤄 LCP 개선과 초기 대역폭 절감 효과가 있습니다.
프론트엔드

15. CSS 애니메이션 성능 최적화를 위해 권장되는 속성은?

정답 C — transform·opacity는 GPU 합성 레이어에서 처리되어 layout/paint 단계를 건너뜁니다. 나머지는 리플로우를 유발합니다.
프론트엔드

16. async/await를 사용할 때, await는 어디에서만 사용할 수 있는가?

정답 B — await는 async 함수 내부, 또는 최상위 await(Top-level await)를 지원하는 ES 모듈에서만 사용 가능합니다.
프론트엔드

17. 다음 중 XSS(Cross-Site Scripting) 공격을 방지하기 위한 올바른 방법은?

정답 B — innerHTML은 스크립트 실행을 허용합니다. textContent는 텍스트만 삽입하므로 XSS가 불가능하며, 서버측 HTML 인코딩도 필수입니다.
프론트엔드

18. CSS Grid에서 grid-template-columns: repeat(3, 1fr)의 의미는?

정답 B — 1fr은 사용 가능한 공간의 1/n을 의미하며, repeat(3, 1fr)은 컨테이너를 3등분한 3열 그리드를 만듭니다.
프론트엔드

19. 브라우저 렌더링 파이프라인에서 레이아웃(Reflow)을 유발하는 CSS 속성 변경 시 성능 문제가 발생하는 이유는?

정답 B — Reflow는 DOM 트리 전체 또는 일부의 기하학적 정보를 재계산하므로, 특히 루트 근처 요소에 적용되면 전체 레이아웃을 다시 계산해야 합니다.
프론트엔드

20. localStoragesessionStorage의 가장 큰 차이는?

정답 B — localStorage는 명시적 삭제 전까지 영구 보존, sessionStorage는 브라우저 탭(세션) 종료 시 자동 삭제됩니다.

영역 3 · 데이터베이스 / Supabase (문항 21~30)

DB/Supabase

21. PostgreSQL에서 EXPLAIN ANALYZE를 사용하는 목적은?

정답 B — EXPLAIN ANALYZE는 쿼리를 실제 실행하고 각 노드의 예상/실제 행 수·비용·시간을 출력해 인덱스 누락이나 불필요한 Seq Scan을 발견하는 데 사용됩니다.
DB/Supabase

22. Supabase의 RLS(Row Level Security)를 활성화하는 주된 이유는?

정답 B — Supabase의 anon key는 클라이언트 코드에 노출되므로, RLS 정책 없이는 누구나 전체 테이블을 읽거나 쓸 수 있습니다.
DB/Supabase

23. SQL LEFT JOININNER JOIN의 차이로 옳은 것은?

정답 B — LEFT JOIN은 왼쪽 테이블을 기준으로 오른쪽 조건이 없어도 NULL을 채워 반환합니다. 게시물과 댓글처럼 "댓글 없는 게시물도 보이게"할 때 유용합니다.
DB/Supabase

24. Supabase에서 클라이언트 JS가 데이터를 삽입(INSERT)만 할 수 있고 조회는 할 수 없게 만들려면?

정답 B — RLS가 켜져 있으면 기본적으로 모든 접근이 차단됩니다. INSERT 정책만 생성하면 anon 사용자는 쓰기만 가능하고 읽기는 불가합니다.
DB/Supabase

25. 데이터베이스 인덱스(Index)를 과도하게 추가할 때 생기는 부작용은?

정답 B — 인덱스는 읽기를 빠르게 하지만, 변경 시 인덱스 자료구조(B-Tree 등)도 갱신해야 하므로 쓰기 집약적인 테이블에서는 오히려 성능 저하를 유발합니다.
DB/Supabase

26. Supabase Storage에 파일을 업로드한 뒤 공개 URL을 얻으려면 버킷을 어떻게 설정해야 하는가?

정답 A — Public 버킷이면 누구나 URL로 접근 가능하고, Private 버킷이면 만료 기간이 있는 Signed URL을 발급해야 합니다.
DB/Supabase

27. 다음 SQL에서 GROUP BY department HAVING COUNT(*) > 5의 의미로 옳은 것은?

정답 B — HAVING은 GROUP BY 이후 집계 결과에 대한 필터입니다. WHERE는 그룹화 전, HAVING은 그룹화 후에 적용됩니다.
DB/Supabase

28. Supabase Realtime을 사용할 때 클라이언트가 특정 테이블의 변경 사항을 수신하려면?

정답 B — Supabase Realtime은 WebSocket 기반 채널 구독 방식으로, channel().on('postgres_changes', ...).subscribe() 패턴을 사용합니다.
DB/Supabase

29. 소프트 삭제(Soft Delete) 패턴을 사용하는 이유로 가장 적절한 것은?

정답 B — is_deleted=true로 마킹하면 실수로 삭제된 데이터를 복구할 수 있고, 관련 레코드와의 관계도 보존되며 감사 로그(audit trail) 역할도 합니다.
DB/Supabase

30. Supabase Edge Function을 사용하는 적절한 상황은?

정답 A — Edge Function은 서버사이드에서 실행되므로 RESEND, OpenAI, Stripe 등의 민감한 API 키를 안전하게 사용할 수 있습니다.

영역 4 · Python 자동화 (문항 31~38)

Python

31. Playwright를 사용하는 웹 크롤러가 requests+BeautifulSoup 크롤러보다 유리한 경우는?

정답 B — Playwright는 실제 브라우저를 제어하므로 React·Vue·Angular 등 JS 렌더링 사이트에서도 콘텐츠를 수집할 수 있습니다.
Python

32. Python에서 requests.get(url, timeout=5)에서 timeout 파라미터를 설정하는 이유는?

정답 B — timeout 없이 hang된 서버에 요청하면 스크립트가 무기한 대기합니다. timeout은 연결 실패 시 예외를 발생시켜 자동화 파이프라인이 멈추지 않도록 합니다.
Python

33. Python에서 with open('file.csv', 'w', newline='', encoding='utf-8-sig') as f에서 utf-8-sig를 사용하는 이유는?

정답 B — utf-8-sig는 BOM(Byte Order Mark)을 파일 앞에 추가해 Windows Excel이 파일을 UTF-8로 인식하게 합니다. BOM 없으면 한글이 깨집니다.
Python

34. BeautifulSoup에서 soup.select('div.card > a.title')가 선택하는 요소는?

정답 B — CSS 선택자에서 >는 직계 자식(direct child)을 의미합니다. 공백은 모든 자손(descendant)을 선택합니다.
Python

35. Python dotenv 라이브러리를 자동화 스크립트에서 사용하는 이유는?

정답 B — .env 파일은 .gitignore에 추가해 저장소에 올리지 않음으로써 API 키·비밀번호를 소스코드에서 분리할 수 있습니다.
Python

36. 크롤러가 robots.txt를 준수해야 하는 이유로 가장 적절한 것은?

정답 B — robots.txt 위반은 서버 과부하 유발, 이용약관 위배, 저작권·컴퓨터 통신망 법률 위반으로 이어질 수 있습니다.
Python

37. Python asyncio를 사용한 비동기 크롤링이 동기 방식보다 유리한 이유는?

정답 B — 크롤링의 병목은 대부분 네트워크 I/O입니다. asyncio는 단일 스레드에서 수백 개 요청을 동시에 진행할 수 있어 수십 배 속도 향상이 가능합니다.
Python

38. 자동화 파이프라인에서 try-except-finally 블록의 finally를 사용하는 이유는?

정답 B — finally는 예외 발생 여부와 무관하게 항상 실행되므로 리소스 누수(resource leak) 방지에 필수적입니다.

영역 5 · SEO / 콘텐츠 전략 (문항 39~43)

SEO

39. 검색엔진 최적화(SEO)에서 <title> 태그와 meta description의 권장 글자 수로 옳은 것은?

정답 B — Google SERP 기준으로 title은 50~60자(약 580px), description은 150~160자를 초과하면 잘려서 표시됩니다.
SEO

40. 구조화 데이터(JSON-LD)를 웹페이지에 삽입하는 주된 목적은?

정답 B — schema.org 기반 JSON-LD를 삽입하면 Google이 리치 결과(Rich Result)로 표시해 CTR을 높일 수 있습니다.
SEO

41. Core Web Vitals 지표 중 LCP(Largest Contentful Paint)가 측정하는 것은?

정답 B — LCP는 사용자가 페이지를 로딩할 때 "주요 콘텐츠가 언제 보이는가"를 나타내며 2.5초 이하가 Good 기준입니다.
SEO

42. rel="canonical" 태그를 사용하는 상황으로 가장 적절한 것은?

정답 B — ?page=1, ?sort=asc 등 파라미터 차이로 같은 내용의 URL이 여러 개일 때 canonical로 권위 있는 URL을 지정합니다.
SEO

43. 정적 HTML 사이트 vs. CSR(Client-Side Rendering) SPA의 SEO 차이로 옳은 것은?

정답 B — 정적 HTML은 크롤러가 JS를 실행하지 않아도 콘텐츠를 읽을 수 있습니다. CSR은 Googlebot이 JS를 처리하지만 지연(deferred indexing) 문제가 발생할 수 있습니다.

영역 6 · 배포 / DevOps (문항 44~46)

DevOps

44. Vercel에 배포한 사이트에서 환경변수(예: API 키)를 올바르게 설정하는 방법은?

정답 B — .env는 절대 커밋하지 않고, Vercel 환경변수 설정 UI를 통해 서버사이드 런타임에서 사용할 수 있게 합니다.
DevOps

45. Git에서 git revert <commit>git reset --hard <commit>의 차이로 옳은 것은?

정답 B — 공유 브랜치에서는 revert가 안전합니다. reset --hard는 이력을 날리므로 이미 push된 커밋에 사용하면 협업자에게 문제가 생깁니다.
DevOps

46. Vercel의 Preview Deployment가 제공하는 핵심 가치는?

정답 B — PR을 열면 자동으로 preview URL이 생성되어, 팀원이 코드 리뷰 전 실제 동작을 확인할 수 있습니다.

영역 7 · 데이터 분석 (문항 47~48)

분석

47. GA4(Google Analytics 4)의 이벤트 기반 데이터 모델이 UA(Universal Analytics)와 가장 다른 점은?

정답 B — GA4는 페이지뷰·클릭·스크롤·전환 모두를 이벤트로 처리하며, 세션 개념보다 사용자 중심의 여정 분석에 적합합니다.
분석

48. 퍼널 분석(Funnel Analysis)에서 각 단계 간 '이탈률'을 줄이기 위한 가장 효과적인 접근은?

정답 B — 이탈 원인을 데이터로 파악한 뒤 가설 기반 A/B 테스트로 검증하는 것이 전환율 최적화(CRO)의 기본 접근입니다.

영역 8 · 보안 (문항 49)

보안

49. API Rate Limiting을 적용하는 주된 이유는?

정답 B — Rate Limiting은 DDoS 완화, 크롤링 봇 차단, API 남용 방지, LLM API 비용 폭탄 방지 등에 필수적입니다.

영역 9 · 기획 / UX (문항 50)

UX기획

50. 랜딩페이지의 전환율(CVR)을 높이기 위해 히어로 섹션(Hero Section)에서 가장 중요한 요소는?

정답 B — 히어로 섹션의 핵심은 "5초 안에 무엇을 위한 사이트인지, 방문자에게 어떤 이익이 있는지"를 전달하는 명확한 헤드라인과 행동 유도 버튼입니다.