togami2864のゴミ箱

ぼくの卍裏卍なつやすみ: Amazon Japan編

2021-09-20

ひょんなことからamazon japanのSDE(Software Development Engineer)インターン選考を受けた。
1mmも許可をとっていないのでいつかきえるかも。内容薄いです。ほぼ公になってることしか書いてないかも(別にNDAもなかったし極秘とかばらすなとも言われてないので大丈夫だと思うけど...)

きっかけ

登録すると3000円のアマギフがもらえるみたいなやつに登録してたらスカウトが飛ばされてきた。(7月か8月くらい)ちなみにアマギフはまだもらってない。 他に条件があったのだろうか。。。?

Resume

必ず英語。たまたまメルカリのインターン応募する時に英語でResumeを書いてたのでちょっと改造して出した。
(Zetyというソフトを使って日本語で作っていたがフォントの相性が悪すぎたので結局英語で作っていた)

OA(Online Assessment)

世界共通の形式なず。ちゃんとやっとけば割と大丈夫な難易度。

workshop

日本独自??というか季節によっては開催してない。9月中旬にあった。
OA通過した(インターン枠 + 新卒枠で)人たちが参加してた。
ここらへんの内容を言っていいのかわからないので書きません。ただ本当にworkshopで選考に関係ないので身構える必要はないです。英語頑張ってね☆

その他

留学生が多かった。今アメリカに住んでてアメリカの大学に通ってるけど就職は日本で勢がいた。
地球は丸かった。あとメルカリのインターンで名前を見たことある人がちらほらいた。。。気がする。

Interview

workshopから一週間後にあった。
もちろん英語。45分 * 2本。形式・流れみたいなのは世界共通。
最終決戦interview。Amazonの場合、Behavial questionの用意をかなりハードにやらないといけないのですが、そこで力尽きてしまった。
全く準備できなかったのでばっくれようと思ったのですが、流石にそれは失礼なので受けた。

で、もちろん落ちた。 面接は僕の人生史上1位2位を争うぐらい地獄みたいな空気になった。気になったらリアルで直接聞いてください。

============================
次のセクションは

  1. そもそも選考に落ちた人が書いていること
  2. まじで個人の一感想であること
  3. ごちゃごちゃしてて読みにくい

駄文かつあんまりまとまらなかったけど投下しておきます。
============================

感想

2時間の地獄との引き換えにやっぱりComputer Scienceの知識を体系的にじっくりつけとかないとダメだなーという幼稚園生並みの感想を得ました。
確かにこの手のinterviewでは極論問題が解ける事が大正義で、会社によってはComputer Science一問一答みたいなのはありません。
しかし、直接は聞かれなくとも、それらの知識はinterviewで出題される問題のバックグラウンドとして確実に現れます。

今一度じっくりとデータ構造とアルゴリズムを勉強し直しているのですが、王道と呼ばれるリファンレス片手にもっと早めにじっくり取り組んでおくべきだったと痛感しています。(ちなみにリファンレスとしてアルゴリズムイントロダクションを使っています)

=================

例えば、一番最初にやるであろうLinkedListに関して次のような基本問題があります。

・難易度 medium https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
・難易度: easy https://leetcode.com/problems/remove-duplicates-from-sorted-list/

一つめのmediumの解法を見てみるといきなりsentinelノードを用意するとかいう手法が出てきます。

当時僕はそういうものなのかーーーという感じで実直に覚えるという選択肢をとってしまいました。


が、ちゃんと本をみるとガッツリ言及があって、

  1. 境界条件が無視できるなら連結リストにおけるDELETE操作はもっと簡単だよね
  2. sentinelノードを導入しよう!
  3. 疑似コードが明快になった!!
  4. あくまで実行時間は改善されないよ

みたいな流れで導入がされています。

逆に2つめのeasyの問題は綺麗に単方向連結リストの先頭における境界条件を考慮しなくていいような問題設定 になっている。(先頭ノードが削除されることはない)
なのでそこまで考えなくても通す事ができる。

=================================

といったように勉強してバックグラウンド・contextを知ることで問題の意図を考えられるようになる視点 が手に入ります。

データ構造とアルゴリズムに限らず、明らかにfindコマンドの実装が元ネタだろうなー みたいな問題や FILE構造体やDIRECTORY構造体の存在を知らないと意図がわからないだろうなーみたいな問題もあります。

そしてあくまで僕の場合なのですが、そういうものなのかーと思って割り切った事って案外定着してませんでした。
というか

あんまりCSの知識ない -> 割り切らないといけない問題が増える -> おぼえるべきこと多すぎて飲み込まれる

という悪循環に飲み込まれました。頭にバチっとはまらない。

(もちろんCSの知識あっても一回やった事ないと解けるわけねーだろみたいな問題も存在はします。)

あとがき



最後に

ちゃんとお勉強しましょう。