반응형

 

 

 

올 하반기에는 코로나19로 인해 취업 시장 문이 얼어붙은 것을

몸소 체험할 수 있었던 시간이었다.

 

그래도 성실하게 최선을 다해 노력하다보니,

아직까지도 몇몇개의 기업들을 남겨두고 있다.

 

하반기의 아웃풋만 정리하자면,

최합: 농협하나로유통

최종 결과 기다리는 곳: 현대IT&E

임원면접 앞두고 있는 곳: KDBC

1차면접 결과 기다리는 곳: 엔씨소프트

서류 지원하고 기다리는 곳: 기업은행, 현대트랜시스, 현대카드

 

자소서를 거의 100군데 넘게 썼다.

하루에 3개를 쓰는 날도 있었고, 

갑작스럽게 붙게 된 필기에

시험 전날 문제집을 사서 조금만 감을 익히고 다음날 시험보러 갔던 곳도 있었다.

 

그리고 필기 합격률이 어느정도씩 올라가던 때에, 면접에 대한 변수도 존재했다.

면접 종류가 이렇게 많았었나..?

영어면접, 피티면접, 토론면접, 코테면접, 역량면접, 집단면접

 

다양한 면접을 갑작스럽게 맞이하게 됬지만, 미리 포기하지 않고 

남은 하루 이틀이라도 최선을 다해 계획성있게 준비했다.

 

현재 농협하나로유통에 최종합격을 하게 되었는데,

여기는 심지어 오전에 코스콤 필기시험을 보고, 15분 뒤에 시작되는 NCS+코테였다.

그래서 전날 퀵오토바이를 불러서 예약하고 시험 끝나자마자 바로 달려나가, 나눠주는 햄버거도 받지 못하고

바로 10분만에 도착해서 허겁지겁 시험을 봤던 곳이었다.

 

결국에 현재 최종합격이라는 좋은 결과를 주셨다.

 

아직 다음주 최종결과를 기다리는 곳이 있다.

엔씨소프트도 면접 분위기는 좋았는데, 붙게 되면 다음주에 면접을 보게 될 것 같다.

현대무벡스는 나에게 가장 힘이 되어주었던 회사인데, 코로나19 확진자의 증가로 인해 1월 중순으로 최종면접이 미뤄졌다.ㅜㅜ

아쉽지만 여기는 놓아주어야할 것 같다.

 

남은 기간도 최선을 다해서 준비하려고 한다.

 

각 회사별 장점을 정리해보자면,

농협하나로유통: 농협중앙회 8대 법인으로서, 7급 5호봉 입사임에도 추후 연봉인상률이 우수하다. 그리고 대략 13~15명 정도의 동기들이 있다는 사실이 든든하다.

엔씨소프트: 빅데이터 엔지니어의 역량을 기를 수 있다. 어떻게보면 내가 하고 싶었던 업무였고, 나름 초봉도 나쁘지 않다고 알려져있다. 집이랑 가까운 것도 장점이다.

현대IT&E: 현대백화점그룹으로서 계열사간 복지 및 할인 혜택이 우수하다. 또한 동기들이 많아서 외롭지 않을 것 같다. 대기업 SI, SM 계열이라고 생각하면 전직장의 경험으로 잘 생활할 수 있을 것 같다.

현대무벡스: 초봉이 4천 후반대로 나쁘지 않고, 중견기업으로 들어가서 학자금대출로부터 조금 자유로워질 수 있다.

 

곧 입사를 앞두고,

 

"앞으로는 회사에서 성실하게 근무하는 것과 함께

지금과는 다른 삶을 살아가야 하겠지..?"

 

2021년 목표

영어: 전화영어 꾸준히 하고, 영어 공부 계속 해서 오픽 AL 받기

취미 및 기술: 유튜브 다시 시작하기(코딩을 쉽게 알려주는 채널 만들기)

생활: 결혼준비(예상 12월), 운동 규칙적으로!

반응형
반응형

자바 코드로 풀었다.

 

 

 

문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

입출력 예

arr      divisor       return

[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]

입출력 예 설명

입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.

 

 

문제 푸는 방법:

완전 탐색으로 하나씩 divisor와 나누어주면 된다.

정렬할 때는

Collections.sort();를 쓰면 되고,

