10. 예시문제 (프로그래밍기능사 실기)

header


예시문제 Part 1

문제 1

현재 작업 디렉터리의 절대 경로가 다음과 같을 때, 상대 경로로 제시된 디렉터리의 절대 경로를 쓰시오.

경로 상대 경로
[작업폴더]
/home/dev/projects/backend

[상대 경로]
../../config/env

문제 2

다음 각 기능에 해당하는 Linux 터미널 명령어를 <보기>에서 골라 쓰시오.

Linux 명령어
<보기>
ls   mv   cat   grep   pwd   echo   find   chmod   rm   cp   cd   export
① 파일이나 디렉터리를 다른 위치로 이동하거나 이름을 변경하는 명령어를 쓰시오.
② 특정 파일이나 디렉터리를 검색할 때 사용하는 명령어를 쓰시오.

문제 3

다음 Python 프로그램에 대하여 실행 결과를 쓰시오.

Python 트리 후위순회
class Vertex:
    def __init__(self, val):
        self.left = None
        self.right = None
        self.val = val

def traverse(node):
    if node:
        traverse(node.left)
        traverse(node.right)
        print(node.val, end = ' ')

root = Vertex(9)
root.left = Vertex(3)
root.right = Vertex(6)
root.left.left = Vertex(1)
root.left.right = Vertex(4)
root.right.left = Vertex(7)
root.right.right = Vertex(2)

traverse(root)
힌트: 재귀 호출 순서(왼쪽 → 오른쪽 → 현재 노드)를 따라 트리를 순회합니다.

예시문제 Part 2

문제 4

다음은 dictionary 변수에 어떤 값의 key를 포함하고 있다면 해당 key의 value 값을 모두 찾아 반환하는 Python 프로그램이다. 괄호(①)에 들어갈 알맞은 코드를 쓰시오.

Python dictionary
def lookup(data, k) :
    return [v for k2, v in data.( ① )() if k2 == k]

문제 5

다음 Python 프로그램에 대하여 다음 각 물음에 답하시오.

Python 피보나치
 1 | def make_series(count):
 2 |     result = []
 3 |     x, y = 0, 1
 4 |     for _ in range(count):
 5 |         result.append(x)
 6 |         x, y = y, x+y
 7 |     return result
 8 |
 9 | num = 7
10 | print(make_series(num)[0])
① 오류가 발생하는 Line의 번호를 쓰시오.
② 오류를 정상적으로 수정하여 프로그램이 실행되었을 경우의 실행 결과를 쓰시오.

문제 6

다음 JAVA 프로그램의 실행 결과가 30이 나오도록 괄호(①)에 들어갈 알맞은 키워드를 한 단어로 쓰시오.

Java interface
interface Calc {
    int operate(int x, int y);
}

class Multiply ( ① ) Calc {
    public int operate(int x, int y) {
        return x*y;
    }
}

public class Solution {
    public static void main(String[] args) {
        int p = 5, q = 6;
        Calc mul = new Multiply();
        System.out.print(mul.operate(p, q));
    }
}

예시문제 Part 3

문제 7

다음 JAVA 프로그램의 실행 결과를 쓰시오.

Java String
public class Solution {
    public static void main(String[] args) {
        String s1 = new String("JAVA");
        String s2 = new String("JAVA");
        if(s1.equals(s2)) System.out.print(s1);
        else System.out.print(s1+s2);
    }
}
힌트: equals()는 문자열의 내용을 비교하고, ==참조(주소)를 비교합니다.

문제 8

다음 JAVA 프로그램의 실행 결과를 쓰시오.

Java 생성자 상속
class Animal {
    Animal() {
        System.out.print('A');
    }
    Animal(char c) {
        this();
        System.out.print(c);
    }
}
class Dog extends Animal {
    Dog() {
        super();
        System.out.print('B');
    }
    Dog(char c) {
        this();
        System.out.print(c);
    }
}
public class Solution {
    public static void main(String[] args) {
        Animal a = new Dog('W');
    }
}
힌트: 생성자 체이닝에서 this()는 같은 클래스의 다른 생성자를, super()는 부모 클래스의 생성자를 호출합니다.

문제 9

member 테이블에는 nickname(닉네임), uid(아이디), dept(부서) 컬럼이 있다. 닉네임이 ‘김’으로 시작하면서 이름이 2글자인 사람의 정보를 찾는 SQL 코드에 대하여 괄호(①)에 들어갈 알맞은 와일드카드 문자를 쓰시오.

SQL LIKE
SELECT * FROM member WHERE nickname LIKE '김( ① )'
힌트: LIKE에서 %는 0개 이상의 문자, _는 정확히 1개의 문자를 의미합니다.

예시문제 Part 4

문제 10

log 테이블의 구조와 데이터를 모두 삭제하고, 연관 제약 조건까지 모두 제거하는 SQL 쿼리를 3개의 키워드와 테이블 이름(log)만 사용하여 쓰시오.

SQL DROP CASCADE

문제 11

다음 테이블 a1, a2에 대한 SQL 쿼리 수행 결과를 쓰시오.

SQL NOT IN SUM
<a1>

 k  | v
----|----
 B  | 4
 D  | 7
 E  | 1
 G  | 5

<a2>

 k  | v
----|----
 A  | 9
 D  | 3
 F  | 6
 G  | 8

SELECT SUM(v) AS total
FROM a2
WHERE k NOT IN (SELECT k FROM a1);
힌트: a1의 k 값은 {B, D, E, G}이므로, a2에서 이에 포함되지 않는 행만 선택됩니다.

핵심 요약

경로 & Linux 핵심 포인트

  • 절대 경로 : 루트(/)부터 시작하는 전체 경로
  • 상대 경로 : ..(상위 디렉터리), .(현재 디렉터리) 기준으로 이동
  • mv : 파일/디렉터리 이동 또는 이름 변경
  • find : 파일/디렉터리 검색, grep : 파일 내 문자열 패턴 검색

Python 핵심 포인트

  • 후위순회(Postorder) : 왼쪽 → 오른쪽 → 루트 순서로 트리 탐색
  • dict.items() : 딕셔너리의 (key, value) 쌍을 반환
  • 피보나치 수열 : x, y = y, x+y 패턴으로 동시 할당

Java 핵심 포인트

  • implements : 인터페이스 구현 시 사용하는 키워드
  • equals() : 문자열 내용 비교 (==는 참조 비교)
  • 생성자 체이닝 : this()로 같은 클래스, super()로 부모 클래스 생성자 호출

SQL 핵심 포인트

  • LIKE : %(0개 이상 문자), _(정확히 1개 문자)
  • DROP TABLE ~ CASCADE : 테이블과 연관 제약 조건 모두 삭제
  • NOT IN (서브쿼리) : 서브쿼리 결과에 포함되지 않는 행 검색