본문 바로가기

verdantjuly/Today I Learned

TIL 20240401

728x90

이번 주 목표

마이크로 서비스 아키텍처 구축 읽기

정보처리기사 필기 준비

이력서 열심히 넣어보기

면접 최고로 잘 보기

실무에 바로 쓰이는 컴퓨터 공학 기초 완강

오늘 목표

면접 준비

실무에 바로 쓰이는 컴퓨터 공학 기초 

오늘 한 것

면접 준비

실무에 바로 쓰이는 컴퓨터 공학 기초 1-2주차

오늘 스케줄

9:00 자기 성찰

1:00 찬용님과 면접 대비 대화

4:00 기술 면접 대비 질문 목록 흝기

5:00 실무에 바로 쓰이는 컴퓨터 공학 기초 ~2주차

8:00 이력서 기반 기술 면접 대비

9:00 인텔리픽 모의면접

9:30 모의 면접 복기

10:00 모의 면접 답변 암기

11:00 실무에 바로 쓰이는 컴퓨터 공학 기초 3주차

12:00 취침

1. 에자일 방법론

 

애자일 : 날렵한, 민첩한

1-2주 단위 스프린트, 매일 스크럼

스프린트 단위로 빠르게 목표를 달성

목표 달성 이후 세부적으로 구현하고 다음 단계로 나아감

(개발 속도를 위해 하드코딩 하였거나, 클린 코드를 구현하지 못하였을 경우 다음 스프린트에 진행)

 

나의 애자일 개발 경험: 

최종 프로젝트를 5-7일 정도의 스프린트를 갖고 목적을 달성.

목적 달성 이후 세부 구현. 

 

dev-camp 프로젝트를 주단위의 스프린트와 매일 개인 스크럼을 갖고 진행. 

기능 정의 > 설계 > 개발 > 기능 확인 (백엔드 API, Postman) > 배포 > 기능 최종 확인 (프론트엔드)

 

스스로 스크럼 마스터부터 구성원까지의 다양한 역할을 경험하면서 
각 역할의 요구사항이나 프로젝트 장애 해결, 스프린트 목표 달성을 위한 업무 배분, 팀 밍글링 등을 익힘. 

 

2. UML (Unified Modeling Language)

+ public
- private

# protected

~ package

 

3. Module

기능을 수행하는 실행 코드

 

4. 모듈화의 목적

모듈간의 결합도를 낮추고 응집도를 높이는 것

용이한 유지보수

모듈의 재사용 및 확장

 

5. 결합도

모듈 사이에 의존하는 정도나 연관 관계

 

6. 응집도

모듈 내부 구성요소간 연관 정도 

 

7. 소프트웨어 아키텍처

요구사항에 따른 소프트웨어의 전반적인 구조

시스템 품질 속성 : 가용성, 변경용이성, 사용성, 확장성, 성능, 보안

 

7-1. 파이프 필터 패턴

데이터 변환 과정에서 오버헤드 발생 가능성

* 오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리

* 부하 : 어떤 생명체가 견뎌 낼 수 있을 정도의 측정 가능한 양

 

7-2. MVC 패턴

Model View Controller로 구성되어 사용자 인터페이스와 비즈니스 로직이 분리된 패턴

유지보수와 재사용이 쉽다

 

 

7-3. 레이어 패턴

시스템을 계층으로 구분하여 구성하는 방법

특정 계층만 교체해 시스템을 개선

정보 은닉을 기반으로 높은 응집도

7-4. 클라이언트 서버 패턴

하나의 서버와 여러 클라이언트로 구성되는 패턴

 

7-5. 마스터 슬레이브 패턴

작업의 주체인 마스터 컴포넌트와 작업을 처리하는 슬레이브 컴포넌트로 구성된 패턴

7-6. 이벤트 버스 패턴

이벤트 소스, 이벤트 리스너. 이벤트 채널. 이벤트 버스 4가지 컴포넌트로 구성되는 패턴

이벤트 소스가 채널에 이벤트 메시지를 발행하면

채널을 구독한 리스너가 메시지를 받아 이벤트 처리

8. 객체 지향

캡슐화 추상화 상속 다형성 정보은닉

- 오버로딩 : 메소드 이름 동일하지만 매개변수의 타입이나 개수가 다른 여러 개의 메소드 정의

- 오버라이딩 : 상속 관계의 클래스가 상위 클래스의 정의를 하위 클래스에서 재정의

 

9. SOLID

단일 책임 원칙

개방 폐쇄 원칙

리스코프 치환 원칙

인터페이스 분리 원칙

의존관계 역전 원칙

 

10. GoF (Gangs of Four) 디자인 패턴

