#7

Judo·2021년 6월 24일
0

JavaScript

  • 자바스크립트의 원시타입과 객체타입의 차이에 대해서 설명해주세요.

    • 자바스크립트에서 제공하는 자료형은 원시타입, 객체타입 두 가지가 있습니다. 원시타입은 String, Number, Boolean, Null, Undefined가 있고, 객체타입은 객체, 함수, 배열이 있습니다. 둘의 차이점은 변수에 저장되는 값에 있습니다. 원시타입은 변수에 데이터값을 보관하고 메모리 상에 고정된 크기로 저장됩니다. 반면 객체타입은 변수에 데이터에 대한 참조만 저장되고 크기가 고정되어 있지 않습니다. 여기서 참조는 힙 메모리 영역에 저장된 주소값을 의미합니다.
  • ES6에 새로 추가된 타입인 Symbol에 대해서 아시나요?

    • Symbol은 Symbol 함수입니다. 이 함수의 인자로 값을 넣으면 Symbol 타입의 값을 반환하는데 반환하는 값들은 모두 고유한 값이고 이 때 값의 타입을 Symbol이라고 합니다. 고유한 값이라는 성질때문에 객체 프로퍼티에 대한 식별자로 사용되고 있습니다.
  • "use strict"; 이 무엇인가요? 사용시 장단점이 무엇인가요?

    • "use strict"를 사용하면 JavaScript를 엄격모드로 사용하는데 사용되는 명령문입니다. 엄격모드는 스크립트 전체, 함수, 모듈에 따로 적용할 수 있습니다. 엄격모드를 사용할 경우 장점은 1. 실수로 전역변수를 만드는 것이 불가능합니다. 2.삭제할 수 없는 프로퍼티를 삭제하려할 때 예외를 발생시킵니다. 3. 정의되지 않은 this는 Undefined입니다. 하지만 익숙하지 않은 기능들이 많습니다. 언급한 내용말고도 여러가지 장단점이 존재하지만 문법적으로 좀 더 옳은 프로그래밍을 위해 use strict 사용이 권장됩니다.
      참고
  • .forEach 루프와 .map() 루프 사이의 주요 차이점을 설명할 수 있나요? 각각을 어떨때 사용하시나요?

    • forEach와 map의 차이는 리턴값 입니다. forEach는 기존의 Array를 변경하고 리턴은 하지 않지만, map은 새로운 Array를 리턴합니다. 리턴값 차이가 있기 때문에 새로운 배열을 반환받아야 할 경우는 map을 쓰고 아닌 경우 forEach를 사용합니다.
  • ES6 버전 이상의 자바스크립트부터 브라우저에서 호환되지 않는 경우 문제를 해결하는 방법에 대해서 말해주세요.

    • 브라우저간 호환성 문제라고 하는데 현재 코드를 이전 버전 브라우저에서 호환될 수 있게 트랜스파일해주는 도구를 babel이라고 합니다. babel을 이용해 호환성 문제를 해결할 수 있습니다.
      참고
  • 렉시컬 환경에 대해서 아시는대로 설명해주세요.

    • 내부 숨김 연관 객체라고도 불리는데, 스크립트 전체, 실행중인 함수, 코드 블록마다 함수, 변수를 저장해두는 숨겨진 객체가 있는데 이를 렉시컬 environment라고 합니다. 이는 내부, 외부, 전체 렉시컬 환경으로 서로 포함관계를 갖는데 변수, 함수의 사용 가능한 범위를 나눠주는 기준으로 이해하고 있습니다.
    • 클로저는 함수와 함수가 선언된 어휘적 환경의 조합을 의미합니다. 즉, 렉시컬 환경의 포함관계들의 조합을 얘기합니다.

React

  • Props가 컴포넌트간에 전달받는 것이라고 했는데 자식에서 부모로도 전달할 수 있나요? 또 그 이유에 대해서 설명해주세요.

    • 함수형 컴포넌트를 쓰다보면 useState를 이용해 상태를 선언하고 해당 상태를 업데이트 시킬 수 있는 함수('setter')를 선언합니다. 그리고 setter를 자식 컴포넌트로 보내고 자식 컴포넌트에서 setter를 통해 부모 컴포넌트에 있는 상태를 업데이트 시키는 방식을 사용할 수 있다.
  • React Context API는 무엇인가요?

    • Redux나 MobX를 제외하고 React에서 전역으로 쓰이는 데이터를 사용하고 싶다면 상위 컴포넌트에서 자식 컴포넌트까지 전달해주는 방법뿐입니다. 이는 프로젝트 규모가 커질수록 비효율을 낳게 되는데 Context API를 이용하면 전역으로 사용되는 데이터를 생성, 사용할 수 있습니다.
    • 리덕스와의 차이점
      • 단순 전역 상태 관리만 필요하다면 Context API, 디버깅이나 로깅 등의 상태 관리 외의 기능이 필요하다면 Redux를 사용하는 것이 좋습니다.
  • 리듀서에 대해서 설명해주세요.
    - 리듀서는 컴포넌트에서 상태 업데이트 로직을 컴포넌트에서 분리시켜주는 함수입니다. 보통 함수형 컴포넌트에서 useReducer hook 함수를 사용합니다. useReducer는 현재 상태와 액션 객체를 파라미터로 받아오고 새로운 상태를 반환하는 함수로 이 함수를 이용해서 상태 업데이트 로직을 분리합니다.

  • 소프트웨어 개발시 가장 중요하다고 생각하는 게 무엇인가요?

    • 문제 해결 능력입니다. 제가 생각하는 개발자는 존재하는 불편함을 줄여줄 수 있는 서비스를 만들어내는 직업이라 생각합니다. 존재하는 불편함, 즉 문제를 파악하고 어떻게 효율적으로 문제를 접근, 해결할지 생각해내는것이 개발의 본질이고 코딩은 문제를 해결하기 위한 도구라고 생각합니다.
  • 개발시 가장 도움이 많이 된 툴 세 가지를 말해주세요.

    • github, asana, zira, figma 입니다.
  • 어떤 개발자들과 함께 일하고 싶은지 생각해본적 있나요?

    • 현재 상황을 공유하는 사람과 같이 일하고 싶습니다. 팀 프로젝트를 하면서 공유가 안된 부분이 큰 문제를 야기한적이 많았기 때문에 현재 어떤 문제가 있는지, 혹은 어떤 문제를 해결했는지 공유하는 문화가 자연스럽게 형성될 수 있는 사람과 같이 일을 하고 싶습니다.
profile
즐거운 코딩

0개의 댓글