인터뷰에서 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
인터뷰에서 FizzBuzz를 들었을 때 BabelPlugin을 준비했습니다! 이것으로 면접 대책도 완벽! htps // t. 코 / 네 lT463 피 c. 라고 r. 이 m/hCsrW0ldY
— 아카메@무직.js (@akameco) November 2, 2017
<script async=""src="https://platform.twitter.com/widgets.js"/>
관련
자바스크립트 float에서 정확한 비교하기 - Qiita
만약 더 악한 BabelPlugin에 대해 알고 싶다면 다음 기사를 참조하십시오.
안녕 보일러 플레이트. s2s로 빠른 redux 애플리케이션 구축 https://qiita.com/akameco/items/e1489c6bbf3439ec6ca4
Reference
이 문제에 관하여(인터뷰에서 FizzBuzz를 작성하라고 할 때해야 할 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akameco/items/d2851fd4868f833c8040텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)