안녕하세요. 이번 포스팅에서는 개발자로 취업하기 위해 공부해야하는 Computer Science 공부 방법에 대해 정리해보겠습니다. Computer Science는 컴퓨터 공학 전공 지식이라고 볼 수 있는데, 대학교에서 4년간 배우는 지식이다 보니 범위가 매우 많게 느껴질 수 있지만, 중요한 부분부터 차근차근 공부해나가도록 합시다. 처음에 공부하시는 분이라면, 어디서부터 어떻게 공부할지 매우 막막할 수 있는데, 우선 입문하기 좋은 사이트 먼저 추천드리겠습니다.
https://github.com/gyoogle/tech-interview-for-developer
GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖
👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.
github.com
해당 사이트에 들어가보면 Computer Science 과목들이 카테고리별로 잘 정리되어있고, 각각의 항목에 대해 간단히 정리가 되어있습니다. 우선은 해당 사이트를 보면서 전반적인 개요에 대해 이해하고 시작하는 것을 추천드립니다.
Computer Science 스터디
우선 저는 학교 동기든, 같이 취준을 하는 친구든, 모르는 사람이든 4명정도 모아 스터디를 진행하는 것을 추천드립니다. 혼자서 많은양을 공부한다면 시간도 많이들고, 제한적인 정보만 습득할 수 있습니다. 따라서 스터디를 통해 주제를 나누고, 서로 해당 부분에 대해 토의하면, 기억에 남는것도 많고 더 deep 하게 공부하실 수 있을 것입니다. 저는 스터디를 어떻게 진행했는지 공유드리겠습니다.
1. CS 스터디 구하기
저는 처음에 대학 동기 8명과 함께 스터디를 진행했습니다. 하지만 워낙 친했던 사람들이였기 때문에, 체계가 잘 잡히지 않았고, 잡담하는 시간도 많아 집중이 잘 되지 않았습니다. 따라서 차라리 모르는 사람들과 진행하는게 낫다고 판단하여, 캠퍼스픽이라는 곳에서 스터디원을 구했습니다.
캠퍼스픽
대학생 커뮤니티, 동아리, 공모전, 대외활동 등 즐겁고 유익한 정보가 한 곳에!
www.campuspick.com
해당 사이트에서 스터디 - 프로그래밍 카테고리로 들어가면 다양한 스터디를 구할 수 있는데, 직접 구인글을 올려도 되고, 다른 사람의 구인글을 통해 들어가셔도 좋습니다. 저는 직접올렸고 생각보다 많은 사람들이 문의를 해주어서 스터디를 경성하는데 큰 어려움이 없었습니다.
2. CS 스터디 진행
스터디를 결성했다면, 체계적으로 서로에게 도움을 주며 진행하는 것이 중요 할 것입니다. 저희는 1주일에 1번 만나는 것으로 결정했고, 스터디룸 하나를 3시간정도 빌려 진행했습니다. 첫번째로, 위에서 소개해드린 규글 사이트에 컴퓨터 구조, DB, 자료구조, 네트워크, 운영체제, Software Engineering, 알고리즘 총 7개의 항목이 있는데, 1주일에 2개의 항목을 공부하는 것을 목표로 했습니다. 네명 모두 2개의 항목에대해서 공부하되, 개인이 특정 항목을 맡아 더 자세하게 공부를 해와서 발표하는 식으로 진행했습니다. 발표를 하면서 헷갈리거나, 자신이 알고 있는 정보들을 서로 토의하며 더 deep하게 공부할 수 있었습니다. 네명이 공유 파일을 하나 만들어 (저희는 노션에 진행) 각 항목에 대해 자세히 정리를 하였고, 토의를 하며 자료를 강화했습니다. 이렇게 진행하여 3주만에 CS를 한번 훑을 수 있었습니다.
3. 개발자 기술 면접 준비
대부분은 CS 공부를 기술면접 준비를 위해서 할 것입니다. 저희는 따라서 자료 정리를 마친 후 바로 기술면접 준비를 시작했습니다. 자신이 면접에 갈 기업이 있다면, 해당 기업의 질문들을 모았고, 아니면 이곳 저곳 면접 질문 후기들을 모아 한명씩 돌아가며 실전처럼 면접을 진행했습니다. 단 이때, 하나의 질문만 하는 것이 아니라, 그 질문에 계속 꼬리를 물고 깊게 파고 들어가며 진행했고, 저희가 정리했던 자료들에서도 질문을 하며, CS 지식들을 머리에 우겨넣었습니다. 저는 실제로 스터디에서 했던 질문들이, 기업에서 그대로 나오는 경우가 많았고 정말 도움이 많이 됐었다고 생각합니다. 여러분도 단순히 공부만 하지 말고, 이렇게 실전 면접 형식으로 진행해보는 것도 괜찮을 것이라고 생각합니다.
컴퓨터 공학 자격증 준비
컴퓨터 공학과 관련 자격증은 정말정말 많은데 기왕 공부할 거, 자격증도 함께 딴다면 1석 2조의 효과를 누릴 수 있을 것입니다. 저는 정보처리기사와 SQLD를 같이 준비했고, 준비를 하면서도 1석 2조라는 생각에 긍정적인 마인드로 공부를 할 수 있었던 것 같습니다. 앞 포스팅에 해당 자격증들에 대해 써놓은게 있어 공유드리겠습니다.
개발자로 취업하기 - 정보처리기사
개발자로 취업하기위해서는 프로젝트 경험과 학점 같은 것도 중요하지만, 꾸준히 Spec Up을 하는것도 중요합니다. 자소서에 한줄이라도 더 추가해야 취업시장에서 우위를 점할 수 있습니다. 우리
nakco.tistory.com
개발자로 취업하기 - SQLD
안녕하세요. 이번에는 개발자로 취업하기 2편. SQLD 자격증에 대해 알아보겠습니다. SQLD(SQL Developer)는 Database 관련 자격증으로 정처기보다 훨~~씬 따기 쉽습니다. 그리고 정보처리기사와 마찬가지
nakco.tistory.com
이 외에도 다양한 자격증이 있으니, CS 공부도 할 겸 1석 2조의 효과를 누리시길 바랍니다.
자기소개서에 쓴 CS 지식
규글에 나오는 것들을 모두 공부했다면, 기본적인 CS 공부는 한 것이지만, 면접은 대부분 자기소개서 위주로 질문을 하기 때문에, 자신이 적은 내용에 대한 지식 또한 필수적으로 공부를 해야합니다. 예를 들어 내가 java를 사용하여 어떤 프로젝트를 했다고 적었으면 Java 언어에 대한 공부를 진행해야합니다. 자바의 특징은 무엇인지, 상속화, 캡슐화 등등은 무엇이고 언제 쓰는지 등, 직접 써본 경험이 있는지까지 생각하며 공부해야합니다. 저는 첫 면접때 java에 관한 질문에서 이론적인 부분은 잘 대답했는데 써본적이 있냐는 질문에서 턱 막혔습니다. 언제 쓰는지, 써봤는지 정리를 해두시면 좋을 것 같습니다. 또한 삼성 자기소개서에서 시스템프로그래밍 수업에서 어셈블리 언어를 사용해봤다 적었는데, 아주 간단한 어셈블리어 질문에도 대답을 못하여 당황했던 경험이 있습니다. 따라서 자기소개서에 쓴 내용은 꼭!꼭! 공부해놓으시길 바랍니다.
마무리
CS 지식은 그 범위가 광범위하나, 저는 저 규글에 있는 지식 외의 범위에서 질문을 받아본 적은 없습니다. 명심해야할 것은 겉핥기 식으로 공부하시면 안되고 꼭 꼬리의 꼬리를 물고 아주 deep하게 공부를 하셔야합니다. 제가 정말 잘대답했다고 생각했고, 실제로 면접관분들이 서로 마주보며 고개를 끄덕였던 질문이 있습니다.
질문 : 퀵 소트와 머지 소트의 차이점에 대해 설명해주세요.
퀵 소트는 ~~ 이고, 머지 소트는 ~~입니다. 차이점은 퀵소트는 보통 빠르지만, 최악의 상황에선 머지소트보다 더 성능이 안좋고, 추가적인 공간을 할당해야한다는 단점이 있습니다.
까지만 말하면, 잘 대답한 것은 맞으나, CS 준비를 잘 한 사람이라면 누구나 할 만한 대답입니다. 저는 여기에 추가로
머지소트는 안정적이고, 최악의 상황에도 O(nlogn)의 시간복잡도를 갖기 때문에 많은 양의 데이터를 처리할 때는 머지소트가 더 적합합니다. 개발 언어들에 내장된 라이브러리에서도 실제로 머지소트로 되어있는 부분이 많은 것으로 알고 있고, 제가 주로 사용하는 Python 언어에서는 Merge Sort와 Injection Sort를 합친 Tim Sort라는 알고리즘을 사용하는 것으로 알고 있습니다.
이렇게 매우 딥한 부분까지 말씀을 드리니, 정말 만족해하셨고 면접도 합격 할 수 있었습니다. 따라서 여러분들도 질문에 대해서만 답변하는 것이 아니라, 사용 사례, 보완 사례, 등등 더 deep하게 들어가서 말씀드리면 성공적인 면접이 될 수 있을 것입니다.
이번 포스팅은 여기서 마무리하겠습니다. 개발자, 취준생 여러분 항상 응원하겠습니다.
'취업 낙서' 카테고리의 다른 글
개발자로 취업하기 - 면접 스터디 (1) | 2023.06.28 |
---|---|
개발자로 취업하기 - 기술 면접 (0) | 2023.06.27 |
개발자로 취업하기 - 코딩테스트 (심화편) (0) | 2023.06.22 |
개발자로 취업하기 -리눅스 마스터 (0) | 2023.06.22 |
개발자로 취업하기 - 코딩테스트 (기초편) (0) | 2023.06.22 |