전체 글 42

[JavaScript] 호이스팅, 스코프

스코프를 알기 위해서는 호이스팅을 알아야한다. 또한 호이스팅을 알기 전 실행컨텍스트의 개념을 알고, 실행컨텍스트 객체 안에 담긴 environmentRecord를 알아야한다. 실행컨텍스트 [JavaScript] 실행 컨텍스트 코어 자바스크립트 2강 - 실행컨텍스트 실행 컨텍스트 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 스코프와 클로저 라는 개념을 이해하기 전에 살펴보자. 우리가 다음과 같은 JS파일을 junly21.tistory.com 호이스팅 environmentRecord에는 현재 컨텍스트에 관한 정보들이 저장된다. 이 때 컨텍스트 내부에 함수 선언문이 있다면 '함수 그 자체'를 수집하고, var로 선언된 변수도 수집하고 한다. 이렇게 변수 정보 수집을 마쳐도 실행 컨텍스트가 관여할 코드들은..

JS 2023.09.10

[JavaScript] 실행 컨텍스트

코어 자바스크립트 2강 - 실행컨텍스트 실행 컨텍스트 실행 컨텍스트란, 실행할 코드에 제공할 환경 정보들을 모아놓은 객체를 의미한다. 그 유명한 스코프와 클로저 라는 개념을 이해하기 전에 알아야 하는 개념. 우리가 다음과 같은 JS파일을 실행한다고 가정해보자. //--------------------(1) var a = 1; function outer() { function inner() { console.log(a); // undefined var a = 3; } inner(); //--------------------(2) console.log(a); // 1출력 } outer(); //--------------------(3) console.log(a); //1 파일이 실행되자마자 (1)순간 콜 스..

JS 2023.09.10

[프로그래머스] 프론트엔드 데브코스 5기 코테,면접,합격 후기 (2)

지원동기, 지원서 작성, 1차코테 준비와 결과는 1편에 [프로그래머스] 프론트엔드 데브코스 5기 지원 및 합격후기 1편 면접 일정 및 준비 8월 12일에 치룬 코테 합불 메일을 8월 21일에 받았고, 오픈채팅을 보니 면접은 8월 23일부터 9월1일 사이에 주말을 제외하고 진행되는 듯 했다. 나는 8월30일로 안내를 받았고, 면접 안내 내용에 따르면 지원 동기와 학습 경험 위주의 대화 형식(집단면접, 1시간내외) 라는 내용을 알 수 있었다. 블로그 검색을 통해 많이 면접 후기를 찾아보았고, 주변에도 도움을 받아 면접을 열심히 준비하였다. 코테에서 부족하고 탈락을 생각하였는데 주어진 기회였기 때문에 더 열심히 준비했다. 기술 면접 준비 약 8일간의 면접 준비 기간동안 자바스크립트, 리액트, 리덕스, Axio..

부트캠프/후기 2023.09.08

[프로그래머스] 프론트엔드 데브코스 5기 코테,면접,합격후기 (1)

모집기간: 2023년 7월5일(수)~2023년 8월8일(화) 1차 테스트: 8월12일(토) 15~18시 온라인 면접: 8월30일(수) 15시 최종발표: 9월8일 (금) 14시 프로그래머스 프론트 데브코스 5기에 최종 합격한 기념으로 지원동기부터 후기를 써보려고 한다. 지원동기 및 계기 23년 여름방학에 인턴을 모두 떨어지고 23년 가을학기 기준으로 4-2학기 막학기를 다니며 취업준비를 해야하는 상황이었다. 그러나 전공생이지만 타 전공에서 전입을 진행한 상황이었고, 인턴에서 모두 떨어진 나는 빡빡하게 학점만 때려박고 소화하느라 사실상 전공지식 학점 개발실력 모두가 동학년 전공생 대비 1년정도 늦는다고 생각했다. 취업시장도 안좋다고 하니 부트캠프를 들어가서 실력을 쌓아야겠다고 생각하고 23년 하반기 네부캠에..

부트캠프/후기 2023.09.08

Heap

Heap은 Data가 마구 모여져있는것인데, 그 중 특징을 가지게 한것이 Max Heap과 Min Heap이다. Maxtree란, 각 node가 자신의 child보다 크거나 같은것. (child가 하나든, 두개든) Max Heap: 완전 이진트리이면서 maxtree인것. Min heap : parent가 children보다 작거나 같은것. max heap은 root가 최댓값. min heap은 root가 최솟값. Priority Queue: 내가 어떤 값을 매기는데, 그 중 가장 큰 값을 매긴 애를 찾아낼 수 있는 구조. maxheap을 한번 만들면, 맨 위에 최대값이 있고, pop했을 경우 다음 최대값이 root가 되게 설정함. Complete binarytree덕분에 log(n) 의 시간복잡도로 데이..