내림차순 정렬할 때는 Collections.sort(arr,Collections.reverseOrder()); 라고 하면 된다.

 

 

정답 코드는 아래와 같다.

 

import java.util.*;
    
class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer;
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=0; i<arr.length; i++){
            if(arr[i]%divisor == 0){
                list.add(arr[i]);
            }
        }
        Collections.sort(list);
        answer = new int[list.size()];
        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }
        if(answer.length == 0){
            int[] answer2 = {-1};
            return answer2;
        }
        return answer;
    }
}
반응형
반응형

자바 코드로 풀어보았다~

 

 

 

문제 설명

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.

배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

입출력 예

arr       answer

[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

입출력 예 설명

입출력 예 #1,2
문제의 예시와 같습니다.

 

 

 

문제 푸는 방법:

arr를 한번씩 돌면서 이전과 다를때 추가해주면 된다.

 

정답 코드

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        int[] answer;
        ArrayList<Integer> list = new ArrayList<>();
        int cur = arr[0];
        for(int i=1; i<arr.length; i++){
            if(cur != arr[i]){
                list.add(cur);
                cur = arr[i];
            }
        }
        list.add(cur);
        answer = new int[list.size()];
        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }
        
        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}
반응형
반응형

자바 코드로 풀었다!!

 

 

 

문제 설명

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.


제한사항

  • n은 1 이상 100,000,000 이하인 자연수입니다.

입출력 예

n        result

45 7
125 229

입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)      n (3진법)      앞뒤 반전(3진법)      10진법으로 표현

45 1200 0021 7
  • 따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.

n (10진법)        n (3진법)       앞뒤 반전(3진법)      10진법으로 표현

125 11122 22111 229
  • 따라서 229를 return 해야 합니다.

 

 

문제 푸는 방법:

int 로 계산하면 너무 큰 숫자에 대해서는 받아줄 수 없으므로,

Long으로 계산해준다.

그리고 char -> int로 바꾸어주는 Character.getNumericValue(c); 를 사용하는 것도 필요하다.

 

정답 코드는 아래와 같다.

import java.lang.Math;

class Solution {
    public int solution(int n) {
        int answer = 0;
        String str = Long.toString(Long.parseLong(convert(n)));
        int idx = 0;
        for(int i=str.length()-1; i>-1;i--){
            System.out.println("i:"+i);
            answer += Math.pow(3,i)*Character.getNumericValue(str.charAt(idx));
            idx++;
        }
        
        return answer;
    }
    
    public String convert(int num){
        if(num/3 == 0){
            return Integer.toString(num%3);
        }
        return Integer.toString(num%3) + convert(num/3);
    }
}
반응형
반응형

자바 코드로 풀기!

 

 

 

문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

재한사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

입출력 예

s       return

abcde c
qwer we

 

 

문제 푸는 방법:

String의 길이는 s.length()로 메소드를 호출한다.

그리고 인덱스 접근하려면 charAt() 메소드로 접근할 수 있다.

그리고 /는 자동으로 int로 가져온다. %는 나머지이다.

String의 길이를 나누어서 짝수면 가운데 두개, 홀수면 가운데 하나를 가져온다.

 

정답 코드:

class Solution {
    public String solution(String s) {
        String answer = "";
        if(s.length()%2 == 0){
            answer += s.charAt(s.length()/2-1);
            answer += s.charAt(s.length()/2);
        }else{
            answer += s.charAt(s.length()/2);
        }
        return answer;
    }
}
반응형
반응형

자바코드로 풀어보았다.!

문제 설명

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT

입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

제한 조건

  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

입출력 예

a      b      result

5 24 TUE

 

 

 

문제 푸는 방법:

날짜를 다 더해서 7로 나누어주고 나머지에 해당하는 인덱스 0~6을 THU ~ WED로 출력해주면 된다.

배열 정적 할당할 때

