日が経過しています。情報の鮮度にご注意ください
はじめに
私の面接経験はあまり多くありません。これまで働いてきた3社のうち、最近の2018年の面接経験を除くと、前の2社は一度の面接でオファーをもらったらすぐに決めてしまい、他の会社を試すことはありませんでした。そのため、私は面接の経験が非常に乏しく、今思えば美团を退職した後、面接の準備が不十分だったために避けられたはずの多くの失敗がありました。準備不足に加え、面接を受けた会社の中には完全にHRの業績稼ぎで、実際には採用する気がまったくなかったのではないかと強く疑っているところもあり、オファーも理想的なものではありませんでした。
今は2019年9月も半ばを過ぎ、採用市場も少しずつ回復してきていますが、昨年2018年末のあの面接経験を思い出すと、やはり皆さんの参考になるよう書き残しておけると思いました。ただし、すでに半年以上経っているため、細かい部分は省略し、主に面接のプロセスについて書きます。問題の内容はすでにかなり曖昧になっています。
また、一点主観的な感想を述べると:当時はみんな年末ボーナスを待っていた時期だったので、プロジェクトが新規立ち上げや拡張段階で人手が不足している場合や、あまりにもひどいプロジェクトでボーナスを諦めてでも辞めたい人が残したポジションでない限り、18年末の面接は非常に厳しいものでした。みんなが求めていたのはより高度で、よりベテランのフロントエンドエンジニアで、完全に買い手市場だったと言えます。
以下は私の面接スケジュールで、2018年冬から2019年初頭にかけての期間を跨いでいます:

