2021.09.06

 

자료구조 공부 시작

책 '뇌를 자극하는 알고리즘'

 

<공부한 내용>

-리스트,노드,링크드 리스트가 무엇인지에 대해 공부

-노드 생성/소멸/추가

-노드 추가할 때 List의 포인터의 포인터로 파라미터 설정해야하는 이유 공부(몰라서 다음날로 미룸)

 

-리스트

-노드

-링크드리스트

 

1. 노드 표현하기

1. 노드 표현하기

 

2. 함수 원형 선언(인터페이스 같은 느낌인건가?,,,)

2. 함수 원형 선언

3.  노드 생성 

3. 노드 생성

4. 노드 소멸 

4, 노드 소멸(제일 간단한 코드)

5. 노드 추가

5. 노드추가

항상 시작할 땐 null인지,head가 remove인지 등 기본적인 거 체크하는 코드 구현하고 넘어가기 

head부터 시작해서 tail을 찾을 때까지 while을 돌린다. tail을 찾으면 그것의 다음 노드를 새 노드로 삽입하면 끝. 

 

 

6. 노드 삽입 

추가는 링크드리스트 끝에 새로운 노드를 넣는 건데 삽입은 리스트 중간에 노드를 넣는 걸 의미함(current 노드가 필요)

 

6. 노드삽입

7. 헤드삽입

7. 헤드삽입

8. 노드 제거 

8.. 노드제거

9.  노드 세기

 

9. 노드세기

1.자기소개,지원동기

 

 

2.공통 질문( 일단 기억나는 거 위주로)

 

  • 리더인지 팔로워 인지?  : 팀에서 사람들 의견을 잘 듣는 편이기도 하고, 리더였던 적이 없어서 팔로워인 것 같다. (리더 경험을 할 수 있는 일을 해야하나?)

 

  • 경험을 토대로 본인이 리더가 된다면 어떻게 할지: 내가 사람들의 의견을 잘 들으니까 팀원 들이 필요한 건 무엇인지, 개선해야할 것은 무엇인지 물어본 후 의견을 잘 들어서 팀의 발전을 위해 기여할 것이다. (이 부분에 대해 생각해 본 적이 없어서 내가 리더가 된다면 어떻게 할 것인지 생각해 봐야할 것 같다)

 

  • 주어진 일이 많으면 어떻게 할 것인지 : 평소에 할 일을 많이 맡는 편은 아니지만(굳이 얘기 안해도 됐던 것 같음) 만약 그런 일이 생긴다면 책임감을 가지고 수면 시간을 줄여서라도 맡은 일을 다 끝내려고 노력할 것이다.

 

  • 시간이 오래걸려도 퀄리티 좋은 걸 선택? 아니면 마감기한에 맞추는게 중요하다고 생각하는지? :회사 업무를 한다면 회사에는 마감기한이 있기에 그거에 맞춰서 일을 하는 것이 중요하다고 생각하는데, 스스로 발전하기 위해서 이 동아리에 지원한만큼 많이 배우는 것이 중요하다고 생각한다. 그래서 동아리 활동하는 것에 있어서는 시간이 오래걸려도 퀄리티 좋은 걸 선택할 것 같다. 

- 서류기반 기술질문

 

  • aop: 대답 못함*
  • mvc에 대하여: 대답못함*(내가 자소서에 써놓고)
  • snakecase: 대답 못함,,,(자바에 적합한 이름 방법)*
  • restful api: 대답함
  • put,petch: 대답함 
  • 도커: 대답했는데 잘 모르겠음

 

  • 스터디하면서 어려웠던 점과 해결했던 점
  • 어려움을 해결한 과정 
  • 배포도 했나?: 못했다고 함
  • 어려운 점 풀어가는 방식이 인상깊었다고 함

 

-결과: 불합격

 

  • 내가 생각한 불합격한 이유: 기술질문 절반을 대답하지 못한 것, 기본적인 질문 대답 못함(camelcase는 알았는데 sneakcase 몰랐음)
  • 해결방안: 내가 다루는 프레임워크, 프로그램에 대한 지식 습득하기/기본적인 컴공 지식들 공부하기 

 

  • 스펙이 많이 부족해서 당연히 서류에서 떨어질 줄 알았는데 처음으로 서류합격을 해 본 경험이라 의미가 있다고 생각함
  • 비전공자이지만 그 생각에 나를 제한하지 않고 올해 시작하면서 인강도 듣고, 스터디도 하면서 꾸준히 쌓아올린 결과물이라고 생각해 발전가능성을 느끼게 된 경험이었음
  • 앞으로 시간적 여유가 많으니 기본적인 것부터 차근차근 공부해 나가면 더 발전할 수 있을 거라고 생각함 

 

<대답 못했던 부분 공부>

 

1. AOP(aspect oriented programming,관점 지향 프로그래밍)

: 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로(코드들을 부분적으로 나누는 것을 의미함)

각각 모듈화하는 것

모듈화는 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말함

핵심적인 관점(모듈화) (논리) 부가적인 관점(모듈화)

핵심적인 관점: 우리가 적용하고자 하는 핵심 비즈니스 로직이 됨

부가적인 관점: 데이터베이스 연결,로깅,파일 입출력 

->소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발결할 수 있음. 흩어진 관심사(crosscutting concerns)

 

즉, 흩어진 관심사를 aspect로 모듈화하고, 핵심적인 비즈니스 로직에서 분리하여 재사용하는 하겠다는 것이 aop의 취지.

 

-aop의 주요 개념

  • aspect: 흩어진 관심사를 모듈화 한 것. 부가기능을 모듈화함
  • target : aspect를 적용하는 곳(클래스,메서드,,)
  • advice: 실질적으로 어떤 일을 해야할지에 대한 것, 실질적인 부가기능을 담은 구현체
  • ointPoint: Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용가능

