정처기 실기) 2020년 2회 기출문제

정우시·2022년 6월 23일
1

3. 정처기 실기

목록 보기
3/8
post-thumbnail

01. 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론으로, 개발 기간이 짧고 신속하며, 워터폴에 대비되는 방법론으로 최근 회사에서 각광받는 방법론은 무엇인가?

  • 폭포수 모형(Waterfall Model)

    • 계획 → 요구사항 분석 → 설계 → 구현 → 테스트 → 유지보수
    • 일직선으로 떨어진다.
    • 구현에서 설계로 어쨌든 뒤로 못감
  • 프로토타입 모형(Prototype Model)

    • 실제 개발될 시스템의 견본(Prototype)을 미리 만들어 최종 결과물을 예측하는 모형이다.
  • 나선형 모형(Spiral Model)

    • 계획 수립 → 위험분석 → 공학적 개발 → 고객 평가 (순서까지 기억!)
  • RAD → 빠르게 진행

  • 애자일(Agile) 방법론

    • XP(eXtremeProgramming)
      • 의사소통, 단순성, 피드백, 용기, 존중 (암기!)
      • 고객과 함께 2주 정도의 반복 개발을 하고, 테스트와 우선 개발이 특징
    • SCRUM
      • 프로젝트를 30일마다 동작 가능한 제품을 제공하는 스플린트로 분리
      • 매일 15분 정도 회의를 한다.

👉 애자일 👈


02. 다음은 데이터베이스 설계의 순서이다. 빈 칸에 해당하는 설계 순서를 쓰시오.

요구사항 분석 → ( ) → ( ) → ( ) → 구현

  • 개념: ERD
  • 논리: 정규화, T/I
  • 물리: 성능을 고려해야 함, 인덱스, 파티션, 클러스터링, 뷰, 프로시저, 성능이 안나오면 반정규화

👉 요구사항 분석 → (개념적 설계) → (논리적 설계) → (물리적 설계) → 구현

개논물 !!!


03. HTTP, HTTPS, SMTP를 통해서 XML 기반의 데이터를 주고받는 프로토콜로 웹 서비스 방식에서 HTTP기반의 ()을/를 사용하여 송수신한다. () 대신 레스트풀(RESTful) 프로토콜로 대체할 수 있다.

  • 데이터를 왔다갔다 할 수 있게 해주는 방식은 SOAP과 REST를 많이 쓴다.
  • HTTP 80포트 HTTPS는 433 포트 둘 다 방화벽 같은 거 없고 다 뚫려있다. 그런 포트를 이용하는 것이 SOAP이고 REST이다.
  • SOAP은 XML을 이용해 온갖 데이터를 전송하는 것이다.
  • REST는 헤더에 푸시, 포스트, 겟 등을 이용해 전송, JSON 형태로 쓴다.
  • SOAP
    • WSDL(XML, 설명서로 기억) → UDDI(도서관으로 기억) → SOAP (실제로 데이터를 왔다갔다 하게 해주는 프로토콜 규약)

👉 SOAP


04. 소프트웨어 개발 과정에서 변경 사항을 관리하는 기법은 () 기법이라고 하며, () 기법을 활용한 도구로는 CVS, SVN, Git 등이 있다. 빈칸에 알맞은 용어를 쓰시오.

  • 형상관리 절차
    • 형상 식별 → 형상 통제 → 형상 감사 → 형상 기록
    • 형상 통제 중요!, 절차 순서 중요!
  • 버전 관리 도구 분류
    • 공유 폴더 방식
      • SCCS, RCS, PVCS
    • 클라이언트/서버 방식
      • CVS, SVN(중요!), Clear Case
    • 분산 저장소 방식
      • Git(중요!), GNU arch, Bazaar, Bitkeeper

👉 형상관리


05. 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있는 비동기 방식 처리 기술의 약어를 쓰시오.

  • AJAX는 웹 페이지 전체에서 일부분만 변경할 수 있는 기술이다.
  • 자바스크립트로 AJAX를 이용한다.
  • 비슷한 기술로는 JSON, XML, CSV가 있다.

👉 AJAX


(중요!) 06. 다음은 UI의 설계 원칙 4가지이다. 빈 칸에 알맞은 용어를 쓰시오.

