도리안의 개발 잡설 #249 - 개발자를 위한 면접 자료 찾아보기 (2)

in zzan3 years ago

개발자를 위한 면접 자료. 이번에는 자료 구조에 관해서이다. 자료 구조에서 배운 내용들은 요즘에는 직접 구현해서 쓰는 경우는 흔치 않다. 대신 요즘 언어들이 지원하는 자료구조들을 활용할 수 있으며, 이들의 개념을 알고 있다면 어떤 것을 사용하는 것이 더 좋을지 결정할 수 있다. 자료구조를 잘못 선택하면 프로그램이 매우 느리거나 메모리를 쓸데 없이 많이 잡아먹는 문제가 생길 수 있다. 최적화라는 측면에서 자료구조는 알아야 하는 것이 맞다. 그래서 면접에서도 이에 대해 질문을 할 수 있다. 어떤 질문들을 면접관이 할 수 있는지 리스트를 보고 대비하는 것도 나쁘지 않다.

(영상을 보고 일일이 타이핑하느라 시간이 걸렸다. 시간과 공을 들인만큼 열심히 해야지.)

자료구조 일반

  • 자료구조 중에 생각나는 것 있으면 몇 가지만 얘기해 보세요.
  • 자료구조를 선택하는 기준이 있나요? 속도라던지, 메모리라던지, 데이터베이스에서 데이터를 가져오거나 입력받은 데이터를 저장할 때 어떤 자료구조를 사용하는지 기준이 있는지?

List, Set, Map

  • List, Set, Map의 차이는 무엇인가요?
  • List, Set, Map은 어떤 인터페이스를 구현하나요?
  • foreach를 사용할 수 있는 자료구조는 어떤 인터페이스를 상속받고 있나요?
  • foreach를 사용하면 다음 데이터를 얻기 위해서 내부적으로 호출되는 메소드가 있는데 혹시 아시나요?
  • Iterator와 iterable의 차이는 무엇인가요?
  • Iterator에서 구현해야 하는 메소드는 어떤 것들이 있을까요?
  • 배열은 size가 변경될 수 있나요?
  • 만약에 size가 10인 배열에 20개를 넣거나 Size를 5로 줄이려면 어떻게 하면 되나요?
  • Size가 변경될 경우에는 어떠한 자료구조를 사용하는 것이 좋을까요?
  • 동적(가변) 자료구조 중에 아는 것이 있으면 얘기해 주세요.
  • Generic 타입과 None Generic 타입의 자료구조의 차이를 설명할 수 있나요?
  • Generic 타입의 자료구조는 어떤 것들이 있나요?
  • Generic 타입의 자료구조의 장점은 무엇인가요?
  • object형을 저장하면 안 되나요?
  • ArrayList와 LinkedList의 차이를 설명할 수 있을까요?
  • 데이터를 순차적으로 검색할 때 가장 적합한 것은 어느 것인가요?
  • 데이터를 빈번하게 추가, 삭제할 때 가장 적합한 것은 어느 것인가요? 왜 그렇게 생각하시죠?
  • ArrayList, List에서 중간에 데이터를 삭제하면 내부적으로 어떻게 동작하는지 아시나요?
  • ArrayList, List 중에 검색 속도는 어떤 것이 더 빠를까요?
  • List에서 검색이 제일 느린 케이스는 어떤 것인가요?
  • LinkedList는 이전 Node, 이후 Node의 정보를 어떻게 알아요?
  • LinkedList에서 중간에 데이터를 삽입하면 내부적으로는 어떻게 동작할까요?
  • List와 Set의 차이는 무엇인가요?
  • 중복을 허용하지 않는다면 내부적으로 동일하다는 것을 어떻게 확인할까요?
  • 같다라는 기준을 바꿀 수도 있나요?
  • Map은 다른 자료구조와 무엇이 다른가요?
  • Map을 사용해야 하는 경우의 예를 설명해 주세요.
  • 알고 있는 Map은 어떤 것들이 있나요?

Hash

  • HashTable과 HashMap은 무엇이 다른가요?
  • Hashing이란 무엇인가요?
  • Hash 값은 중복될 수 있는데, Hash의 충돌을 피할 수 있는 방법은 무엇인가요?
  • Hashing을 하면 무엇이 좋은가요?
  • 왜 Hashing을 해야 하나요?

Queue, Stack

  • Queue와 Stack의 차이를 설명해 주세요.
  • Queue와 Stack을 사용하는 예를 하나씩 설명해 주세요.
  • Queue와 Stack은 내부적으로 어떤 자료구조를 사용하는지 알고 있나요?
  • Queue와 Stack을 직접 구현한다면, 어떤 자료구조를 사용하는 것이 좋을까요? 이유는 무엇일까요?
  • 만약에 인스턴스 메시지를 등록된 순서대로 발송한다고 하면, 어떤 자료구조를 이용할까요?
  • (위 질문에 이어) 배열이나 List를 사용하면 안 되나요? 어떤 차이가 있나요?
  • Queue 선입선출로 메시지 발송이 되고 있는데, 긴급발송건이나 예약건이 있으면 먼저 보내줘야 하는데 그럼 Queue에서 가능 할까요?

Tree

  • Tree는 어떤 경우에 사용을 하나요?
  • B-Tree에 대해 설명할 수 있나요? 노드가 어떻게 되어 있어요?
  • 이진 트리는 내부적으로 데이터가 어떻게 저장되나요?
  • Binary Search Tree(이진 검색 트리)에 대해 설명할 수 있나요?
  • 이진 검색 트리는 내부적으로 데이터가 어떻게 저장되나요?
  • 이진 검색 트리에서 검색 속도가 가장 느린 케이스는 데이터가 어떻게 저장되어 있는 경우인가요?

동기화

  • 동기화를 지원하는 자료구조는 어떤 것들이 있나요?
  • 동기화를 지원하는 자료구조는 언제, 왜 필요할까요?
  • 멀티쓰레드 환경에서 동기화를 지원하지 않으면 어떤 문제가 발생할까요?

지난 개발 잡설들

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 56677.48
ETH 2329.02
USDT 1.00
SBD 2.36