Section4 기술 면접 준비
JavaScript
Q: Hoisting과 Temporal Dead Zone이 어떻게 연관되어 있는지 설명하세요.1
A: Hoisting은 변수가 선언될 때에 해당 변수가 스코프의 상단으로 올라가는 것을 뜻합니다. 그러나 해당 변수는 선언만 되고 할당은 실제 선언 시점에 발생을 하는데, 자바스크립트의 let, const등 몇가지의 변수 혹은 구문은 실제로 선언되어 값의 할당이 일어나기 전까지 호이스팅이 되더라도 변수에 접근하지 못하도록 하는 현상이 있는데, 이를 Temporal Dead Zone 이라고 부릅니다.
React
Q: Virtual DOM이 무엇이고, Virtual DOM이 어떤 면에서 좋은가요?1
A: Virtual DOM은 리액트에서 사용하는 가상의 DOM객체입니다. 변경이 필요한 부분만 실제 DOM에 반영하여 업데이트 하므로 전체 UI를 다시 그리지 않아도 되어 속도가 빠르다.
Q: Class Component와 Function Component의 차이점이 무엇인가요?
A: 두개 다 컴포넌트를 만드는 방식인데, Class Component는 클라스를 기반으로 컴포넌트를 만들고, Function Component는 함수로 컴포넌트를 만듭니다. Function Component가 코드의 간결성이 더 좋고, 기존의 문제점들을 react hooks로 해결하여 간편해졌기 때문에 Function Component를 사용하는 것이 권장 됩니다.
Q: React Hook의 사용 규칙에 대해 설명하세요.
A: 리액트 함수의 최상위에서만 호출을 해야합니다. 그 이유는 리액트는 훅을 호출되는 순서대로 저장을 하는데, 조건문이나 반복문 안에서 호출을 하면 순서대로 저장이 안되기 때문입니다. 그리고 리액트 훅은 오직 리액트 함수 내에서만 사용해야 합니다. 왜냐하면 훅 자체가 리액트의 함수컴포넌트 안에서 사용되도록 만들어진 것이기 때문입니다.
자료구조
Q: Stack과 Queue의 차이점은 무엇인가요?
A: Stack은 먼저 들어간 데이터가 가장 나중에 나오는 후입선출 구조이고, Queue는 먼저 들어간 데이터가 가장 먼저 나오는 선입선출 구조입니다.
Q: Tree와 Graph의 차이점은 무엇인가요?
A: 트리는 하나 이상의 데이터에 한개의 경로와 하나의 방향만으로 연결된 그래프의 종류중 하나이고, 그래프는 여러개의 점이 서로 복잡하게 연결된 관계를 표현한 것이다.
Q: 이진 탐색 방법에 대해 설명할 수 있나요?
A: 이진 탐색 방법은 정렬된 배열에서 원하는 값을 찾기 위해 사용하는 탐색 방법입니다. 정렬된 값의 중간 요소를 찾고, 찾고자 하는 값과 비교하여 중간요소의 앞에서 탐색할 것인지,뒤에서 탐색할 것인지를 설정하는 방식을 반복적으로 값을 찾을 때까지 실행하는 방법입니다.
타입스크립트
Q: TypeScript는 정확히 무엇이며 JavaScript와 어떻게 다른가요?
A: TypeScript는 자바스크립트에서 정적타입을 추가한 프로그래밍 언어입니다. 자바스크립트는 동적인 언어로 변수의 타입을 선언하지 않아도 자동으로 유추하는 반면, 타입스크립트는 정적인 언어로 변수의 타입을 선언해주어야 합니다.
Q: TypeScript를 사용할 때 어떤 장단점이 존재하나요?1
A: 타입스크립트를 사용했을 때 정적타입 검사기능을 제공하며, 코드의 가독성과 유지보수성을 높혀줍니다. 그러나 변수마다 일일이 타입을 지정해주어야 하고, 자바스크립트로 컴파일 된 후 사용되기 때문에 시간이 소요됩니다.
Q: TypeScript의 인터페이스를 설명해 주세요.
A: TypeScript의 인터페이스는 일반적으로 타입체크를 위해 사용됩니다. 인터페이스를 사용하여 객체가 특정한 속성과 메서드를 가지도록 강제할 수 있으며, 이를 통해 타입 체크와 코드의 가독성을 높일 수 있습니다.