- 시험 일자: 2022. 10. 07

 

카카오톡 배너 광고에 뜬 공고를 보고 지원한 뒤 코딩테스트를 보게 되었습니다.

일자는 오늘 17시 - 21시 중 총 210분 가량으로 진행되었습니다. 저는 17시에 시작해서 20시 10분 정도에 끝냈습니다.

다른 코테와 달랐던 점은 프로그래머스 사이트가 아닌 HackerRank라는 사이트에서 영어로 진행되었다는 점이었습니다. 

뭔가 외국 기업 시험 보는 것 같은 느낌이 나서 신기한 경험이었습니다. 

 

결과는 다음과 같습니다. 

1번 : 모든 테스트 통과

2번 : 9 / 14 테스트 통과 

3번 : 10 / 14 테스트 통과

4번 : x

5번 : x

6번 : x

 

1번은 간단한 구현 문제였고, 2번은 문자열 관련한 문제였고, 3번은 정렬 문제인데 시간초과가 몇몇 테스트에서 발생했습니다. 

2번과 3번은 어느정도 시간을 투자해서 코드를 작성했으나, 큰 수에 대한 연산에서 시간초과가 계속 발생해서 앞으로 시간복잡도와 빠르게 연산할 수 있는 코드 작성하는 연습을 해야겠다고 생각했습니다. 

4번은 sql문제로, 아직 sql 문제를 한번도 접하지 못해 풀지 못한 문제였습니다. 

5번은 그래프 문제였습니다.

6번은 API 문제였는데, 이것도 풀지 못했습니다. 

 

이번 시험을 치르면서 저의 부족함을 또 한번 느끼게 되었습니다. 코테를 공부한지 어언 9개월이 넘어가지만, 아직 기업 코테를 뚫지 못해 실망스럽기도 하고, 앞으로 공부를 어떻게 해야 이걸 극복할 수 있을까 계속 고민이 됩니다. 

그동안에는 계속 새로운 문제를 푸는데 집중해 풀었던 문제 복습과 그동안 봐왔던 기업 코테를 제대로 복기할 시간이 없던 것 같습니다.

이번 기회에 복습과 극복할 수 있는 방안에 대해서 고민할 계기가 된 것 같습니다. 

또한 sql 과 API는 풀어보지 못한 문제여서, 이 부분도 차차 공부해 나가려고 합니다. 

 

정리 : 넥슨 넥토리얼 코테를 봤다. 빠르게 연산하는 코드를 작성해야 겠다. sql / API 문제도 풀어봐야겠다, 다익스트라 알고리즘을 공부해야겠다 

 

 

 

정처기 시험이 끝나면서 본격적으로 개발자 취업준비를 시작했다. 일단 어떻게 무엇을 공부할지 대략적으로 정해놓고, 변경사항이 있을 때마다 변경하면 될 것 같다. 학교 에타 취준게나 유튜브에서 얻은 정보들 위주로 계획을 구성하였다. 

 

시간이 더 오래 걸릴 수도 있고, 쉽지 않을 수도 있겠지만 일단 해보기 

 

-직무: 백엔드(변경가능성 o)

-목표기간: 내년~내후년(2022년에서 2023년)안에 취뽀

-준비해야 할 것들: 포트폴리오, 코딩테스트, 기술면접

포트폴리오는 서류와 면접을 위해서 준비해야할 것 같고, 

코딩테스트는 면접 기회를 얻기위해서

기술면접은 최종 통과를 하기위해서

할일이 아주 많다,,,

 

1. 포트폴리오

:기본적인 컴공공부와 개인 프로젝트, 단체 프로젝트를 통해서 구성해야할 것 같고

컴공공부는 지금 시작하고 있고, 이게 기반이 다져지면 개인을 시작으로 동아리 등을 통해서 단체 프로젝트 경험을 해야할 것 같다.

 

2.코딩테스트

: 중견~대기업의 면접 기회를 얻기위해서 통과해야할 단계이므로 준비가 필요함

지금 자료구조,알고리즘 개념 공부를 하고 있으며 이후 프로그래머스,백준을 통해서 코테 문제 꾸준히 풀 예정.

 

3. 기술면접

: 일단 지금 내코가 석자라 1,2번을 먼저하고 3번을 준비해야 할 것 같다. 언제부터 할지는 아직 미정.

 

 

