CS Hiring Assessments 오답 노트

nyongho·2020년 12월 19일
0

내용 정리

목록 보기
2/6
post-thumbnail

CS Hiring Assessments


1. 틀린 문제들 및 문제 재분석

🔒 01 what is the value of x after running the code below?

NOTE! we are asking for x not the reuslt (문제는 x의 값을 묻고 있습니다)

let x = 30;

function get(x) {
  return x;
}
function set(value) {
  x = value;
}

set(10);
let result = get(20);

// what is the value of 'x' ?

문제는 result 에 대한 물음이 아닌, x 값 을 묻고 있음에도 불구하고 result 값을 입력해서 틀렸다.

🔓 문제 해석

  1. set(10) 을 통해 x = 10 이 된다. x 는 let 등으로 선언이 되지 않았으므로 호이스팅에 의하여 전역변수인
    let x = 30let x = 10 이 된다. 따라서 x 의 값은 10 이 된다.

답 : 10


02 What is the value of result after running the code below?

let x = 10;

function outer() {
  let x = 20;
  function inner() {
    x = x + 10;
    return x;
  }
  inner();
}

outer();
let result = x;

// What is the value of `result`?

🔓 문제 해석

outer 함수를 실행했고 해당 함수의 클로저에 x = x + 10 이 존재한다. 하지만 이것은 어디까지나 outer 스코프 내에서만 적용되지 전역에는 영향을 주지 못한다. 따라서 result 는 그대로 전역변수인 let x = 10 을 참조해 10 을 나타낸다.

답 : 10


05 What is the result after running the code below


let x = 10;
let strangeAdd = function(y) {
  let x = 20;
  return this.x + y;
};

let result = strangeAdd(10);

🔓 문제 해석

질문은 strangeAdd 함수 내의 this.x 가 가리키는 것이 무엇인가? 에서 시작한다.

참고로 함수내에서 this 의 범위는 window 를 가리킨다. 즉, 전역을 넘어 global 을 가리킨다는 것이다. let x = 10 은 전역변수이지만 그 범위가 global 에 미치지 못하고, 따라서 window 객체에 x 라는 값이 할당되지 않았으므로 result 는 NaN 을 리턴하게 된다.

만약, let x = 10 이 아니라 x = 10 혹은 var x = 10 과 같이 window 객체에 선언이 되게끔 한다면 result 값은 20 이 될 것이다.

답 : NaN


09 What is the result after running the code below

let obj1 = { x: 10 };
let obj2 = Object.create(obj1);

let obj3 = Object.create(obj2);

obj2.x = 20;

let result = obj3.x + 10;

answer: 30

🔓 문제 해석

obj2 는 obj1 을 참조하고 있고, obj3 은 obj2 를 참조하고 있다. 따라서 obj2.x = 20 이 실행되기 전의 값은 다음과 같다.

obj1.x => 10

obj2.x => 10

obj3.x => 10

obj2.x = 20 이 실행되면 obj2 의 값을 참조하던 obj3 또한 그 값이 바뀌게 될 것이다.

obj1.x => 10

obj2.x => 20

obj3.x => 20

따라서 답은 30 이다.

답 : 30


11 What is the Big O time complexity for retrieving the value at a specific index in a linked list? *

🔓 문제 해석

문제를 해석하면 "Linked List 구조에서 특정 인덱스의 값을 탐색할 때의 시간 복잡도, Big-O 는 무엇인가?" 라고 묻고 있다.

LinkedList는 순차 접근 방식을 사용한다. 특정 원소에 접근하기 위해서는 처음부터 원소에 도달할 때까지 순차적으로 검색하면서 찾기 때문에 그 원소의 양 만큼 (n 의 크기에 따라) 시간이 소요된다.

따라서 답은 0(n) Linear 시간 복잡도를 가진다고 할 수 있다.

답 : O(n) Linear

profile
두 줄 소개

0개의 댓글