String[] temp = {"abc","bcd"}; 이렇게 하면 되는것을 배움.

 

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        String[] days = {"THU","FRI","SAT","SUN","MON","TUE","WED"};
        int month = 1;
        int day = 0;
        while(month <= a){
            if(month == a){
                day += b;
                //System.out.println(day);
                day %= 7;
                return days[day];
            }
            if(month == 1){
                day += 31;
            }else if(month == 2){
                day += 29;
            }else if(month == 3){
                day += 31;
            }else if(month == 4){
                day += 30;
            }else if(month == 5){
                day += 31;
            }else if(month == 6){
                day += 30;
            }else if(month == 7){
                day += 31;
            }else if(month == 8){
                day += 31;
            }else if(month == 9){
                day += 30;
            }else if(month == 10){
                day += 31;
            }else if(month == 11){
                day += 30;
            }else if(month == 12){
                day += 31;
            }
            month++;
        }
        
        return answer;
    }
}
반응형
반응형

자바 코드로 풀어보았다.

 

 

 

 

 

문제 설명

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
  • completion의 길이는 participant의 길이보다 1 작습니다.
  • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
  • 참가자 중에는 동명이인이 있을 수 있습니다.

입출력 예

participant        completion        return

[leo, kiki, eden] [eden, kiki] leo
[marina, josipa, nikola, vinko, filipa] [josipa, filipa, marina, nikola] vinko
[mislav, stanko, mislav, ana] [stanko, ana, mislav] mislav

입출력 예 설명

예제 #1
leo는 참여자 명단에는 있지만, 완주자 명단에는 없기 때문에 완주하지 못했습니다.

예제 #2
vinko는 참여자 명단에는 있지만, 완주자 명단에는 없기 때문에 완주하지 못했습니다.

예제 #3
mislav는 참여자 명단에는 두 명이 있지만, 완주자 명단에는 한 명밖에 없기 때문에 한명은 완주하지 못했습니다.

 

 

 

문제 푸는 방법:

java string을 비교할 때는 equals를 사용해야한다.

String a;

String b;

a==b <- 주소값끼리 비교

a.equals(b); <- 내용끼리 비교

 

문제 푸는 방법은 둘다 정렬하고 하나씩 탐색하면서 다르면 return 해주면 된다.

 

정답 코드:

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        Arrays.sort(participant);
        Arrays.sort(completion);
        for(int i=0; i<completion.length; i++){
            //System.out.println("participant: "+ participant[i] + "||" + "completion: "+completion[i]);
            if(!participant[i].equals(completion[i])){
                return participant[i];
            }
        }
        return participant[participant.length-1];
    }
}
반응형
반응형

1. 펄스 부호 변조(PCM)에 대해서

 

PCM이란 아날로그 데이터를 디지털화 시키는 작업을 의미한다.

아날로그 신호 -> 데이터 크기에 따라 높이가 다른 펄스열로 나열한 방법(1차 펄스변조) -> 이러한 멀티 레벨 신호를 0/1의 2진 신호로 바꾸어 주는 작업(펄스 부호 변조)

 

컴퓨터에 전송되는 아날로그 신호는 대부분 PCM을 거친다.

 

과정: PAM이라 불리는 샘플링(Sampling) -> 양자화(Quantization) -> 부호화(Encoding)

 

 

2. CPU 레지스터 종류

Accumulator(AC): 연산 과정의 데이터를 일시적으로 저장하는 레지스터

Program Counter(PC): 다음에 인출될 명령어의 주소를 보관하는 레지스터

Memory Address Register(MAR): PC에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터

Memory Buffer Register(MBR): 기억장치에 저장될 데이터 혹은 기억장치로부터 읽힌 데이터가 일시적으로 저장되는 버퍼 레지스터

Instruction Register(IR): 가장 최근에 인출된(현재 실행중인) 명령어가 저장된 레지스터

Status Register(SR): 현재 CPU의 상태를 보관하는 레지스터

 

 

3. 소수점 진수 변환하는 방법

계속 곱해서 정수 부분만 가져온다.

출처: https://bboy6604.tistory.com/entry/%EC%86%8C%EC%88%98%EC%A0%90-%EC%95%84%EB%9E%98%EC%9D%98-%EC%A7%84%EB%B2%95-%EB%B3%80%ED%99%98

 

4. 네트워크 토폴로지

성형(Star)

장점: 장애 발견이 쉽고, 관리가 용이

단점: 주 노드에 문제 발생 시 전체 네트워크 사용 불가

 

버스형(Bus)

장점: 노드의 추가/삭제가 용이, 특정 노드의 장애가 다른 노드에 영향을 미치지 않음

단점: 공통 배선의 대역폭을 공유하기 때문에 노드 수가 증가하면 네트워크 성능 저하

 

