HTML
1. 일반적으로 CSS를 불러오기 위해
<link>
요소를<head>
요소의 자식 요소로 하고, JavaScript를 불러오기 위해<script>
요소를<body>
요소가 끝나기 직전에 위치시키는 이유가 무엇인가요?
✅ <head>
안에 <link>
를 넣는 이유
페이지가 처음 로드 되면 HTML과 CSS가 동시에 파싱되기 때문에.
✅ </body>
직전에 <script>
를 넣는 이유
<script>
는 다운로드되고 실행되는 동안 HTML
파싱을 차단하기 때문에 HTML
이 끝난 마지막 부분에 <script>
를 작동을 시켜야 정상적으로 돌아갈 수 있다.
2.
<li>
요소는 왜<ul>
요소의 자식 요소여야만 하나요?
<li>
요소는 말 그대로 list의 item들을 보여주기 위한 요소 이기에, 목록을 담는 <ul>
(unordered list)요소의 자식 요소여야 합니다.
ul
대신 ol
로도 li
를 사용할 수 있다. (순서가 중요한 목록에는 <ol>
태그로 마크업 된 목록의 항목을 숫자로 표시)3.
id
속성과class
속성의 차이에 대해서 설명해 주세요.
id 속성과 class 속성의 차이는 고유성에 있습니다.
하나의 HTML 요소에 적용된 id의 값은 다른 요소에는 적용되어선 안됩니다.
id의 값이 같은 HTML 요소가 여러 개 있으면 웹 표준에 어긋나기 때문에, 협업하는 다른 개발자나 검색엔진에 혼란을 줍니다.
✅ 정리하면, id는 하나의 HTML 요소에만 사용할 수 있고, class는 여러 HTML 요소에 사용할 수 있습니다.
CSS
1. CSS box model에 대해서 설명해 주세요.
Content
: 콘텐츠 경계(content edge)가 감싼 영역으로, 글이나 이미지, 비디오 등 요소의 실제 내용을 포함합니다.Padding
: 안쪽 여백 경계(padding edge)가 감싼 영역Border
: 테두리 경계(border edge)가 감싼 영역Margin
: 바깥 여백 경계(margin edge)가 감싼 영역2. 간단한 로그인 폼 컴포넌트를 가운데 위치시키려면 CSS를 어떻게 작성해야 하나요? (centering)
저는 로그인 폼 컴포넌트를 중간에 위치시키기 위해서 flexbox를 사용하는 것이 가장 좋은 방법 중 하나라고 생각합니다.
✅ 이 때, 주의할 점은 flex-container의 item이 하나 이상 늘어나게 되면 가운데 정렬이 되지 않기 때문에, HTML 요소 배치에 주의해야 합니다.
JavaScript
1. 스코프에 대해서 설명해 주세요.
스코프는 변수 접근 규칙에 따른 유효 범위를 의미합니다. 스코프에는 몇 가지 중요한 규칙이 있습니다.
안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만, 반대는 불가능하고, 중첩이 가능하다는 규칙이 있습니다. 이 규칙이 있어서 함수 body(중괄호) 내에서 전역 혹은 외부 스코프의 변수에 접근할 수 있습니다.
이름이 겹치는 경우에는 가장 안쪽 스코프를 참조하는 특성이 있어서, 전역 변수와 지역 변수의 이름이 같은 경우 지역 변수를 참조합니다. 이를 이용하여 함수 내 매개변수 이름을 동일하게 지정해도, 함수 외의 장소에서는 사용되지 않아 변화가 적고 안전한 코드를 작성할 수 있습니다.
2. 배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유에 대해서 설명해 주세요.
3. 원시 자료형과 참조 자료형에 대해서 설명해 주세요.
4. 얕은 복사와 깊은 복사에 대해서 설명해 주세요.
DOM
1. innerHTML 메서드와 textContent 메서드의 차이에 대해서 설명해 주세요.
textContent
는 <script>
와 <style>
요소를 포함한 모든 요소의 콘텐츠를 가져옵니다.
innerHTML
는 이름 그대로 HTML을 반환합니다.
innerHTML
을 사용해 요소의 텍스트를 가져오거나 쓰는 경우가 있지만, HTML로 분석할 필요가 없다는 점에서 textContent
의 성능이 더 좋습니다.2. event.preventDefault 메서드는 언제, 왜 사용하는지 설명해 주세요.
preventDefault()
메서드는 어떤 이벤트를 명시적으로 처리하지 않은 경우, 해당 이벤트에 대한 사용자 에이전트의 기본 동작을 실행하지 않도록 지정합니다.