TIL_2024_01_06

이종현·2024년 1월 6일
0

Today_I_Learned

목록 보기
118/145
post-thumbnail

Today 요약

  1. CS 면접 대비
  2. 자바스크립트 이론 공부

1. What I Learned?

CS 면접대비

Dynamic Array는 어떤 자료구조 인가요?

Array는 size가 정해져있어 size를 초과하는 data를 저장할 수 없습니다. 하지만 Dynamic Array는 size를 초과하는 data를 저장할 시 resize를 통해 유동적으로 size를 조절하여 데이터를 저장할 수 있는 자료구조입니다.

Linked List에 대해서 설명해주세요.

Linked List는 데이터 값과 다음 Node의 주소를 가지고있는 Node라는 구조체가 논리적인 연속성을 가지고 연결되어 있는 자료구조입니다.

Array vs Linked List에 대해 비교해서 설명해주세요.

Array는 메모리의 연속성을 유지하지만 Linked List는 그렇지 않습니다. 다만 다음 Node의 메모리 주소를 연결함으로써 논리적인 연속성을 가지고 있습니다.

조회의 경우 Array는 O(1), Linked List는 O(n)의 시간 복잡도가 걸리고, 삽입 및 삭제의 경우 Array는 O(n), Linked List의 경우 O(1)의 시간 복잡도가 걸립니다.

따라서 조회가 잦고 데이터의 크기가 정해져있다면 Array를 데이터의 크기를 예측하기 힘들고 삽입 및 삭제를 자주하는 상황에는 Linked List를 사용하는 것이 유리합니다.

자바스크립트 이론

프로토타입

프로토타입은 자바스크립트에서 객체 지향을 가능하게 해주는 유용한 개념입니다. 생성자 함수를 통해 인스턴스를 생성하게 되면 해당 생성자 함수는 모두 프로토타입을 가지게 되는데, 이는 생성자 함수로 생성한 인스턴스도 해당 프로토타입에 정의된 내용을 가지고 있습니다. 또한 프로토타입 체인을 통해 상속이 가능하기 때문에 상위 객체의 프로토타입을 하위 객체가 상속 받아 사용할 수 있습니다. 자바스크립트의 경우 모두 Object의 프로토타입을 상속받기 때문에 Object에 정의된 프로토타입 메서드를 사용할 수 있게 되는 것입니다. 따라서 인스턴스에서 모든 메서드를 가지고 있기 보다는 프로토타입 자체에 메서드를 정의해서 인스턴스 생성시 불필요하게 모든 메서드를 생성하는 것보다 필요할 때 프로토타입에 정의되어 있는 메서드를 호출해서 사용하게 되면 메모리 낭비를 줄일 수 있습니다.

profile
데이터리터러시를 중요하게 생각하는 프론트엔드 개발자

0개의 댓글