[프론트엔드 면접 복기] 이번에는 조금 덜 떨린 면접 후기...

김보나·2022년 10월 4일
0

look back

목록 보기
2/3
post-thumbnail

오늘 대답 못한 질문들만 정리해보려한다.

호이스팅

> 저번 면접에서 대답 못한 이벤트 루프만 달달 외우느냐고 놓친 호이스팅....^^...
> 분명히 알고 있는데,용어와 개념이 아직 확확 떠오르지 않는거 보면 공부가 부족한것 같다 ㅠㅠ 반성...
  • 자바스크립트 엔진지 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미함.
  • 코드 실행 전 변수와 함수선언이 해당 스코프의 최상단으로 끌어 올려지는 것 같은 현상을 의미함.
  • 변수 선언은 소스코드가 순차적으로 실행되는 런타임 이전에 먼저 실행되지만 변수 초기화는 소스코드가 순차적으로 실행되는 시점인 런타임에 실행됨.
  • var, let, const, function,function*(객체반환), class 키워드를 사용해서 선언하는 모든 식별자는 호이스팅 됨.
  • 여기서 var는 undefined로 초기화되지만 let과 const는 초기화되지 않음.

해시테이블에서 해시 충돌이 났을 때 해결 법

> 사실 이건 정말 1도 몰랐다.
> 그래서 여기까지는 공부를 못했다고 솔직하게 답변함...ㅎ..^_ㅠ
  • 해시테이블은 삽입,삭제,검색 모두 O(1)을 가지고 있는 자료구조이다.
  1. Chaning
  • 중복된 해시 값이 있는 경우 해당 슬롯을 연결리스트로 저장하는 방법이다.
  • 이 경우, 최악의 경우 수행시간이 O(n)이 된다. 따라서 트리로 구성해서 시간복잡도를 더 줄일 수 있다.
  1. Open Addressing
  • 충돌 발생 시 해시함수로 얻은 주소가 아닌 다른 주소 공간에 데이터를 저장하는 방법이다.
  • 오픈 어드레싱은 충돌을 피하기 위한 다른 방법으로 Key를 해시테이블에 직접 저장한다.
  • 포인터를 사용하지 않아도 되어 구현이 간편하며 검색도 미약하게나마 빨라진다.
  • 선형프로빙, 이차식 프로빙, 이중해시 등의 방법이 있다.

간단한 js quiz

let a = ['1',2,3,4];
let b = [1,2,3,4];
let c = [1,2,3,4];

console.log(a===b);

a[0]=b[0]
console.log(a===b);

console.log(b===c);

b=c;
console.log(b===c);

  1. 배열안에 어떤 요소가 들어있든 상관 없이 할당된 메모리 값이 다르기 때문에 false가 나온다.

  2. 요소 하나만 같은 값을 참조하기 때문에 false가 나온다.

  3. 다른 메모리 주소를 가르키고 있기 때문에 false가 나온다.

  4. c배열을 b에 재할당 했으므로 같은 주소를 가르키기 때문에 true가 나온다.


이번 면접은 그래도 저번보다는 덜 떨었고, 대답도 침착하게 했다. 대답 못한것들이 너무 너무 아쉬웠지만 그래도 잘......하고 나왔다고 생각했는데 합격 전화를 받아서 기분이 좋았다!!! 2차 면접도 잘봐야딩!!! 얏호 >3<


참고

https://ryu-e.tistory.com/87
https://water-orangutan-97f.notion.site/62a9eb27038d45ae8708f887f46ad165

profile
우주최강 개발자가 될 때까지😈

0개의 댓글