프로그래밍이란 무엇이라고 생각하나요?
컴파일러는 뭐고 인터프리터는 뭔가요?
컴파일러 언어 | 인터프리터 언어 |
---|---|
코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신코드로 변환한 후 실행 | 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간코드인 바이트코드로 변환한 후 실행 |
실행 파일을 생성 | 실행 파일을 생성 X |
컴파일 단계와 실행 단계가 분리. 컴파일 후 실행 파일을 실행 | 인터프리트 단계와 실행 단계가 분리X. 인터프리터는 한 줄씩 바이트코드로 변환하고 즉시 실행 |
실행에 앞서 컴파일은 단 한번 수행 | 코드가 실행될 때마다 인터프리트 과정이 반복 수행 |
컴파일과 실행 단계가 분리되어 있어 구동시간이 오래 걸리지만 실행 속도가 빠르다 | 반복 수행으로 인해 실행 속도가 느리다. 대신 런타임에 실시간 Debugging 및 코드 수정이 가능 |
구동시에 코드와 함께 시스템으로부터 메모리를 할당받으며 할당받은 메모리를 사용 | 메모리를 별도로 할당받아 수행되지 않으며, 필요할 때 할당하여 사용 |
자바스크립트의 특징은 무엇이 있나요?
변수란 무엇인가요?
식별자란 무엇인가요?
변수를 선언한다는 것은 어떤 것을 의미하나요?
var 키워드는 뭔가요?
변수 선언과 초기화
- 선언 단계 : 이름을 등록해서 js 엔진에 변수의 존재를 알린다
- 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다.
호이스팅이 뭔가요?
var 키워드의 문제점은 무엇이 있나요?
let 키워드는 var 키워드와 어떤 점이 다른가요?
TDZ
const 키워드는 어떤 특징이 있나요?
식별자 네이밍 규칙은 어떤 것들이 있나요?
네이밍 컨벤션은 어떤 것들이 있나요?
// 카멜 케이스
var firstName;
// 스네이크 케이스
var first_name;
// 파스칼 케이스
var FirstName;
// 헝가리언 케이스
var strFirstName; // type + identifier
var $elem = document.getElementById("myId") // DOM 노드
일반적인 규칙
- 변수와 함수 ➡ 카멜 케이스
- 생성자 함수, 클래스 이름 ➡ 파스칼 케이스
리터럴이 뭔가요?
데이터 타입의 종류는 어떤 것들이 있나요?
심벌 타입?
데이터 타입은 왜 필요할까요?
정적 타이핑이 뭔가요?
동적 타이핑이 뭔가요?
문제 : https://github.com/junh0328/prepare_frontend_interview
모던 자바스크립트 deep dive
https://developer.mozilla.org/en-US/docs/Glossary/Hoisting
https://jins-dev.tistory.com/entry/Compiler-%EC%99%80-Interpreter-%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90