プログラマーにとってのデータ構造とアルゴリズムの重要性

記事ディレクトリ 

1. データ構造 [熟練]

2. アルゴリズム [豊富な演習]

3. データ構造とアルゴリズムの重要性【現実】

4.大昌面接【難しい】

5. データ構造とアルゴリズムの学び方【企画編】

1. コード量

2. ブログの重要性

3. もっと考えて、もっと絵を描く

4. おすすめの本

6. まとめ【展望】


  皆さんこんにちは、ジニンです。データ構造とアルゴリズム、この名前は誰もがよく知っていると思われます。データ構造とアルゴリズムを使いこなすことがプログラマのレベルの上限を決めると言えます。

1. データ構造 [熟練]

  データ構造は、コンピュータがデータを保存および整理する方法であり、相互に 1 つ以上の特定の関係を持つデータ要素のコレクションを指します。ソフトウェア開発では、さまざまなデータ管理要件が必要になる場合があり、その際にさまざまなデータ構造が必要になります。最も基本的なデータ構造は、配列、リンク リスト、スタック、キュー、ハッシュ テーブルなどです。

データ構造は、データ + 構造  として理解できますデータとは、客観的な物事を記述する記号であり、プログラムによって操作され、コンピュータ上に保存されるものであり、その構造にはデータの論理構造や記憶構造が含まれます。

  論理構造はコレクション構造、線形構造、ツリー構造、グラフ構造に分かれ、記憶構造は逐次記憶構造、連鎖記憶構造、インデックス記憶構造、ハッシュ(ハッシュ)記憶構造に分かれます。

  一般に、異なるタイプのデータ構造は、メモリ内の異なる形式のデータを管理し、これらのデータの追加、削除、確認、変更などの操作を実行します。

2. アルゴリズム [豊富な演習]

  アルゴリズム: 1 つまたは一連の値を入力として受け取り、1 つまたは一連の値を出力として生成する、明確に定義された計算プロセスです。簡単に言えば、アルゴリズムは、入力データを出力結果に変換するために使用される一連の計算ステップです。

  誰もが知っているように、データ構造とアルゴリズムは切り離せないものです。データ構造内のデータについては、データに対して何らかの処理を実行するために他の要件が必要になる場合もあります。たとえば、並べ替えと検索、さらには、私たちが期待する特定の目的を達成するための並べ替えと検索におけるより効率的なアルゴリズムです。

一般的なアルゴリズムの概要:

  ソートアルゴリズム: ヒルソート、直接挿入ソート、交換ソート、クイックソート、マージソート、カウンティングソート、選択ソート、ヒープソート 検索アルゴリズム
  :ハッシュ、バックトラッキング、再帰、枝刈り、赤黒ツリー、補間
  グラフ理論: 最短パス、最小スパニング ツリー、ネットワーク フロー モデリング
  動的プログラミング: ナップザック問題、最長部分列、計数問題
 アルゴリズム的思考: 二分法、貪欲アルゴリズム、分割統治

3. データ構造とアルゴリズムの重要性【現実】

  就職活動では、本校の採用者は通常、筆記試験1回+面接3回というプロセスを経て、筆記試験に合格して初めて面接に参加することができますが、この選考フォームでは筆記試験の能力が問われます。は特に重要です。

  一部の中小工場では筆記試験で選択問題20~30問+プログラミング2問が一般的ですが、一部の大規模工場の筆記試験ではプログラミング3~4問+設問がほとんどです。そして質問に答えるフォーム。そして筆記試験の難問は例外なくすべてオンラインOJプログラミングです。そして、ほとんどの答えはデータ構造とアルゴリズムを使用して行う必要があります。 NetEase も 2021 年に、プログラミングの質問を 4 つ書く方法に切り替え始めました。

   Tencent にもプログラミングに関する 5 つの質問がありますが、これらは誰もがよく知っている企業のはずです。


大昌市の筆記試験はほぼすべてアルゴリズム問題で難易度が高く、アルゴリズム問題は小、中、長文の筆記試験にのみ含まれていることから、  学生のコーディング能力に対する企業の要求はますます高くなっていることがわかります。アルゴリズムは筆記試験で試されるだけでなく、基本的には面接官にその場でコードを書かせます。ただし、アルゴリズムの能力は短期間ですぐに向上するものではなく、少なくとも半年間のアルゴリズムトレーニングの蓄積が必要です。そうでないと、実際の学校採用における筆記試験は非常に困難になるため、アルゴリズムは早めに準備する必要があります。新卒者でもBlue Bridge Cup、ACM、Baidu Starなどに参加できますが、アルゴリズムコンテストでは受賞の有無は関係なく、コンテストを通じてプログラミングのレベルを向上させる必要があります。

  私が以前投稿したオンライン OJ ルールの紹介を読んだ兄弟なら、プログラミングの問題は点を獲得するのが非常に難しいことを知っているはずです。

4.大昌面接【難しい】

  面接は簡単ではありません!筆記試験は合格しても面接で落ちたら大変です。大手工場の面接で先輩やお姉さんが面接官からよく聞かれる質問をいくつか挙げておきますので、ご参考までに。

上級 CVTE インタビュー:

1. クラスがインスタンス化するオブジェクトの数を計算するにはどうすればよいですか?
2. このクラスを継承する別の派生クラスがある場合、これら 2 つのクラスのそれぞれによってインスタンス化されるオブジェクトの数を計算するにはどうすればよいですか?
3. 共用体と構造体を理解していますか?
4. マシンがビッグ エンディアンかリトル エンディアンかをテストするにはどうすればよいですか?
5.キューとスタックについて理解していますか?
6. 2 つのスタックを持つキューを実装する方法
7. テンプレートを使用したことがありますか?
8. 2 つの数値の大きさを比較するテンプレート関数を作成します。
9.コンテナを使用したことがありますか?
10. 2 つのリンクされたリストが交差するかどうかを判断します。
11.ベクトルと配列の違い。
12.学校で行った最も満足のいくプロジェクトは何ですか? プロジェクトについて簡単に説明します

