はてなキーワード: FizzBuzzとは
https://twitter.com/fumokmm/status/1703977187903426995
「むしろこれが正解」「速度を出すときにはこういうことをする」「作ろうとする姿勢が大事」
とか逆張りで褒めてるやつが多いけど、普通にこんなんダメだから
何がダメって、FizzBuzzを教えるタイミングって100%がfor文とif文を教えた直後なんよ
まずfor文を教えて「1から100までの数字を出力してみましょう」っていう問題が出されるわけ
そのときにfor文を使いこなせなくてSystem.out.printlnで書くやつはいっぱいいるけど問題無い
ちゃんと教える側が「for文を使えば簡単かつ正確に書けますよ」って形でfor文を教える
その次に「if文を使って偶数のときだけ出力しましょう」とかを教える
そうすることでfor文の中でif文を使えば繰り返し処理を制御できるってことを教える
「FizzBuzzっていう英語圏で遊ばれるゲームがあるんだよ」
っていう形で出題するわけ
ユーザーに数字を入力させてFizzBuzzを判定させる、とかのゲームを作らせるのがいいんだけど
「まずは単純にFizzBuzzの正解を表示させてみましょう」
っていうコンテキストで出題されるわけ
そのときの回答としてSystem.out.printlnを大量に書くようなやつがいたら、もう一回for文からやり直せっていうのが正解
この回答が合っている要素なんて一ミリも無い
https://qiita.com/app_js/items/a78e0605af702b155efc
この記事読んだ。
Paizaの対応の良し悪しやこの人の考えや不満については今回は触れない。
一人のITエンジニア採用担当者、また同時に一人のITエンジニアとして生成系AIに対してどう触れるべきか書いておく。
まず、業務で生成系AIを利用するのは会社のルールの範囲で好きにやれば良いと思う。
問題は転職のフェーズであり、ここでは能力をチェックされているわけだから、生成系AIの回答でコーディングテスト通過です、となるわけがない。
ソフトウェア開発は複雑であり、AIは間違った回答や遠回りな回答もするわけだから、生成系AIを使うにしても結局真偽を確かめられる能力は必要だよね。
コーディングテストで生成系AIを使うというのは「私はそのような最低限の考える力も有りません」と言っているようなものなので、企業側がほしい人材とは言えない。
最近のコーディングテストサービスでは入力内容を記録しているのでコピペしたかどうかは分かる。
なので生成系AIで回答しているような場合は企業側はある程度検知できる。
もちろん誤検知もありえる。サービス(Web)上ではなくIDEなどで回答を作って貼り付けることもあるだろう。
そのため、企業はコーディングテスト通過後の面接で回答に対して深掘りすることが多い。
生成系AI回答で何も考えていない人はここで脱落する。
企業によってはコーディングテストサービスではなくホワイトボードなどでライブコーディングさせる場合もあり、そもそも生成系AIが使えないこともある。
ワイ:
#include<stdio.h> int main(){ for(int i = 1;i <= 100;i++){ if(i%15 == 0){ printf("FizzBuzz\n"); }else if(i%3 == 0){ printf("Fizz\n"); }else if(i%5 == 0){ printf("Buzz\n"); }else{ printf("%d\n",i); } } return 0; }
ワイ:考えるのが面倒くさいから
Boi:ここまとめられるでしょ
#include<stdio.h> int main(){ for(int i = 1;i <= 100;i++){ if(i%3 == 0)printf("Fizz"); if(i%5 == 0)printf("Buzz"); if(i%3 != 0 || i%5 != 0)printf("%d",i); printf("\n"); } return 0; }
Boi:ああっ
ワイ:ww
FizzBuzzってアメリカのIT企業の採用試験で、応募者がコンピューターサイエンスの学部をでてたり、上級プログラマーの肩書きなのに簡単なコードも書けないってエッセイが元だったね。
FizzBuzzプログラムが書けないプログラマがいる、という話がされるとき
ソラで紙に書けることを想定されているらしく、「できる必要がない」とか「できるべきだ」とか言われる。
プロジェクト作成済み、ソースファイル作成済み、Visual Studio起動済み、実行ボタンをクリックするだけでビルドができる状態、
という状態で1週間かかってもできないという人が大勢いるのだ。
「サボってたのでは?」「不合格になりたかったのでは?」とかではなく
「辺境のド田舎なのでは?」「超絶ブラック求人なのでは?」と、
裏があるんじゃないかと考えるもしれないが、そのような救いはない。
てほしい。
プログラミングを理解できない人はいます。いい加減この事実を認めて下さい。
こういう話になると、やれ「教え方が悪い」だとか、やれ「順序立てて学べば誰でも理解できる」などという輩が出てきますが、それは事実に反します。
まず、プログラミングは手順さえ覚えれば誰でもできるようになると言うものではありません。プログラミングを理解するには、一定レベルの論理的思考能力を要します。それが身に付いていない人には無理です。また、どんなレベルの人でも、プログラミングで分からないことは出てきます。プログラミングができる人は、そういう時に、
といったことをして解決する力があります。そういう試行錯誤をしない人や、複雑だったり抽象的な概念を突き詰めて考えることをしない人に、プログラミングを理解するのは不可能です。
たとえば、再帰関数が分からないとしましょう。具体的に何が分からないのかは人によって異なります。たとえば、
など。これらを解決するには、自分で仕組みを突き詰めて考えたり、コードを書いてデバッグしてみたり、調べたり人に聴いたりするしかありません。講師が気の聞いた喩え話などをすれば、たちまち疑問が氷解するなどということはあり得ません。
また、一口に「プログラミングを理解する」と言っても、そのレベルは様々です。
最初の2〜3程度が「自分の思うプログラミングの全て」な人が、軽々しく「プログラミングは誰でも理解できる」などと思わないでいただきたいのです。それは実用上は全然足りていません。サンプルコードをググりながら、やっとこさVBAで複数のエクセルファイルを集計できる程度の人が「プログラミングできる」気になっていては困るのです。
上記の大部分は、自分のプログラムを他人に見せるつもりのある人なら十分に習得しておく必要があります。ましてや、プログラミングで飯食おうと言う人間が、FizzBuzzに毛の生えたようなコードを読み書きするのに精一杯で、効率や保守性に気を配れないのは論外です。
上記の特に後半に書いたようなことは、誰にでもできることではありません。ちょっとしたコツや方針を守れば機械的にこなせるというものではなく、技術力の高い人でも熟考を要することです。彼らは、そうした高度なことを正しく考える力があるから、技術力が高いのです。そういう力は、誰かに用意してもらったカリキュラムを受動的にこなすだけではまず身に付きません。
⑭「html, css, javascript(jquery, express, react(next), vue(nuxt)), python, php, sql(postgre, oracle), graphql, ruby, swift, solidity, unity, c, c++ 業務レベルじゃなくていいならgo, kotlin, java, scala, dart, julia,(以下略」
おれも高校生の頃は元増田みたいにプロフィール欄に言語をいっぱい書いてたから共感性羞恥みたいになってる。
正直、たくさん言語知ってます!ってどうでもいいんだよね。いろんな言語でFizzBuzzできてすごいねー、くらい。
今まで片手で数える程度しかESを出さずしかも全部書類選考落ちしていた自分。
落ちる理由も分かっていた。
それもそのはずゲームのやりすぎで留年していて自己PRは旅行云々、ゼミにも入らず資格も皆持ってる第一種普通自動車免許。
TOEICなんて250点で書けるわけもない。自分が採用担当なら当然書類選考で弾くだろう。
それでも就職したかった。理由は正社員になりたかったから。安定が欲しかったから。
そんな中で選んだのはIT企業。選んだ理由は単純でスキルを付ければ将来30代で年収600万とか行きそうだから。
ITとは言えばプログラミングだな!って事で○○〇〇aで勉強とスキルチェックをやってDは余裕。Cもちょろっと出来るようになった。
これなら内定取って今年は勉強してB取れれば来年IT系企業に入っても大丈夫だろう!と思ってた。
そんな中見つけたのはとあるSES企業。住宅手当は無いが別に実家通いで良いし、それを抜いても福利厚生は上々。
年休も120有るし評判もクソでもホワイトでもない普通だった。そもそもSES企業は案件ガチャだから本当に配属されないと分からない。
とりあえずまず内定が欲しいという事でエントリーした。面接1回だし通ればすぐ内定だ!
説明会を聞き、ESを出し何でか通過して無事面接予約。1回だから適当に通してるんだろうと思いつつ。
面接の日が来た。その日は朝から心臓が痛いくらい緊張していた。本番にはめっぽう弱いのだ。
それでもスーツ着て電車に乗って会社の最寄り駅に着いた。着いたのは1時間前。
早く着き過ぎたと思いつつ、といって近くの店に行って時間を潰すのは微妙な時間。
どうせ40分くらいなら立って面接会場で座れば良いと思って駅でずっと立ってた。
空いた時間はうんこみたいな自己PRとか復習したり音楽を聴いて緊張を少しでも減らそうとした。それでも心臓痛いが。
そんなこんなで面接時間。5分前に着いて受付をした。通された部屋でお茶を貰いスゲーって思った。これが世に聞く最終面接で貰う飲み物か!(面接1回)
3分くらい待ってたら人が現れた。この人ネットで見た人事の人だ!!!正直知らない人が現れると思ったからびっくりした。
人事の人は適性検査やるよって言ってきた。適性検査か、今まで書類選考落ちしてきた企業も適性検査を受けてきたしどうせSPIだと思ってた。
始めてみると全然違った。計算は何とかなった。そりゃSPIで多少鍛えられたからね?
2つ目は法則を見つける問題、これが全然分からない。最初に例題が出るが例題もさっぱり分からない。どれが正解なんだ?
そして上部に命令書があって〇をやった場合×になる。これを用いて↓の問題はどうなるかとか出た。いわゆるフローチャートみたいな問題だ。
?????頭がこんがらがる。というも図形を使っており3段階目までこれがこれであれがこーなってこーなるなって感じで何とかなった。
ただ4.5段階目まで行くとどうなってるんだっけ?となる。メモも出来るがそんなことしてたら時間が消える。どうにか答えようとした。
フローチャートの問題をやってる時にこれ実務だったらどうなるんだろうかと考えた。仮に配属されてプログラミング言語で命令書通りに書けるんだろうか?
....無理だ。どう考えても完遂できる気がしない。これで怒られたらどうなるんだろう。....絶対泣くだろうし辞める思った。
現段階でpythonでFizzBuzzくらいしか出来ない自分が成長してYoutubeに転がってるようなプログラミングしてみた!まで行けるか?
暇な時間に一人でアプリを作れるか?そもそも今年中にpython完璧に出来ると思うか?....無理だ。そんな未来が想像つかない。
多分入社1週間で研修に躓いて辞職届を出してるだろう。そう思った瞬間帰りたくなってきたそして終わったら面接せずに辞退しようと思った。
そして適性検査の時間は終わった。終わったし呼ぶべきか?そう思いつつじっとしてたら人が来て移動しますと言われた。
言おうと思ったが声が出ない。そして移動して面接部屋に通された。人はおらず自分は待つらしい。
その間帰りたいと永遠と思っていた。次に人が来たら辞退しますと言おうと。
そして面接官が来て挨拶してきた。ここでも言おうとしたが出たのは挨拶。言えなかった...
その後はさんざんだった。クソみたいな自己PRを聞いてくれる面接官。旅行と聞いてそれは海外旅行?と聞いてきた。国内ですと言ったら、そう...と返してきた。
海外なんてそもそもパスポート持ってねえ...色々質問してきたが失敗例になるような返答しかしなかった。
一番の失敗は趣味。実際聞いてきたのは暇なとき何するかだったが自分の中の想定問答集にはなかった。趣味だったら科学館巡り云々答えたのに...
自分が返したのは「ゲームです」。それだけだった。言った瞬間にやっちまった感がめっちゃ出た。これは堕ちたなと。
長い長い面接は終わり2週間とかで結果を通達すると言ってきた。正直落ちた気しかしないのでその場で不合格通知を出して欲しかった。
面接会場を出て自分に暑い熱い日を浴びせてくる太陽。そのまま蒸発するまで溶かして欲しかった。だが人間はそんなにやわじゃなかった。
沈んだ気持ちで頑張って家まで辿り着き、部屋で天井を見上げた。そして目を閉じた。
世の就活生は何を考えて就活してるんだろう。自分は面接の日まではIT企業でバリバリ働くと思っていた。しかし今考えると無理だ。何も出来る気がしない。
あれから数日経ちちょっとだけ気分は回復したが前まで毎navで探していたIT企業は全く見なくなった。自分に向いてないと気付けただけ良いんだろうか。
しかし時間は動いている。どこでもとは言えないクソ野郎だが働きたい。
来週再来週に申し込んだ公務員試験が有るが就活はIT企業だ!!!と勉強してこなかったので多分落ちるだろう。民法難しいし現時点で完璧なの憲法だけだ。
公務員浪人は多分めんどくさがって放り出すだろう。果たして今年中に就職先は見つけられるだろうか...それともフリーターかニートになるのか微妙な所だ