-PointCut: JointPoint의 상세한 스펙을 정의한 것. 'A란 메서드의 진입 시점에 호출할 것'과 같이 더욱 구체적으로 Advice가 실행될 지점을 정할 수 있음

++(target,advice,jointpoint,pointcut을 다 모은게 aspect인가?)

 

-스프링 AOP 특징

  • 프록시 패턴 기반의 aop 구현체, 프록시 객체를 쓰는 이유는 접근 제어 및 부가기능을 추가하기 위해서임
  • 스프링 빈에서만 적용 가능
  • 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제에 대한 해결책을 지원하는 것이 목적
  • 문제라 함은 중복코드, 프록시 클래스 작성의 번거로움, 객체들 간 관계 복잡도 증가,,,등 

 

++모르는 단어: 프록시, 프록시패턴, IoC,엔터프라이즈 애플리케이션 

 

출처: https://engkimbs.tistory.com/746

 

2. snake_case

: 언더스코어를 구분자로 함. 주로 상수 표현 시에 사용됨

  • camelCase
  • kebab-case
  • PascalCase

 

3. 도커(Docker)

 

- 컨테이너 기반의 오픈소스 가상화 플랫폼

  • 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줌
  • 프로그램(백엔드,디비 서버,메시지큐 등) 컨테이너로 추상화 할 수 있고, 조립 pc, aws,azure,google cloud 등 어디에서든 실행할 수 있음

 

-도커의 장점

  • 모듈성
  • 계층 및 이미지 버전 제어
  • 롤백
  • 신속한 배포

 

  • 도커는 단일 컨테이너 관리에 적합하도록 만들어져 있는데, 수백개로 세분화된 컨테이너와 컨테이너화된 앱을 점점 더 많이 사용하기 시작하면 도커가 컨테이너를 그룹화 해야함. 이때 이용되는 것이 쿠버네티스 

 

++모르는 단어: 쿠버네티스 

 

출처: https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

        https://www.redhat.com/ko/topics/containers/what-is-docker

 

4. Spring MVC

 

기말고사가 끝나고 바로 준비를 시작했지만 여러가지 문제점으로 정보처리기사 2021 2차 실기시험에 56점으로 떨어졌다.

나의 문제점을 돌아보고 개선하려고 한다.

 

-내 답

1.wan(0)

2.ux,인터페이스(3) #ui!!!

3.13(0) #파이썬 문제

4.update/set(5)

5.where,학과(4)#

6.10(0) #파이썬 문제 

7.트랜잭션 원자성 서술(0)

8.2(5)

9.aes(5)

10.11(5) 자바문제

11.1024(5)

12.function,dynamic,information(5) 수제비 카페에서 공부한 내용

13.문장,분기,조건(5) 수제비 카페에서 공부한 내용+ 책

14.이%,DESC(5)

15.안 적음(0) #수제비 책에서 본 적 있는데 안 읽음 

16.안 적음(0) 

17.안 적음(0) #행위(behavioral) 수제비 카페에 있었는데 또 틀린 문제

18.스텁(5)

19.ip,tcp(0)

20.순차적,교환적,기능적 응집도(4) #절차적 응집도를 순차적 응집도라고 함

 

-틀린 문제 답 (11개 틀림)

1.애드 혹 네트워크

2.ux,ui

3,26

5.on(join이니까)

6.8

7.트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것 

15.잠금,로킹(locking)

16.static

17.행위

19.가상회선방식/데이터그램방식

20.절차적 응집도 

 

 

총 점수: 56점, 아까운 점수

문제점: 

 

1. 시험 공부 시간 부족(6월 18일 시작, 7월 10일 시험이었으니 약 3주 정도 공부함,공부 안 하는 날이 몇몇 있었음 )

2. 책을 2020년 수제비 책으로 공부함(안 나오는 내용 공부함으로써 비효율적으로 공부했고, 올해 나오는 거 공부 못함)

3. 수제비 책에서 잠깐 알고가기나 핵인싸 퀴즈 대충 넘김(여기서도 시험에 나옴, 안일하고 대충 공부했음) 

예시) 로킹도 책에 내용 있는 거 봤는데 안 읽어봄 -> 책 내용이 너무 많다는 핑계로 제대로 공부하지 않은 부분들이 있었음. 

4. 수제비 카페 자료를 많이 활용 못함(시간 부족으로)

5. 프로그래밍 공부 소홀히 해서 부족했음(포인터 등등)

6. 이외: 중요한 부분 집중해서 공부 안해서 기억 안났음(ui,행위 공부했는데 틀림 , 절차적 응집도와 순차적 응집도의 차이점 공부하지 않음)

 

 

 

 

개선할 점:

1. 시간확보(시험 공부 9월 1일부터 시작, 약 6주간의 시간이 있음)

2. 2021 정처기 실기 수제비책 구매

3. 다회독 하면서 잠깐 알고가기, 핵인싸 퀴즈도 집중해서 공부하기(대충 대충 공부하지 말기)

4. 10월 시작부터 약 2주동안 카페 문제들 활용할 예정

5. 인강으로 프로그래밍 파트 보완

6. 지루한 공부를 극복하고, 효율적으로 중요한 부분들 위주로 공부하기 위해 수제비 인강 끊음(10만원, worth it)

7. 2-3주 안에 인강 끝내고(1회독), 9월 안에 2회독 마무리 하고, 10월에 카페 활용해서 공부하는 것이 목표. 

 

-기본적인 내용+잠깐 알고가기+핵인싸 문제+ 틀린문제+기출 등등 으로 공부하기 

 

9.13 

실기 접수 완료 

+ Recent posts