링형(Ring)

장점: 단 방향 통신으로 신호 증폭이 가능하여 거리 제약이 적다.(계속 증폭 시켜주면 되니까)

단점: 노드의 추가/삭제가 불편

 

망형(Mesh) - 모든 노드가 서로 일대일로 연결된 상태

장점: 특정 노드의 장애가 다른 노드에 영향x / 회선장애에 유연한 대처 가능

단점: 회선 구축 비용이 많이 들고, 새로운 노드 추가 시 비용 부담 발생

 

 

5. RAID 레벨에 대해서

 

RAID란?

Redundant Array of Independent Disk (독립된 디스크의 복수 배열) 이다.

 

RAID 사용 시 기대효과?

1. 대용량의 단일 볼륨 효과

2. 디스크 I/O 병렬화로 인한 성능 향상(RAID 0, 5 6 등)

3. 데이터 복제로 인한 안정성(RAID 1 등)

 

 

RAID는 기계적인 한계로 성능이 느린 하드디스크를 보완하기 위해 만들어진 기술이다.

RAID를 구성하는 디스크의 개수가 많아도 RAID 구성방식에 따라서 성능, 용량이 달라진다.

이 구성방식을 RAID 레벨이라고 부른다.

RAID 0 ~ 6 까지 있지만,

최근에는 RAID 0, 1, 5, 6만 가능하다. 

 

1) RAID 0

출처:  https://harryp.tistory.com/806  [Park's Life]

스트라이핑이라고  부른다. 

최소 2개의 디스크가 필요하다.(min(N) == 2)

장점: 전체 디스크를 모두 동시에 사용하기 때문에 성능은 N배가 된다. 용량도 N배가 된다.

단점: 하나의 디스크라도 깨지면, 전체 RAID가 깨진다. 즉 안정성은 1/N으로 줄어든다.

성능과 용량은 최대한으로 사용하는 대신, 안정성은 극악이라 할 수 있습니다

 

 

2) RAID 1

미러링이라고 부른다.

최소 2개의 디스크가 필요하다.

RAID 1은 모든 디스크에 데이터를 복제하여 기록합니다.

즉, 동일한 데이터를 N개로 복제하여 각 디스크에 저장합니다. 실제 사용 용량 = 디스크의 용량과 같다.

장점: read 시 전체 디스크에서 읽어오기 때문에 빠르다.(단일 디스크의 N배의 성능) // 최대 강점은 안정성이 높다는 것!

단점: write시에 데이터를 복제하기 때문에 시간이 조금 걸린다.

 

안정성이 중요한 시스템에서 사용 할 수 있겠으나, 비용 문제로 인해 거의 사용하지 않습니다.

 

3) RAID 2

현재 사용하지 않는 RAID 레벨이다. 최소 3개로 구축 가능함!

bit 단위로 스트라이핑하고, error collection을 위해 Hamming Code를 사용한다.

 

m+1개의 데이터 디스크와 m개의 패리티 디스크로 구성되는 것 같습니다. (즉 N == (m+1) + m)
그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

 

 

4) RAID 3

현재 사용하지 않음, 최소 3개의 디스크 구축 가능

Byte 단위로 스트라이핑하고 error collection을 위해 1개의 패리티 디스크 사용함.

용량 대비 성능이 단일 디스크에 비해 (n-1)배 상승! -1은 패리티 디스크 용도

그리고 1개의 디스크 에러 시 복구 가능합니다. (2개 이상의 디스크 에러 시 복구 불가능)

 

 

5) RAID 4

현재 거의 사용되지 않음,

Block 단위로 스트라이핑한다. Error Collection을 위해 1개의 패리티디스크 사용.
용량 및 성능이 N-1 배이다.

 

Block 단위로 스트라이핑하는 것은 RAID 5,6과 동일하지만, 패리티 비트를 하나의 디스크에 모두 저장해서,

패리티 디스크 사용량이 높아져 패리티 디스크의 수명이 줄어든다.

RAID 4의 단점을 개선시킨 것이 RAID 5 입니다.

 

6) RAID 5

제일 사용빈도가 높은 RAID 레벨이다. 디스크 최소 3개 필요

Block 단위로 스트라이핑하고, error collection을 위해 1개의 디스크에 패리티 비트를 저장하는데, 매번 다른 디스크에 저장한다.

