드디어 24년 1회 차 게시글
흑흑
오늘 특강있어
흑흑
다들 들으시겠지
나만 뒤처질 순 없어..
2024년 1회 차 기출
1. 다음 Java 코드에서 알맞은 출력 값을 작성하시오.
class Connection {
private static Connection _inst = null;
private int count = 0;
static public Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() {
count++;
}
public int getCount() {
return count;
}
}
public class main {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
conn1.count();
System.out.print(conn1.getCount());
}
}
풀이)
single ton 패턴 활용 문제
private static Connection _inst 클래스 내에 오직 하나의 인스턴스만 존재하게 함.
실제로는 모두 동일한 인스턴스 참조.
conn1.count(); 가 4번 실행
2. 다음 C언어 코드에서 알맞는 출력 값을 작성하시오.
int main() {
int v1 = 0, v2 = 35, v3 = 29;
if(v1 > v2 ? v2 : v1) {
v2 = v2 < < 2;
}else{
v3 = v3 < < 2;
}
printf("%d", v2+v3);
}
틀림) 151
풀이)
v3 << 2;
29를 2비트 왼쪽으로 29 * 2^2 = 29 * 4 = 116 = v3
35 + 116 = 151
3. 다음은 응집도와 관련해서 보기에서 응집도가 높은 순으로 나열하시오.
보기
ㄱ. 기능 ㄴ. 교환
ㄷ. 우연 ㄹ. 시간
맞음) ㄱ ㄴ ㄹ ㄷ
풀이)
※결합도(Coupling) (낮 →높)
- 자료결합도(Data) : 값 전달
- 스탬프 결합도(Stamp) : 배열, 오브젝트 등 전달
- 제어 결합도(Control) : 제어 요소 전달
- 외부 결합도(External) : 외부에서 데이터 참조
- 공통 결합도(Common) : 전역변수 이용
- 내용 결합도(Content) : 다른모듈의 변수 기능 이용
테(data)스 (형) 제 외(저래) 공 내(놓으래)
※응집도(Coheson) (높 → 낮)
- 기능적(Funcional) : 단일 목적 수행
- 순차적 (Sequential) : 출력결과를 입력값으로 사용
- 통신적(Communicaion) : 동일한 입력과 출력 사용
- 절차적(Procedual) : 순차적으로 수행
- 시간적(Temporal) : 유사 시간 처리
- 논리적(Logical) : 유사한 성격
- 우연적(Coincidental) : 연관이 없음
4. 다음은 C언어에 대한 문제이다. 알맞는 출력 값을 작성하시오.
#include
#include
void reverse(char* str){
int len = strlen(str);
char temp;
char*p1 = str;
char*p2 = str + len - 1;
while(p1 < p2){
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main(int argc, char* argv[]){
char str[100] = "ABCDEFGH";
reverse(str);
int len = strlen(str);
for(int i = 1; i < len; i += 2){
printf("%c",str[i]);
}
printf("n");
return 0;
}
틀림) GECA
풀이)
char *p1 = str; // 배열 시작의 주소
char *p2 = str + len - 1; // 배열의 끝의 주소(배열은 0부터 시작하니까 마지막 저장 값은 7) (str + 7)
while(p1 < p2){
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
// p1과 p2는 점점 가운데를 향해 다가오고 양쪽 값을 서로 교환해서 문자열을 거꾸로 뒤집음
*p1 = 'A', *p2 ='H' → 서로 교환
*p1 = 'B', *p2 ='G' → 서로 교환
*p1 = 'C', *p2 ='F' → 서로 교환
*p1 = 'D', *p2 ='E' → 서로 교환
p1 >= p2 이므로 종료 "HGFEDCBA"
int len = strlen(str); // 여전히 길이는 8
for(int i = 1; i < len; i += 2){
printf("%c", str[i]);
}
배열 1부터 2개씩 증가하며 char 출력 = GECA
5. 아래 그림에서의 네트워크에서 라우터를 통한 할당 가능한 2번, 4번, 5번의 IP를 작성하시오.
1) 192.168.35.3/24
3) 129.200.10.16/22
6) 192.168.36.24/24
보기
192.168.35.0
192.168.35.72
192.168.36.0
192.168.36.249
129.200.8.0
129.200.8.249
틀림)
2) 192.168.35.72
4) 129.200.8.249
5) 192.168.36.249
풀이)
192.168.35.0
192.168.36.0
129.200.8.0
이 세 개는 네트워크주소여서 사용불가.
6. 아래 표에서 나타나고 있는 정규형을 작성하시오.
조건)) 기본키(고객아이디, 강사번호)
고객아이디 | 강좌명 | 강사번호 |
apple | 영어회화 | P001 |
banana | 기초토익 | P002 |
carrot | 영어회화 | P001 |
carrot | 기초토익 | P004 |
orange | 영어회화 | P003 |
orange | 기초토익 | P004 |
틀림) 제 3 정규형
풀이)
기본키가 (고객아이디, 강사번호) >> 1 정규형 만족
기본키가 (고객아이디, 강좌명) 일 경우, 강사번호를 특정할 수 없으므로 2 정규형 만족
이행적 종속 상태도 없어서 3 정규형 만족
7. 아래의 내용에서 설명하는 네트워크 용어를 영문 약자로 작성하시오.
1. 대표적인 링크 상태 라우팅 프로토콜이다. 이것은 인터넷에서 연결된 링크의 상태를 감시하여 최적의 경로를 선택한다는것이다.
2. 단일 자율 시스템 내에서 라우팅 정보를 배포하는 데 사용되는 내부 게이트웨이 프로토콜이다.
3. 모든 대상에 도달하기 위한 최단 경로를 구축하고 계산하며 최단 경로는 Dijkstra 알고리즘을 사용하여 계산된다.
틀림) OSPF(Open Shortest Path First)
8. 아래 내용의 각각의 설명에 대한 답을 작성하시오.
(1) 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.
(2) 조건이 정확하게 '=' 등호로 일치하는 결과를 반환한다.
(3) ( (2) ) 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환한다.
틀림) (1) 세타 조인 (2) 동등 조인 (3) 자연 조인
풀이)
theta join 세타 조인 (R ▷◁(r 조건 s)S)
- 속성값을 비교
inner join 내부 조인 (R ▷◁(r = s)S)
- 동등 조인 결과 릴레이션의 차수는 첫 번째 릴레이션과 두 번째 릴레이션의 차수를 합한 것.
natural join 자연 (R ▷◁N(r, s)S)
- 속성이 두 번 나오지 않도록
outer join 외부 조인
- 왼쪽 외부조인(왼쪽 테이블 무조건 출력 없는 값 NULL)
- 오른쪽 외부조인(오른쪽 테이블 무조건 출력 없는 값 NULL)
- 완전 외부조인(양쪽 테이블 무조건 출력 없는 값 NULL)
semi join 세미 조인
- 자연 조인을 한 후 두 릴레이션 중 한쪽 릴레이션 결과만 반환
9. 다음은 운영체제 페이지 순서를 참고하여 할당된 프레임의 수가 3개일 때 LRU와 LFU 알고리즘의 페이지 부재 횟수를 작성하시오.
페이지 참조 순서 : 1, 2, 3, 1, 2, 4, 1, 2, 5, 7
(1) LRU :
(2) LFU :
틀림) (1) 6 (2) 6
풀이)
LRU: 가장 오랫동안 사용되지 않은 페이지를 교체
LFU: 사용 빈도가 가정 적은 페이지를 교체
10. 아래 JAVA언어 코드의 실행 순서를 중복 번호 없이 작성하시오.
class Parent {
int x, y;
Parent(int x, int y) { ①
this.x=x;
this y=y;
}
int getT() { ②
return x*y;
}
}
class Child extend Parent {
int x;
Child (int x) { ③
super(x+1, x);
this.x=x;
}
int getT(int n){ ④
return super.getT()+n;
}
}
class Main {
public static void main(String[] args) { ⑤
Parent parent = new Child(3); ⑥
System.out.println(parent.getT()); ⑦
}
}
실행 순서 : 5 → ( ) → ( ) → ( ) → ( ) → ( )
틀림) 6 3 1 7 2 (내가 작성한 답: 6 3 1 4 7)
풀이)
4번이 실행되지 않는 이유: 매개변수 parameter 가 동일하지 않음.
11. 다음 C언어의 알맞은 출력값을 작성하시오.
#include
typedef struct{
int accNum;
double bal;
}BankAcc;
double sim_pow(double base, int year){
int i;
double r = 1.0;
for(i=0; i < year; i++){
r = r * base;
}
return r;
}
void initAcc(BankAcc *acc, int x, double y){
acc -> accNum = x;
acc -> bal = y;
}
void xxx(BankAcc *acc, double *en){
if (*en > 0 && *en < acc - > bal) {
acc - > bal = acc - > bal-*en;
}else{
acc - > bal = acc - > bal+*en;
}
}
void yyy(BankAcc *acc){
acc -> bal = acc -> bal * sim_pow((1+0.1),3);
}
int main(){
BankAcc myAcc;
initAcc(&myAcc, 9981, 2200.0);
double amount = 100.0;
xxx(&myAcc, &amount);
yyy(&myAcc);
printf("%d and %.2f", myAcc.accNum, myAcc.bal);
return 0;
}
틀림) 9981 and 2795.10
풀이)
acc->bal = acc->bal * sim_pow((1+0.1), 3); // 연이율 10 %로 3년간 이자 복리 계산(1.1^3 = 1.331)
BankAcc myAcc;
initAcc(&myAcc, 9981, 2200.0); // 계좌번호: 9981, 잔액: 2200
double amount = 100.0;
xxx(&myAcc, &amount); // 100원 출금 → 잔액: 2200 - 100 = 2100
yyy(&myAcc); // 복리이자 적용 → 2100 * 1.331 = 2795.1
printf("%d and %.2f", myAcc.accNum, myAcc.bal);
12. 다음 파이썬 코드에 대한 알맞는 출력 값을 작성하시오.
a = ["Seoul", "Kyeonggi", "Incheon", "Daejun", "Daegu", "Pusan"]
str = "S"
for i in a:
str = str + i[1]
print(str)
틀림) Seynaau
풀이)
str = "S" // 문자열 변수 str에 "S" 먼저 저장
각 원소 i에 대해 두 번째 문자 가져옴.
S(미리 저장된 값) e y n a a u (추가된 값)
str = "Seynaau"
13. 아래 보기의 SQL 문장과 테이블을 참고하여 출력 값을 표로 작성하시오.
SELECT B
FROM R1
WHERE C IN (SELECT C FROM R2 WHERE D="k");
맞음)
B
a
b
풀이)
R2 테이블 C 중 D 값을 k로 가지는 거 >> x, y
R1 테이블 C 중 값이 x와 y인 B 출력 >> y는 없고 x만 두 개(a, b)
14. 아래는 애플리케이션 테스트 관리에 대한 내용이다. 설명하는 답을 보기에서 골라 작성하시오.
1. 모든 분기와 조건의 조합을 고려하나 모든 조합을 테스트하는 대신에 테스트가 필요한 중요한 조합을 찾아내는데에 중점을 둔다.
2. 특정 조건을 수행할 때 다른 조건과는 상관없이 전체 결과에 영향을 미치는 조건만을 테스트한다.
3. 각각의 파라미터는 적어도 한 번은 최종 결과에 영향을 주어야 한다.
보기
ㄱ. 구문 커버리지 ㄴ. 결정 커버리지 ㄷ. 조건 커버리지 ㄹ. 변경 조건/결정 커버리지 ㅁ.다중 조건 커버리지
ㅂ.경로 커버리지 ㅅ.조건/결정 커버리지
틀림) ㄹ
풀이)
15. 다음 아래 내용을 보고 보기에서 알맞는 용어를 골라 작성하시오.
인터넷 공격자의 존재를 숨기면서 이 공격자에게 시스템에 대한 무제한 접근 권한을 부여하는 악성 프로그램이다.
해커가 자신의 존재를 숨기면서 허가되지 않은 컴퓨터나 소프트웨어에 접근할 수 있도록 설계된 도구이다.
일반적으로 펌웨어, 가상화 계층 등의 다양한 시스템 영역에서 작동하며, 운영체제의 시스템콜을 해킹하여 악성코드의 실행여부를 숨겨
안티바이러스 탐지를 우회할 수 있다.
보기
ㄱ.Worm ㄴ.Trojan horse ㄷ.Backdoor ㄹ.Virus ㅁ.Ransomware ㅂ.Spyware ㅅ.Rootkit
틀림) ㅅ
풀이)
Rootkit: 권한이 없는 사용자가 접근할 수 없는 영역에 접근하여 시스템을 제어하도록 설계된 악성 소프트웨어의 모음
16. 다음 Java 코드를 보고 알맞는 출력 값을 작성하시오.
class classOne {
int a, b;
public classOne(int a, int b) {
this.a = a;
this.b = b;
}
public void print() {
System.out.println(a + b);
}
}
class classTwo extends classOne {
int po = 3;
public classTwo(int i) {
super(i, i+1);
}
public void print() {
System.out.println(po*po);
}
}
public class main {
public static void main(String[] args) {
classOne one = new classTwo(10);
one.print();
}
}
맞음) 9
풀이)
class classTwo extends classOne {
int po = 3;
public classTwo(int i) {
super(i, i+1); // 부모 생성자 호출
}
public void print() {
System.out.println(po * po);
}
}
// 메인함수
public class main {
public static void main(String[] args) {
classOne one = new classTwo(10);
one.print();
}
}
class Two 객체를 만들지만 자료형은 classOne 타입으로 선언.
이럴 경우, 동적 바인딩에 의해 오버라이딩 된 classTwo.print()가 실행.
>> one.print() 호출 >> 변수타입은 classOne 이지만 실제 객체는 classTwo, classTwo의 print 가 실행
3 * 3 = 9
동적 바인딩: 실행 시점에 호출할 메서드를 결정하는 것
java는 객체의 실제 타입을 기준으로 어떤 메서드를 실행할지 결정>> 변수의 타입이 아니라 new로 생성된 객체 타입이 중요
17. 다음 아래 내용을 보고 보기에서 알맞는 용어를 골라 작성하시오.
1. 불특정 다수가 아닌 명확한 표적을 정하여 지속적인 정보수집 후 공격감행할 수 있다.
2. 시스템에 직접 침투하는 것뿐 아니라 표적 내부직원들이 이용하는 다양한 단말을 대상으로 한다.
3. 한가지 기술만이 아닌 Zero-day 취약점, 악성코드 등 다양한 보안 위협 공격 기술을 사용한다.
4. 일반적으로 공격은 침투, 검색, 수집 및 유출의 4단계로 실행되며, 각 단계별로 다양한 공격 기술을 사용한다.
보기
ㄱ.사회공학 기법 ㄴ.Adware ㄷ.MITM ㄹ.XDR ㅁ.Replace attack ㅂ.key logger attack ㅅ.APT
틀림) ㅅ
풀이)
Adware: 사용자에게 원치 않는 광고를 표시하는 프로그램
MITM(Man in the Middle): 중간자 공격으로 두 사람 통신을 중간에서 가로챔
XDR: 여러 보안 도구를 통합하여 다양한 환경에서 발생하는 보안 위협을 탐지하고 대응하는 보안 솔루션
replace attack: 공격자가 원래의 데이터를 변경하여 자신이 원하는 데이터를 삽입하거나 대체
key logger: 사용자의 키 입력을 기록하여 민감성 정보 탈취
18. 아래의 SQL 코드와 테이블을 참고하여 결과 값을 작성하시오.
[TABLE]
EMPNO | SAL |
100 | 1000 |
200 | 3000 |
300 | 1500 |
SELECT
COUNT(*)
FROM
TABLE
WHERE
EMPNO > 100
AND
SAL >= 3000 OR EMPNO = 200
맞음) 1
풀이)
AND 연산자가 OR 연산자보다 우선순위
19. 다음 C언어 코드의 알맞는 출력 값을 작성하시오.
#include
#include
int main(){
char*p = "It is 8";
char result[100];
int i;
for(i=0; p[i]!=''; i++){
if(isupper(p[i]))
result[i] = (p[i]-'A'+5)% 26 + 'A';
else if(islower(p[i]))
result[i] = (p[i]-'a'+10)% 26 + 'a';
else if(isdigit(p[i]))
result[i] = (p[i]-'0'+3)% 10 + '0';
else if(!(isupper(p[i]) || islower(p[i]) || isdigit(p[i])))
result[i] = p[i];
}
result[i] = '';
printf("%sn",result);
return 0;
}
틀림) Nd sc 1
풀이)
if (isupper(p[i]))
result[i] = (p[i] - 'A' + 5) % 26 + 'A'; // 대문자일 경우, +5 다섯글자 뒤로 이동 I >> N
else if (islower(p[i]))
result[i] = (p[i] - 'a' + 10) % 26 + 'a'; // 소문자일 경우, +10 열글자 뒤로 이동 t >> a
else if (isdigit(p[i]))
result[i] = (p[i] - '0' + 3) % 10 + '0'; // 숫자일 경우, +3 세글자 뒤로 이동 8 >> 1
else
result[i] = p[i]; // 공백 및 특수문자는 유지
20. 다음 아래의 내용을 보고 알맞는 용어를 작성하시오.
구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴이다.
연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은
객체 군을 구현화 하는 생성 패턴이다
관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용하다.
kit라고도 불린다.
틀림) Abstract Factory
풀이)
생성 패턴(생성): 팩추빌프싱
팩토리메소드(Factory Method), 추상팩토리(Abstract Factory), 빌더(Bulider), 프로토타입(Prototype), 싱글톤(Singleton)
구조 패턴(확장): 어브컴데퍼플프
어댑터(Adapter), 브리지(Bridge), 컴포지트(Composite), 데코레이터(Decorator), 퍼싸드(Facade), 플라이웨이트(Flyweight), 프록시(Proxy)
행위 패턴(상호작용): 책커인반중메옵 상전템방
책임 연쇄(Chain of Responsibility), 커맨드(Command), 인터프리터(Interpreter), 반복자(Iterator), 중재자(Mediator), 메멘토(Memento), 옵저버(Observer), 상태(State), 전략(Strategy), 템플릿메소드(Template Method), 방문자(Visitor)
결과
맞음: 4
틀림: 16
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이 회차 쉽다고 했는데..
흠..
코드 문제는 풀이 보거나
하면 이해 되는데
딱 보고 이 코드 무슨 문제네~
하기엔 내 기량이 너무 부족하다..
'Study 비전공' 카테고리의 다른 글
[비전공자] 정보처리기사 실기 기출 풀이 8 (2024년 2회차) (0) | 2025.04.18 |
---|---|
[비전공자] 정보처리기사 실기 기출 풀이 6 (2023년 3회차) (1) | 2025.04.16 |
[비전공자] 정보처리기사 실기 기출 풀이 5 (2023년 2회차) (0) | 2025.04.15 |
[비전공자] 정보처리기사 실기 기출 풀이 4 (2023년 1회차) (1) | 2025.04.15 |
[비전공자] 정보처리기사 실기 기출 풀이 3 (2022년 3회차) (1) | 2025.04.10 |