public class main{
public static void main(String[] args){
A b = new B();
b.paint();
b.draw();
}
}
class A{
public void paint(){
System.out.print("A");
draw();
}
public void draw(){
System.out.print("B");
draw();
}
}
class B extends A{
public void paint(){
super.draw();
System.out.print("C");
this.draw();
}
public void draw(){
System.out.print("D");
}
}
b는 A 타입이지만, 실제 객체는 BB의 메소드 실행b.paint() : B.paint() 실행super.draw() : A.draw() 실행 -> Bdraw() : B.draw() 실행 -> DSystem.out.print("C") -> Cthis.draw() -> Db.draw() :B.draw() 실행 -> D정답
- BDCDD
[보기]
ㄱ.NFT
ㄴ.JWT
ㄷ.SAML
ㄹ.accessToken
ㅁ.SSO
ㅂ.OIDC
ㅅ.Autentication
ㅇ. OAuth
ㅈ.Cookie
ㅊ.Refresh Token
- 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜이다.
- 사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며, 액세스 토큰을 사용하여 타사 애플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다.
- 사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신하여 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다.
- 암호와 같은 사용자의 자격 증명은 타사 응용 프로그램과 공유되지 않으며, 클라우드 스토리지 서비스, 온라인 마켓 플레이스 및 금융 서비스를 포함한 다른 많은 응용 프로그램 및 서비스에서도 사용된다.
- Facebook, Twitter 및 LinkedIn과 같은 소셜 미디어 플랫폼에서 널리 사용되어 사용자가 소셜 미디어 데이터에 대한 액세스 권한을 타사 애플리케이션에 부여할 수 있도록 한다.
- 타사 애플리케이션에 대한 사용자 자격 증명의 노출을 최소화하여 향상된 보안, 간소화된 애플리케이션 개발, 사용자가 리소스에 대한 액세스 권한을 쉽게 부여하거나 취소할 수 있도록 하여 향상된 사용자 환경 등 여러 가지 이점을 제공한다.
정답
- ㅇ. OAuth
( ① ) ( ② ) test.txt
chmod [User][Group][Others] U G O : 이 세 자리에 권한을 나타내는 정수가 오게 되고 8진법을 사용함chmod 751 [권한을 부여할 파일명]chmod 751 test.txt 가 되는 것정답
- ① chmod ② 751
#include <stdio.h>
int test(int n){
int i, sum = 0;
for(i=1; i <= n/2 ; i++){
if(n % i == 0)
sum += i;
}
if(n == sum)
return 1;
return 0;
}
int main(){
int i, sum = 0;
for(i=2; i <= 100; i++){
if (test(i))
sum += i;
}
printf("%d", sum);
return 0;
}
maintest(i)가 1인 수를 찾아 sum에 누적int test(int n) 함수정답
- 34
#include <stdio.h>
#include <stdlib.h>
typedef struct Data{
char c;
int *numPtr;
}Data;
int main(){
int num = 10;
Data d1;
Data *d2 = malloc(sizeof(Data));
d1.numPtr = #
d2( )numPtr = #
printf("%d\n", *d1.numPtr);
printf("%d\n", *d2( )numPtr);
free(d2);
return 0;
}
[출력결과]
10
10
d1.numPtr = # d1은 구조체 변수이므로, . 연산자 사용d2->numPtr = #d2는 Data * 즉 포인터이므로, -> 연산자 사용정답
->