성능은 단일 디스크의 N-1배이다.

1개의 디스크 에러시 복구 가능(2개 이상부터 불가능)

RAID 0에서 성능, 용량을 조금 줄이는 대신 안정성을 높인 RAID Level이라 보시면 됩니다.

 

 

7) RAID 6

RAID 5레벨보다 성능, 용량을 줄이고 안정성을 택한 것. 최소 4개로 구축 가능

Block 단위로 스트라이핑하고, error collection을 위해 매번 2개의 패리티 비트를 다른 디스크에 저장한다.

성능은 단일 디스크의 N-2배이다.

그리고 2개의 디스크 에러 시 복구 가능합니다. (3개 이상의 디스크 에러 시 복구 불가능)
조금 더 안정성을 높여야 하는 서버 환경에서 주로 사용합니다.

8) Nested RAID(중첩 RAID)

여러가지 조합해서 만듬.

 

 

6. 다중 스레드

장점:

1) 각 스레드가 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적다.

2) 하나의 스레드가 작업을 할 때, 다른 스레드가 별로 작업을 할 수 있어서 사용자와의 응답성도 높다.

단점: 한 스레드에서 문제가 발생하면 전체 프로세스에 영향이 미칠 수 있다.

 

각 스레드가 서로 교체될때, 문맥교환(Context Switching)이 발생한다. 오버헤드 증가. 그러나 프로세스만큼은 아님.

오히려 많은 양의 단순한 계산은 단일 스레드가 더 성능이 좋을 수 있다.

 

 

* 가비지 컬렉터

데몬 스레드를 사용하는 가장 대표적인 예이다.

할당한 메모리 중 더 이상 사용하지 않는 메모리를 자동으로 찾아주어 해제하는 역할을 한다.

보통 가비지 컬렉터가 동작하는 동안, 프로세서가 일시적으로 중단되어 필연적으로 성능 저하가 온다.

 

 

7. OSI 7계층

물리: 통신 케이블을 통해 전기 신호를 사용하여 비트 스트림을 전달(데이터 종류나 에러 확인은 하지 않는다.)

데이터링크: 네트워크 계층에서 받은 데이터를 프레임(frame)이라는 논리적인 단위로 구성하고 전송에 필요한 정보를 덧붙여 물리 계층으로 전달한다. 물리계층의 데이터 전송 시 오류 감지 역할(오류 발생하면 재전송)

네트워크: 전송 데이터를 목적지까지 경로를 찾아 전달하는 역할(라우팅 작업 이루어짐)

전송: 데이터를 전송하고, 전송 속도를 조절하고, 오류 발생한 부분은 다시 맞춰주는 역할(TCP 프로토콜을 사용하게 됨) (데이터 전송 단위: TCP: Segment, UDP: Datagram 이다.)

세션: 전송하는 두 종단 프로세스 간 접속(session)을 설정하고, 유지하고 종료하는 역할을 한다.(TCP/IP 세션을 만들고 없앰)

표현: 전송하는 데이터의 표현 방식을 관리하고 암호화하거나 데이터를 압축하는 역할을 한다.(인코딩, 디코딩 이루어짐)

응용: 사용자를 위한 인터페이스 지원

 

8. 캐시 기억장치 교체 알고리즘

1. LRU: 가장 오랫동안 사용되지 않은 페이지 교체

2. FIFO: 가장 오래된 페이지 교체함

3. LFU(Least Frequently used): 참조 횟수가 가장 작은 페이지 교체

4. Random: 사용횟수와 무관하게 임의로 블록을 교체함

5. Optimal: 가장 오랫동안 사용되지 않을 페이지 교체(구현 불가능, 다른 알고리즘과 비교 연구 목적)

6. MFU(Most Frequently Used): LFU 의 반대로 참조 횟수가 가장 많은 페이지 교체

 

 

 

9. 공개키 암호화 vs 비공개키 암호화

공개키 암호화: 공개키와 비밀키가 존재(공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키 소유자만 알 수 있다.)

-> 이 방식에서 핵심은 공개키를 통해 암호화(데이터 보안 중점)한 것은 개인키를 통해 복호화할 수 있고 개인키를 통해서 암호화(인증 과정에 중점 -> 데이터 제공자의 신원이 보장됨)한 것은 공개키를 통해서 복호화할 수 있다는 것이다.

