본문 바로가기
Dev/Computer Science

[CS] 프로그래밍 기본 개념 시험문제 요약

by 컴포넌트설계자 2026. 4. 16.

☕ Java (자바) 예상 문제

키워드: 접근 제한자, static, 상속과 추상화, 스레드, 다형성

  1. 클래스 선언 시 사용할 수 없는 제한자는?
    • ① public ② default ③ private ④ final
    • 정답: ③ (일반적인 외부 클래스 선언 시 private은 사용할 수 없습니다.)
  2. final 키워드에 대한 설명으로 틀린 것은?
    • ① 클래스에 붙으면 상속이 불가능하다.
    • ② 메서드에 붙으면 오버라이딩이 불가능하다.
    • ③ 변수에 붙으면 값을 변경할 수 없는 상수가 된다.
    • ④ final 클래스는 객체 생성이 불가능하다.
    • 정답: ④ (final 클래스도 객체 생성은 가능하며 상속만 안 되는 것입니다.)
  3. abstract 클래스의 특징으로 옳은 것은?
    • ① new 키워드로 직접 객체 생성이 가능하다.
    • ② 반드시 하나 이상의 추상 메서드를 포함해야 한다.
    • ③ 추상 메서드가 없어도 abstract 선언이 가능하다.
    • ④ 자식 클래스에서 추상 메서드를 반드시 구현할 필요는 없다.
    • 정답:
  4. static 메서드 내에서 접근할 수 있는 것은?
    • ① 인스턴스 필드 ② 인스턴스 메서드 ③ this 키워드 ④ 다른 static 필드
    • 정답: ④ (static은 메모리에 먼저 올라가므로 인스턴스 자원에 접근 불가합니다.)
  5. 자바에서 import 문 없이 사용할 수 있는 패키지는?
    • ① java.util ② java.lang ③ java.io ④ java.net
    • 정답:
  6. 스레드를 실행하기 위해 호출해야 하는 메서드는?
    • ① run() ② execute() ③ start() ④ init()
    • 정답: ③ (run()을 직접 호출하면 스레드가 생성되지 않습니다.)
  7. 인터페이스(Interface)의 필드에 자동으로 붙는 제한자는?
    • ① public static final ② private static final ③ public volatile ④ protected static
    • 정답:
  8. 부모 타입으로 자식 객체를 참조할 때(다형성), 오버라이딩된 메서드를 호출하면?
    • ① 부모의 메서드가 실행된다. ② 자식의 메서드가 실행된다. ③ 에러가 발생한다. ④ 무작위로 실행된다.
    • 정답:
  9. 입출력(IO)이나 스레드 제어(sleep) 시 반드시 처리해야 하는 것은?
    • ① 상속 ② 예외 처리(Exception Handling) ③ 인터페이스 구현 ④ 메모리 할당
    • 정답:
  10. 서버 소켓에서 클라이언트의 접속을 대기하는 메서드는?
    • ① connect() ② listen() ③ accept() ④ receive()
    • 정답:

⚛️ React (리액트) 예상 문제

키워드: 컴포넌트, Props/State, 가상 돔, Hook(useEffect, UseMemo), Context

  1. 리액트 컴포넌트가 반드시 반환해야 하는 최상위 요소의 규칙은?
    • ① 반드시 <div>여야 한다. ② 오직 하나의 요소만 반환해야 한다. ③ 여러 개를 나열해도 된다. ④ 반환값이 없어도 된다.
    • 정답: ② (여러 요소를 묶을 때 <></> Fragment를 사용합니다.)
  2. 부모 컴포넌트가 자식에게 데이터를 전달하는 방식은?
    • ① State ② Context ③ Props ④ Ref
    • 정답:
  3. useState를 사용하는 주요 이유는?
    • ① 변수 값을 저장하기 위해 ② 값이 변할 때 화면을 자동 리렌더링하기 위해 ③ 메모리를 절약하기 위해 ④ API 통신을 위해
    • 정답:
  4. 가상 돔(Virtual DOM)의 장점은?
    • ① 메모리를 적게 사용한다. ② 전체 페이지를 매번 새로고침한다. ③ 실제 DOM과의 차이점만 계산하여 빠르게 업데이트한다. ④ 자바스크립트 실행 속도를 높여준다.
    • 정답:
  5. useEffect에서 컴포넌트가 사라질 때(Unmount) 코드를 실행하는 방법은?
    • ① return 문에 함수를 정의한다. ② 의존성 배열을 비운다. ③ finally 문을 쓴다. ④ exit()를 호출한다.
    • 정답: ① (Cleanup 함수)
  6. 컴포넌트가 리렌더링되는 조건이 아닌 것은?
    • ① State 변경 ② Props 변경 ③ 부모 컴포넌트의 변경 ④ 일반 변수(let) 값의 변경
    • 정답:
  7. 값의 최적화를 위해 사용하는 Hook은?
    • ① useCallback ② useMemo ③ useRef ④ useContext
    • 정답: ② (useCallback은 함수 최적화, useMemo는 값 최적화)
  8. useRef와 useState의 가장 큰 차이점은?
    • ① useRef는 값이 변해도 리렌더링을 유발하지 않는다. ② useRef는 객체만 저장할 수 있다. ③ useState가 더 빠르다. ④ 차이가 없다.
    • 정답:

