💪🏻요렇게 공부하자.💪🏻
- 기본기를 탄탄하게!! : 기본은 앞으로 배우기 더 힘들어지기 때문.
- 정답을 찾는 과정을 즐기기 => 오랫동안 고민해보기
- 내가 무엇을 잘하고 못하는지 파악하기 : 항상 고민해보자
- 공부한 것은 꼭 기록하기!!(가급적 공개)
- 질문 두려워하지말자!!!!!!(물론 혼자서 해결하면 베스트지만 고민이 하루를 넘길 것 같으면 창피해하지말고 질문.) ➡ 내가 가장 노력해야할 부분인 것 같다,,!!
강사님이 면접에 들어가면 주로 하시는 질문(✅생각해보기)
- 스스로 해결하기 힘들다 판단되는 문제는 보통 어떻게 처리하는지?
(해결 방법이 떠오르지 않을 정도로 막혀본 적 있는지, 어떻게 처리했는지에대한 경험)
- 나중에 만들어보고싶은 소프트웨어가 있는지?
(직업에 대한 목표의식, 도전의지 확인. 이러한 고민을 해봤는지)
- 만약 개발을 잘 모르는 팀원이 당장 작업하기 어려운 작업을 요구했다면 어떻게 해결할건지?
(커뮤니케이션 불화가 발생할 수 있는 일을 어떻게 풀어갈건지, 태도를 알아보기 위함)
- 남들이 보는 나의 모습은 어떤 것 같은지?
(자기 객관화가 잘되는지 확인, 내 모습에 대해 고민을 해봤는지 확인)
- 추상이란 무엇이고 객체지향에서 추상이란 어떻게 적용된다 생각하는지?
(프로그래밍엔 추상이라는 단어가 많이 나오는데 고민해본 적 있는지)
Javascript로 만들 수 있는 것들
- 서버 개발 - node.js, Nest.js, Express
- 앱 개발 - React Native, NativeScript, Cordova
- 프론트엔드 개발 - jQuery(요즘은x), Backbone.js(요즘은x), React, Vue, Angular
(+ 부가적으로 때에 따라 필요한 지식 : REST API, GraphQL, Security, WebRTC, Contenteditable, Canvas, Encryption, Design Pattern, Algorithm, Animation, i18n, Optimization, WebSocket, SSE, HTTP, PWA, Electron)
브라우저의 동작 원리
통신 - 렌더링 - 스트립트 실행
- 통신 : 브라우저와 서버 간의 통신을 말함. 브라우저가 서버에 요청을 보내면 서버는 요청에 맞는 특정 값을 응답
- 렌더링 : 돔이라 불리는 객체를 화면에 그리는 것을 의미.(참고 : 돔은 통신을 통해서 받은 html을 브라우저가 읽어서 생성됨, 돔은 트리구조)
- 스크립트 실행 : 말그대로 자바스크립트를 실행시키는 것. 브라우저가 스크립트 태그를 통해 자바스크립트 파일을 읽으면 바로 실행됨
메모리 관리
메모리 생명 주기 : 할당 -> 사용 -> 해제
- 할당 : 변수를 선언하면 변수에 고유 식별자를 생성하고 메모리에 주소 할당 / 최종적으로는 생성한 주소에 값을 넣음.
- 우리가 생성한 변수나 상수는 값을 바라보고 있는 것이 아닌 메모리 주소를 바라보고 있음
- 자바스크립트에서 메모리를 해제하는 방법 : Garbage Collector
ㄴ garbage collection이라는 자동 메모리 관리 알고리즘을 통해 만들어진 객체. 사용하지 않는 메모리를 해제하는 역할을 해줌!!
- 자바스크립트 엔진 : 가상 머신(Heap + Call Stack)
ㄴHeap에는 참조 타입이, Call Stack에는 원시 타입이 들어감.
원시 타입, 참조 타입
원시 타입(primitive type)
숫자(Number), 문자열(String), boolean, null, undefined
원본이 바뀌면 복사본도 똑같이 바뀜
참조 타입(reference type)
객체, 배열, 함수
원본이 바뀌어도 복사본은 바뀌지않음
-
두 타입의 차이점 : 참조 타입은 원본이 바뀌면 복사본도 똑같이 바뀌지만, 원시타입은 그렇지 않다는 점!!
-
원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터 값을 보관한다.
-
참조 타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없으며, 변수에는 데이터에 대한 참조만 저장된다. 참조는 참조 타입 데이터의 주소이지 해당 데이터의 값이 아니다.
스코프
- 유효범위
- 변수가 어느 범위까지 참조되는지
- 전역 스코프(Global Scope), 지역 스코프(Local Scope)
- var을 사용하면 되는 이유 : 호이스팅 발생 -> 변수 선언이 상단으로 올라가버림
클로저
- 함수가 선언된 환경의 스코프를 기억하여 함수가 스코프 밖에서 실행될 때에도 기억한 스코프에 접근할 수 있게 만드는 문법
- 클로저를 유용하게 사용할 수 있는 방법 중 하나 : "은닉화"(클로저를 이용하여 내부 변수와 함수를 숨길 수 있다)(숨기면서 개발자의 실수를 줄일 수 있다)(왜 쓰는지?)(기법인지?)
- 클로저를 잘 알아야 하는 이유: 유용하게 사용하기보단 알기 힘든 버그를 잘 수정하기 위해서
TIL
가비지 컬렉션, 클로저
가비지 컬렉션이라는 것에 대해 오늘 처음 들어보았고 더불어 메모리 생명주기에 대해서도 다시 공부하게 된 계기가 되었다. 스터디 주제로 정하고 더 공부가 필요한 부분인 것 같다. + 클로저도 오늘 처음 배운 개념이었는데 더 공부가 필요한 부분이다.