공개키 암호와의 대표적인 알고리즘은 데이터 암호화 표준(Data Encryption Standard)이다.

비공개키 암호화: 동일한 키로 암호화, 복호화를 동시에 할 수 있는 방식

 

비밀키 암호화는 암호화와 복호화 과정에서 서로 다른 키를 사용하는 비대칭 암호화(asymmetric encryption)이다.

공개키 암호화가 비공개키 암호화보다 느리다.(비공개키가 더 빠름)

 

 

10. 세마포어와 뮤텍스

세마포어(semaphore): 공유된 자원의 데이터를 여러 프로세스가 접근하지 못하도록 막는 것

뮤텍스(Mutex): 공유된 자원의 데이터를 여러 스레드가 접근하지 못하도록 막는 것

 

* Critical Section이란?

OS에서 Critical Section은 아주 중요한 부분이다.

다중 프로그래밍 운영체제에서 여러 프로세스가 데이터를 공유하고 있을 때, 각 프로세스에서 공유 데이터를 액세스하는 프로그램 코드를 가리키는 말이다. 

 

 

11. 이진 트리

완전 이진 트리: 마지막 레벨을 제외한 모든 노드들이 꽉 차 있고, 마지막 레벨은 왼쪽부터 마지막 노드까지 차례대로 차있는 상태

포화 이진 트리: 마지막 레벨까지 꽉 채워진 상태

 

이진 트리 순회 종류

1) 전위 순회: 뿌리 -> 왼쪽 -> 오른쪽(깊이 우선 느낌)

2) 중위 순회: 왼쪽 -> 뿌리 -> 오른쪽

3) 후위 순회: 왼쪽 -> 오른쪽 -> 뿌리

4) 층별 순회: 뿌리부터 층별로 순회(너비우선 느낌)

 

 

 

12. 프로세스 스케쥴링(비선점 - 빼앗지 않음, 선점 - 빼앗음)

 

비선점:

1) FCFS(First Come First Serve Schedule): 비선점, CPU 를 먼저 요청한 프로세스가 먼저 CPU 를 배정 받는 스케줄링 방법이다.

2) SJF: 비선점형, 실행시간이 짧은 작업(프로세스)부터 처리하므로 평균 대기 시간이 FCFS보다 짧다.

 

선점:

1) Round-Robin: 우선순위가 적용되지 않는 단순한 선점형 방식이다.

2) 다단계 큐(Multi-level Queue): 우선순위에 따라 준비된 큐 여러개를 사용하는 방식이다. 

우선순위가 낮은 하위 단계의 프로세스가 실행중이어도, 우선순위가 높은 단계의 프로세스가 들어오면 CPU 빼앗김

3) SRT(Shortest Remaining Time): CPU 할댱량이 적은게 들어오면 그거 먼저 빠르게 처리함

 

* 프로세스 상태

생성 - 준비 - 실행 - 대기 - 종료

 

 

13. TCP/IP 프로토콜 스택이란?

4개의 계층으로 나뉨(응용, 전송, 네트워크, 데이터링크)

데이터링크: LAN,WAN, MAN과 같은 네트워크 표준과 같은 프로토콜을 정의한다. 두 호스트의 물리적인 연결의 표준을 담당함

네트워크: 물리적 연결 완료 후 경로 설정 단계. 경로는 비 연결적이다. 일정한 경로를 제공하지 않고, 중간에 경로가 바뀔 시 데이터 손실 발생할 수 있음. - 오류 발생에 대한 대비가 되어있지 않다.

전송: 두 호스트간 데이터 송/수신 방식에 대한 약속(TCP/UDP) 결정. TCP는 보내고 받았는지 확인하지만, UDP는 보내기만 함.(확인없음)

응용: 클라이언트와 서버간의 데이터 송수신에 대한 약속들

 

 

* 아래는 각 계층 별 주요 프로토콜

 

 

 

14. 갖가지 법칙들

1) 무어의 법칙: 인텔 공동 창립자인 고든 무어가 말한거, 2년마다 칩에 집적할 수 있는 트랜지스터 수가 2배씩 증가함

2) 암달의 법칙: 암달의 저주라고도 불림, 컴퓨터 일부를 개선할 때, 전체적으로 얼만큼의 성능 향상이 일어나는지 계산.

