20210916 TIL

Breadman·2021년 9월 18일
0

TIL

목록 보기
5/11
post-thumbnail

짧은 면접 후기

질문

  1. javascript에서 싱글스레드에 대해 설명
  2. 동기, 비동기란 무엇이며 차이는?
  3. array, set, map 차이

문제

  1. parameter로 전달한 시간만큼 반복문을 돌다가 특정 문장을 출력하는 함수가 있다. 해당 함수를 setTimeout으로 실행하면 어떤 문장들이 출력되는지, 그리고 완수하는데 걸리는 시간이 얼마나 되는지가 문제였다.
  2. set과 array에 들어있는 문자열 리스트가 동일할 때, 각 요소 간에 차이가 있는지를 물어보는 문제였다.
    • (+ set의 has와 array의 includes의 시간복잡도가 각각 어떻게 되는지?)

문제에 대한 해설

  1. setTimeout는 2번째 param으로 대기시간이 들어가는데, 대기시간만큼 정확히 동작하지 않는다. 하지만 이번 문제엔 대기시간이 null이었기 때문에, 관련 없는 정보였다. 어줍잖은 지식 + 긴장으로 제대로 해결하지 못했다.
  2. set과 array의 큰 차이점이라면, set은 중복을 허용하지 않는 집합이라는 점이다. 따라서 구현되는 방식도 다른데, array의 경우 요소의 타입이 동일한지 아닌지에 따라 연속된 memory buffer나 linked list로 구현된다. set은 중복을 허용하지 않기 때문에, 요소와 요소의 memory address가 1:1로 매칭될 수 있다. 따라서 효율적인 hash table을 이용해 구현되어있어, 추가∙삭제∙검색에서 O(1)만큼의 시간복잡도를 가진다. 반면 array는 검색의 경우 처음부터 순회해야하므로 O(n)만큼의 시간복잡도를 갖는다.

후기

문제의 경우 굉장히 간단했는데, 긴장한 탓에 실수를 했다. 어쩌면 실력이 그 정도인 건지도 모르겠다..

profile
빵돌입니다. 빵 좋아합니다.

0개의 댓글