모의고사 1회 Part 1
문제 1
현재 작업 디렉터리의 절대 경로가 다음과 같을 때, 상대 경로로 제시된 디렉터리의 절대 경로를 쓰시오.
경로
상대 경로
[작업폴더]
/srv/app/api/v2
[상대 경로]
../../../static/css
문제 2
다음 각 기능에 해당하는 Linux 터미널 명령어를 <보기>에서 골라 쓰시오.
Linux
명령어
<보기>
grep cp cat rmdir chmod ls mv pwd diff find
grep cp cat rmdir chmod ls mv pwd diff find
① 텍스트 파일에서 특정 문자열 패턴을 검색하는 명령어입니다.
② 파일이나 디렉터리를 복사할 때 사용하는 명령어입니다.
② 파일이나 디렉터리를 복사할 때 사용하는 명령어입니다.
문제 3
<ORDERS> 테이블에 100자의 가변길이를 가진 ‘memo’라는 속성을 추가하는 SQL문을 작성하시오.
SQL
DDL
ALTER
모의고사 1회 Part 2
문제 4
다음은 <교수> 테이블과 <강의> 테이블을 조인(JOIN)한 결과이다. SQL의 괄호(①, ②)에 알맞은 항목을 적어 SQL문을 완성하시오.
SQL
JOIN
LEFT JOIN
<교수>
교번 | 이름 | 전공 | 직급
-----|--------|--------|------
201 | 강태호 | 컴퓨터 | 교수
202 | 박지수 | 수학 | 조교수
203 | 윤민준 | 영어 | 강사
204 | 이하나 | 물리 |
<강의>
교번 | 이름 | 과목명 | 학점
-----|--------|----------|------
201 | 강태호 | 자료구조 | 3
202 | | 선형대수 | 3
203 | 윤민준 | |
203 | 윤민준 | 영어회화 | 2
SELECT a.교번, 이름, 과목명, 학점
FROM 교수 a LEFT JOIN 강의 b
( ① ) a.교번 = b.( ② )
문제 5
다음 <INVENTORY> 테이블에서 품목별(item) 입고량(quantity)의 합계가 500 이상인 ‘품목명’, ‘최소입고량’, ‘최대입고량’을 조회하는 SQL문을 완성하시오. 괄호(①, ②)에 알맞은 항목을 쓰시오.
SQL
AS
HAVING
SELECT item, MIN(quantity) ( ① ) 최소입고량, MAX(quantity) ( ① ) 최대입고량
FROM INVENTORY
GROUP BY item
( ② ) SUM(quantity) >= 500
문제 6
다음 Y1과 Y2 테이블에 대해 SQL문을 실행했을 때 출력되는 결과를 쓰시오.
SQL
IN
AVG
<Y1>
P | Q
----|----
B | 12
D | 7
F | 3
H | 9
<Y2>
P | Q
----|----
A | 5
D | 14
E | 8
H | 6
SELECT AVG(Q) AS result
FROM Y2
WHERE P IN (SELECT P FROM Y1);
힌트: Y1의 P 값은 {B, D, F, H}이므로, Y2에서 이에 포함되는 행만 선택됩니다.
모의고사 1회 Part 3
문제 7
다음 JAVA로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오.
Java
Math
public class Solution {
public static void main(String[] args) {
int ans = (int)Math.pow(3, Math.floor(Math.PI));
System.out.printf("%d", ans);
}
}
힌트:
Math.PI ≈ 3.14159..., Math.floor()는 소수점 이하를 버리며, Math.pow(a, b)는 ab를 반환합니다.
문제 8
다음은 문자열에 숫자가 하나라도 포함되어 있는지, 문자열의 길이가 8 이상인지 검사하기 위한 Python 프로그램이다. 괄호(①, ②)에 들어갈 알맞은 코드를 쓰시오.
Python
문자열
매직 메서드
def is_valid_pw(pw):
return (
any(c.( ① )() for c in pw)
and len(pw).( ② )(8)
)
passwords = ['hello123', 'ab', 'secure99pass']
for pw in passwords:
print(is_valid_pw(pw))
힌트: ①은 문자가 숫자인지 판별하는 메서드이며, ②는
>= 연산을 메서드로 표현한 것입니다.
문제 9
다음 JAVA로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오.
Java
try-finally
public class Solution {
int value = 0;
int run() {
try {
return 10;
} finally {
value = 20;
}
}
public static void main(String[] args) {
Solution obj = new Solution();
System.out.print(obj.run());
}
}
힌트:
try 블록에서 return을 만나면, finally 블록이 실행된 후 반환값이 전달됩니다. 단, finally에서 반환값을 변경하지 않으면 원래 값이 반환됩니다.
모의고사 1회 Part 4
문제 10
다음 JAVA로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오.
Java
static
다형성
public class Solution {
static class Shape {
static String type() { return "Shape"; }
String color() { return "white"; }
}
static class Circle extends Shape {
static String type() { return "Circle"; }
String color() { return "red"; }
}
public static void main(String[] args) {
Shape obj = new Circle();
System.out.println(obj.type() + obj.color());
}
}
힌트:
static 메서드는 참조 타입(Shape)에 바인딩되고, 인스턴스 메서드는 실제 객체 타입(Circle)에 바인딩됩니다.
문제 11
다음 Python으로 구현한 프로그램을 분석하여 그 실행 결과를 쓰시오.
Python
set
dictionary
nums = [2, 4, 6]
dct = {i: i * 3 for i in nums}
s = set(dct.values())
nums[0] = 10
dct[4] = 5
s.add(10)
print(len(s & set(dct.values())))
힌트:
&는 두 집합의 교집합 연산입니다. 딕셔너리 값 변경이 기존 set에 영향을 주는지 주의하세요.
문제 12
다음 Python 프로그램에 대하여 다음 각 물음에 답하시오.
Python
문자열
split
1 | def filter_data(data_list):
2 | trimmed = data_list[0:3]
3 | output = []
4 | for item in trimmed:
5 | output.append(item + '-Done')
6 | return output
7 | items = ['x', 'y', 'z', 'w', 'v']
8 | result1 = filter_data(items)
9 | result2 = result1[2].split('o')
10 | print(result2[1])
① 오류가 발생하는 Line의 번호를 쓰시오.
② 오류를 정상적으로 수정하여 프로그램이 실행되었을 경우의 실행 결과를 쓰시오.
② 오류를 정상적으로 수정하여 프로그램이 실행되었을 경우의 실행 결과를 쓰시오.
핵심 요약
경로 & Linux 핵심 포인트
- 상대 경로 계산 :
..를 만나면 현재 경로에서 한 단계 위로 이동 - grep : 파일 내 문자열 패턴 검색, cp : 파일/디렉터리 복사
SQL 핵심 포인트
- ALTER TABLE ~ ADD : 테이블에 새 속성 추가,
VARCHAR(n)은 가변길이 문자 - LEFT JOIN ~ ON : 왼쪽 테이블의 모든 행을 포함하는 조인
- AS : 별칭 부여, HAVING : 그룹화 결과에 조건 지정 (GROUP BY 이후)
- IN (서브쿼리) : 서브쿼리 결과에 포함되는 행 검색
Java 핵심 포인트
- Math.floor(Math.PI) : 3.14... → 3.0 (소수점 이하 버림)
- try-finally : finally는 반드시 실행되지만, try의 return 값을 변경하지 않음
- static 메서드 : 참조 타입에 바인딩 (오버라이딩 X, 하이딩 O)
- 인스턴스 메서드 : 실제 객체 타입에 바인딩 (다형성 적용)
Python 핵심 포인트
- isdigit() : 문자가 숫자인지 판별하는 문자열 메서드
- __ge__(n) :
>=연산의 매직 메서드 표현 (예:len(s).__ge__(8)은len(s) >= 8) - set 교집합 :
s1 & s2로 두 집합의 공통 원소 추출 - split() : 문자열을 구분자 기준으로 분리하여 리스트 반환
PREVIOUS10. 예시문제 (실기)
NEXT1. 요구사항 분석