객체 지향 설계 단계 중 재사용에 관한 설계를 디자인 패턴화 한 것

총 23가지 패턴

 

11. 자료구조

배열 링크드리스트 스택(LIFO) 큐(FIFO) 트리 그래프 해시테이블

 

12. 알고리즘

문제 해결 방법을 정의한 단계적 절차 

표현 방법 : 자연어, 의사코드, 순서도, 프로그래밍 언어

- 탐욕법(그리디 알고리즘)

- 분할 정복 : 퀵 정렬, 병합 정렬

- 동적 계획법 : 피보나치 수열

 

13. 시간 복잡도

빅 오 표기법 : 알고리즘의 최악의 실행시간을 표기

 

14. 정렬 알고리즘

퀵 정렬 : 피봇을 선택해 피봇보다 작은 그룹과 큰 그룹으로 나누는 작업을 반복하여 정렬

병합 정렬 : 원소를 계속 절반씩 나누고 나누어진 데이터를 역순으로 정렬된 형태로 병합

선택 정렬 : 원소를 돌면서 비교하고 원하는 값을 선택하여 정렬

삽입 정렬 : 원소를 n-1번째 부터 첫 번째까지 비교하여 데이터를 삽입 정렬

버블 정렬 : 앞 뒤 원소를 비교 위치를 바꾸며 정렬하는 방식 

15. 탐색

선형 탐색 Linear Search : 원소를 처음부터 끝까지 순차적으로 비교하여 원하는 값을 찾는 탐색 방법

이진 탐색 Binary Search : 정렬된 데이터에서 배열의 중간 값을 검색 값과 비교하고 다른 경우 중간 값보다 작은 구간 혹은 큰 구간을 대상으로 탐색을 반복하는 방법

16. 해싱 Hashing

입력 받은 데이터를 해시 값으로 계산하여 주소를 찾는 탐색 방법

해시 값 : 해시 테이블의 주소를 해시 함수를 이용해 계산 (산술 연산)

 

제산법(Division Method) : 소수로 나누어 나머지 값을 주소로 사용

중간 제곱 방법 : 키를 제곱하여 중간 부분의 값을 주소로 사용

중첩법 : 키를 여러 부분으로 나누고 값을 더하거나 XOR 연산으로 나온 결과를 주소로 사용

진법 변환법 : 키를 다른 진법으로 변환한 값을 주소로 사용

 

17. IDE Integrated Developement Environment

 

18. ISO/IEC 9126

소프트웨어 품질 특성과 평가를 위한 국제 표준 지침

기능성, 신뢰성, 사용성, 효율성, 유지보수성,이식성

 

19. DRM Digital Rights Management 디지털 저작권 관리

DRM 기술 종류 :

암호화 기술, 키 관리 기술, 암호화 파일 생성 기술, 식별 기술, 저작권 표현 기술, 정책 관리 기술, 크랙 방지 기술, 인증 기술

20. 릴리즈 노트 (Release Note)

제품의 변경 사항을 정리한 문서

 

참고자료 : 스파르타 코딩클럽 [실무에 바로 쓰이는 컴퓨터 공학 기초]


정리 

나의 애자일 개발 경험:

최종 프로젝트를 5-7일 정도의 스프린트를 갖고 목적을 달성.

목적 달성 이후 세부 구현. 

 

dev-camp 프로젝트를 주단위의 스프린트와 매일 개인 스크럼을 갖고 진행. 

기능 정의 > 설계 > 개발 > 기능 확인 (백엔드 API, Postman) > 배포 > 기능 최종 확인 (프론트엔드)

 

스스로 스크럼 마스터부터 구성원까지의 다양한 역할을 경험하면서 
각 역할의 요구사항이나 프로젝트 장애 해결, 스프린트 목표 달성을 위한 업무 배분, 팀 밍글링 등을 익힘. 

 

 

KPT

Keep

포기하지 않는 것

Problem

일희일비

Try

평온한 개발자가 되자...

소감

면접을 최선을 다해 보고 싶다.

마지막 기회라고 생각하고 임하고 있다. 

 

찬용님을 만났다. 

내 개발이 부러지고 힘들 때마다 조언과 격려를 아끼지 않는 좋은 친구이다.

찬용님이 정처기 필기 책을 주었다. 자격증에 대한 찬용님의 조언은 옳은 것 같다. 

내일부터 무슨 일이 있어도 정처기 공부를 해서 취득해야겠다. 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20240403  (0) 2024.04.03
TIL 20240402  (0) 2024.04.02
TIL 20240328  (0) 2024.03.28
TIL 20240309  (0) 2024.03.09
TIL 20240302  (0) 2024.03.02