설계 원칙설명
직관성누구나 쉽게 이해하고 사용할 수 있어야 한다.
사용자의 목적을 정확하게 달성하여야 한다.
학습성누구나 쉽게 배우고 익힐 수 있어야 한다.
유연성사용자의 요구사항을 최대한 수용하며, 오류를 최소화하여야 한다.

👉 유효성


07. 프로그램을 실행 시키지 않고, 소스코드에 대한 코딩 표준, 코딩 스타일, 복잡도, 보안 취약점, 잠재적인 결함을 찾는 테스트 활동이 무엇인지 쓰시오.

  • 애플리케이션 테스트 유형 분류
    • 프로그램 실행 여부
      • 정적 테스트
      • 동적 테스트
    • 테스트 기법
      • 화이트박스 테스트
      • 블랙박스 테스트 (관련 테스트 종류 암기)
    • 테스트에 대한 시각
      • 검증 테스트
      • 확인 테스트
    • 테스트 목적
      • 회복 테스트 (일부로 장애를 발생시킴)
      • 안전 테스트 (보안 관련)
      • 강도 테스트 (부하를 엄청 줌) 중요!
      • 성능 테스트 (자원 같은 거 잘 활용여부)
      • 구조 테스트 (프로그램 잘 만들었는지)
      • 회귀 테스트 (수정 후 잘 돌렸을 때 회복 잘 하는지)
      • 병행 테스트 (같이 테스트 하는 거)
    • 테스트 기반
      • 명세 기반 테스트 (산출물 일일이 다 봐야함, 시간이 많이 걸림)
      • 구조 기반 테스트 (전체적인 라인을 봄, 시간이 많이 걸림)
      • 경험 기반 테스트 (QA가 테스트 해봄)

👉 정적분석, 정적테스트


08. 아래 보기의 <학생>테이블을 대상으로 <요구사항>을 적용하여 출력하는 SQL문을 작성하시오.

요구사항
1) 3학년이거나 4학년 학생의 학번과 이름을 검색하시오.
2) 단, 조건절 작성 시 IN 예약어를 사용하여 작성하시오.

학생

학번이름학년
181101KKK1
171201HHH2
161107YYY3
151403QQQ4

👉 SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3, 4);


09. 다음 주어진 <STUDENT>테이블의 NAME 속성을 오름차순하여 IDX_NAME을 인덱스명으로 하는 인덱스를 생성하는 SQL 명령문을 작성하시오.

👉 CREATE INDEX IDX_NAME ON STUDENT (NAME ASC);


10. 보안의 취약점 중 하나인 SQL Injection(SQL 인젝션)에 대해 간략히 서술하시오.

👉 웹 프로그램에 SQL 구문을 삽입하여, 서버의 데이터베이스를 공격할 수 있는 공격 방식이다.

  • XSS 공격은 자바스크립트를 이용!

11. SQL 제어어(DCL) 중 ROLLBACK 명령에 대해 간략히 설명하시오.

  • GRANT
  • REVOKE
  • COMMIT (★원자성★)
  • ROLLBACK (★원자성★)

👉 DB 내의 연산이 비정상적으로 종료되거나 정상수행이 되었다 하더라도 수행되기 이전의 상태로 되돌리기 위한 명령이다.


12. 네트워크 계층(Network Layer, 3계층)인 IP 계층에서 IP 패킷 단위의 데이터 변조 방지 및 암호화 기능을 제공하는 통신규약을 쓰시오.

  • 보안
    • SSL (응용 프로그램에서)
    • SHTTP (응용 프로그램에서)
    • IPSec (네트워크 계층에서)
  • IPSec의 헤더 프로토콜
    • AH(Authentication Header)
      • 무결성을 보장하기 위한 프로토콜이며, IP 패킷이 전송중에 변조되지 않았음을 보장하는 서비스를 제공한다.
      • 인증, 무결성 보장
    • ESP(Encapsulation Security Payload)
      • IP 페이로드를 암호화하여 데이터 기밀성을 제공함으로써 제3자에게 데이터가 노출되는 것을 차단한다.
      • 인증, 무결성, 기밀성 보장
      • IP 페이로드는 넘어가는 데이터!

👉 IPSec


13. 리눅스 커널을 기반으로 동작하며 자바와 코틀린 언어로 개발된 핸드폰이나 소형기기에 사용되는 오픈소스 플랫폼인 모바일 운영체제는 무엇인지 쓰시오.

👉 안드로이드


