에스텔 저
박응용 저
박상길 저 /정진호 역
조훈,심근우,문성주 저
임창희 저
개발자 면접을 위한 CS 전공지식, 어떻게 준비해야 할까?
2022년 07월 19일
[면접을 위한 CS 전공지식 노트] CS 전공지식 습득과 면접 대비하기
2022년 05월 19일
제가 취업할때 쯤에는 이런 컨셉의 책이 없었는데 취준생들한테 꼭 필요할 것 같은 책인거 같아요.
다만 전반적인 CS 지식을 모두 정리하려다 보니 다른분들이 말하는 것처럼 내용이 자세하지 않은건 어쩔수 없는부분 같구요
개인적으로 공부하면서 내용 보충하며 단권화하면 최고의 면접 준비서적이 될 것 같습니다.
아무튼 저는 굉장히 좋았습니다. 주변에 취준하는 친구들한테도 선물하고 싶은 책 ^♡^
면접을 위한 CS 전공지식 노트
기술면접을 준비하는 사람들에게 매우 추천하는 책이다.
특히 신입 기술면접을 준비하는 사람들 중에 기본 개념을 정리해야겠다는 사람이 있다면
이 책부터 보기를 추천한다.
우연히 서점 가서 이 책을 보고
와 이 책이 내가 면접을 준비할 때도 있었으면 얼마나 좋았을까! 하는 생각이 들었다.
주요 주제를 잘 다루고 있고, 무엇보다 그림과 예시, 코드도 있어서 좋다.
일부 인터넷에 떠돌아다니는 기술 면접 노트들은, 예시가 빠져 있거나 그림이 빠져 있어서
개념 그 자체만을 설명하고 있는 경우가 많은데
초보자가 보기에 어려운 경우가 많다.
그런데 이 책은 그림과 예시를 들어가며 개념을 설명하고 있어서 이해하기 쉽다.
-이 책에서 다루는 주제
디자인패턴, 네트워크, 운영체제, 데이터베이스, 자료구조
모두 개발자 1차 기술면접에서 물어보는 주제들이다.
굳이 우선순위를 두자면, 자료구조, 데이터베이스, 네트워크, 운영체제는 꼭 보고
디자인패턴은 시간 남으면 보면 될 것 같다.
예상질문은 좀 아쉬운데,
각 챕터의 예상질문이 적다는 점과 '운영체제의 역할은 무엇인가?' 등 빈출이 적은 질문이 적혀 있다는 점이 아쉬웠다.
그래서 이 책과 관련해 예상질문 몇 개를 적어본다.
컴퓨터공학 수업의 일반적인 커리큘럼은 자료구조 -> 데이터베이스 -> 운영체제 -> 네트워크 -> 디자인패턴을 따르지만
이 순을 반대로 해서 책을 기술한 것을 보면
비장하게 면접을 준비하겠다고 책을 꺼내놓고
결국 자료구조만 보다가 면접장에 가는 독자들을 위한 것 같다.
책의 순서는 위와 같지만 예상질문은 역순으로 해서 적어본다.
크게 기술면접에서 물어보는 건,
-00 개념은 무엇인가?
-00개념을 왜 쓰는지? 언제 쓰는지?
-00개념과 **개념의 차이, 장단점 비교
-00개념을 써본 적 있는지?
이 정도 물어보는 것 같다!
AVL 트리(253쪽), 레드 블랙 트리(254쪽) 같은 건 물어보지 않는다.
물론 질문을 하다가 언급하면 물어볼 수 있겠지만
면접자가 먼저 이 내용을 떠올려서 물어봐야겠다고 생각하는 경우는 거의 없는 것 같다.
하지만 이 책에서 여기까지 다루고 있으니 자료구조 수업 전체를 책에 담으려고 얼마나 저자가 노력했는지가 보인다.
중요한 건,
-해시 테이블이란 무엇인가?
-그래프와 트리의 차이점은?
-이진탐색트리의 시간 복잡도
-스택과 큐의 차이
이 4가지는 이 책을 보고 나면, 꼭 답할 수 있어야 한다.
자주 물어보는 주제다.
그리고 파생 질문으로,
-코딩테스트를 봤을 경우 본인 답안의 시간복잡도
-시간복잡도를 더 줄일 수 있는 방법
이런 질문을 더 해볼 수 있겠고,
좀더 나아가면,
-00000인 경우에는 어떤 자료구조를 써야할까?
이런 질문을 해볼 수도 있다.
-1:1관계, 1:N관계, N:M 관계 설명
-Primary Key, Foreign Key + candidate key, alternate key super key
-정규화 과정
-트랜잭션
-원자성, 일관성, 격리성, 지속성, 무결성 설명
-격리수준과 격리수준에 따라 발생하는 현상 (phantom read, non-repeatable read, dirty read 등)
-sql vs nosql
-인덱스가 필요한 이유, 인덱스 만드는 방법
-inner join, left join, outer join
이 정도 질문은 답할 수 있어야겠다.
-프로세스 vs 스레드
-멀티프로세싱 vs 멀티스레딩
-프로세스의 상태 (create, read, running, blocked, terminated 등)
-contest switching
-뮤텍스 vs 세마포어
-deadlock 원인, 해결방법
-CPU 스케줄링 알고리즘 (FCFS, SJF, 우선순위, 라운드로빈, SRF, 다단계 큐)
-interrupt
-메모리 계층 (레지스터, 캐시, 메모리, 저장장치)
-cache hit, cache miss, cache mapping, swapping, page fault, thrashing 등)
-paging vs segmentation
-페이지 교체 알고리즘 (FIFO, LRU, NUR, LFU)
-컴파일 과정
-OSI 7계층
-가상회선 패킷 교환 방식 vs 데이터그램 패킷 교환 방식
-3-way handshake, 4-way handshake
-L4 스위치 vs L7 스위치
-로드 밸런싱
-L3 스위치(라우터) vs L2 스위치
-IP
-HTTP (SSL은 네트워크 관련 직무일 경우)
-www.naver.com을 주소창에 입력하면 어떤 현상이 일어나는지?
-싱글톤 패턴 개념, 장단점
-의존성 주입 원칙, 장단점
-팩토리 패턴(factory pattern), 개념, 장단점
-전략 패턴(strategy pattern)
-옵저버 패턴(observer pattern)
-프록시 패턴
-이터레이터 패턴
-노출모듈 패턴
-MVC 패턴 (Model, View, Controller) 개념, 장단점
-MVP 패턴
-MVM 패턴
-절자치향 vs 객체지향 프로그래밍
-객체지향 프로그래밍 특징 (추상화, 캡슐화, 상속성, 다형성)
-오버로딩 vs 오버라이딩
개념이 뭐고 언제 쓰는지, 왜 쓰는지, 장단점 중심으로 보자.
정말 기술면접을 준비하는 사람들에게 도움이 많이 되는 책이다.
개념을 모르면 사실 앞단에서 대답이 막혀버리고
그러면 꼬리질문도 나올 수가 없다.
그래서 깊이 알고 있는 사람이든, 아닌 사람이든
어떤 개념을 명료하게 면접관이 원하는 방식으로 대답하는 게 중요한데
이 책은 정말 기술면접을 준비하는 사람들을 위한 책인 것 같다.
개발자라는 직업은 특히 이직률이 높고 포트폴리오를 꾸준히 업데이트해야 하는 직업이다.
신입이든 경력이든 기술면접이 면접의 결과를 좌우할 만큼 중요한 비중을 차지하는데, 기술면접의 필수로 대비해야 할 지식이 CS(Computer Science) 지식이다. 현업자의 입장에서 오히려 신입 때는 주요 CS지식에 대해서 한참 공부할 시기라 기억력을 가지고 있었지만 시간이 지나면 잊혀지게 마련이다. 그렇기 때문에 아무리 경력자라고 해도 이직을 목표하고 있다면 면접을 위한 CS지식을 시간을 내어 공부해야만 한다.
CS지식은 단순히 한 과목이 아니라 매우 방대한 양의 전문지식을 요하기 때문에 전체 분량을 모두 마스터하는 것은 거의 불가능에 가까운 일이다. 때문에 중요한 과목을 추리고, 핵심적인 내용을 깊이 이해하고 있는 것이 중요하다. 이 책에서 다루는 과목은 다음과 같다.
1장. 디자인패턴과 프로그래밍 패러다임
2장. 네트워크
3장. 운영체제
4장. 데이터베이스
5장. 자료구조
6장. 포트폴리오와 면접
책의 전반적인 내용은 기본적으로 알고 있어야 하는 CS지식을 꼽아 핵심을 알려준다. 특히 언어별 소스코드를 제공하고, 프로세스를 이미지화시켜 설명하는 점에서 이해에 많은 도움이 되었다.
면접을 위한 CS전공지식 노트 일부 발췌
하지만 현업자인 나에게도 아직까지 생소하거나 심지어 처음 들어보는 개념들도 꽤나 많이 나온다. 조금은 기가 죽기도 했지만 개발자라고 해서 모든 것을 아는 만능 로봇이 아니기 때문에 적어도 내가 기존에 알고 있거나 한 번이라도 써본 것들에 대해서 만큼은 제대로 짚고 가기로 했다.
나는 당장 면접을 준비하는 입장은 아니라 나만의 루틴을 정했다. 면접이라고 해도 모든 것을 100% 완벽하게 준비한다는 것은 불가능하기 때문에 전반적으로 얕게 아는 것보다는 모르는 부분이 있을지라도, 이 부분에서 만큼은 깊이 있게 이해하고 있음을 보여주는 게 좋다고 생각한다.
1. 책 전체를 훑어보면서 내가 알고 있는 개념들을 체크한다.
2. 체크한 부분 위주로 아는 부분은 복습하고 몰랐던 부분은 학습한다.
3. 책에서 가볍게 다룬 부분은 따로 구글링을 병행하면 이해도를 높일 수 있다.
4. 알고 있던 개념을 확실히 이해한 후에 체크되지 않은 부분을 학습한다.
5. 기술 블로그가 있다면 학습한 내용을 포스팅하며 기록한다.
6. 실제 면접 준비 전에 포스팅했던 내용을 복기하면서 준비한다.
다음과 같은 방법으로 책에 접근하면 부담감도 덜하고, ‘암기'가 아닌 ‘이해’가 되면서 기억에 오래 남았다. 어느 정도 여유롭게 시간을 두고 평소에 꾸준히 준비하는 것을 추천한다.
책의 후반부에는 면접/포트폴리오에 대해서 별도로 다루고 있다. 저자의 실제 포트폴리오를 참고할 수 있고, 실제 면접에서 나올법한 질문을 던지고 구어체로 답변을 하는 구성으로 면접의 분위기를 간접 경험해볼 수 있었다. 개인적으로 눈으로 읽기만 하기보다는 면접장에 있다고 생각하고 직접 목소리를 내어 설명하듯이 읽어보면 좋다. 처음에는 답변을 가리고 본인의 지식으로 대답해보고, 다음은 책의 정석적인 답변과 비교해보면서 연습하면 면접에 큰 도움이 될 것 같다.
좋았던 점
언어별로 소스코드를 제공하면서 설명을 해준다. 나는 자바 개발자이지만 같은 소스가 다른 언어에서는 어떻게 사용되는지 살펴볼 수 있다.
중간중간 어려울 수 있는 전문용어를 설명해준다.
단위별로 주제를 다루어서 한 단원씩 나누어서 읽기에 용이해서 부담이 덜했다.
필요할 때 펼쳐서 사전처럼 찾아볼 수 있었다.
면접 준비자가 아니더라도 개발자로서 개념 다지고 복습하기에 좋다.
이론뿐만 아니라 포트폴리오 작성법, 실제 면접 상황 시뮬레이션 등을 통해 면접 연습을 할 수 있다.
아쉬웠던 점
아무래도 면접용 CS지식이다 보니 깊이 있게 다루지는 않는다.
실무 또는 프로젝트 경험이 없는 비전공자라면 어렵게 느껴질 수 있는 난이도이다.
개발자 이직 또는 취업을 준비하는 이들에게 도움이 되길 바라며 리뷰를 마무리한다.
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!
감사합니다 첫 개발자 취업을 위하여 구매하였고, 꼭 취업 하겠습니다.!