기술면접 대비, 자바스크립트 : 기초
인트로
기술면접을 앞두고 프론트엔드 개발자의 기본소양을 다지기 위해 작지만 중요한 질문들을 찾아보았다.
질문
-
자바스크립트는 무슨 언어인가요?
자바스크립트(JS)는 웹 페이지를 동적이고 상호작용적으로 만들기 위해 사용되는 프로그래밍 언어입니다.
HTML, CSS와 함께 웹 개발의 핵심 기술 중 하나로, 클라이언트 측 뿐만 아니라 서버 측에서도 실행될 수 있습니다.자바스크립트는 명령형, 함수형, 객체 지향 프로그래밍을 지원하며, 프로토타입 기반의 언어이지만 클래스 문법도 사용합니다.
구글의 V8 엔진 도입으로 실행 속도가 크게 향상되었습니다.
-
var, let, const 차이를 설명해주세요.
var
는 함수 스코프를 가지며, 중복 선언이 가능합니다.하지만
let
과const
는 블록 스코프를 가지며, 중복 선언이 불가능합니다.let
은 변수에 재할당이 가능하지만,const
는 초기 선언 시 할당된 값이 변경될 수 없습니다. ES6에서let
과const
가 도입되어var
의 단점을 보완했습니다.
-
데이터 타입에 대해 설명해주세요.
자바스크립트에는 기본형(Primitive) 데이터 타입과 참조형(Reference) 데이터 타입이 있습니다.
기본형에는 문자열(String), 숫자(Number), 불리언(Boolean), null, undefined, 심볼(Symbol)이 있으며, 참조형에는 객체(Object), 배열(Array), 함수(Function), 정규 표현식(RegExp) 등이 있습니다.
기본형은 값이 직접적으로 저장/복사되는 반면, 참조형은 메모리 주소를 통해 값이 저장/복사됩니다.
-
자바스크립트가 동적 언어인 이유는 무엇인가요?
자바스크립트는 변수의 데이터 타입을 실행 시간에 결정하는 동적 타이핑(dynamic typing)을 지원합니다.
이는 변수를 선언할 때 데이터 타입을 명시하지 않아도 되며, 프로그램 실행 중에 변수의 타입이 변경될 수 있다는 것을 의미합니다.
이러한 특성 때문에 자바스크립트는 유연성이 높은 동적 언어로 분류됩니다.
-
undefined, null, undeclared를 비교해주세요.
undefined
는 선언된 변수에 아직 값이 할당되지 않은 상태를 나타냅니다.null
은 변수에 값이 없음을 명시적으로 표현할 때 사용되며, 개발자가 의도적으로 '값이 없음'을 할당한 상태입니다.undeclared
는 선언되지 않은 변수를 참조하려고 할 때 발생하는 상태로, 존재하지 않는 변수에 접근하려고 할 때 JavaScript 엔진이 오류를 발생시킵니다.
-
변수 선언, 초기화, 할당의 차이점에 대해 설명해주세요.
변수 선언은 변수를 생성하는 과정입니다.
예를 들어,let x;
는x
라는 이름의 변수를 선언합니다.초기화는 변수를 선언하면서 동시에 값을 처음으로 할당하는 과정입니다.
예를 들어,let x = 0;
는x
를 선언하고 0으로 초기화합니다.할당은 이미 선언된 변수에 값을 지정하는 과정입니다.
예를 들어,x = 5;
는x
에 5를 할당합니다.
-
스코프 (Scope)에 대해 설명해주세요.
스코프는 변수나 함수가 접근 가능한 범위를 의미합니다.
자바스크립트에는 전역 스코프(Global Scope), 함수 스코프(Function Scope), 블록 스코프(Block Scope)가 있습니다.
변수가 선언된 위치에 따라 해당 변수가 접근 가능한 범위가 결정됩니다.var globalVar = '여기는 전역스코프.' function example() { var funcVar = '여기는 함수스코프.' if(true) { let blockVar = '여기는 블록스코프.' } }
-
스코프 체인에 대해 설명해주세요.
스코프 체인은 변수를 찾기 위해 스코프가 연결된 구조를 의미합니다.
변수를 참조할 때, 자바스크립트 엔진은 현재 스코프에서 시작하여 상위 스코프로 이동하면서 변수를 찾습니다.
이 과정은 가장 가까운 스코프에서부터 시작하여 전역 스코프까지 이어지며, 이를 스코프 체인이라고 합니다.var globalVar = '여기는 전역스코프.' function example() { var funcVar = '여기는 함수스코프.' if(true) { let blockVar = '여기는 블록스코프.' console.log('globalVar'); // if문 안에 있나? > example 안에 있나? > 아 전역에 있구나! } }
-