big-o 의 필요성 알고리즘을 풀이하는데 수많은 해결법이 있는데 어떤 해결이 제일 괜찮은 해결인지 알려면 필요한 것이 빅오 표기법이다.코드를 일반적으로 수치를 사용해서 비교하는데 사용.왜 사용해야 되나? 알고리즘의 속도에 따라 성능이 좌지우지 되기 때문이기도 하고 면접에서도 물어본다 공간복잡도입력되는것을 제외하고 알고리즘 자체가 필요한 공간- 불린, 숫자, undefined, null : 불변 공간- 문자열, 참조형, 배열, 객체: O(N) 공간 // 문자열의 길이 만큼입력의 값에는 상관없이, 무조건 그냥 상수 두개 만큼의 공간만 있으면 됨차지하는 공간은 입력된 배열의 크기와 비례해서 커짐 객체의 시간복잡도이 객체에는 3쌍의 key value를 가지고 있음객체는 정렬되어 있지는 않지만, 나머지 모든 부..
렉시컬 스코프란함수를 어디서 호출하는지가 아니라 어디에 선언했는지에 따라 결정되는 것입니다.즉, 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정한다는 것이며, 가장 중요한 것은 호출이 아니라 선언된 장소에 따라 결정이 된다는 것입니다. var x=1function scope(){ var x=10; scope_test();};function scope_test(){ console.log(x);};scope();scope_test(); 의 결과로 10과 1이라고 생각할 수 있지만, 실제 결과는 1과 1 입니다. 왜냐면, 자바스크립드에서 코드를 실행할 때 코드들의 스코프를 결정하기 때문입니다.위 예제의 실행 결과는 함수 scope_test()에서 참조하는 x변수는 scope_test()의 상위 스코..
자바스크립트에서 this는 누가 나를 불렀나 입니다. 변수를 선언해서 사용하는 것이 아니라 호출해서 사용한다는 것입니다. 1. 하나만 있는 this 전역객체는 모든 객체의 유일한 최상위 객체이고, 일반적으로 브라우저의 전역객체는 window입니다. let x = this;console.log(x) // window 2. 함수 안에서 사용한 thisfunction myFunction() { return this;}console.log(myFunction()); //Windowvar num = 0;function addNum() { this.num = 100; num++; console.log(num); // 101 console.log(window.num); // 101 console.log..
var,let,const는 모두 자바스크립트에서 사용하는 변수이지만, 각각 다르게 작동합니다. *호이스팅이란->1. 중복 선언var: 같은 스코프에서 여러 번 변수를 선언해도 오류가 발생하지 않습니다. 예를 들어:var x = 1; var x = 2; //중복 선언 허용 console.log(x); // 2 let: 같은 스코프에서 중복 선언을 허용하지 않습니다. 중복 선언 시 에러가 발생합니다. let y = 1; // let y = 2; // SyntaxError: Identifier 'y' has already been declared const: let과 동일하게 중복 선언을 허용하지 않습니다. const z = 1; // const z = 2; // SyntaxError: Identifier '..
브랜치 전략 협업시 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 활용하기 위한 work-flow입니다. 개발 중인 기능이나 수정된 것들이 서로 독립적이므로 영향을 주지 않고 동시에 진행이 가능합니다. 따라서 브랜치가 특정 기능이나 이슈에 대응하여 작업을 추적하고 버전 단위로 관리해 프로젝트 관리와 배포의 안정성을 높여줍니다. Git-flow와 Github-Flow가 두가지 대표적인 전략입니다. Git-FlowGit-flow에는 5가지 종류의 브랜치가 존재합니다. 항상 유지 되는 메인 브랜치인 master, develop과 일정 기간동안만 유지 되는 보조 브랜치인 feature, release, hot fixes이 있습니다. 각 용도에 맞게 브랜치를 나눠서 사용합니다. master..
GitGit은 여러 사람들이 협업을 하기 쉽도록 만든 분산 버전 관리 시스템입니다. Branch- 브랜치란 협업 시, 하나의 프로젝트를 여러 갈래로 나누어서 관리할 수 있는 기능입니다. 각각 독립된 브랜치에서 작업한 후 원래 버전과 비교할 수 있습니다. - 브랜치를 나누지 않고 작업을 할 경우, 여러 사람들이 commit을 할때 충돌이 발생 할 수 있기에 꼭 브랜치를 나눠서 작업하는 것이 문제를 발생하지 않는 방법입니다. Merge- 각각의 브랜치에서 작업해 나뉘어져있는 작업들을 합치는 기능입니다. - 브랜치를 합치는 방법은 4가지 정도 있습니다. 1. 3-way Merge 각 브랜치에 커밋이 있는 경우, git merge 명령어를 사용하면 두 브랜치의 코드를 합쳐서 새로운 커밋으로 만들어주는 방식입..
시멘틱 태그란?웹문서에 포함된 정보의 양이 많아지면서 일관적이지 않은 문서 구조로 웹에서 원하는 정보를 찾는게 어려워지면서 생긴 것입니다.포함된 콘텐츠의 특정 의미를 정의하고 목적을 갖는 태그라고 보면 됩니다. 기존의 태그로 내용을 나눌수 있지만, 구조를 더 명확히 해주는 태그라고 생각하면 됩니다.시멘틱 태그의 요소로는 , , , , , 등이 존재합니다. 이러한 시맨틱 태그 요소는 콘텐츠를 논리적 섹션으로 구성하고 각 부분의 역할과 기능을 전달하는 데 도움이 됩니다.아래 이미지를 보면 더 직관적으로 시멘틱 태그로 이뤄진 웹페이지를 이해할 수 있을 것입니다. 시멘틱 태그의 장점1. 접근성 향상 HTML 시맨틱 태그 요소는 사람들이 웹페이지를 탐색하고 페이지와 상호 작용하는 데 도움이 되는 화면 판독..
CSS의 cascading에 대해 설명해주세요CSS, Cascading Style Sheet의 약자입니다. Cascading은 위에서 아래로 떨어진다는 뜻을 가지고 있습니다. 이 캐스캐이딩은 CSS에서 가장 중요한 스타일 적용 규칙입니다. CSS를 사용하다 보면 같은 요소에 대해 여러개의 스타일이 중복되는 경우가 있습니다. cascading 이 코드를 보면 p는 div의 하위 요소입니다. 하위요소들은 상위 요소에 적용된 스타일이 상속되어 적용되는데 p 태그에도 스타일을 사용자가 따로 지정을 해놨습니다. 이런 일들 때문에 CSS는 스타일링 규칙을 세웠습니다. 1. 스타일 우선순위2. 스타일 상속 스타일 우선순위 실제 CSS에는 단순히 코드가 나열된 순서만 고려하는 것이 아니라 중요도, 명시도, 코드..