スケジュールが非常に詰まっているのがわかります。時には1日で6回の面接(電話面談含む)を行うこともありました。前置きはこのくらいにして、時系列順に本題に入りましょう。
テンセント(Tencent)の面接
最初に連絡をくれたのはテンセントでした(テンセントのHRは全員深圳にいる?)。簡単な状況説明の後、面接に赴くことになりました。場所は中関村科学城の近くで、後に行った今日頭条(ByteDance)のオフィスからも非常に近く、約5分の距離でした(今日頭条はオフィスがたくさんあります)。
簡単な自己紹介の後、彼らがテンセント傘下のアウトソーシング部門で、toG(政府向け)の業務を担当していることがわかりました。具体的には政府部門向けの各種ミニプログラム業務を受注し、開発の規範や方法を策定した後、他のアウトソーシング部門に開発を委託し、最終的に彼らに引き渡すという流れです。質問内容が非常に実践的だった点は評価に値します。以下にいくつかのやり取りを抜粋します:
一次面接担当者:私たちは複数のミニプログラムアウトソーシング先と連携して開発を行いますが、彼らが提出するコードの品質をどのように保証しますか?
私:1. 開発規範を策定して制約を設ける。2. ミニプログラムコンポーネントライブラリを開発し、ドキュメントと使用方法を明記する。3. ミニプログラムプラグインを開発し、特定の開発規範を強制適用し、守られない場合はコンパイルを通過させない。4. (冗談で)規範に合わない場合は評価給与を減額する。この4段階でソフトからハードな対策を取ります。
私:入社した場合、具体的にどの業務を担当することになりますか?
一次面接担当者:当部署では思考の転換が必要です。今までは他人の規範に従い、他人のコンポーネントを使って開発していましたが、これからは開発規範を策定し、最適解を決定し、コンポーネントライブラリやコンパイルライブラリを作成する立場になります。
続いて二次面接担当者とのやり取り:
二次面接担当者:これまでの面接は良好でした。あなたには特に印象深いものがありますが、当部署について不満な点はありますか?
私:業務内容に関しては不満はありませんが、チームの人数が少なすぎます。開発メンバーは私を入れても2人しかいません。
二次面接担当者:では、今日の面接はここまでにしましょう。
今日頭条(ByteDance)の面接
テンセントを出てすぐのところに今日頭条があったので、昼食を取ってから向かいました。今日頭条のオフィスはバーのようでしたか?それともコワーキングスペース?入るとフロント近くにコーヒーを売るカウンターがあり、長いテーブルと応接ソファも置かれた広々とした空間で、内装も素敵でした。受付でチェックインした後、まず筆記試験がありました。問題は以下の通り(うろ覚えです):
- 中央揃えを実現するいくつかの方法は?
- 透明なマスク効果をどのように実装するか?
- (マクロタスクとマイクロタスクに関する問題、詳細は覚えていません)
- その他のJavaScript関連の質問
- 最後の問題:AとBの2人がコインを投げ、表が出たら勝ちとします。Aが先に投げ、次にBが投げます。Aが最初に投げた後、Bが勝つ確率は?
その後、一次面接官が来て、私が解いた筆記試験を見た後、キャッシュ/Flexレイアウト/HTTP関連の質問などをして終了し、二次面接に進みました。
二次面接では業務関連の質問が中心で、私がこれまでに行った仕事や業務における価値などについて尋ねられ、その後しばらく待つように言われました。
その後、HR(大学から来たインターンの女性で、私は彼女の候補者でした。彼女はとても熱心で、私も気恥ずかしくなるほどでした)が来て、最終面接に進んだことを伝えました。ただし、最終面接の責任者は本社にいて、あの抖音で撮影された中航の本社で、シャトルバスで行けばいいとのことでした。そこで、私は本社行きのシャトルバスに乗りました(シャトルバスと言っても、実際は7人乗りの自家用車でした…)。
本社に到着後、しばらく待っていると、私の父親と同年代で、雰囲気も似たおじさんが来て、地下の食堂に連れて行ってくれました。食堂と言っても、多くのディスプレイがありPPTのデモができるようになっていて、食事時間ではなかったため、多くの人がここで会議をしていました。そこで、私の面接が始まりました。
最終面接官: 前の2回の面接はとても良く、評価も高かったです。私はあなたの直接の上司ではありませんが、クロス面接のため来ました。気軽に話しましょう、緊張しないでください。
私: はい
最終面接官: 自己紹介してください
私: blabla
最終面接官: 以前担当していた業務のアーキテクチャ図を描いてください
私: はい
最終面接官: 美团が上場したばかりですが、なぜ退職するのですか?
私: blabla
最終面接官: フロントエンドの将来の方向性はどこだと思いますか?
私: blabla
最終面接官: ブログを書く習慣があるようですが、最近注目している技術は何ですか?
私: blabla
最終面接官: はは、あなたが言っているのは少し古い技術ですね。もう1、2年前のものです。
私: 私は業務面に関心が多く、新しい技術は最先端で、学んでも活用する場が少なく、すぐに忘れてしまいます。ポジティブなフィードバックがないと、モチベーションを維持するのが難しいです。
最終面接官: 確かにその通りですね
その後、少し話をしてから通知を待つように言われ、その日は大雪が降っていました。後日、本社から電話があり、組織調整があり、以前面接した最終面接官が別の業務部門に異動になり、私が面接した業務部門に新しいリーダーが来たため、追加で1回面接が必要だと言われました。そこで、もう一度面接に行き、いくつかの簡単な質問とキャリアプランについて聞かれた後、帰らされました。
その後、通知があり、アルゴリズムが良くないため面接に落ちたと言われました。私は内心「???」と思いました。1回目の面接でアルゴリズム関連の質問がありましたが、2回目、3回目、4回目では全く質問がなかったのに、アルゴリズムが良くないと言われるのは不思議でした。もしアルゴリズムが問題なら、1回目の面接後に直接伝えてくれれば良かったのに、と感じました。
転転の面接
転転は東升科技園の中にあり、入るとロビーにディリラバの広告が掲げられていました。1回目の面接官が来て、自己紹介の後、いくつかの基本的な質問をして、1回目の面接は通過しなかったと言われ、すぐに帰らされました。かなり不可解な体験でした。
印象ノートの電話面接
最も評価が高かったのは印象ノートの面接体験です。まず電話で近況を聞き、いくつかの仕事関連の質問をして、興味があればさらに話を進めると言われ、電話面接から始まりました。これでお互いの時間を節約できました。1回目の電話面接で基本的な質問をいくつかして、良い印象を持ったため、現場面接を設定しました。
面接官: 私たちは対等なコミュニケーションですので、緊張しないでください。私が質問する内容も比較的普通です。もし難解な質問をした場合は、いつでも中断して教えてください。
私: わかりました
面接官: グローバル変数、グローバル関数、ローカル関数を含むJSファイルがあります。それらの実行手順を説明してください
私: blabla
面接官: JSはシングルスレッドですよね?では、非同期処理のsetTimeoutはどういう仕組みですか?
私: JSはシングルスレッドですが、ブラウザはマルチスレッドです。setTimeoutやajaxのような非同期操作は、ブラウザが新しいスレッドを立ち上げて処理し、処理が完了したらJSスレッドに通知します。同様にレンダリングスレッドなどもあります。もちろんCPUにはシングルスレッドもマルチスレッドもありません。CPUは1つしかないので、できるだけ速く順番に処理を実行するだけです。ただし、現在のブラウザはCPUのタスクスケジューリングを最適化しており、大量の繰り返しタスクは高速に呼び出せるストレージ空間に最適化されます。またはマルチコアを使ってタスクを交互に分配して実行スケジューリングします
面接官: CPUの動作メカニズム…これは自分で考えたのですか?
私: 本で読んだんです、はは
面接官: JSのマクロタスクとマイクロタスクは知っていますか?それらはどのように動作しますか?
私: これは最初の質問と似ています。コールスタックがあり、コード解析段階で同期コードをコールスタックに詰め込み、マクロタスクに遭遇するとマクロタスク実行スタックに詰めてからコールスタックに置き、マイクロタスクに遭遇するとマイクロタスクスタックに詰めます。その後、コールスタックを順番に実行します。その過程でマクロタスク内にマイクロタスクがあったり、マイクロタスク内にマクロタスクがあったりする場合は、上記の手順に従って処理されます、blabla。
その後、彼らの会社ではVue/ReactのようなViewフレームワークを深く理解する必要はないと言われました。なぜなら、それほどフレームワークを深く使っていないからです。私は膝を打って、まさに私の望み通りだと思いました!私はフレームワーク自体には少し飽きていて、双方向バインディング/単方向データフロー/diffアルゴリズムなど、同じことの繰り返しです。私はむしろコンピュータサイエンスのバックグラウンドでJSをより深く理解/使用したいと思っています。
その後、年末年始だったため、最終面接の技術ディレクターが休暇中で、電話面接になりました。Evernoteでやりたいことについて聞かれ、御社ではフロントエンドのDevOpsやエディタの体験が不十分なようだと感じたので、その方面で発展したいと答えました。回答は彼の意見と比較的合致し、会社の福利厚生も非常に良かったので、双方満足し、ほぼ合格となりました。
ワンバ(玩吧)の面接
ワンバは東直門外大街のあたりにあり、行くと表情の冷たい男性が来て、いくつか普通の質問をしました。自分でも手応えは良かったのですが、チームを率いることを考えているかと聞かれ、今のところその予定はなく、技術面を深めたいと答えました。これが不合格になった理由だと思います。
スマートisan(锤子科技)の面接
美団と一緒にサイバーポートの4階で面接を受けましたが、実際の部門はスマートisan傘下の子部門で、オンラインオフィスドキュメントを開発していました。面接では2人の面接官が同時に質問し、技術関連の話題や、私がテクノロジー業界に関心があることを知ると、ロウ・ヨンハオ氏のジョークで盛り上がり、とても良い雰囲気でした。しかし、強制的な朝10時から夜10時までの勤務と、住宅積立金が6k基準で計算されること(夕食代と夜間のタクシー代は支給されますが)が受け入れられず、結局オファーは期待通りの給与でしたが辞退しました。
滴滴の面接
滴滴の中関村科技園での面接は4回ありました。基本的な質問としてgit revert reset rebaseの使い方、業務関連の質問として以前の職務内容や技術的難点、トラブルシューティングの詳細などが問われ、問題解決の思考プロセスを確認されました。最終面接ではキャリアプランやフロントエンド開発の方向性についての見解を聞かれ、結果待ちとなりましたが不合格でした。後で知ったことですが、当時滴滴は美団に匹敵する規模のリストラが発生しており、補償は美団より良かったようです。脈脈でこの件について投稿したところ、最終面接の責任者から不合格理由の説明がDMで届きました。
小米の面接
小米の面接は科力源ビルで行われ、小米有品関連のポジションでした。EC系企業は残業が深刻なため、面接には行きませんでした。
拉勾網の面接
創業大街にある拉勾網はバイトダンスとテンセントの近くにあります。基本的な質問にはうまく答えられましたが、Reactの経験が少ないと伝えると面接は終了しました。
猿輔導の面接
猿輔導は資金力があり福利厚生が良いと聞いていたので、技術力の高い人材を求めているようでした。2人の面接官(1人が質問、1人が記録)が同席し、記録係は一言も発せず、質問係は期待通りの回答がないと冷笑するなど、ストレス面接的な態度が不快でした。覚えている質問は:
Webpackはよく知っているでしょうから使い方は聞きません。Webpackのバンドルメカニズムについて説明してください
ES6 RequireJS CommonJS AMDJS CMDJS SeaJSの違いは?
リンクリストを設計してください(配列とは異なるメソッドがあります)
結果は1次面接で不合格でした。
每日優鮮の面接
每日優鮮の面接は奇妙なものでした。基本的な質問に答え、双方満足そうでした。私からは「会社で何ができるか」「利用可能なリソース」などを質問し、良い印象を持ちましたが、その後連絡が途絶えました。より適任者が見つかったのかもしれません。
アリババの面接
アリババ文娛傘下のアリババピクチャーズ(toB事業部門)の面接は3回あり、ほぼ全ての質問に答えられました。最終面接では「技術力はあるが経験が浅く、失敗体験が少ない」と指摘されました。帰り際に「自主的に学ぶ姿勢は良い。受動的ではなく能動的に成長しようとする人は必ず強くなる」と言われ、これがアリババが優れている理由だと感じました。素晴らしい。
360面接
360の面接は友人からの紹介で、担当のHRが間違えたため、誤って別の部門の面接を受けることになりました。その部門はIoTを扱っており、私はあまり興味がなく、チームも面接官以外誰もいない新設の部門でした。面接後に間違えたことに気づき…友人が紹介したのは別の部門だったので、再度HRに連絡して別の部門に行きました。その部門はデータ可視化を扱っており、やはり私の専門分野ではなかったため、データをどのように画面に表示するかといった質問やグラフィックアルゴリズムに関する質問を受けた後、帰りました。結果は不合格でした。
作業幫面接
作業幫は3階建てのビルにあり、食堂もありました。面接ではいくつかの質問を受け、全体的にうまく答えられました。しかし、責任者がWindowsのPCを使っていたことが受け入れられず、その後の面接には行きませんでした。
愛奇藝面接
愛奇藝は友人からの紹介でしたが、面接体験は最悪でした。午前10時に到着したものの、誰も対応せず、30分待たされた後、責任者が来て「履歴書は持ってきたか」と聞かれ、「持っていない」と答えると、HRに履歴書を印刷させました。しかし、印刷された履歴書はレイアウトが崩れ、内容も一部欠落しており、全く読める状態ではありませんでした。そのため、面接では「スマホの履歴書を見てください」と提案しました。
まず自己紹介をさせられ、その後非常に基本的な質問ばかりされ、最後に「連絡待ち」と言われ、全体で10分もかかりませんでした。最悪の評価です。
和風暢想面接
この会社は友人からの紹介で、背後に大規模な親会社の資金支援があると言われるブロックチェーン企業です。訪れてみると非常に気に入りました。私は自由奔放な性格で、束縛のない仕事を好むため、この会社は午前12時出勤でもOK(この友人も実際に毎日この時間に出社していました)、仕事をきちんと終わらせれば問題ないというスタイルでした。しかし、社長との面談で仕事に関する不満をぶちまけすぎて、失敗に終わりました。
閲文集团面接
閲文集团はQQ閲読を運営しており、有名な張鑫旭氏も在籍しています。彼らはCSSとHTMLに精通した人材を求めていましたが、明らかに私は該当せず、失敗しました。
高徳面接
高徳はさらに奇妙でした。一次面接ではJSやHTTPに関する質問を受け、うまく答えられましたが、CSSに関する質問にはあまり答えられず、「CSSはあまり得意ではありません」と伝えました。面接官が聞き取れなかったのか、私の説明が不十分だったのか、あるいは意図的だったのか、「ではCSSの質問をもっとしましょう」と言われました。私は内心「???」と思いながら、笑顔を保ちつつMMPという表情で質問に答え続けました。さらに、彼らが取り組んでいたのは小程序で、表現層に偏っていたため、その後の面接には参加しませんでした。
貝殻面接
貝殻の面接で受けた質問は忘れましたが、回答はうまくいきました。しかし、彼らが求めていたのはより上級で5-7年の経験を持つフロントエンドエンジニアだったため、条件に合いませんでした。
百度面接
百度の面接では、一次面接で特に印象に残ったことがありました:
面接官: 履歴書を見ると、Node関連の経験があるようですね。NodeサーバーでBlablaが発生した場合、どう対処しますか?
私: Nodeはどちらかというと使用経験がメインで、原理層にはあまり触れていません
面接官: あなたの履歴書を見て、特に目立つ点がないことに気づきました。あなたの長所を教えてください。採用したいと思わせるような点は?
私: 私はあらゆる面で平凡な人間です。特に突出した能力もなければ、特別に得意な分野もありません。フロントエンドの業務を任されても、非常に優れた成果を保証することはできませんが、Code Review時や実行時に問題がないレベルにはできます。一言でまとめれば、これといった長所はありません、申し訳ありません。
面接官:(ため息混じりに)ではいくつかページを描きますね(ページを描く)。既にUIライブラリがあり、コンポーネントを直接使用できます。Vueでどれくらいの期間で完成できますか?
私: このページは比較的シンプルで、双方向データバインディングなどの複雑なインタラクションもない純粋な表示用です。既存のコンポーネントライブラリもあるので、基本的にはコンポーネントを組み合わせる作業量で、1日あれば完成します
面接官: 本当に1日で完成するんですか?以前の面接者は、面接では優秀そうに見えたのに、実際に働き始めたら作業が遅く、とても簡単なものでも半日かかっていました
私: それは理解できます。私も面接官をしたことがあります。面接者には二種類います:ロケットを作るタイプと、ページを切るタイプです。私はその中間です。ロケットを作ったりフレームワークを書けと言われても正直無理ですが、ページを作るのは問題ありません。先ほどおっしゃった方はおそらくロケットを作るタイプだったのでしょう?理論や核心思想は立派ですが、実際の作業が遅い。おそらく御社では成長できないと感じていたのかもしれませんが、百度の肩書があれば、2年もすれば給料は倍になりますからね。
面接官: 事前に言っておきますが、うちには試用期間があります。試用期間中のパフォーマンスが不十分な場合は解雇となる可能性があります
私: それは当然です。面接も試用期間も双方向選択のプロセスです。試用期間中に仕事内容に満足できなければ、私もいつでも辞められますから。
面接官:(頷きながら)うん、わかりました。あなたについては私の面接は通過です。上司を呼びますので、彼女が最終面接を行います
しばらくして、女性の上司が来ました。
面接官: まず自己紹介をお願いします
私: blabla
面接官: 自分自身に対してどのようなキャリアプランを持っていますか?
私: 私は作業能力には問題ないと思いますが、技術的な敏感さが足りません。結局のところコンピュータサイエンスのバックグラウンドが不足しているからです。そこで最近の計画としては、Javaのような基本的な静的型付け言語を学びたいと考えています
面接官: 私もあなたくらいの年齢の時に同じように考えました。最初はフロントエンドをやっていましたが、フロントエンドには技術的な深みがないと感じ、PHPを学んでバックエンドに転向しました。私の個人的な意見では、どの言語かは重要ではなく、重要なのは特定の領域で深く掘り下げられるかどうかです
私: ごもっともです。ですから私はフロントエンド技術をもっと深く追求したいと考えており、Javaに転向するつもりはありません。Javaを学ぶのは、フロントエンド作業の意義を理解するための補助的な目的です
面接は無事に通過しました。リラックスしていたせいか、手応えを感じました。
解説パート:
あなたの面接体験談で毎回「まあまあ答えられた」と言っていますが、自己評価ではないですか?
答: いいえ、私が「まあまあ答えられた」と言っている部分は、いずれも事前に浅く深く理解していた問題で、回答時も段階的に説明できたからです。
あとがき
本記事は当時の面接体験と主観的な感想を振り返ったもので、特定企業を対象としたものではありません。不快に感じられた場合はご連絡ください、削除対応いたします。ありがとうございました!
人生の重要な選択に直面したとき、最善の方法を誰かが教えてくれて、貴重な時間を無駄にせずに済めばと、私はよく願っています。だからこそ、自分の経験を踏まえて頻繁にブログを書き、広大なインターネットのこの小さな片隅に、私にとって一度きりの人生経験を記録し、助けを求める人々の力になれればと思っています。