3) 구스타프슨의 법칙: 컴퓨터 과학에서 대용량 데이터 처리는 효과적으로 병렬화할 수 있다.

4) 폰노이만 아키텍쳐: 컴퓨터 설계 관점 분석할 때, 사용되는 구조.(프로그램 내장 방식의 컴퓨터)

출처: https://blog.naver.com/with_msip/221981730449

폰노이만 이전(애니악 시절) 1+1 계산 시에는 직접 전선을 뺏다가 껴야하는데, 폰노이만 구조의 컴퓨터는 CPU라는 프로그램이 안에 내장되어 있어서 바로 계산 가능.

5) 리틀의 법칙: 프로세스의 안정상태에서의 재고와 산출율 그리고 흐름 시간의 상관관계를 나타낸 법칙, IT에서는 성능평가에 사용됨.

 

암달의 법칙은 Latency에 기준, 구스타프슨은 Throughput에 기준을 둠.

 

 

15. 슈퍼스칼라란?

한 프로세스 사이클 동안에 하나 이상의 프로세서를 실행시킬 수 있는 프로세서 아키텍처를 의미한다.

 

16. 분기 예측 기법이란?

다음 실행될 조건문이 어느 곳으로 분기할 것인지 확실히 알게 되기 전에 예측하는 CPU 기술

 

17. VLIW란?

VLIW(Very Long Instruction Word)는 명령어를 여러개 처리 할 수 있는 방식으로, 동시에 여러 명령어를 실행할 수 있도록 하는 연산 처리 기술중 하나이다.

출처: http://wiki.nex32.net/%EC%9A%A9%EC%96%B4/vliw

 

18. SIMD란? - 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법이다. 

SIMD란 Single Instruction Multiple Data의 약자로, 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법입니다. 일반적인 프로그램의 경우 대부분 SISD(Single Instruction Single Data)으로 구현되어 있고, 이것은 기본적인 폰노이만 컴퓨터가 사용하는 방식입니다. 하지만 동영상 인코딩, 그래픽 렌더링 등의 작업에 SIMD를 적용하였을 때는 성능적으로 큰 이득을 취할 수 있습니다.

 

19. 아날로그 컴퓨터 vs 디지털 컴퓨터

연산방식: 아날로그는 미적분, 디지털은 사칙연산

입력 형식: 아날로그는 길이, 전압, 전류, 디지털은 멀티미디어 자료

출력 형식: 아날로그는 곡선, 그래프, 디지털은 멀티미디어

회로 구성: 아날로그는 증폭회로,릴레이 방식, 디지털은 논리회로이다.

출처: https://m.blog.naver.com/PostView.nhn?blogId=djfduddldu&logNo=20103053843&proxyReferer=https:%2F%2Fwww.google.com%2F

 

20. 스레싱이란?

너무 페이지 부재가 자주 발생하는 현상이다.

어떤 프로세스가 계속적으로 페이지 부재가 일어나서,

페이지 교체가 자주 발생하여 프로세스 처리시간보다 페이지 교체 시간이 더 많아지는 현상.

 

* 스레싱과 페이지 부재(교체)는 정비례관계

 

21. SCM이란?

공급망 관리(공급망 전체를 하나의 통합된 개체로 보고 이를 최적화하고자 하는 경영 방식)

 

22. ERP란?

Enterprising Resource Planning의 약자로, 기업 내 생산, 물류, 회계, 재무, 영업, 구매, 재고 등을 통합적으로 관리하는 프로그램.

 

23. EDI란?

Electronic Data Interchange의 약자로, 표준화된 상거래 서식, 공공서식을 서로 합의하여 전자 문서로 만들어 컴퓨터나 통신을 매체로 서로 교환하는 방식이다. 

 

24. KMS란?

Knowledge Management System의 약자로 조직이나 기업의 인적자원이 축적하고 있는 개별적인 지식을 체계화하여 공유함으로서 경쟁력을 향상시키기 위한 기업 정보 시스템이다.

 

 

25. 관계 대수 연산

프로젝트: 릴레이션의 수직적 부분집합이라고 볼 수 있다.

출처: https://blog.naver.com/k97b1114/140152644090