14. 리눅스 또는 유닉스에서 a.txt 파일에 대해 다음 조건을 만족하는 권한을 부여하고자 한다. 다음 <조건>을 준수하여 적합한 명령어를 작성하시오.

조건
사용자에게는 읽기, 쓰기, 실행의 세 개의 권한을 모두 부여한다.
그룹에게는 읽기, 실행 두 개의 권한을 부여한다.
그룹 외 사용자에게는 실행 권한을 부여한다.
한 줄로 명령문이 작성되어야 하며, 8진수로 권한을 부여한다.

★ LINUX 파일 보안

  • d: 파일 종류
  • r(4)w(2)x(1): 소유자(owner)의 권한
  • r(4)w(2)x(1): 그룹(group)의 권한
  • r(4)w(2)x(1): 기타 사용자(others)의 권한

★ LINUX 명령어

  • 리눅스 chmod
  • chmod의 뜻: change mode

👉 chmod 751 a.txt


15. 정보시스템 운영 중 서버가 다운되거나 자연재하나 시스템 장애 등의 이유로 고객에게 서비스가 불가능한 경우가 종종 발생한다. 이와 같은 상황에서 비상사태 또는 업무중단 시정부터 업무가 복구되어 다시 정상 가동될 때까지의 시간을 의미하는 용어가 무엇인지 쓰시오.

👉 RTO(Recovery Time Objective) / 목표 복구 시간

  • RPO(Recovery Point Objective)는 최대로 허용되는 손실되는 데이터의 양

16. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고, 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의하는 디자인 패턴명을 영문으로 쓰시오.

👉 Observer Pattern

  • 정리해놓고 시험장에서 달달보다가 시험 시작하면 디자인 패턴 문제 찾아서 풀기!

👉 LOD (Linked Open Data)

  • 시맨틱 웹
    • 의미론적인 웹, 즉 문서의 의미에 맞게 애플리케이션의 의미에 맞게 구성된 웹
    • 컴퓨터가 사람을 대신하여 정보를 읽고, 이해하고 가공하여 새로운 정보를 만들어 낼 수 있도록 이해하기 쉬운 의미를 가진 차세대 지능형 웹
  • REST
    • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든것
    • HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
  • RESTful
    • REST라는 아키텍처를 구현하는 웹 서비스

18. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

asia={'일본','중국','한국'}			
asia.add('베트남')						1️⃣
asia.add('중국')						    2️⃣
asia.remove('일본')					    3️⃣
asia.update({'홍콩','한국','태국'})	    4️⃣
print(asia)								5️⃣
1️⃣ 베트남 추가
2️⃣ 중국은 기존에 있기에 패스
3️⃣ 일본 제거
4️⃣ 한국은 기존에 있기에 패스하고 나머지만 삽입

👉 정답
5️⃣ {'중국','한국','베트남','홍콩','태국'} ← 순서 무관

19. 다음은 자바 코드이다. 빈 칸( )에 알맞은 답을 쓰시오.

class Parent {
 	void show() {
 	System.out.println("Parent");
 	}
}
class Child extends Parent {
 	void show(){
 	System.out.println("Child");
 	}
}
public void Main() {
 	Parent pa = ( 빈칸 ) Child();	1️⃣
 	pa.show();
	}
}
👉 정답
1️⃣ 인스턴스이기에 답은 new
→ 대문자는 오답이다!!

20. 다음은 자바 코드이다. 출력 결과를 쓰시오.

class A{
	private int a;
    public A(int a){							4️⃣
    	this.a = a;								5️⃣
    }
    public void display(){
    	system.out.println("a=" + a);			7️⃣
    }
}

class B extends A {
	public B(int a){							2️⃣
    	super(a);								3️⃣
        super.display();						6️⃣
    }
}


public class good {
	public static void main(String[] args){
    	B obj = new B(10);						1️⃣ 
    }
}

1️⃣ obj라는 인스턴스를 만드는데 B의 형태로 만듬 생성자에 10이라는 인자를 넣음
2️⃣ a에는 10이 들어감
3️⃣ 상위 클래스를 생성시켜라!
4️⃣ a값에는 10이 들어감
5️⃣ this.a에는 10이 들어감
6️⃣ 상위 display 호출
7️⃣ a=10으로 출력

👉 a=10

profile
프론트엔드 공부하고 있는 정우시입니다.

0개의 댓글