본문 바로가기
프로그래밍/CS

프론트엔드 인터뷰 문제 답해보기

by monicada 2022. 5. 23.
728x90

답변하기 위한 준비 

- 기술 공부하는 방법: learning curve, 문제를 정의하고 해결하는 것 

- 근거를 말할 때 공식문서 말하면 좋음(예: HTML Living Standard)

- 정의(정답)를 말하고, 쉽게 사례 말하고, 했었던 프로젝트를 설명하면서 이해를 높이기 

- 면접관에 따라 실제 예시를 먼저 말하고, 추가로 정의질문이 들어왔을 때, 제대로 답변하면 더 좋을 수 있음 

 

예시 질문과 답변 

일반적으로 JavaScript를 불러오기 위해 `<script>` 요소를 `<body>` 요소가 끝나기 직전에 배치합니다. 이유가 무엇인가요?

이유1. html을 다 파싱하고 자바스크립트를 시작하기 위해서 사용 

- DOM의 혼선을 방지하기 위해서

 

이유2. 사용자에게 보이는 화면 갱신 속도 개선

- 일반적으로 화면에서 스크립트의 로딩이나 실행이 끝날 때까지 화면을 갱신하지 않음 

- 웹 페이지의 화면 갱신이 끝난 후 스크립트를 로딩 / 실행

 

주의할 점. document.write()가 포함된 스크립트가 있을 때

- <script>를 </body>의 바로 앞에 작성하는 것이 좋지 않을 수 있음 

-  모든 document를 파싱하기 전까지는 script를 다운받을 수 없음

 

id 속성과 class 속성의 차이에 대해서 설명해주세요.

- 공통점:  css선택자로 사용할 수 있다 

 

- 차이점: 

 id는 HTML요소에 하나의 요소(element)에만 아이덴티디를 부여할 수 있음 

class는 HTML요소에 여러 개의 요소에 아이덴티디를 부여할 수 있음 

 

- 주의할 점 

id의 값이 같은 HTML 요소가 여러 개 있으면 웹 표준에 어긋나기 때문에, 협업하는 다른 개발자나 검색엔진에 혼란을 줌 

 

CSS box model에 대해서 설명해주세요.

- 모든 element, tag는 박스 모델임 

 

- 모든 박스모델은 'contents, padding, border, margin'의 속성을 갖고 있음 

  1. contents : 순수한 콘텐츠
  2. padding : 콘텐츠와 경계선 사이의 여백
  3. border : 경계선. 이 선 자체의 모양이나 두께도 바꿀 수 있다.
  4. margin : 경계선 밖에서 박스모델의 최종 경계선까지의 여백

 

간단한 로그인 폼 컴포넌트를 가운데 위치시키려면 CSS를 어떻게 작성해야 하나요? (centering)
p { 
   width: 100px; /* 정렬하려는 요소의 넓이를 반드시 지정 */ 
   margin: 0 auto; 
   }
   
 body {
      text-align: center; /* 가운데 정렬 */
      }

p {
  text-align: left; /* 문자들의 가운데 정렬을 해제 */
  width: 100px;
  margin: 0 auto;
  }

 

스코프에 대해서 설명해주세요.

- 정의: 자바스크립트의 스코프는 변수 또는 함수의 유효범위 

- 즉, 변수나 함수를 참조하거나 표현할 수 있는 범위를 말함 

- 하나의 스코프 범위 내에서 외부 스코프의 변수에는 접근 가능하지만, 내부 스코프의 변수에는 접근이 불가능함

- 사례를 추가하여 답변하기 

참조대상 식별자를 찾아내기 위한 규칙이다

함수 레벨 스코프(함수 선언 시 생김)와 블록 레벨 스코프(let, const로 사용, 중괄호를 기준으로 생김)가 있다 

함수 레벨 스코프는 기본적으로 var를 사용하여 변수 참조를 다르게 할 가능성이 있어 최근에는 let, const를 많이 사용함 

 

배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유에 대해 설명해주세요. 

- 배열과 객체는 참조 자료형이기 때문에 변수에 값 자체가 아닌 주소를 할당

- const키워드로 선언 및 할당을 하더라도, 해당 변수에는 주소만 담겨있기 때문에 요소나 속성을 추가 가능 

- const를 사용하면 새로운 값이 할당되는 것을 방지 가능, 깔끔하고 안정적인 코드 작성 가능 

- 참고할 url 

 

Object.freeze() - JavaScript | MDN

Object.freeze() 메서드는 객체를 동결합니다. 동결된 객체는 더 이상 변경될 수 없습니다. 즉, 동결된 객체는 새로운 속성을 추가하거나 존재하는 속성을 제거하는 것을 방지하며 존재하는 속성의

developer.mozilla.org

 

원시 자료형과 참조 자료형에 대해서 설명해주세요.

- 원시 자료형 

자바스크립트에서 객체가 아니면서 method를 가지지 않는 6 가지의 타입

string, number,bigint, boolean, undefined, symbol, (null)

원시 자료형은 모두 하나의 정보, 데이터를 담고 있음 

값 자체에 대 한 변경이 불가능하지만, 변수에 다른 데이터를 할당가능 

 

- 참조 자료형 

원시자료형이 아닌 모든 것

배열(Array)과 객체(object), 함수(function)이 대표적

 

- 특징 

원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고,

참조 자료형이 할당될 때는 보관함의 주소(reference)가 담김

 

얕은 복사와 깊은 복사에 대해서 설명해주세요.

- 얕은 복사(Shallow Copy)란 객체의 실제 값이 아닌 참조값(주소값)을 복사하는 것

- 깊은 복사(Deep Copy)란 참조값이 아닌 인스턴스 자체를 새로 복사하여 아예 실제값을 복사하는 것

 

`innerHTML` 메서드와 `textContent` 메서드의 차이에 대해서 설명해주세요.

- innerHTML은 'Element'의 속성으로, 해당 Element의 HTML, XML을 읽어오거나, 설정 가능 
- textContent는 'Node'의 속성으로, innetText와는 달리 <script>나 <style> 태그와 상관없이

해당 노드가 가지고 있는 텍스트 값을 그대로 읽음

 

`event.preventDefault` 메서드는 언제, 왜 사용하는지 설명해주세요.

- 정의: 이벤트를 명시적으로 처리하지 않은 경우, 해당 이벤트의 default 동작을 실행하지 않도록 지정하는 함수

- 언제: 
<a> tag를 클릭했을 때 지정된 href 링크로 이동하지 않게 하고 싶을 때
<form> 내의 submit 역할을 하는 버튼을 클릭했을 때, 새로 실행하지 않게 하고 싶을 때

댓글