셀렉트: 릴레이션에서 주어진 조건을 만족하는 튜플을 고르는 연산

 

 

 

 

 

* 조인도 있다.

 

* 디비전도 있다.

 

 

26. 코틀린이란

오답: 그래픽 요소를 강화한 게임 개발 전용 언어이다.

정의: 자바가 실행될 수 있는 환경에서 자바를 대체할 수 있도록 개발된 언어이다. 주로 웹앱의 백엔드, 안드로이드 앱

 

* 자바는 컴파일된 프로그램이 JVM상에서 인터프리터 방식으로 실행되는 플랫폼 독립적 프로그래밍 언어이다. 

Java ----> 컴파일 ----> class ---> 인터프린터 ----> 실행

즉 하이브리드 방식이다.!

 

 

27. 페트리넷이란?

프로세스 마이닝의 가장 기본이 되는 프로세스 모델이다.

 

출처: https://process-mining.tistory.com/16

가장 간단한 형태로 프로세스를 나타낼 수 있다. 

 

 

28. 자료흐름도는 구조적인 관점에서 분석할 때 사용된다.

 

29. 동적 관점의 시스템 기술 시 필요한 것.

사건추적도: 사건 추적도란 일반적으로 사건이 일어나는 일종의 시나리오를 작성하여 사건 추적한다. 사건 추적도에서는 사건의 순서와 사건을 주고받는 객체나 시스템을 표현하며, 사건의 흐름은 화살표로 표시한다

 

상태변화도: state transition diagram은 시스템이 가지고 있는 값을 표시하는 상태 외부에서 가해지는 사건이다.

페트리넷도 동적 관점에서 필요하다.

 

30. 중복 검사

 

1) 순환중복검사

 

 

2) 수직 중복 검사

수직 패리티 체크 = 수직 중복 검사

3) 수평 중복 검사

 

4) 해밍코드는 오류가 발생한 부분을 검출한 후 직접 수정까지 하는 방법이다.

 

5) 체크섬은 중복검사의 한 형태이다. 송신된 자료의 무결성을 검증하는 용도로 사용됨.

 

 

31. 이진탐색트리의 삭제

1) 마지막 단말 노드 삭제 시 -> 그냥 삭제하면 된다.

2) 중간 노드 삭제시

2-1) 왼쪽 자식만 있는 노드라면, 노드의 하위 노드 중 가장 큰 값(즉 제일 오른쪽 하위)로 대체해준다.

2-2) 오른쪽 자식만 있는 노드라면, 노드의 하위 노드 중 가장 작은 값(즉 제일 왼쪽 하위)로 대체해준다.

3) 왼쪽, 오른쪽 자식이 모두 있는 노드의 삭제(오른쪽 서브 트리의 가장 왼쪽 노드를 찾는다.)

 

 

 

32. 리눅스 fork()에 대해서!

출처: https://medium.com/pocs/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%95%EC%9D%98%EB%85%B8%ED%8A%B8-3-9ed24cf457ce

 

 

33. 최대힙 삽입/삭제

 

 

 

34. SYN-Flooding 공격

위의 2번단계에서 목적지서버(B)는 소스서버(A)가 ACK패킷을 보내주기를 계속적으로 기다리는 것이 아니라일정시간 후 요청이 오지 않으면

백로그큐(Backlog Queue)가 허용하는 공간에 연결정보(로그)를 보관하게 됩니다.

이러한 상태가 지속적으로 요청되어 연결정보(로그)가 쌓이게 되면 목적지서버(B)의 특정서비스가 마비될 수 있습니다.

이러한 공격을 DOS공격의 일종인 SYN Flooding 공격이라고 합니다.

 

 

35. 부동소수점 vs 고정소수점

부동

 

고정

 

16. RIP 프로토콜

 

 

37. 서브넷마스크 관련(reakwon.tistory.com/69)

 

 

 

* MPEG-2

 

 

반응형

'IT' 카테고리의 다른 글

Django 설치 및 프로젝트 생성 - Ver 2  (0) 2021.01.30
Django 설치 및 프로젝트 생성  (0) 2021.01.30
Mac에 Emacs 연동안될 때  (0) 2020.11.03
코딩 폰트에 대해서  (0) 2020.10.29
터미널 실행 시 명령어 자동 실행  (0) 2020.10.29

+ Recent posts