인터뷰에서 FizzBuzz를 작성하라고 할 때해야 할 일

이런 트윗을 발견했습니다.

IT회사 면접관: "숫자를 열거하고 3의 배수라면 fizz, 5의 배수라면 buzz, 15의 배수라면 fizzbuzz를 출력하는 프로그램을 써주세요."면접을 받는 사람: "그럼 우선 TensorFlow 가져오기…” htps://t. 코/운 K2jH5rf응 — Graham Neubig (@neubig) May 24, 2016


FizzBuzz에 TensorFlow가 필요하십니까?

우케루.

물론 FizzBuzz에 필요한 것은 Babel 네요.



에서는 먼저 Babel을 설치합니다.



$ yarn add --dev babel-cli babel-plugin-fizzbuzz
$ echo '{"plugins": ["fizzbuzz"]}' > .babelrc


REPL에서 실행합니다.



$ yarn run babel-node
>  for(var i = 1; i < 100; i++) { console.log(i) }
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
...




이것으로 면접 FizzBuzz 대책도 완벽하네요.



무슨 일이야?



for (var i = 1; i < 100; i++) {
  console.log(i)
}

           

for (var i = 1; i < 100; i++) {
  console.log(
    i % 15 === 0 ? 'FizzBuzz' : i % 3 === 0 ? 'Fizz' : i % 5 === 0 ? 'Buzz' : i
  )
}


어떻게 하시나요?



console.log를 대답 없이 FizzBuzz 출력 머신으로 변환합니다.



// @flow weak
import looksLike from 'babel-looks-like'
// import blog from 'babel-log'

const consoleLogPath = {
  node: {
    callee: {
      type: 'MemberExpression',
      object: { name: 'console' },
      property: { name: 'log' },
    },
  },
}

const CREATED = Symbol('CREATED')

export default ({ types: t, template }) => {
  const builder = template(`
  console.log(ID % 15 === 0 ? 'FizzBuzz' : ID % 3 === 0 ? 'Fizz' : ID % 5 === 0 ? 'Buzz' : ID)
  `)

  return {
    name: 'fizzbuzz',
    visitor: {
      CallExpression(nodePath) {
        if (nodePath[CREATED]) {
          return
        }

        if (!looksLike(nodePath, consoleLogPath)) {
          return
        }

        const { node: id } = nodePath.get('arguments.0.name')
        nodePath.replaceWith(builder({ ID: t.identifier(id) }))
        nodePath[CREATED] = true
      },
    },
  }
}


결론



만약 이것을 면접으로 하고 떨어뜨려도 책임을 지지 않습니다.



akameco/babel-plugin-fizzbuzzBabel Plugin for fizzbuzz





<script async=""src="https://platform.twitter.com/widgets.js"/>

관련



자바스크립트 float에서 정확한 비교하기 - Qiita



만약 더 악한 BabelPlugin에 대해 알고 싶다면 다음 기사를 참조하십시오.



안녕 보일러 플레이트. s2s로 빠른 redux 애플리케이션 구축 https://qiita.com/akameco/items/e1489c6bbf3439ec6ca4


좋은 웹페이지 즐겨찾기