Leetcode で 400 の質問を完了した後、5 つの大きな経験に気づきました

元のリンク: https://dev.to/durgesh4993/after-solve-400-leetcode-questions-here-are-five-things-that-i-have-learned-c60
著者: Durgesh kumar prajapati
翻訳者: Mingming Ruyue Senior

Leetcode に関する 400 の質問に答えることに成功した後、ソフトウェア開発への理解とアプローチに大きな影響を与えた貴重な経験をいくつか得ることができました。この記事では、そこから得た5つの教訓を紹介します。

Leetcode は、仕事を探している多くのソフトウェア開発者にとって馴染みのある Web サイトで、Google、Facebook、Microsoft などのトップ企業からの技術面接の質問と解決策がまとめられています。しかし、ややこしいのは、現在、データ構造やアルゴリズムに焦点を当てた面接質問を採用する中小企業が増えていることです。そのため、「リートコードの能力」が正確な尺度ではないと考えている人もいます。 . 作業強度。

Leetcode が得意であることが優れた開発者であることと同じではなく、実際にはバイナリ ツリーを反転する必要はおそらくないという点に私も同意します。ただし、Leetcode を実践することで、キャリアにおいて重要な役割を果たす多くの貴重なことを学ぶことができます。

1) データ構造とアルゴリズムの重要性
Leetcode は包括的なデータ構造とアルゴリズム (DSA) コースを提供していないため、このプラットフォームを使用する前に、このデータ構造とアルゴリズムの基本を理解する必要があります。問題を解決する前に、データ構造とアルゴリズムの基本コースを体系的に学習することを強くお勧めします。ただし、データ構造とアルゴリズム (DSA) の基礎を築くと、Leetcode に進むとさらに強力になります。また、問題をブラッシュアップすることで、逆にデータ構造とアルゴリズムの理解が深まります。

どの開発者にとっても、強固なデータ構造の基盤を持つことが非常に重要であることは言及する価値があります。最近、優秀な外国人プレイヤーがアルゴリズムに小さな改良を加えることにより、ゲームのロード時間を 70% 短縮することに成功しました。データ構造とアルゴリズムを効果的に実装すると、大規模なアプリケーションのパフォーマンスと安定性に大きな影響を与える可能性があります。


2) あなたよりもよく知っている人は常にいます - 学習は打撃を受けて止まることは 公式が提供した回答よりもさらに優れた解決策をいくつか見てきました。Leetcode を使用して質問を解決する過程で、私が学んだことの多くは、他の人のコードを注意深く研究し、彼らの提案を自分の作業に組み込むことで得られました。

ここに画像の説明を挿入

「学ぶべきことは常にある」というこの概念は、私の職業生活にも当てはまります。幸運なことに、私には知識を惜しみなく共有し、私自身の向上を助けてくれる経験豊富な同僚がいます。他の人から学ぶというこのアプローチにより、私は彼らの専門知識を可能な限り活用することができます。

3) 一見小さな詳細が作業に重大な影響を与える可能性が
ある 正式な作業の前に、コード内のエラーは基本的に実質的な影響を及ぼしません。特定の状況下でのみ現れるバグは、気づかれないことがよくあります。ただし、すでに作業を進めている場合、コードは実稼働環境にプッシュされるため、製品に多数のユーザーがいる場合、極端な場合でもバグが発生すると、多数のユーザーに問題が発生する可能性があります。

ここに画像の説明を挿入

Leetcode は、各問題に数百のテスト ケースがあり、多くのエッジ ケースが含まれることが多いため、この種のシナリオに優れたトレーニングを提供します。エッジケースが適切に処理されない場合、コードは失敗します。

最近、適切な制約のないデータベースを扱う必要があり、多くの行に予期しない値が含まれていました。Leetcode で培ったスキルに非常に感謝しています。実稼働環境に影響が出る前に、これらの問題を特定して修正できるようになったからです。

4) 勤勉は才能よりも優れています
「才能が使われていないときは、勤勉は才能よりも優れています。」 この文は Tim Notke によるもので、特に Leetcode を使用して質問に取り組むときに、個人的に大きな影響を与えました。私は、問題解決方法や必要なツールについての経験と理解が不足していたため、中程度の難易度の問題に苦労している多くの才能ある開発者に会いました。
ここに画像の説明を挿入

最初は、Leetcode の最も単純な問題を解くのに苦労しました。しかし、いくつかのデータ構造とアルゴリズムのコースを受講し、しばらく練習した後、中程度に難しい問題のほとんど、さらにはいくつかの難しい問題を適度な時間内で解決できるようになりました。

Java プログラミング スキルを向上させるために、私は最近、Leetcode の問題解決言語を Python から Java に切り替えました。私は仕事で毎日 Java を使用していますが、これらの問題を解決することに不安を感じています。でも、気分は落ち込んでいません。十分な練習を積めば、Java のスキルは Python の熟練度と同じレベルに到達できると私は強く信じています。

5) ソフトウェア開発では戦略計画が重要です 計画は
ソフトウェア開発の中核であり、無視することはできません。実際にプログラミングをしているときでも、正式な面接を受けているときでも、コーディングはプロセスの一部にすぎないことを認識しないのは難しいでしょう。質問文を読んだ後、すぐにコーディングの段階に入るという誤解に陥りがちですが、これはよくある間違いであり、理解や思考が不十分なために満足のいく結果が得られないことがよくあります。

ソフトウェア開発は曖昧さや予期せぬ状況に満ちており、プログラミング面接では、多くの場合曖昧または不完全な質問を提供することで、この現象をシミュレートしようとします。面接官とコミュニケーションを取り、不確実性や限界について明確な説明を求めることが非常に重要です。コーディングを始める前に解決策を考え出し、その利点と限界を評価し、提案された計画に全員が同意した場合にのみコーディングを開始することをお勧めします。

そうしないと、ソリューションが時間とスペースの要件を満たさない場合、必要な変更を行うことができなくなります。同じことがプロフェッショナルな環境にも当てはまります。要件を適切に分析せず、すべてのオプションを考慮せずにコーディングを開始すると、コーディングが大規模なリファクタリングに終わる可能性があります。

結論
私個人としては、仕事を探していないときでも、幸運にも Leetcode で学び、挑戦することを楽しんできました。ただし、すべての人が同じ意見を持っているわけではなく、「時間の無駄」「問題を解決することで得た経験は実際の開発では役に立たない」と考える人もいるかもしれません。

LeetCode 個人ホームページへのリンク: https://leetcode.com/durgesh4993/

おすすめ

転載: blog.csdn.net/w605283073/article/details/131354715