ASP.Net開発者への電話インタビューを受けたところ、最初の紹介事項の後、面接担当者が最初の技術的な質問をしてきました。
「Webアプリケーションの各ユーザーのクライアント側に5000要素をどのように保存しますか」。
私の答えは、
各要素の平均サイズはいくつですか?これだけの量のデータをクライアント側に保存する必要がありますか?これをデータベースに保存して、ユーザーセッション/クライアントID どういうわけかにリンクすることはできません。
彼の返答は「いいえ、各要素がint/string、通常のテーブル行を含む約8つのフィールドを持つレコードであることを考慮して、クライアント側にどのように格納するか教えてください」でした。
「それらをセッションに保持することもできますが、セッションはユーザーごとにサーバー側で維持されるため、コストが高くなる可能性があります。または、他のオプションはその量のデータをCookieに保存することです」と私は言いませんでしたそれだけのデータをCookieに保存できるかどうか確認してください。 HTML5ストレージのオプションはあるとお伝えしましたが、使用していません。 SQLiteに基づいているので、それだけのデータを格納できます理論的には。
ここでインタビュアーやや皮肉が言ったので、あなたは3年のWeb開発の経験を持ち、インタビューを終了しました。
何を間違えたのでしょうか。または、クライアント側にデータを保存することに関して欠けている本当に基本的なものはありますか?.
彼がHTML5ローカルストレージを探していた可能性があり、あなたがそれを経験することを期待していたかもしれないというコメントに同意します。
率直に言って、それが仕事の不可欠な要件であり、あなたがそれを経験したと述べていない限り、彼の期待と反応は、私の意見では、経験のある人にとっては不合理です。
どうして?
3年前、仕様としてのHTML5はまだ初期段階にあったためです。言い換えれば、あなたにとって、具体的にはあなたのキャリアは、仕様自体の歴史と同じくらい長くあります。人を探す求人を見るのは珍しいことではありません製品の使用経験よりも、製品の使用経験が豊富です。仕様全体全体で同じことが発生することはめったにありません。そのため、このような宝石を見つけたことを称賛します。
しかし、もっと真剣に、問題は面接担当者が過度にあいまいな質問をあなたに尋ねて、あなたをそれにあまりに厳しく判断することにあるようです。特に開発分野では、面接担当者が漠然とした質問をすることは珍しくありません。通常、これはあなたがどう思うか、そしてあなたの最初の本能があなたをどこに導くかを測ろうとするために行われます。 そのためには、そのようなデータをローカルに保存する必要性を質問することでうまくいきました。これらの質問自体は悪いことではありませんが、何が面接担当者が彼らと行うことは、あなたにとって悪い結果につながる可能性があります(おそらく、そのような面接の終了は、おそらく、とにかくその会社で働きたくないことを意味します)。
現在、会社のビジネスニーズにより、何らかの理由でローカルストレージを使用する必要があった可能性があります。その場合は、職務の説明にその旨を明記しておく必要があります。また、トレーニングやその他の方法で提供できない、または提供できないと感じた場合に履歴書にそのような経験が反映されない場合は、実行可能な候補として除外されているはずです。テクノロジーに精通するための時間と手段を備えた新入社員。
ローカルストレージ自体については、前述したように、仕様としてのHTML5は約3年間しか使用されておらず、寛大で、「最後の呼び出し」のドラフトを数えています。次に、ブラウザーのサポートの問題が発生します。これには長い履歴がある場合とない場合があります(たとえば、 一方、名前と値のペアはHTML5の統合前に広くサポートされていましたが、IndexedDBとWeb SQL DBはまだ大ざっぱです )。
最後に、HTML5ローカルストレージの使用はまだ一般的ではありません。 Web開発者としての私の年に、私はそれをすべて一度に利用していることがわかっているアプリに遭遇しました(目に見えない形でそれを使用するアプリがあるかもしれませんが、それを定量化するのは難しいです)、そしておそらく6つのプロジェクトかもしれないそれを利用することができる(しかし実際には必要としなかったその時点でそれらを必要とする、またはそのアプローチを別のアプローチと比較して使用するコスト正当化されなかった)。
より一般的な意味では、面接は失敗します。ソフトウェア開発は遠いフィールドが大きすぎるため、すべてのこと(この場合、HTML5ローカルストレージのストレージ制限)の詳細をすべて知ることができず、正直である私の意見では、与えられたものを知らないことは、まだ最善の方法です(個人的には、知識のギャップを認め、埋めようとしている人よりも、自分が知らないという事実を隠そうとしている人よりも尊敬しています。 t何かを知っている)。そのことを念頭に置いて、ここで提供した情報を踏まえれば、質問は適切に処理されたと思います。 あなたが間違ったことをした場合、それはあなたが応答した方法の詳細にあるかもしれません、私たちはここではあなたを助けることができませんインタビューの非言語的な側面を評価するためのインタビュー。
「正しい」答え-少なくとも、彼らが探していたもの-は確かに HTML5 LocalStorage (Steven Burnapによる優れたリンク)でした。そして、インタビュアーはおそらくそうでした...まあ、私は技術的なフレーズは「少し ノブ 」だと思います。
これは基本的に、消去のプロセスによって到達されます。つまり、 Cookieは十分な大きさにすることはできません 、セッションは実際にはサーバー側であり、クライアント側のストレージメカニズムではありません。インタビュアーはおそらくこれは一般的な知識であり、知っておくべきであると考えました。これは、通常、データの多いUI作業でHTML5 LocalStorage機能のみが必要であり、ルールではなく例外であるという点で面白いです。人は何年もプログラムすることができ、その機能は必要ないかもしれませんが、他の人は最初のプロジェクトでそれを必要とするかもしれません。
しかし、私は通常、このような場合、それはあなたの答えの問題ではなく、あなたがどのように答えたか、そこにたどり着くまでのプロセスの問題ではありません。あなたの説明から大丈夫でしたが、私はそこにいなかったので、彼らの印象は非常に異なるかもしれません。
ほとんどの賢明なインタビュアーは、テクノロジーの1つの小さな側面をリトマステストと宣言することはありません。すべての人が素晴らしい答えを出さなければなりません...しかし、私は賢明なインタビュアーでない人とのインタビューをたくさん受けました。あなたがそのような個人に出くわすとき、そのような雑学を知ることは恩恵になることができます。
最後に、インタビューを非常に良いとは言えない方法で宣言することにより、その人がすでにイライラしていて、あなたについてすでに決定している可能性が非常に高いことに注意します(この特定の質問に対するあなたの答えは、少し)。彼らはあなたがつまずくのを待っているだけだったので、彼らはそれを指摘し、あなたが実行可能な候補者であるかどうか最初の30秒間で彼らが決定したという事実を明らかにしませんでした。
私はおそらく、「正しい」答えがすぐにわからない質問に答える方法を練習したいと思います。優雅に間違って、とにかく知識が豊富でインテリジェントに見える能力は、とっても便利なスキルです。 。 「[最新バージョンの重要なテクノロジー]の新機能」の記事を復習して、そこに戻ってください!