[쿼리]
SELECT A FROM T1
UNION
SELECT A FROM T2
ORDER BY A DESC;
UNIONSELECT name FROM students
UNION
SELECT name FROM teachers
/** 중복된 이름은 한 번만 출력**/UNION ALLSELECT name FROM students
UNION ALL
SELECT name FROM teachers
/** 중복된 이름도 모두 출력**/INTERSECT (일부 DBMS만 지원)SELECT name FROM students
INTERSECT
SELECT name FROM teachers
/**이름이 학생과 교수 둘 다에 있는 경우에만 출력**/MINUS (Oracle DB) SELECT name FROM students
MINUS
SELECT name FROM teachersINNER JOINSELECT * FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;LEFT OUTER JOIN (LEFT JOIN)SELECT * FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;
/** 주문이 없는 고객도 포함되며, 주문 정보는 NULL **/RIGHT OUTER JOIN (RIGHT JOIN)SELECT * FROM customers
RIGHT JOIN customers ON orders.customer_id = customers.id;
/** 고객은 있는데 주문이 없는 경우에도 출력**/FULL OUTER JOINNULLSELECT * FROM T1
FULL OUTER JOIN T2 ON T1.id = T2.id;CROSS JOINSELECT * FROM shirts
CROSS JOIN paints;
/** 셔츠 3벌, 바지 2벌이면 6개의 조합 **/정답
- 4
- 3
- 1
- ( ① )은/는 규칙 기반(Rule-Based) 접근 통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.
- ( ② )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.
- ( ③ )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다.
| 항목 | MAC | RBAC | DAC |
|---|---|---|---|
| 통제 권한 | 관리자 | 관리자 (역할 기준) | 소유자 |
| 정책 기준 | 보안 등급에 따라 결정 | 사용자->역할->권한 간의 연결 | 사용자가 설정한 권한에 따름 |
| 유연성 | 낮음 | 매우 높음 | 높음 |
| 보안성 | 매우 강함 | 역할 설계에 따라 다름 | 상대적으로 약함 |
정답
- MAC
- RBAC
- DAC
#include <stdio.h>
int f(int n){
if(n<=1) return 1;
else return n*f(n-1);
}
int main(){
printf("%d", f(7));
}
f() : 7! 를 구하는 함수7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040정답
- 5040
- ( )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.
- 셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.
- 가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다.
| 항목 | ATM | TCP/IP | Frame Relay | MPLS |
|---|---|---|---|---|
| 전송 단위 | 고정 길이 셸 (53byte) | 가변 길이 패킷 | 가변 길이 프레임 | 라벨 기반 패킷 |
| 연결 방식 | 연결 지향 (가상 회선) | 비연결형(IP) + 연결형(TCP) | 연결 지향 (가상 회선) | 연결 지향(Label Switched Path) |
| 다중화 | 통계적 다중화, TDM | Best-effort | 통계적 다중화 | 트래픽 엔지니어링 지원 |
| 적용 분야 | 광대역 통신망 | 인터넷 전반 | 기업 WAN | 통신사업자 백본망, VPN |
정답
- ATM (Asynchrosnous Transfer Mode)
int main(){
char *p = "KOREA";
printf("%s \n", p);
printf("%s \n", p+1);
printf("%c \n", *p);
printf("%c \n", *(p+3));
printf("%c \n", *p+4);
}
| 주소 | p | p+1 | p+2 | p+3 | p+4 | p+5 |
|---|---|---|---|---|---|---|
| 내용 | 'K' | 'O' | 'R' | 'E' | 'A' | '\0' |
p : "KOREA"의 시작 주소KOREAp+1 : "OREA" 의 시작 주소OREA*p : p[0] -> 'K'Kp+3 : 3번째 인덱스 -> EE*p : 'K' -> ASCII 75*p + 4 : 75 + 4 = 79 -> ASCII 코드 'O'O정답
- KOREA
- OREA
- K
- E
- O
class Parent{
int compute(int num){
if(num <= 1)
return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends Parent{
int compute(int num){
if(num <= 1)
return num;
return compute(num-1) + compute(num-3);
}
}
public class main{
public static void main(String[] args){
Parent obj = new Child();
System.out.print(obj.compute(7));
}
}
2정답
- 2
정답
- NAT (Network Address Translation)
class Person{
private String name;
public Person(String val){
name= val;
}
public static String get(){
return name;
}
public void print() {
System.out.println(name);
}
}
public class main{
public static void main(String[] args){
Person obj = new Person("Kim");
obj.print();
}
}
get() 메소드의 return name; 에서 컴파일 에러 발생private String namename 은 인스턴스 변수(non-static field) public static String get()get() 은 static 메소드static 메소드에서는 인스턴스 변수(non-static)에 접근 불가-> static 메소드에서 non-static 필드에 접근했기 때문에 컴파일 에러 발생
정답
- 7
x, y = input("x, y의 값을 공백으로 구분하여 입력: ").◼️◼️()
print("x의 값: ", int(x))
print("y의 값: ", int(y))
#실행결과
x, y의 값을 공백으로 구분하여 입력: 5 10
x의 값: 5
y의 값: 10
정답
- split

<<import>> 관계 (의존 관계)ordering패키지가 pricing, products패키지를 import하고 있음<<import>> : UML에서 해당 패키지의 public 요소들을 사용할 수 있음ordering 패키지 내부에서는 pricing과 products패키지의 공개된 클래스/인터페이스 등을 사용 가능| 분류 | 다이어그램 이름 | 설명 |
|---|---|---|
| 구조 다이어그램 | Class Diagram | 클래스와 그 관계( 상속, 연관, 집합 등) |
| Object Diagram | 클래스의 실제 인스턴스 관계 | |
| Package Diagram | 모듈화 구조와 패키지 간 관계 표현 | |
| Component Diagram | 소프트웨어 구성 요소의 의존 관계 | |
| Deployment Diagram | 시스템의 물리적 배포 구조 (서버, DB 등) | |
| Composite Structure Diagram | 클래스 내부 구조 또는 부품 구조 표현 | |
| Profile Diagram | 커스터마이징을 위한 메타모델 확장 표현 | |
| 행위 다이어그램 | Use Case Diagram | 시스템 사용 시나리오, 사용자와 기능 관계 |
| Activity Diagram | 업무 흐름, 로직 순서, 조건 분기 | |
| State Machine Diagram | 상태 전이 기반 객체의 생명 주기 모델링 | |
| 상호작용 다이어그램 (행위 다이어그램의 하위 부류) | Sequence Diagram | 객체 간 메시지 전달 순서 표현 |
| Communication Diagram | 객체 중심 시각화 | |
| Timing Diagram | 시간에 따른 상태 변화 표현 | |
| Interaction Overview Diagram | 여러 상호작용을 순서도처럼 표현 |
정답
- 패키지 다이어그램

- 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법
- 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트
- 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법
- 모든 입력 값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원
- 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용
| 기법 | 설명 |
|---|---|
| Equivalence Partitioning | 각 그룹에서 대표값 하나만 선택해 테스트 |
| Statement Coverage | 소스코드 문장 실행 여부 측정 (화이트박스) |
| Boundary Value Analysis | 경계값 중심 테스트 (경계만 테스트) |
| Branch Coverage | 조건 분기(if 등) 실행 여부 측정 |
| Error Guessing | 경험 기반으로 오류 예상 |
| Condition Coverage | 조건 내 각 Boolean 식 실행 여부 |
| Cause Effect Graph | 논리적인 원인-결과 관계 모델링(복잡한 조건 테스트에 사용) |
정답
- ㄱ

정답
IaaS PaaS SaaS
- 최소 Hop count를 파악하여 라우팅하는 프로토콜이다.
- 거리와 방향으로 길을 찾아가는 Distance Vector 다이나믹 프로토콜이다.
- 최단거리 즉, Hop count가 적은 경로를 택하여 라우팅하는 프로토콜로 Routing Table에 인접 라우터 정보를 저장하여 경로를 결정한다.
- 최대 Hop count는 15로 거리가 짧기 때문에 IGP로 많이 이용하는 프로토콜이다.
| 항목 | RIP | OSPF |
|---|---|---|
| 라우팅 방식 | Distance Vector | Link State |
| 경로 선택 기준 | Hop 수 | 비용 |
| 최대 Hop 수 | 15 | 무제한 |
| 네트워크 규모 | 소규모 | 대규모 |
정답
- RIP
[보기]
ㄱ. σ ㄴ. π ㄷ.⋈ ㄹ.÷
- JOIN : ( ① )
- PROJECT : ( ② )
- SELECT : ( ③ )
| 연산 | 기호 | 설명 | SQL | 예시 |
|---|---|---|---|---|
| Selection | σ | 조건에 맞는 튜플 선택 | WHERE | σ(부서='인사')(직원) |
| Projection | π | 특정 속성만 추출 | SELECT | π 이름,직급(직원) |
| Join | ⋈ | 두 릴레이션을 공통 속성 기준으로 결합 | JOIN | 직원 ⋈ 부서 |
| Cartesian Product | × | 모든 튜플을 곱하여 조합 | 직원 × 부서 | |
| Difference | − | A에만 존재하고 B에는 없는 튜플 | EXCEPT | 학생 − 수강생 |
| UNION (합집합) | ∪ | 두 릴레이션의 모든 튜플 합집합 | UNION | 학생 ∪ 수강생 |
| Intersection (교집합) | ∩ | 두 릴레이션에 모두 있는 튜플 | INTERSECT | 학생 ∩ 수강생 |
| Division | % | 모든 조건을 만족하는 튜플 | A % B |
정답
- ㄷ
- ㄴ
- ㄱ
- ( ) 무결성은 관계 데이터베이스 관계 모델에서 2개의 관련 있던 관계 변수(테이블) 간의
일관성(데이터 무결성)을 말한다.- 종종 기본 키 또는 키가 아닌 후보 키와 외래 키의 조합으로 강제 적용된다.
- 외래 키가 선언된 관계 변수의 외래 키를 구성하는 속성(열)의 값은 그 관계 변수의 부모가 되는 관계 변수의 기본 키 값 또는 기본 키가 아닌 후보 키 값으로 존재해야 한다.
| 무결성 유형 | 설명 |
|---|---|
| 개체 무결성 | 기본키는 반드시 NOT NULL 중복 X |
| 도메인 무결성 | 각 속성의 데이터 타입, 길이, 형식 등을 지켜야 함 |
| 참조 무결성 | 외래 키가 참조하는 기본 키가 반드시 존재해야 함 |
정답
- 참조 무결성