Cs 전공면접 질문
학교에서 전공을 하는 학생들이라면 자료구조, 알고리즘, 운영체제 등 어려운 컴퓨터과학(CS)에 대한 공부들을 합니다. 개발자는 개발이나 하면 되지 왜 이런 것들을 배울까 불만이 쌓이기도 합니다.
하지만, 양질의 개발자 채용에 심혈을 기울이는 회사일수록 CS 전공 면접을 중요하게 봅니다. Kakao, Naver, Toss, 당근마켓 등 개발자가 선호하는 회사의 면접 질문에는 CS 전공 질문이 많이 등장합니다. 피상적인 질문을 하는 것이 아니라 깊게 파고들면서 질문을 합니다.
소프트웨어 엔지니어에는 두 가지 유형이 있습니다. 도전적이고 혁신적인 작업을 수행할 만큼 컴퓨터 과학을 잘 이해하는 사람과 몇 가지 고급 도구에 익숙하기 때문에 그럭저럭 살아가는 사람입니다. 둘 다 스스로를 소프트웨어 엔지니어라고 부르며, 둘 다 초기 경력에서 비슷한 급여를 받는 경향이 있습니다. 그러나 유형 1 엔지니어는 가치 있는 상업적 작업이든 획기적인 오픈 소스 프로젝트이든, 기술 리더십이든 고품질의 개인 기여든 관계없이 시간이 지남에 따라 더 만족스럽고 보수가 좋은 작업을 향해 나아갑니다. 유형 1 엔지니어는 기존 방법을 통해서든, 경력 전반에 걸쳐 끊임없이 학습하여 컴퓨터 공학을 깊이 있게 배울 수 있는 방법을 찾습니다. 유형 2 엔지니어는 일반적으로 표면에 머물면서 기본 기반이 아닌 특정 도구와 기술을 배우고 기술 패션의 바람이 바뀔 때만 새로운 기술을 습득합니다. 현재 업계에 진출하는 사람의 수가 급격히 증가하고 있는 반면, CS 졸업생의 수는 상대적으로 정체되어 있습니다. 이러한 유형 2 엔지니어의 과잉 공급으로 인해 고용 기회가 줄어들고 업계에서 더 만족스러운 업무를 수행할 수 없게 됩니다. Type 1 엔지니어가 되기 위해 노력하든 아니면 단순히 더 많은 직업 안정성을 찾고 있든, 컴퓨터 과학을 배우는 것이 유일하고 신뢰할 수 있는 길입니다.
개인적인 경험으로 유형2의 개발자라 하더라도 깊이있는 개발자가 되지못하는 것은 아니라고 생각하지만, 어찌됐든 중요한 것은 채용면접을 담당하는 기업들의 시니어 개발자들은 이런 생각을 가지고 있다는 것입니다.
다행히 CS 전공 면접 질문에는 빈출 유형이 있습니다. 실무와 직결되는 내용과 필히 알아야할 지식이 정해져 있기 때문입니다. 따라서 CS 전공 면접의 파훼법은 간단합니다. 빈출 질문에 정확히(깊게) 대답하자! 컴퓨터 공학과나 소프트웨어학을 전공하면서 배우는 다음과 같은 과목들:
자료구조
알고리즘
운영체제
데이터베이스
네트워크
수업을 열심히 듣고 기본적인 지식들을 쌓아가고 면접에 나오는 빈출 질문을 생각하며 공부하면 학교강의를 들으면서 자연스레 면접준비를 할 수 있을 것입니다(보통은 면접이 얼마 안남아서 부랴부랴 공부하는데 그때는 빈출 순서대로 공부하면 됩니다). 만일 이미 나는 성적은 시원히 날려버렸는데? 하는 사람도 괜찮습니다. 면접전에 이 질문들 만이라도 보고 대비해 가시면 됩니다.
빈출 프로젝트 관련 면접 질문
자료구조
Q. Array를 설명하시오.
Q. Dynamic Array를 설명하시오.
Q. Linked List를 설명하시오.
Q. ⭐ Array vs Linked list를 비교 설명하시오.
Q. Queue를 설명하시오.
Q. Stack을 설명하시오.
Q. Stack 두 개를 이용하여 Queue를 구현하시오.
Q. Queue 두 개를 이용하여 Stack을 구현하시오.
Q. ⭐ Queue vs priority queue를 비교 설명하시오.
Q. ⭐⭐BST를 설명하시오.
Q. ⭐⭐ Hash table을 설명하시오.
Q. ⭐⭐⭐⭐ Hash table에서 collision이 발생하면 어떻게 되는지, 해결 방법을 설명하시오.
알고리즘
Q. Insertion sort코드를 작성하고 설명하시오.
Q. Selection sort 코드를 작성하고 설명하시오.
Q. Bubble sort 코드를 작성하고 설명하시오.
Q. Quick sort 코드를 작성하고 설명하시오.
Q. Merge sort 코드를 작성하고 설명하시오.
Q. Quick sort vs merge sort비교 설명하시오.
Q. ⭐⭐ ⭐ 가장 빠른 정렬알고리즘을 설명하시오.
Q. n개의 Hanoi 탑을 1번 막대에서 3번 막대로 모두 옮기는 알고리즘을 구현하시오.
Q. Fibonacci 수열의 n번 째 값을 구하는 알고리즘을 구현하시오.
Q. ⭐⭐ binary search 알고리즘을 화이트보드에 작성하면서 설명하시오.
운영체제
Q. process를 설명하시오.
Q. ⭐⭐⭐⭐ Multi process를 설명하시오..
Q. ⭐⭐ Multi thread를 설명하시오.
Q. ⭐⭐ multi process와 multi thread를 비교 설명하시오.
Q. ⭐⭐ multi process환경에서 process간에 데이터를 주고받는 방식을 설명하시오.
Q. ⭐ Multi process/thread 환경에서 동기화 문제의 해결방안을 설명하시오.
Q. 교착상태(Deadlock)를 설명하시오.
Q. paging을 설명하시오.
Q. segmentation을 설명하시오.
Q. ⭐ 가상 메모리를 설명하시오.
데이터베이스
Q. Primary key를 설명하시오.
Q. 관계형 데이터베이스의 N:M 관계를 설명하시오.
Q. left outer join, inner join 차이를 설명하시오.
Q. ⭐ RDB - NoSQL을 비교 설명하시오.
Q. ⭐⭐ Transaction을 설명하시오.
Q. ⭐ DeadLock을 설명하시오.
Q. Index의 필요성을 설명하시오.
Q. ⭐⭐⭐⭐ index를 어느 column에 사용하는 것이 좋을지 설명하시오.
Q. ⭐데이터를 검색을 할 때 hash table의 시간복잡도는 O(1)이고, b+tree는 O(logn)으로 더 느리다. 왜 index는 hash table이 아니라 b+tree로 구현되는지 설명하시오.
네트워크
Q. OSI 7계층과 TCP/IP 4계층을 비교 설명하시오.
Q. ⭐ TCP vs UDP를 비교 설명하시오.
Q. 3-way handshake는 무엇이고 각 과정은 어떻게 되는지 설명하시오.
Q. HTTP를 설명하시오.
Q. ⭐⭐ HTTP resquest method 중 GET vs POST를 비교 설명하시오.
Q. HTTP status code를 설명하시오.
Q. ⭐⭐ www.google.com을 주소창에 입력 시, 화면이 나오기까지의 과정을 네트워크 관점으로 설명하시오.
Q. ⭐쿠키와 세션의 차이점을 설명하시오.
Q. 쿠키와 세션을 이용한 로그인 방식을 화이트보드에 설명하시오.
** 성균관대 선배 www.nossi.dev의 사이트를 참고함
-edited by 조준형