見出し画像

アメリカ西海岸とビデオ面接5回

2018年から2023年まで5年間フィンランド現地企業で働いていました。今回からフィンランド国内での転職活動について書いてみます。


フィンランドのエスポーでの転職活動開始

2021年3月16日にフィンランド企業N社が全世界規模でのリストラを発表しました。フィンランドの5G基地局装置ソフトウェア開発の部署は根幹事業ということでリストラの対象外でしたが、このニュースをきっかけに考えました。自分の給料は今の部署では高い方なのでもしリストラが始まったら対象になる可能性はある。

なのでフィンランドでリストラにあう場合に備えて転職活動を開始しました。今すぐ転職しなくても面接の練習を始めておくのは良いことだし。

さっそくGoogleで「Finland C++ job」で検索したところ、あるアメリカ企業がエスポーで人を募集してるのを見つけました。C/C++ Software Development Engineer (L2/L1 Interface and OA&M)という仕事で当時やっていた仕事とほぼ同じ内容でした。

オウルからエスポーに移った時同じ仕事なら転職しやすいということを学びました。なのでこのポジションはイケる確率高いと判断しました。オウルからエスポーに移った時の話は以下の記事を参照してください。

アメリカのグローバル企業であれば給料上げるチャンスかもしれないとも考え、募集要項に合わせてCVを更新して、念のためLinkedinのプロフィールも更新してから、3月19日にその会社のホームページから応募しました。

4月8日にTalent Acquisition Coordinatorという肩書きのAmyという人から面接したいというメールが来ました。書類選考を通過したということです。面接の相手は西海岸のサンディエゴでタイムゾーンはPDT(Pacific Daylight Time)でフィンランドとの時差は10時間。こちらの希望時間帯を伝えてPDT朝10時=フィンランド午後20時で面接を設定してもらいました。

アメリカ西海岸とビデオ面接その①

2021年4月15日にTeamsでビデオ面接。相手は名前からおそらく中国系のシニアエンジニア1人。まず今回募集してるポジションについて説明してもらう。近々5G基地局装置を売り出すのでその開発をしている。N社と同様に各国に散らばったチームが共同で開発してる。仕事の環境は似た感じ。その後にこちらのこれまでの経歴について質問もらって回答しました。

そしてその後人生初のちゃんとしたコーディングテストが始まりました。日本からフィンランドに移った時にテストありましたが、それはアルゴリズムというよりはC++の文法的なもので、比較的簡単な内容でした。

コーディングテスト「その系がBig Endianか判別する関数」

コーディングテストの課題は「その系がBig Endianか判別する関数」の実装でした。運良く本格的なアルゴリズム問題ではありませんでした。今回の仕事が組み込み系でC的な処理が多そうなためか、それに沿った問題だったのだと思います。

大学でコンピュータサイエンスをちゃんと勉強しておらずデータ構造とかアルゴリズムについての知識が偏ってて、競技プログラミングもやったことがない身としてはBig EndianとかLittle Endianとかの概念の方がアセンブラや複数のUNIX系のOSを仕事で扱ってた関係上常識だったので、個人的にはチャンス問題でした。

なので少し時間はかかりましたが回答することができました。

なお、「その系がBig Endianか判別する関数」についてあとで検索したらこういうのが出てきました。同じように回答してたので安心しました。

追加で4回コーディングテスト付きの面接

面接から11日後の4月26日にAmyからメールが来ました。「次のラウンドに進みたい。4回のビデオ面接をアレンジする。すべてアメリカ西海岸。空いてる時間を教えて」とのこと。すぐに時間の案を返したら面接設定されました。

合計5回も面接するの?と驚きましたが、そういえば以前某リンゴのマークの会社の書類選考通った時も「6回面接ある」と言われて次に進むの辞めたのを思い出しました。

4回の面接の内容は以下とのこと。
①L2 protocol design, embedded concepts, C/C++ programming
②data structures, algorithms, problem solving, debugging, troubleshooting
③C/C++ programming, data structures/ algorithms, problem solving
④problem solving, technical maturity, dept fit

アメリカ西海岸とビデオ面接その②

4月29日に2回目の面接。相手はインド系エンジニア。内容が”L2 protocol design, embedded concepts, C/C++ programming”ということだったので5GのL2(layer 2)のプロトコルについて復習してから面接に臨みました。前半はまさにその話で予習しておいて正解でした。後半はコーディングテスト。その後何か質問はないかと聞かれてエスポーのオフィスの規模について聞いたところ当時は20人くらいで拡大中とのことでした。

コーディングテスト「Linked Listのループを検出する関数」

コーディングテストの課題は「Linked Listのループを検出する関数」の実装。Linked List自体はよく使うものだし問題なかったのですが、ループ検出をどうするかは色々考えて一度行ったノードを覚えてそれがもう一度出たらループしてると判断するというのを書きました。試行錯誤しながらだったのでけっこう時間がかかってしまいました。

後でわかったのですがこの問題は「フロイドの循環検出法」別名「ウサギとカメのアルゴリズム」を使うのが定石でした。それを知ってるかを試されたのだと思います。

LeetCodeに同じ問題がありました。

アメリカ西海岸とビデオ面接その③④

5月5日に3回目の面接。相手はモンタナ出身の白人のおじさんエンジニア。大学卒業後この会社に入って28年。まず5Gの技術的な質問に答えた後データ構造の話に移る。まず知っているデータ構造をすべて上げるという問題。これは別モニターでググってなんとか回答。続いてstackとqueueの違いを聞かれて説明。コーディングテストはLinked Listに一つのデータを追加する関数の実装でこれはなんとかクリア。

5月6日に4回目の面接。アラブ系のエンジニア。英語のアクセントが聴き取りづらい。「vtableが何か説明して」と英語で言われたけどvtableが聴き取れなくて何度も聞き直しました。結局わからずタイプしてもらってやっとわかる。その後コーディングテスト。まず排他論理和などのビット演算をする関数の実装。

続いて「BSTのノードの実装」。BSTが何か知らず別モニターで検索してBinary Search Tree(二分探索木)のことだとわかりました。さらに検索してコードも見つけてそれを見ながら回答しました。

アメリカ西海岸とビデオ面接その⑤

5月10日に5回目の面接。インド系エンジニア。なぜプログラムマネージャーからソフトウェアエンジニアになったのか、いつC++を使い始めたか、よく使うデータ構造は何か、ソフトウェア修正で大変だったケースは何かなど聞かれた後コーディングテスト開始。

コーディングテスト「フィボナッチ数列のn番目を返す関数」

コーディングテストの課題は「フィボナッチ数列のn番目を返す関数」を実装しろというものでした。フィボナッチ数列は知ってたので少し試行錯誤しながら回答。

これも後で調べたら動的計画法などを用いて回答するアルゴリズム問題の定番でした。LeetCodeのは以下。

面接の結果と反省点

面接が終わってから2週間経っても連絡がなかったので問い合わせたら今確認中とのことでしたが、その2日後の5月26日にメールで不合格の連絡をもらいました。

本格的なコーディングテストは始めてでしたが、5回の面接すべてでコーディングテストがあったのは大変でしたが良い経験でした。この面接の後しばらくたってからLeetCodeをやり始めて、少なくともC++のコーディングテスト対策にはLeetCodeがベストだと理解しました。

長い記事を最後まで読んでいただきありがとうございました。

いいなと思ったら応援しよう!