하루후
413
2020-01-28 20:07:05 작성 2020-01-28 20:15:49 수정됨
12
5752

신입 면접시 자주 나왔던 질문 (자료구조, 알고리즘)


작년 취업준비를 하면서 sw직군으로 대기업, IT기업 등에서 면접을 진행했습니다.


면접 질문들이야 각양각색이긴 하지만, 자료구조나 알고리즘 부분은 지금 생각해보면 기업마다 약간씩 차이는 있었으나 확실히 공부해가야 할 것들이 있는 것 같아요.

그 중에서 빈도수가 높았거나 중요했다고 생각하는 부분에 대해 간단하게 정리해볼게요.


1. Sort

정렬은 거의 대부분의 기업에서 나오고 있습니다. 종류도 많은데요. 특히 퀵소트는 꼭 구현해보고 가세요.

화이트보드에 처음부터 직접 작성하기도 하고, 종이를 주고 빈칸 채워넣는 방식으로 간단히 진행하는 곳도 있었습니다. (힘든 손코딩말고 노트북 주고 라이브코딩 하게 해주는 곳은 매력이 증가합니다) 

저 같은 경우는 Sort가 면접 질문으로 나오면 100% 퀵소트였습니다.

- 수도코드 구현

- 작동 원리 말로 설명

- 최선/최악 시간복잡도 (가끔 공간복잡도도 물어봅니다)

- 최악의 경우를 개선시킬 방법

(모든 정렬 알고리즘을 알아가면 좋기는 하지만, 시간이 없으시거나 귀찮으시면 퀵, 머지, 버블정도만 익혀가세요)


2. Recursion

재귀를 이해하고 있는지, 특히 IT기업들에서 많이 나왔던 것 같아요.

가장 대표적으로 '하노이 탑'이나 '피보나치', '최소공배수' 구현이 있습니다.


3. Stack & Queue

가장 베이스로 많이 물어보는 주제입니다.

해당 자료구조의 이론에 대해 간단한 질문과 함께 구현(삽입,삭제 함수)까지 하는 곳도 많습니다.

(스택 같은 경우 push, pop 큐 같은 경우 enqueue, dequeue)

대부분 배열을 사용해서 구현하겠죠. 추가로 링크드리스트를 활용해 삽입/삭제를 구현시키기도 합니다.

+ 계산기 구현을 시키기도 했습니다. 곱셈,나눗셈은 먼저 처리, 추가로 응용해서 괄호까지 적용하라는데 은근 땀 삐질납니다.


4. Heap

최대 힙, 최소 힙에 대한 상황(트리 그려져있음)이 주어지고, 삽입과 삭제 시 어떻게 진행되는 지 물어봅니다. 수도 코드로 구현을 시키는 경우도 있구요.

우선순위를 정하고, 이에 부합하는 것부터 빼야하기 때문에 트리의 부모-자식에 대한 swap이 일어나는 과정을 잘 설명할 줄 알면 될 것 같습니다.

(우선순위 큐 구현하라고 하면 Heap 짜면 됩니다)


워낙 방대하겠지만, 위 4가지는 많이들 물어보는거라 한번씩 정리하고 가면 많은 도움이 되실 것 같습니다.

자료구조, 알고리즘은 아니지만 추가로 많이 물어보는 것들은..


※ OOP (+디자인 패턴)

객체 지향에 대해 확실히 알고 있는 지 거의 대부분 필수로 나오는 질문입니다.

특징에 해당하는 캡슐화, 다형성, 추상화, 상속에 대해 세부적으로 알고가면 도움이 많이 되구요. 이 안에서는 질문할 수 있는게 너무 다양해서 많이들 내는 것 같아요.

(오버라이딩, 오버로딩 차이 등등..)

그리고 '디자인 패턴'에 대한 질문이 상당히 많았습니다. 제대로 학습을 못해가서 답변이 부족했는데, '신입들은 아직 잘 모르긴 하겠죠'라면서 넘어가기도 했어요. 잘 알아두면 확실히 플러스가 많이 될 부분이라고 생각이 들었습니다.


※ REST API

웹관련 직무에서 많이 물어보긴 합니다. 기본적인 메소드들의 역할이나 특징같은 것들 혹은 본인 프로젝트에서 적용시킨 예를 들면서 설명하면 될 것 같아요.


이밖에도 운영체제(프로세스와 스레드 차이.. 데드락.. 스케줄링.. ), 네트워크(TCP와 UDP.. 3 way handshake.. 대칭키..), 데이터베이스(트랜잭션.. Isolation Level.. 정규화..)


대부분 해당 회사에서 본인이 지원한 직무의 필수역량에 해당하는 기술 스택에 관련된 질문이 주를 이루지만, 자료구조나 알고리즘 관련된 문제들이 나온다는 후기나 사전 공지가 있는 기업들이 있다면 가장 먼저 공부해야할 것이라고 생각해서 적어봤습니다.


쓰고보니 너무 당연한 것들이네요.. 부족하지만 읽어주셔서 감사합니다.



25
61
  • 댓글 12

  • 거신
    641
    2020-01-28 20:37:40

    마침 모레 기술면접을 보러 가는데 도움이 많이 될거 같습니다.

    면접 경험이 거의 없다보니 진짜 뭘 준비하고 이 짧은 시간에 뭘 해놔야하는지 머리가 새하얘지네요.

    0
  • Frudy
    4k
    2020-01-28 20:47:37

    감사합니다. 참고하겠습니다.

    0
  • 39Song
    668
    2020-01-28 20:48:10

    귀한 경험 공유 감사합니다.

    0
  • 옴마에마
    238
    2020-01-28 21:00:06

    감사합니다! 꼭 봐야겟네요

    0
  • 미우새
    132
    2020-01-28 22:10:15

    감사합니다!


    0
  • 한량개발자
    1k
    2020-01-29 10:15:04

    좋은글이네요!


    라떼는 말이여

    1~100까지 C언어 짜고 정답은? (손코딩)

    0
  • 김모씨
    3k
    2020-01-29 11:48:28

    적어도 중견이상급 가시는듯 부럽네도 라떼는 손코딩 물어보는 그런거였는데.

    1
  • amebee
    2
    2020-01-29 13:38:45

    감사합니다..!!

    0
  • 초보개발자:D
    101
    2020-01-29 17:17:12

    좋은 정보 감사합니다~

    0
  • 아롱범
    38
    2020-01-31 11:18:55
    좋은 정보 감사합니다!
    0
  • j3rry
    13
    2020-02-04 13:28:21

    정보 감사합니다 :D

    0
  • CHIT
    111
    2020-02-04 15:16:23

    정보 감사합니다 !


    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.