先月、UberのシニアSDE職のオンサイト選考の最終ラウンドまで進みました。私のシステム設計ラウンドの課題は、「リアルタイムの料金変動制エンジンを設計する」ことでした。
彼らは私にエンジンの設計を依頼した。それは、毎秒数百万件のGPS信号を取り込み、都市全体の需要と供給をリアルタイムで計算し、30秒ごとに変化する乗数を出力するものだ。
面接官は具体的に次のように説明した。
「都市内の各六角形ゾーンごとに、ほぼリアルタイムで動的な料金を計算できるシステムが必要です。現在の乗車リクエスト、利用可能なドライバー、過去の需要パターン、そして天候やイベントなどの外部要因を考慮に入れる必要があります。乗数は少なくとも60秒ごとに更新されなければなりません」。
3日後:
「Uberの面接にご参加いただき、ありがとうございました。慎重に検討した結果、今回は採用を見送らせていただくことになりました。6か月後に再度ご応募いただければ幸いです」。
6ヶ月。それは痛かった。
採用担当者にフィードバックを求めたところ、彼女は親切にもこう教えてくれました。「システム設計の基礎はしっかりしているものの、候補者は地域をまたがるシステムの複雑性やエッジケースへの対応について十分な理解を示していないと委員会は感じました」。