-
-
면접을 위한 CS 전공지식 노트 - 디자인 패턴, 운영체제, 데이터베이스, 자료 구조, 네트워크, 개발자 면접
주홍철 지음 / 길벗 / 2022년 4월
평점 :
《면접을 위한 CS 전공지식 노트》는 탄탄한 CS (Computer Science) 전공지식과 함께 면접의 기술을 알려주는 책이에요.
이 책은 개발자라면 꼭 알아야 할 내용뿐 아니라 비전공자들에게도 필요한 컴퓨터 공학의 전반을 다루고 있어요. 여기에서 핵심은 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조로 이루어져 있는 CS 전공지식을 체계적으로 학습하는 동시에 면접을 위한 예상 질문까지 준비할 수 있다는 점이에요. 전공자라면 면접 전에 효율적인 대비책이 될 것이고, 비전공자나 초보자에게는 배경지식을 쌓을 수 있는 기본서로서 유용할 것 같아요. 저자는 IT 대기업 면접을 준비하면서 "탄탄한 CS 전공지식이 필요하다." (6p)라는 말을 듣고 수많은 전공 서적과 강의들을 보면서 어려움을 겪었기 때문에 그러한 문제점을 해결하기 위해 이 책을 집필했다고 해요. AI 핀테크 스타트업, 어비스의 리드 개발자이자 설립자인 저자는 이전에는 네이버의 로그 플랫폼에서 일했고, 대한민국 공항, 공군에서 쓰는 실시간 모니터링 시스템을 만든 실력자라고 하네요. IT 분야 개발자로서 취업하고자 준비하는 사람들이라면 이 한 권의 책이 '합격 노트'가 될 수 있을 것 같아요.
CS 전공지식에 관한 이론뿐만이 아니라 실무적인 내용도 포함되어 있고, 무엇보다도 저자의 면접 노하우가 담겨 있다는 점이 가장 큰 장점인 것 같아요. 아무리 프로그래밍을 잘해도 포트폴리오를 잘못 작성하고 면접을 제대로 보지 못하면 원하는 회사에 탈락할 수 있기 때문에 철저한 준비가 필요해요. 저자만의 포트폴리오 작성 노하우는 자신의 객관화된 강점을 보여주는 것인데 그 자세한 내용은 책에 잘 나와 있어요. 면접에서는 어떤 질문에도 잘 대답할 수 있도록 깊게 공부하는 것이 중요해요. 몇 가지 예시 질문과 답변이 정리되어 있어서 참고할 수 있어요. 면접에서 일단 대답한 내용은 바꾸지 않아야 해요. 답변하기 애매한 경우에는 차라리 말하지 않는 것이 낫다는 거죠. 설사 모르는 것이 나와도 모른다고 바로 대답할 것이 아니라 어느 정도 고민하고 대답할 줄 아는 침착함이 필요해요. 압박 면접은 무조건 버텨내야 합격할 수 있다네요. 면접 준비는 체크리스트를 만들어 준비해야 자신의 부족한 점을 보완할 수 있어요. 특히 발음이나 목소리톤, 말하는 속도를 연습하고, 인성 면접 질문을 비롯한 여러 가지 질문에 관해 본인의 답변을 준비해둔다면 자신감까지 장착할 수 있을 것 같아요. 빠르게 한 권으로 끝내는 개발자 면접 필독서인 것 같아요.
Q. 옵저버 패턴을 어떻게 구현하나요?
A. 여러가지 방법이 있지만 프록시 객체를 써서 하곤 합니다. 프록시 객체를 통해 객체의 속성이나 메서드 변화 등을 감지하고 이를 미리 설정해 놓은 옵저버들에게 전달하는 방법으로 구현합니다. (65p)
Q. 메모리 계층에 대해 설명해보세요.
A. 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있습니다. 레지스터는 CPU 안에 있는 작은 메모리, 휘발서, 속도 가장 빠름, 기억 용량이 가장 낮습니다. 캐시로는 L1, L2 캐시를 지칭하며 휘발성, 속도 빠름, 기억 용량이 낮습니다. 참고로 L3 캐시도 있습니다. 주기억장치로는 RAM 을 가리킵니다. 휘발성, 속도 보통, 기억 용량이 보통입니다. 보조기억장치로는 HDD, SDD 를 일컬으며 휘발성, 속도 낮음, 기억 용량이 높습니다. (182p)
Q. 데이터베이스는 무엇인가요?
A. 데이터베이스 (DB, DataBase)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음입니다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS (DataBase Management System)라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS 마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있습니다. 또한 데이터베이스는 실시간 접근과 동시 공유가 가능합니다. (229p)
Q. MongoDB 는 ObjectID 라는 기본키가 주어지는 것이 특징이죠.
그렇다면 이 아이디는 몇 바이트로 이루어져 있고, 어떻게 구성되어 있나요?
A. 12바이트의 유니크한 아이디이며 4바이트의 타임 값, 5바이트의 랜덤 값, 3바이트의 랜덤 값으로부터 증가되는 카운트 값으로 구성되어 있습니다. (272p)