🗄️ DB (데이터베이스) 예상 문제

키워드: 제약조건, SQL 분류, JOIN, 인덱스, 서브쿼리

  1. Primary Key(PK)의 특징으로 틀린 것은?
    • ① 테이블당 하나만 존재한다. ② 중복을 허용하지 않는다. ③ NULL 값을 가질 수 있다. ④ 자동으로 인덱스가 생성된다.
    • 정답: ③ (PK는 NOT NULL이어야 합니다.)
  2. 테이블 구조를 변경하는 ALTER는 어떤 SQL 분류에 속하는가?
    • ① DML ② DDL ③ DCL ④ TCL
    • 정답:
  3. 집계 함수를 사용할 때 조건절을 작성하는 키워드는?
    • ① WHERE ② GROUP BY ③ HAVING ④ ORDER BY
    • 정답:
  4. JOIN 시 두 테이블의 컬럼명이 같을 때 하나만 출력해주는 키워드는?
    • ① ON ② USING ③ AS ④ UNION
    • 정답:
  5. 서브쿼리의 결과가 2개 이상일 때 사용하는 연산자가 아닌 것은?
    • ① IN ② ANY ③ ALL ④ =
    • 정답: ④ (=은 단일행 연산자입니다.)
  6. 인덱스(Index)에 대한 설명으로 틀린 것은?
    • ① 검색 속도를 향상시킨다. ② 데이터 변경(INSERT, UPDATE) 속도는 느려질 수 있다. ③ 모든 컬럼에 인덱스를 거는 것이 효율적이다. ④ PK에는 자동으로 설정된다.
    • 정답:
  7. IFNULL(A, B) 함수의 기능은? (MySQL 기준)
    • ① A가 NULL이면 B를 반환한다. ② A가 NULL이 아니면 B를 반환한다. ③ A와 B가 같으면 NULL을 반환한다. ④ A가 NULL인지 체크만 한다.
    • 정답:

Java (자바) 추가 20문제

  1. 상속에서 자식 클래스가 부모 클래스의 생성자를 호출할 때 사용하는 키워드는?
    • ① this() ② super() ③ parent() ④ root()
    • 정답:
  2. try-catch-finally 문에서 finally 블록의 역할은?
    • ① 예외가 발생했을 때만 실행된다.
    • ② 예외가 발생하지 않았을 때만 실행된다.
    • ③ 예외 발생 여부와 상관없이 항상 실행된다.
    • ④ 프로그램을 즉시 종료시킨다.
    • 정답: ③ (자원 해제 시 주로 사용)
  3. String 객체와 달리 내용을 수정할 수 있는 가변 클래스는?
    • ① StringFixed ② StringBuilder ③ StringStatic ④ StringArray
    • 정답:
  4. 인터페이스 구현 시 implements 뒤에 올 수 있는 것은?
    • ① 단 하나의 인터페이스만 가능하다.
    • ② 여러 개의 인터페이스를 쉼표(,)로 구분해 나열할 수 있다.
    • ③ 반드시 클래스 상속(extends)이 먼저 있어야 한다.
    • ④ 인터페이스는 구현할 수 없다.
    • 정답: ② (다중 구현 가능)
  5. Runnable 인터페이스를 구현할 때 반드시 오버라이딩해야 하는 메서드는?
    • ① start() ② stop() ③ run() ④ execute()
    • 정답:
  6. 추상 메서드(Abstract Method)의 특징으로 옳은 것은?
    • ① 메서드의 몸체({ })가 없다.
    • ② 반드시 static이어야 한다.
    • ③ 일반 클래스에서도 선언할 수 있다.
    • ④ 접근 제한자는 반드시 private이어야 한다.
    • 정답:
  7. 자바의 예외(Exception) 최상위 클래스는?
    • ① Error ② RuntimeException ③ Throwable ④ Object
    • 정답: ③ (그 위는 Object이지만 예외 계층에서는 Throwable이 최상위)
  8. Thread.sleep(1000) 호출 시 발생하는 예외는?
    • ① NullPointerException ② InterruptedException ③ IOException ④ ArithmeticException
    • 정답:
  9. static 필드의 다른 이름으로 적절한 것은?
    • ① 인스턴스 변수 ② 공유 변수(클래스 변수) ③ 지역 변수 ④ 매개 변수
    • 정답:
  10. 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 무엇이라 하는가?
    • ① Overloading ② Overriding ③ Casting ④ Hiding
    • 정답:

(중략 - 핵심 개념 위주로 20번까지 이어집니다) 11. Wrapper 클래스가 아닌 것은? (Integer, Double 등) 12. Collection 인터페이스의 하위 인터페이스 종류 (List, Set 등) 13. Generic(<T>)을 사용하는 이유 14. instanceof 연산자의 용도 15. 기본 생성자가 자동으로 생성되지 않는 경우 (매개변수 생성자가 있을 때) 16. final 메서드와 abstract 메서드를 동시에 쓸 수 없는 이유 17. TCP 소켓 통신에서 InputStream/OutputStream의 용도 18. 가비지 컬렉터(GC)의 역할 19. this 키워드를 사용할 수 없는 곳 (static 메서드) 20. 다중 상속을 지원하지 않는 자바에서 대안으로 사용하는 것 (인터페이스)


⚛️ React (리액트) 추가 20문제

  1. Vite 프로젝트에서 가장 먼저 실행되는 HTML 파일은?
    • ① main.html ② app.html ③ index.html ④ root.html
    • 정답:
  2. 컴포넌트 내에서 특정 DOM 요소를 직접 선택해야 할 때 사용하는 Hook은?
    • ① useState ② useEffect ③ useRef ④ useMemo
    • 정답:
  3. useEffect의 의존성 배열에 빈 배열([])을 넣었을 때 실행 시점은?
    • ① 매번 렌더링될 때마다 ② 컴포넌트가 처음 나타날(Mount) 때만 한 번 ③ 컴포넌트가 사라질 때만 ④ 절대 실행되지 않음
    • 정답:
  4. Props Drilling 문제를 해결하기 위해 사용하는 리액트 내장 기능은?
    • ① Redux ② Context API ③ Axios ④ Router
    • 정답:
  5. Redux에서 상태 변경을 일으키기 위해 보내는 객체는?
    • ① Dispatch ② Selector ③ Action ④ Slice
    • 정답:
  6. 함수형 컴포넌트에서 상태를 관리하기 위해 사용하는 Hook은?
    • ① useState ② useEffect ③ useContext ④ useReducer
    • 정답:
  7. 컴포넌트 최적화를 위해 함수 자체를 메모이제이션하는 Hook은?
    • ① useMemo ② useCallback ③ React.memo ④ useRef
    • 정답:
  8. JSX에서 자바스크립트 표현식을 사용하기 위해 사용하는 기호는?
    • ① ( ) ② [ ] ③ { } ④ < >
    • 정답:
  9. useSelector의 역할은? (Redux 기준)
    • ① 액션을 발생시킨다. ② 스토어의 상태를 조회한다. ③ 리듀서를 생성한다. ④ 컴포넌트를 구독 해지한다.
    • 정답:
  10. 리액트에서 Key Props를 사용하는 주된 이유는?
    • ① 스타일을 적용하기 위해 ② 리스트의 요소를 식별하여 렌더링 효율을 높이기 위해 ③ 데이터를 전달하기 위해 ④ 보안을 위해
    • 정답:

(중략 - 20번까지 핵심 개념) 11. 비동기 통신을 위해 주로 사용하는 라이브러리 (Axios 등) 12. 상태 관리 라이브러리 종류 (Redux, Recoil 등) 13. SPA(Single Page Application)의 특징 14. setState가 비동기로 동작하는 이유 15. Controlled Component(제어 컴포넌트)의 의미 16. React.memo가 필요한 상황 17. Custom Hook을 만들 때 함수 이름의 규칙 (use로 시작) 18. 리액트 라이프사이클 3단계 (Mount, Update, Unmount) 19. StrictMode의 역할 20. 컴포넌트 재사용성을 높이는 방법


🗄️ DB (데이터베이스) 추가 20문제

  1. 외래키(FK) 제약조건의 주된 목적은?
    • ① 데이터 검색 속도 향상 ② 참조 무결성 유지 ③ 저장 공간 절약 ④ 데이터 암호화
    • 정답:
  2. DCL(Data Control Language)에 해당하는 명령어는?
    • ① SELECT, INSERT ② CREATE, DROP ③ GRANT, REVOKE ④ COMMIT, ROLLBACK
    • 정답:
  3. ORDER BY 절의 기본 정렬 순서는?
    • ① ASC (오름차순) ② DESC (내림차순) ③ 랜덤 ④ 입력된 순서
    • 정답:
  4. AUTO_INCREMENT 속성에 대한 설명으로 틀린 것은?
    • ① 주로 PK 컬럼에 사용한다. ② 숫자가 자동으로 증가한다. ③ Oracle에서는 IDENTITY나 SEQUENCE를 주로 쓴다. ④ 문자열 타입에도 사용할 수 있다.
    • 정답: ④ (숫자 타입만 가능)
  5. COMMIT과 ROLLBACK을 관리하는 SQL 분류는?
    • ① DML ② DDL ③ TCL ④ DCL
    • 정답:
  6. 두 테이블에서 공통된 값이 있는 행만 결합하는 조인 방식은?
    • ① LEFT JOIN ② INNER JOIN ③ FULL JOIN ④ CROSS JOIN
    • 정답:
  7. 서브쿼리 결과가 존재하면 TRUE를 반환하는 연산자는?
    • ① IN ② ANY ③ EXISTS ④ ALL
    • 정답:
  8. 데이터베이스 설계 순서로 옳은 것은?
    • ① 물리적 -> 논리적 -> 개념적 ② 개념적 -> 논리적 -> 물리적 ③ 논리적 -> 개념적 -> 물리적 ④ 물리적 -> 개념적 -> 논리적
    • 정답:
  9. IS NULL 연산자의 용도는?
    • ① 값이 0인 행을 찾는다. ② 값이 비어있는(NULL) 행을 찾는다. ③ 값이 공백('')인 행을 찾는다. ④ 값이 존재하지 않는 테이블을 찾는다.
    • 정답:
  10. AVG(), COUNT(), SUM()과 같은 함수를 무엇이라 하는가?
    • ① 문자열 함수 ② 집계 함수 ③ 날짜 함수 ④ 변환 함수
    • 정답:

(중략 - 20번까지 핵심 개념) 11. DELETE와 TRUNCATE의 차이 (로그 기록 및 롤백 여부) 12. LIKE 연산자와 와일드카드(%, _) 13. DISTINCT 키워드의 용도 (중복 제거) 14. 데이터베이스 정규화(Normalization)를 하는 이유 (데이터 중복 최소화 등) 15. 서브쿼리가 위치할 수 있는 곳 (SELECT, FROM, WHERE 등) 16. 인덱스 생성 시 고려해야 할 사항 (카디널리티 등) 17. UNION과 UNION ALL의 차이 18. ALTER TABLE을 통해 할 수 있는 것 (컬럼 추가, 변경, 삭제) 19. 외래키 삭제 시 옵션 (CASCADE, SET NULL 등) 20. MySQL에서 현재 시간을 가져오는 함수 (NOW, SYSDATE 등)