알고리즘 2021.10.28

MIPS-Instruction

이런 식의 MIPS Assembly가 있다고 해보자. 이 식은 s1과 s2를 더해서 t0에 저장한다는 밉스 인스트럭션이다. 사실 이 명령 자체가 컴퓨터에는 0x02324020 의 기계어로 표현이 된다. 밉스 레지스터 하나는 32비트의 크기를 가지기 때문에 machine instruction또한 32비트로 제공된다. 밉스가 이해하는 인스트럭션은 크게 3종류이다. R포맷과 I포맷과 J포맷이다. 위의 테이블의 빨간 줄을 보면, 어떤 instruction들이 어떤 format에 속하는지 그리고 그 format은 어떻게 구성되어있는지 나타나있다. 이를 모두 외우거나 할 필요없이 표를 참고하여 적용하면 된다. 표를 보니, add는 R포맷에 있는것을 확인할 수 있다. R포맷으로 설명을 이어보자면, 컴퓨터는 맨 앞의 ..

CS 2021.10.05

Queue의 개념

스택은 다음과 같이 데이터를 차곡차곡 집어넣어(Push) 맨 위의 데이터부터 Pop을 하는 자료구조이다. 키보드에서 입력된 스트로크를 저장한다거나, Ctrl+Z명령어를 통해 우리가 실행한 명령들을 Undo하기 위해 기억해놓는것 정도를 예시로 들 수 있다. Queue의 경우, 이러한 형태를 띈다. 줄서기, 혹은 선입선출이라고 생각하면 된다. 자료를 추가할때는 Enqueue로 Back부분에 한칸씩 추가해주고, 자료를 빼줄때는 Dequeue로 빼주면서 다음 데이터가 Front가 되는것이다. 그러나 컴퓨터의 메모리에서 데이터를 추가할때마다 계속 Back을 한칸씩 밀면 엄청나게 긴 배열이 생겨 메모리가 낭비되거나, 배열의 끝에 막혀버릴 수도 있다. 그래서 이 큐를 개선시킨것이 원형 큐이다. 그림에서 원형 큐에 1..

알고리즘 2021.10.03

Stack예제- 후위 계산법 (Postfix)

[문제] 다음의 infix notation을 postfix notation으로 변경하고자 한다. 매 character를 읽을 때마다 stack의 내용을 적고, 그렇게 변하거나 변하지 않는 이유도 함께 적으시오. a*(b+c/d)-e a*바로 뒤에 괄호가 있다. 즉 a출력후 괄호 사이의 bcd도 바로 이어서 출력. 그 후 top부터/ + *으로 쌓여있는걸 출력해야겠지? 아, 중위연산을 후위연산으로 바꿀때는 연산자를 stack에 저장해야한다. 하여 출력값은 abcd/+*e-이다. 이 문제를 풀면서 괄호의 우선순위가 어느정도인지 헷갈렸다. a*(b+c/d)-e가 아니라a*(b/c+d)-e 였다면 어떻게 달라지는거지? 큰 차이가 없다. 괄호의 닫는 부분까지는 어쨌든 push를 계속 해줘야하고, 괄호를 닫고 난 ..

알고리즘 2021.09.30

Overloading-오버로딩이란?

객체지향 프로그래밍을 공부하다가 오버로딩이라는 단어를 심심치않게 접했었다. 그렇게 들어오던 오버로딩에 대해 오늘 공부했기 때문에 오버로딩에 대해 정리를 해보겠다. 오버로딩은 간단히 말하면, 같은 이름의 메서드를 여러개 정의하는 것이다. 1. 메서드의 이름이 같고 2. 메서드 안의 매개변수의 개수 혹은 타입이 달라야 한다. 오버로딩의 대표적인 예를 찾아보면 println이 있다. void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) void println(int x) void println(long x) void println(Object x) void pri..

CS 2021.09.29

자바 Cannot make a static reference to the non-static field 오류

package test; public class non_static { static int i = 10; static void Hello() { System.out.println("Hello!"); } public static void main(String[] args){ Hello(); i = 30; } } 자바를 공부중 "Cannot make a static reference to the non-static field" 라는 오류를 만났다. 주어진 코드에서 static int와 static void Hello()의 static을 제외하자 위와 같은 오류가 나왔다. 자바의 컴파일 순서는 1. 자바코드 컴파일 2. 클래스 파일 생성 3. 컴파일된 클래스 파일 실행 이다. static 멤버가 먼저 컴파일이..

CS 2021.09.27