2021. 11월 공부 계획(12.07에 계획 확인)

 

1. 13일 ssafy 적성진단 공부 (완료)

2. 이후 파이썬 level2,3 인강 끝내기( 매일 두시간 분량 수업듣고, 복습하고 level1 내용도 복습 병행하기)

-> 2,3 끝내고 4까지 진행함(완료)

3. 파이썬 수업 들으면서 개인프로젝트 기획해보기(무엇을 만들지 생각 두개정도) -> 못함. 이제 기획 시작해야함

4. 12월 부터 개인 프로젝트 진행해보기+ 프레임워크 공부하면서 -> 다음주부터 진행할 예정 

5. 1일 1블로그 도전?? -> 일단 매일하자는 강박보다는 공부할 때마다 남기자는 생각으로 블로그 기록하기 

6. 블로그 올리는 거 적응되면 내년즈음에 개발 유튜브도 시작해보기 -> 일단 개인 프로젝트, 코테 준비 먼저

 

2021년 12월 공부 계획

 

1. 스프링,jpa 프로젝트로 공부하기 (완료)

2. 코딩테스트 공부 시작하기. DP,그리디,탐색 각각 백준에서 50문제씩 풀기 (dp만 완료함)

3.개인프로젝트 기획하고 시작하기(공부하느라 12월에 시작 못함) -> 1월에 시작함

 

2022년 1월 공부 계획

 

1. 개인프로젝트 시작하기 (완료)

2. 개인프로젝트 완성하기 (완료)

3. 코딩 테스트 매일 2문제씩 공부하기 (dp 끝내고, 그리디로 진행중)

4. 프로젝트 기반해서 포트폴리오 작성하기 (완료/ 일단 블로그에 기록함)

 

2022년 2월 공부 계획

1. 코딩테스트 그리디 50문제 푸는 거 끝내기(완료)

2. 코딩테스트 탐색 공부도 끝내기(가능하면)(절반정도 완료)

3. 백엔드 공부 및 토이 프로젝트 해보기(백엔드 공부함. JPA 기본 및 JPA+SpringBoot 활용 1편 완료)

 

2022년 3월 공부 계획 

1. 탐색 공부 끝내기(완료)

2. 강의 커리큘럼(~QueryDsl) 끝내기(활용 2편, SpringDataJpa,QueryDsl 완료)

3. 코테 공부 기출 풀기(시작만 함)

4. 오픽 보기(IH로 완료)

5. 코테 복습(못함)

6. 토이 프로젝트 (못함)

 

3월 피드백

백엔드에 필요한 기본 공부는 끝냈지만, 이전부터 계속 토이 프로젝트를 못함 -> 다음달엔 토이 프로젝트에 집중하고, 배운 걸 활용하는 방식으로 공부하기

코테는 아직 부족해서 계속 기출풀고, 복습해야 할 것 같음

그동안 미뤄왔던 커리큘럼 하나를 끝낸 건 뿌듯하다. 여기서 배운 거를 기점으로 꾸준히 공부해야지

 

다만 아쉬운 건 3월 중순에 오픽 본 후부터 좀 나태해진 경향이 있었던 것 같다. 

 

2022년 4월 공부 계획

일단 유럽여행을 가느라 공부를 많이 못할 것 같다 

 

귀국 후에 할 일들(우선순위 순서로 작성했다)

4월 말부터 하고 싶은 것들

회사 지원하고, 코테 보고, 프로젝트를 통해서 사람들과 같이 일하고 싶다 

 

1. 코테

코테 공부 꾸준히하기(매일 두문제 푸는 거)

 

2. 프로젝트(포트폴리오)

캠퍼스픽이나 에타에서 프로젝트 구해서 진행하기

 

3. 면접(스터디는 프로젝트,코테 패턴이 잡히면 슬슬 시작하기, 5월 초에서 중순이 될 것 같음)

CS면접을 위한 스터디 들어가거나, 만들어서 운영하기 

 

4.  자소서(그냥 그때그때)

자소서는 회사 공고 뜬 후 계속 작성해보기 

 

 

'Dev Story' 카테고리의 다른 글

2023 상반기 회고  (4) 2023.07.30

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

 

+ Recent posts