テンセントの先輩へのインタビュー:

1. 自己紹介
2. STL を学ぶには?
3. メモリ リークを検出する方法が製品に提供されている場合は?
4. プロセス間通信方式、共有メモリはどのように実装され、どのような問題が発生し、どのように解決すればよいですか?
5. TCP が信頼できるのはなぜですか? 信頼性はどのように保証されますか? なぜ三者握手なのか?スリーウェイ ハンドシェイクが信頼できるのはなぜですか?
6. HTTP データの下請け問題;
7.ベクトル関連;
8.ハッシュマップ関連;
9.赤黒ツリーの原理、時間計算量など;
10. Memcpy と memmove の違い;
11. クライアントは、サーバーに aaa を送信し、次に bbb を送信するつもりですが、aaabbb が発生する可能性があります。どのように対処すればよいですか?
12. ゲームのメール サーバーでは、プレイヤーは毎日頻繁にメールを作成したり削除したりします。膨大なデータとさまざまなサイズがあります。どのようなシナリオがあり、それらをどのように保存し、メールはどのようにメモリに保存されるのでしょうか?
13.アルゴリズムの質問を手書きで書く

百度の姉妹のインタビュー:

1. 手書きの質問 5 つプログラミングの質問 3 つ、データベース 1 つ、Linux 1 つ
2. データベースの質問 2 つ
3.アルゴリズム、挿入ソート プログラミングについてどの程度知っていますか
4. IP、TCP、ARP について話します
5. カーネルとは何ですか
6. IP層の主な機能
7.マップとセットの最下層
8. ブートストラップ、html、htmlの正式名称の使い方
9. フレームワークとライブラリの違いは何だと思いますか

10. コードの最適化
11.ハッシュ テーブル
12. シェル スクリプト
13.クイック ソートのアイデア
14.再帰とは何ですか
15. 分割統治とは何ですか、再帰との違いは何ですか16.
Web プラットフォームはどのように機能しますか
17. Linux コマンド
18.理解する 最先端の技術は何ですか、英語はどうですか、英語文献は何を知っていますか? 

  これらの面接質問では、データ構造とアルゴリズムの内容が紫色でマークされており、今後の就職活動においてデータ構造とアルゴリズムがいかに重要であるかがわかります。

5. データ構造とアルゴリズムの学び方【企画編】

1. コード量

  純粋な C や Python と比較して、データ構造とアルゴリズムによりコードの長さとコードの難易度が大幅に改善されているため、コードを書く時間を費やさずにただ読んで勉強するだけだと、学校の採用試験で大量の論文を前にすると非常に苦労するでしょう。王様の。したがって、何千もの単語を学習することは、より多くのアルゴリズムの質問を行う時間を確保することほど現実的ではありません。

2. ブログの重要性

  私は学習におけるブログの重要性を深く理解しています。ブログは自分の技術メモとしても使えます ブログを書いてみると、ああ、まだまだ理解できていないことがたくさんあることに気づきます ブログの内容を正しくするために、情報を調べてさらに学ぶことを強いられ、知識を理解する。次に、ブログは継続的な学習を促す効果もあり、ブログを書き終えるたびに大きな達成感と充実感を感じることができます。

3. もっと考えて、もっと絵を描く

  データ構造の理解できない操作や思考に直面すると、天井を見て頭で考えることができないことが多く、いざというときにもっと作業をしたり、絵を描いたり、問題を組み合わせて考えたりする必要があります。ピクチャー。

4. おすすめの本

データ構造とアルゴリズム学習の推奨事項:

Luo Yongjun 先生の「アルゴリズム コンペティション」、アルゴリズムのアイデアはシンプルかつ明確で、コードの実装はずさんではありません。

Cheng Jie の「Big Data Structure」は、ストーリーがさらに面白く、データ構造の入門書として使用できます。

魏夢舟著「シャオ・ホイのアルゴリズムの旅」では、仮想主人公シャオ・ホイの精神的な旅を通じて、アルゴリズムとデータ構造の基礎知識、複雑かつ変更可能なアルゴリズムの面接質問、およびアルゴリズムの実際の応用シナリオをコミック形式で説明します。

データ構造に関する推奨される質問:

「ソード ポインター オファー」「プログラマー コード インタビュー ガイド」 

  上記 2 冊は、データ構造とアルゴリズムを学んだ後に読むことができ、「Sword Finger Offer」のトピックの 90% を理解できれば、大規模工場のプログラマーの敷居に達していると言えます。 , Byte、Huawei、Tencentの実際の筆記試験問題、またはleetcodeのアルゴリズム問題をブラッシュアップする必要があります。

  通常、ブラッシングに関する質問については、Niuke.com や Jisuanke などを使用することをお勧めします。一定量のコードの基礎がなければ、損失が利益を上回るため、leetcod を直接ブラッシングすることはお勧めできません。

6. まとめ【展望】

  データ構造とアルゴリズムは非常に重要なコースであり、誰もが時間をかけて学ぶ価値がありますが、難しいものでもあるため、プログラマー間の格差が広がります。皆さんも私も、データ構造とアルゴリズムをよく勉強し、慎重に質問をブラッシュアップし、明確な良心を持てるようになることを願っています。最後に、皆さんも1年後、2年後に希望のオファーをもらって夢のラブファクトリーに行けますように!

おすすめ

転載: blog.csdn.net/zyb___/article/details/131884367