자바스크립트 엔진이 데이터를 저장할 수 있는 두 곳이 있다. 메모리 힙과 스택이다. Heap: dynamic memory allocation object, function을 저장하는 장소. 스택과 달리 정해진 양만큼 할당하는 것이 아니고 필요에 따라 늘어날 수 있다. 데이터 사이즈는 런타임에 알 수 있다. 이 프로세스는 dynamic memory allocation이라고 한다. Stack: static memory allocation 스태틱 데이터를 저장하기 위해 사용하는 자료 구조. 스태틱 데이터는 엔진이 컴파일 타임에 사이즈를 아는 데이터. (Prmitive values and references) 사이즈를 이미 알고 있기 때문에 정해진 양의 메모리만 할당한다. 실행 직전에 메모리를 할당하는 프로세스..
컴퓨터는 binary로 말한다. 즉 2진법, 0과 1밖에는 사용할 줄 모른다. 예를 들어 10진법으로 5인 숫자를 표현하기 위해서, 컴퓨터는 2진법 101로 표현한다. 이 2진법은 스위치를 끄고 키는 방식으로 표현될 수 있다. 즉 스위치를 켜면 1, 스위치를 끄면 0 이렇게 생각할 수 있다. 스위치를 키고 끄기 위해서는 전기가 필요하다. 전기가 들어오면 스위치가 켜지고 1을 나타내고, 전기가 다시 빠져나가면 스위치가 꺼지고 0을 나타낸다고 생각할 수 있다. 이것이 컴퓨터 안의 트랜지스터가 하는 일이다. 컴퓨터에서 0과 1로 2진법 한자리수를 나타내는 단위를 비트(bit)라고 한다. 즉 10진법 숫자 5는 2진법 101로 표현될 수 있고, 이는 3비트가 필요한 것이다. 그런데 커다란 데이터를 표현하기 위해..
URL이란? URL(Uniform resource locator)이란, 리소스 식별자이다. resource locator라는 말에서 알 수 있듯이, 리소스가 어딨는지 알려주는 아이라는 것이다. 우리는 웹에서 무수한 리소스들을 주고 받는다. 이미지, 텍스트, 동영상 등 모든 콘텐츠 소스를 리소스라고 보면 된다. 그런데 우리가 웹에서 보는 이 '리소스'들은 어디에서 오는 것인가? 그 리소스들의 주소를 알려주는 것이 URL이다. HTTP 간단하게 HTTP를 짚고 넘어가자. HTTP란 HyperText Transfer Protocol의 약어로, 인터넷 상에서 데이터를 주고 받기 위한 프로토콜의 일종이다. 프로토콜이란 규약이라는 뜻인데, 인터넷 통신을 하기 위해서는 정해진 형식이 있어야 하고, 널리..
이제 면접을 보러 다니면서 받은 질문들을 정리하고 내가 몰랐던 부분, 대답이 미흡했던 부분 등을 더 공부해서 보완할 생각이다. 다음 면접은 더 잘볼 수 있길 바라는 마음으로 작성한다.. :) React, Redux 테스트를 고려해서 코드를 짠 경험이 있는지 MobX랑 리덕스 차이 리액트 훅에 대해 설명해보시오 리액트에서 arrow function을 사용하면 일반 함수를 쓰는 것과 어떤 차이가 있는지 Java 제네릭(Generic)에 대해 설명해보시오 HTML, CSS Semantic HTML에 대해 설명해보시오 CSS를 사용해 수평정렬을 할 때 주로 사용하는 방법 JavaScript 불변 객체를 만드는 방법으로 무엇을 사용하는가 자바스크립트에서 비동기를 설명해보시오 프로미스와 어싱크 어웨이트의 차이점을 ..
Rotation point 찾기 문제 문제 a부터 z 순으로 적혀진 사전을 읽다가 모르는 단어가 나오면 단어장에 기입하는 작업을 하려고 한다. 단, 사전의 어느 중간부터 펴서 이 작업을 시작한다. 그래서 뒤로 가면서 이 작업을 수행하다가 사전의 끝에 도달하면 사전의 처음부터 시작해서 처음에 폈던 페이지 전까지 이 작업을 한다. 이 모르는 단어는 배열에 순서대로 저장하여, 예시를 들면 다음과 같은 형태가 된다. ['ptolemaic','retrograde', 'supplant', 'xenoepist', 'asymtote', 'babka'] 알파벳 오름차순으로 진행되다가 사전의 끝까지 찾고 나면 다시 앞에서부터 시작하기 때..
퀵 정렬(Quick sort) 컴퓨터 언어에는 대부분 배열을 정렬하는 내장 정렬 함수가 있는데, 대다수가 내부적으로는 퀵 정렬 방법을 택하고 있다. 그 만큼 퀵정렬이 빠르기 때문이다. 퀵 정렬은 최악의 경우에는 삽입정렬이나 선택정렬 만큼 느리지만 대부분의 경우인 평균 시나리오에서는 훨씬 빠르다. 퀵 정렬은 분할(partition) 에 기반하고 있으며 이 분할이 재귀적으로 일어나는 과정을 통해 정렬된다. 분할 배열을 분할한다는 것은 피벗(기준 원소)를 기준으로, 피벗의 왼쪽에는 피벗보다 작은 수를 두고, 피벗의 오른쪽에는 피벗보다 큰 수를 두는 것을 말한다. [0,5,2,1,6,3] 이라는 배열을 가정하자. 피벗을 정렬되지 않은 배열의 가장 오른쪽 원소라고 정하자. 그러면 맨 오른쪽 위치의 3 이 피벗이 ..
파이썬에서 함수에 인자를 전달하는 방식 - Call by object reference 함수에 인자를 전달할 때 사용하는 방식은 크게 2가지다. Call by value Call by reference 그런데 파이썬은, call by object reference란다. (…?) Call by Value def print_val(val): val += 10 print(val) i = 2 print_val(i) # 12 print(i) # 2 파이썬이기 때문에 Call by value라고 하면 안 되겠지만, 어쨌든 결과는 유사하므로 call by value라고 가정하자. Call by value는 i가 print_val의 인자로 넘겨졌을 때 i가 담고 있는 값인 2가 복사되어 val에 할당된 것이다. 그러므..
선택 정렬(Selection sort) 단순 정렬(Simple sort) 중 하나로, 속도는 느린 편(평균적으로 O(n^{2}), quadratic time)이지만 최악의 경우를 가정했을 때 버블소트보다 2배 가량 빠르다. 가정 배열(Array) 정렬을 가정한다. 정렬되지 않은 배열을 오름차순으로 정렬한다. 배열의 길이는 n이다. 순서 index 0 원소를 temp라는 변수에 저장한다. 그 다음 index 1부터 index n-1 까지 순회하면서 temp보다 작은 값이 있는지 비교 한다. 만약 비교 결과 temp보다 작은 값이 있으면 그 값을 temp에 재할당한다. 이렇게 한 번 패스 스루(정해진 범위의 배열을 한 번 훑는 것)를 끝내고 나면, temp에는 전체 배열 원소값 중 최소값이 저장되어 있을 것..
- Total
- Today
- Yesterday
- react
- 제네릭스
- jQuery
- youtube data api
- this
- 포인터 변수
- 리덕스
- Data Structure
- rxjs
- Java
- GIT
- 개발 공부
- Session
- 깃
- Prefix Sums
- useEffect
- CSS
- oracle
- til
- linkedlist
- 인스턴스
- Redux
- c언어
- JavaScript
- package.json
- SQL
- Conflict
- getter
- 알고리즘
- 자바
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
