2021-03-28 14:29:05 +06:00
# コーディング面接の大学
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
>私はもともとこれをソフトウェアエンジニアになるための短いトピックリストとして作成しましたが、
2023-01-09 12:03:13 +06:00
>今日それは大きなリストに成長しました。この学習計画を経て、[私はAmazonで
2017-10-30 20:17:27 +06:00
> ソフトウェアエンジニアとして雇われました!!](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)
>おそらく、あなたは私ほど勉強する必要はないでしょう。とにかく、必要なものはすべてここにあります。
2023-01-09 08:35:44 +06:00
> 私は数ヶ月間、1日約8〜12時間勉強しました。これが私のストーリーです: [Google の面接のために8か月間フルタイムで勉強した理由](https://www.freecodecamp.org/news/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
>注意してください: あなたは私ほど勉強する必要はありません。私は、知る必要のないことに多くの時間を無駄にしました。詳細については、以下をご覧ください。貴重な時間を無駄にすることなく、必要なことを勉強するのを手伝います。
2017-10-30 20:17:27 +06:00
>ここに掲載されている項目を学べば、Amazon、Facebook、Google、Microsoftなど
>大手企業を含む、ほぼすべてのソフトウェア会社の面接に備えることができます。
2017-06-11 12:23:26 +06:00
>
2017-10-30 20:17:27 +06:00
> *あなたに最高の幸運がありますように!*
2017-06-11 12:23:26 +06:00
翻訳:
2017-10-30 20:17:27 +06:00
- [中文版本 ](translations/README-cn.md )
- [TiếngViệt - ベトナム語 ](translations/README-vi.md )
- [Español ](translations/README-es.md )
2017-06-11 12:23:26 +06:00
翻訳中:
- [हिन्दी ](https://github.com/jwasham/coding-interview-university/issues/81 )
- [עברית ](https://github.com/jwasham/coding-interview-university/issues/82 )
- [インドネシア語 ](https://github.com/jwasham/coding-interview-university/issues/101 )
- [アラビア語 ](https://github.com/jwasham/coding-interview-university/issues/98 )
- [トルコ語 ](https://github.com/jwasham/coding-interview-university/issues/90 )
- [French ](https://github.com/jwasham/coding-interview-university/issues/89 )
- [ロシア語 ](https://github.com/jwasham/coding-interview-university/issues/87 )
- [ウクライナ ](https://github.com/jwasham/coding-interview-university/issues/106 )
- [ブラジルのポルトガル語 ](https://github.com/jwasham/coding-interview-university/issues/113 )
- [韓国語 ](https://github.com/jwasham/coding-interview-university/issues/118 )
- [Telugu ](https://github.com/jwasham/coding-interview-university/issues/117 )
- [Polish ](https://github.com/jwasham/coding-interview-university/issues/122 )
- [ドイツ語 ](https://github.com/jwasham/coding-interview-university/issues/135 )
- [Urdu ](https://github.com/jwasham/coding-interview-university/issues/140 )
- [タイ語 ](https://github.com/jwasham/coding-interview-university/issues/156 )
- [ギリシャ語 ](https://github.com/jwasham/coding-interview-university/issues/166 )
2021-07-29 21:54:17 +06:00
< div align = "center" >
< hr / >
< p >
< a href = "https://github.com/sponsors/jwasham" > < strong > Become a sponsor< / strong > and support Coding Interview University!< / a >
< / p >
< hr / >
< / div >
2017-10-30 20:17:27 +06:00
## これは何?
2023-10-29 10:49:49 +06:00
2023-01-09 09:48:50 +06:00
![ホワイトボードでのコーディング - HBOのシリコンバレーから ](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png )
2017-06-11 12:23:26 +06:00
2023-01-09 09:48:50 +06:00
これは、大企業のソフトウェア エンジニアになるための私の数か月にわたる学習計画です。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
**必須:**
2021-03-28 14:45:48 +06:00
2023-10-29 10:49:49 +06:00
- コーディングの経験 (変数、ループ、メソッド/関数など)
- 忍耐
- 時間
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
これは**ソフトウェア エンジニアリング**の学習計画であり、フロントエンド エンジニアリングやフルスタック開発ではないことに注意してください。
他の場所でのキャリア パスのスーパー ロードマップとコースワーク (詳細については https://roadmap.sh/ を参照)。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
大学のコンピューター サイエンス プログラムでは学ぶべきことがたくさんありますが、面接には 75% 程度知っていれば十分なので、ここではそれについて説明します。
完全な CS 独学プログラムについては、私の学習計画のリソースがカムラン アーメッドのコンピューター サイエンス ロードマップに含まれています: https://roadmap.sh/computer-science
2017-06-11 12:23:26 +06:00
---
## 目次
2021-04-02 10:03:48 +06:00
2023-10-30 09:45:40 +06:00
### 学習計画
- [なぜこれを使用するのか ](#なぜこれを使用するのか )
- [使い方 ](#使い方 )
- [自信を無くさないでください ](#自信を無くさないでください )
- [ビデオリソースに関する注意 ](#ビデオリソースに関する注意 )
- [プログラミング言語を選択してください ](#プログラミング言語を選択してください )
- [データ構造とアルゴリズムに関する書籍 ](#データ構造とアルゴリズムに関する書籍 )
- [面接対策本 ](#面接対策本 )
- [私と同じ間違いを犯さないでください ](#私と同じ間違いを犯さないでください )
- [取り上げられていないもの ](#取り上げられていないもの )
- [日次計画 ](#日次計画 )
- [コーディングに関する質問の練習 ](#コーディングに関する質問の練習 )
- [コーディングの問題 ](#コーディングの問題 )
### 研究のテーマ
- [アルゴリズムの複雑さ/ Big-O / Asymptotic解析 ](#アルゴリズムの複雑さ-big-o--asymptotic解析 )
- [データ構造 ](#データ構造 )
- [その他の知識 ](#その他の知識 )
- [木 ](#木 )
- [ソート ](#ソート )
- [グラフ ](#グラフ )
- [さらに多くの知識 ](#さらに多くの知識 )
- [システム設計、スケーラビリティ、データ処理 ](#システム設計スケーラビリティデータ処理 )
- [最終レビュー ](#最終レビュー )
- [コーディングの質問練習 ](#コーディングの質問練習 )
- [コード演習/挑戦 ](#コード演習挑戦 )
- [面接に近づいたら ](#面接に近づいたら )
- [あなたの履歴書 ](#あなたの履歴書 )
- [面接が来たときに考えてください ](#面接が来たときに考えてください )
- [面接官に質問があります ](#面接官に質問があります )
- [一度あなたは仕事を得た ](#一度あなたは仕事を得た )
- [その他の書籍 ](#その他の書籍 )
- [その他の学習 ](#その他の学習 )
- [追加科目の詳細 ](#追加科目の詳細 )
- [ビデオシリーズ ](#ビデオシリーズ )
- [コンピュータサイエンスコース ](#コンピュータサイエンスコース )
2017-06-11 12:23:26 +06:00
2021-04-02 11:48:13 +06:00
## なぜこれを使用するのか
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
大企業でソフトウェア エンジニアとして働きたいのであれば、これらのことを知っておく必要があります。
私のようにコンピューター サイエンスの学位を取得できなかった場合は、これで人生の 4 年間取り戻すことができます。
このプロジェクトを始めたとき、私はヒープからのスタックのことも、Big-O のことも、木についても、何も知りませんでした。
グラフを横断します。もし私が並べ替えアルゴリズムをコーディングしなければならなかったとしたら、それは酷いことになるでしょう。
私がこれまで使用してきたデータ構造はすべて言語に組み込まれており、それがどのように機能するのかわかりませんでした。
ボンネットの下にはまったくありません。実行しているプロセスで「不足」が発生しない限り、メモリを管理する必要はありませんでした。
「memory」エラーが発生した場合は、回避策を見つける必要があります。私は人生でいくつかの多次元配列を使用しましたが、
何千もの連想配列を作成しましたが、データ構造を最初から作成したことはありません。
2023-01-09 11:48:28 +06:00
2023-10-29 10:49:49 +06:00
長い計画ですね。何か月もかかるかもしれません。しかし、すでにこの内容の多くに精通している場合は、時間ははるかに短くなります。
2023-01-09 11:48:28 +06:00
2023-10-29 10:49:49 +06:00
## 使い方
2017-10-30 20:17:27 +06:00
2023-10-29 10:49:49 +06:00
以下はすべて概要であり、順に項目に取り組む必要があります。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
私は進捗状況を追跡するためのタスク リストを含む、GitHub 風マークダウン を使用しています。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
- [GitHub 風マークダウンの詳細 ](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown )
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
### git を使用したくない場合
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
このページで、上部近くの「Code」ボタンをクリックし、「Download ZIP」をクリックします。ファイルを解凍すると、テキスト ファイルを操作できるようになります。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
マークダウンを理解できるコード エディターで開いている場合は、すべてが適切にフォーマットされていることを確認できます。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
![リポジトリを zip ファイルとしてダウンロードする方法 ](https://d3j2pkmjtin6ou.cloudfront.net/how-to-download-as-zip.png )
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
### git に慣れている場合
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
新しいブランチを作成して、次のような項目を確認できるようにします。括弧内に x を入力するだけです: [x]
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
1. **_GitHub リポジトリ:_** `https://github.com/jwasham/coding-interview-university` をフォーク ボタンをクリックしてフォークします。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
![GitHub リポジトリをフォークする ](https://d3j2pkmjtin6ou.cloudfront.net/fork-button.png )
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
1. ローカル リポジトリにクローンを作成します。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
```
git clone https://github.com/< YOUR_GITHUB_USERNAME > /coding-interview-university.git
cd coding-interview-university
git remote add upstream https://github.com/jwasham/coding-interview-university.git
git remote set-url --push upstream DISABLE # 個人の進捗を元のレポにプッシュバックしないようにするため
```
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
1. 変更を完了したら、すべてのボックスに X を付けます。
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
```
git commit -am "Marked personal progress"
git pull upstream main # 元のレポからの変更でフォークを最新に保つ
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
git push # フォークにプッシュするだけ
2023-10-29 10:49:49 +06:00
```
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
## 自信を無くさないでください
2017-06-11 12:23:26 +06:00
2023-10-29 10:49:49 +06:00
- 成功した多くのソフトウェア エンジニアは自分が十分に賢くないのではないかという不安を抱えています。
- 次のビデオは、この不安を解消するのに役立ちます。
- [天才プログラマーの神話 ](https://www.youtube.com/watch?v=0SARbwvhupQ )
- [一人で行動するのは危険です: テクノロジーにおける目に見えないモンスターとの戦い ](https://www.youtube.com/watch?v=1i8ylq4j_EY )
2017-10-30 20:17:27 +06:00
2017-06-11 12:23:26 +06:00
---
2023-10-30 09:45:40 +06:00
## ビデオリソースに関する注意
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
一部のビデオは、Coursera または EdX クラスに登録することによってのみ視聴できます。
これらは MOOC と呼ばれます。
場合によっては、クラスが開催されていないため、数か月待たなければならず、アクセスできないこともあります。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
オンラインコースのリソースを、YouTube ビデオ (できれば大学の講義) など、いつでも利用できる無料の公開ソースに置き換えて、特定のオンラインコースの開催中だけでなく、いつでも学習できるようにするのは素晴らしいことです。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## プログラミング言語を選択してください
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
コーディング面接に使用するプログラミング言語を選択する必要がありますが、コンピューターサイエンスの概念を学習するために使用できる言語も見つける必要があります。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
できれば、どちらか 1 つの言語に習熟するだけで済むように、言語が同じであることが望ましいです。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### この学習計画について
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
学習計画を立てたとき、そのほとんどで C と Python の 2 つの言語を使用しました。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
* C: 非常に低いレベル。ポインタとメモリの割り当て / 割り当て解除を処理できるため、データ構造を実感できます。
そしてアルゴリズムが骨の中に組み込まれています。Python や Java などの高水準言語では、これらは表示されません。日々の仕事ではそれは素晴らしいことですが、これらの低レベルのデータ構造がどのように構築されるかを学んでいるときは、実際に近いと感じるのは素晴らしいことです。
- C はどこにでもあります。勉強していると、書籍、講義、ビデオなど、*あらゆる場所*で例を見ることができます。
- [C プログラミング言語 第 2 版 ](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628 )
- これは短い本ですが、少し練習すれば C 言語をうまく扱えるようになります。
すぐに上達します。C を理解すると、プログラムとメモリがどのように機能するかを理解するのに役立ちます。
- 本を深く読み込む必要はありません( 読み終える必要さえありません) 。C で快適に読み書きできるところまで進んでください。
* Python: 現代的で表現力が非常に豊かです。非常に便利で、面接で記述するコードの量も少なくて済むため、私はこれを学びました。
これが私の好みです。もちろん、好きなことをしてください。
必要ないかもしれませんが、新しい言語を学習するためのサイトをいくつか紹介します。
- [exercism ](https://exercism.org/tracks )
- [codewars ](http://www.codewars.com )
- [HackerEarth ](https://www.hackerearth.com/for-developers/ )
- [SCALER Topics (Java、C++) ](https://www.scaler.com/topics/ )
### コーディング面接用
面接のコーディング部分には、使い慣れた言語を使用できますが、大企業の場合は、次の言語を選択するのが確実です。
- C++
2017-06-11 12:23:26 +06:00
- Java
- Python
2023-10-30 09:45:40 +06:00
これらを使用することもできますが、最初に読んでください。注意事項がある場合があります:
2017-06-11 12:23:26 +06:00
- JavaScript
- Ruby
2023-10-30 09:45:40 +06:00
面接の言語の選択について私が書いた記事は次のとおりです:
[Pick One Language for the Coding Interview ](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/ ).
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
これは私の投稿の元の記事です:
[Choosing a Programming Language for Interviews ](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/ )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
言語に非常に慣れており、知識が豊富である必要があります。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
選択肢について詳しくは、次を参照してください。
- [Choose the Right Language for Your Coding Interview ](http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/ )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
[ここで言語固有のリソースを参照してください ](programming-language-resources.md )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## データ構造とアルゴリズムに関する書籍
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### C
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- [Algorithms in C, Parts 1-5 (Bundle), 3rd Edition ](https://www.amazon.com/Algorithms-Parts-1-5-Bundle-Fundamentals/dp/0201756080 )
- 基礎、データ構造、並べ替え、検索、およびグラフのアルゴリズム
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### Python
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- [Data Structures and Algorithms in Python ](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/ )
- グッドリッチ、タマッシア、ゴールドワッサー著
- この本が大好きでした。それはすべてを網羅し、それ以上のものでした。
- Python コード
- 私の素晴らしい本のレポート: https://startupnextdoor.com/book-report-data-structions-and-algorithms-in-python/
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### Java
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- Goodrich、Tamassia、Goldwasser
- [Data Structures and Algorithms in Java ](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/ )
- セッジウィックとウェイン:
- [Algorithms ](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ )
- この本をカバーする無料の Coursera コース (著者が教えます!):
- [Algorithms I ](https://www.coursera.org/learn/algorithms-part1 )
- [Algorithms II ](https://www.coursera.org/learn/algorithms-part2 )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### C++
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- Goodrich、Tamassia、および Mount
- [Data Structures and Algorithms in C++, 2nd Edition ](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383275 )
- Sedgewick と Wayne
- [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching ](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/ )
- [Algorithms in C++ Part 5: Graph Algorithms ](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/ )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## 面接対策本
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
たくさん買う必要はありません。正直なところ、「コーディング面接の攻略」で十分だと思いますが、さらに練習するためにさらに購入しました。しかし、私はいつもやりすぎます。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
これを両方購入しました。彼らは私にたくさんの練習をさせてくれました。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- [Programming Interviews Exposed: Coding Your Way Through the Interview, 4th Edition ](https://www.amazon.com/Programming-Interviews-Exposed-Through-Interview/dp/111941847X/ )
- C++ および Java での回答
- これコーディング面接を突破するための良いウォーミングアップです
- それほど難しいことではありません。ほとんどの問題は、インタビューで見られるものよりも簡単かもしれません (私が読んだ内容によると)
- [Cracking the Coding Interview, 6th Edition ](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/ )
- Java での回答
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### 時間がたくさんある場合:
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
1 つ選択してください:
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- [Elements of Programming Interviews (C++ version) ](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836 )
- [Elements of Programming Interviews in Python ](https://www.amazon.com/Elements-Programming-Interviews-Python-Insiders/dp/1537713949/ )
- [Elements of Programming Interviews (Java version) ](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/ )
- [Companion Project - Method Stub and Test Cases for Every Problem in the Book ](https://github.com/gardncl/elements-of-programming-interviews )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## 私と同じ間違いを犯さないでください
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
このリストは何か月もかけて大きくなり、はい、手に負えなくなりました。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
より良い経験をしていただくために、私が犯したいくつかの間違いを以下に示します。そして、何か月も時間を節約できます。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### 1. すべてを覚えているわけではない
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
時間もビデオを見て大量のメモを取りましたが、数か月後には覚えていないことがたくさんありました。
3日間かけてメモを見直し、フラッシュカードを作成して復習しましたが、そんな知識は必要ありませんでした。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
私と同じ間違いを犯さないように、
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
[Retaining Computer Science Knowledge ](https://startupnextdoor.com/retaining-computer-science-knowledge/ ) を読んでください。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### 2. フラッシュカードを使用する
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
この問題を解決するために、一般とコードの 2 種類のフラッシュカードを追加できる小さなフラッシュカード サイトを作成しました。
各カードには異なる形式があります。どこにいても携帯電話やタブレットでレビューできるように、モバイルファーストのウェブサイトを作成しました。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
無料で独自に作成します。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- [Flashcards site repo ](https://github.com/jwasham/computer-science-flash-cards )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
**フラッシュカードの使用はお勧めしません。** フラッシュカードが多すぎて、ほとんどがトリビアです。必要ありません。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
しかし、私の言うことを聞きたくない場合は、ここからどうぞ:
- [My flash cards database (1200 cards) ](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham.db ):
- [My flash cards database (extreme - 1800 cards) ](https://github.com/jwasham/computer-science-flash-cards/blob/main/cards-jwasham-extreme.db ):
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
やりすぎて、アセンブリ言語や Python のトリビアから機械学習や統計まで、あらゆるものをカバーするカードがあることに注意してください。
必要なものが多すぎます。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
**フラッシュカードに関する注意:** 初めて答えを知っていると気づいたときは、その答えを既知としてマークしないでください。
本当に理解するには、同じカードを見て何度か正しく答える必要があります。
繰り返すことで知識が脳に深く定着します。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
私のフラッシュカード サイトを使用する代わりに、[Anki](http://ankisrs.net/) が私に何度も勧められてきました。
繰り返しシステムを使用しているので、覚えやすくなります。ユーザーフレンドリーで、すべてのプラットフォームで利用でき、クラウド同期システムを備えています。
iOS では 25 ドルかかりますが、他のプラットフォームでは無料です。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
Anki 形式のフラッシュカード データベース: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya ](https://github.com/xiewenya )).
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
一部の学生は、空白に関する書式の問題について次の手順を実行することで修正できると述べています。デッキを開いて、カードを編集し、カードをクリックし、「スタイル」ラジオ ボタンを選択して、メンバー「white-space: pre;」を追加します。カードクラスへ。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### 3. 学習中にコーディング面接の質問をする
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
これは非常に重要です。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
データ構造とアルゴリズムを学習しながら、コーディング面接の質問に答え始めます。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
問題を解決するには、学んだことを応用する必要があります。そうしないと忘れてしまいます。私はこの間違いを犯しました。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
トピックを学習し、**リンク リスト** などにある程度慣れたら:
2023-10-30 18:44:18 +06:00
1. [面接対策本 ](#面接対策本 )のいずれかを開きます(または、以下にリストされているコーディングに関する問題の Web サイト)
2023-10-30 09:45:40 +06:00
1. 次の学習トピックに進みます。
1. その後、戻って別の 2 つまたは 3 つのリンク リストの問題を解きます。
1. 新しいトピックを学ぶたびにこれを行います。
2017-10-30 20:17:27 +06:00
2023-10-30 09:45:40 +06:00
**学習後ではなく、学習している間も問題を解き続けてください。**
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
あなたは知識のために雇われているのではなく、その知識をどのように応用するかによって雇われているのです。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
以下に示すように、これに関する多くのリソースがあります。続けて。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
### 4. 集中する
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
気を散らすものがたくさんあり、貴重な時間が奪われてしまう可能性があります。集中力と集中力は難しいです。歌詞のない音楽をかける
と、かなり集中できるようになります。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## 取り上げられていないもの
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
以下は一般的なテクノロジですが、この学習計画には含まれていません:
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
- Javascript
- HTML、CSS、およびその他のフロントエンドテクノ ロジ
- SQL
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## 日次計画
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
このコースでは多くの主題について説明します。おそらくそれぞれに数日、場合によっては 1 週間以上かかる場合があります。それはあなたのスケジュール次第です。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
毎日、リストの次の主題を取り上げ、その主題に関するビデオをいくつか見てから、
このコース用に選択した言語でそのデータ構造またはアルゴリズムの実装を作成します。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
私のコードはここで見ることができます:
- [C ](https://github.com/jwasham/practice-c )
- [C++ ](https://github.com/jwasham/practice-cpp )
- [Python ]( https://github.com/jwasham/practice-python )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
すべてのアルゴリズムを覚える必要はありません。独自の実装を作成できる程度に理解できれば十分です。
## コーディングに関する質問の練習
なぜこれがここにあるのでしょうか? 面接する準備ができていません。
2023-10-30 18:44:18 +06:00
[その後、戻ってこれを読んでください。 ](#学習中にコーディング面接の質問をする )
2023-10-30 09:45:40 +06:00
プログラミングの問題を練習する必要がある理由:
- 問題の認識、および適切なデータ構造とアルゴリズムがどこに適合するか
- 問題の要件を収集する
- 面接で行うのと同じように、問題について自分なりに説明する
- コンピューターではなく、ホワイトボードまたは紙にコーディングする
- 解決策のための時間と空間の複雑さを考え出す (下記の Big-O を参照)
- テストあなたの解決策
面接で体系的かつコミュニケーション的に問題を解決するための素晴らしい入門書があります。これはプログラミングのインタビュー本からもわかります
が、私はこれが素晴らしいと思いました:
[Algorithm design canvas ](http://www.hiredintech.com/algorithm-design/ )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
コードを紙ではなく、ホワイトボードまたは紙に書きます。コンピューター。いくつかのサンプル入力を使用してテストします。次に、それを入力してコンピュータでテストします。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
家にホワイトボードがない場合は、画材店で大きな描画パッドを購入してください。ソファに座って練習することもできます。
こちらは私の「ソファホワイトボード」です。写真ではスケールを調整するためにペンを追加しました。ペンを使っていると、消せたらいいのにと思うでしょう。
すぐに散らかります。**鉛筆と消しゴムを使用します。**
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
![my sofa whiteboar ](https://d3j2pkmjtin6ou.cloudfront.net/art_board_sm_2.jpg )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
**コーディングの問題の練習は、プログラミングの問題の答えを覚えることではありません。**
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## コーディングの問題
2017-06-11 12:23:26 +06:00
2023-10-30 18:44:18 +06:00
[ここ ](#面接対策本 ) の主要なコーディング インタビュー ブックを忘れないでください。
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
問題の解決:
- [How to Find a Solution ](https://www.topcoder.com/thrive/articles/How%20To%20Find%20a%20Solution )
- [How to Dissect a Topcoder Problem Statement ](https://www.topcoder.com/thrive/articles/How%20To%20Dissect%20a%20Topcoder%20Problem%20Statement%20Content )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
コーディング インタビューの質問ビデオ:
- [IDeserve (88 videos) ](https://www.youtube.com/playlist?list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI )
- [Tushar Roy (5 playlists) ](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd )
- 問題解決策のウォークスルーに最適
- [Nick White - LeetCode Solutions (187 Videos) ](https://www.youtube.com/playlist?list=PLU_sdQYzUj2keVENTP0a5rdykRSgg9Wp- )
- ソリューションとコードの適切な説明
- 短時間で何本も視聴できる
- [FisherCoder - LeetCode Solutions ](https://youtube.com/FisherCoder )
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
チャレンジ/練習サイト:
- [LeetCode ](https://leetcode.com/ )
- 私のお気に入りのコーディングの問題サイト。おそらく準備する 1 ~ 2 か月分の購読料を払う価値があります。
- コードのウォークスルーについては、上記の Nick White と FisherCoder のビデオを参照してください。
- [HackerRank ](https://www.hackerrank.com/ )
- [TopCoder ](https://www.topcoder.com/ )
- [Codeforces ](https://codeforces.com/ )
- [Codility ](https://codility.com/programmers/ )
- [Geeks for Geeks ](https://practice.geeksforgeeks.org/explore/?page=1 )
- [AlgoExpert ](https://www.algoexpert.io/product )
- Google のエンジニアによって作成されたこれは、スキルを磨くための優れたリソースでもあります。
- [Project Euler ](https://projecteuler.net/ )
- 非常に数学に重点が置かれており、コーディング面接にはあまり適していません
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
## 始めましょう
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
さて、話は十分です、学びましょう!
2017-06-11 12:23:26 +06:00
2023-10-30 09:45:40 +06:00
ただし、学習中に上記のコーディング問題に取り組むことを忘れないでください。
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## アルゴリズムの複雑さ/ Big-O / Asymptotic解析
2023-11-01 19:01:06 +06:00
- ここでは何も実装する必要はありません。ビデオを見てメモを取るだけです。わーい!
- ここにはたくさんのビデオがあります。理解できるまで十分に見てください。いつでも戻ってレビューすることができます。
- 背後にある数学がすべて理解できなくても心配する必要はありません。
- Big-O の観点からアルゴリズムの複雑さを表現する方法を理解する必要があるだけです。
- [ ] [ハーバード CS50 - 漸近記法 (動画) ](https://www.youtube.com/watch?v=iOq5kSKqeR4 )
- [ ] [Big O Notations (一般的なクイック チュートリアル) (動画) ](https://www.youtube.com/watch?v=V6mKVRU1evU )
- [ ] [Big O Notation (およびオメガとシータ) - 最良の数学的説明 (動画) ](https://www.youtube.com/watch?v=ei-A_wy5Yxw&index=2&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN )
- [ ] [スキエナ ](https://www.youtube.com/watch?v=z1mkCe3kVUA )
- [ ] [カリフォルニア大学バークレー校ビッグオー (動画) ](https://archive.org/details/ucberkeley_webcast_VIS4YDpuP98 )
- [ ] [償却分析 (動画) ](https://www.youtube.com/watch?v=B3SpQZaAZP4&index=10&list=PL1BaGV1cIH4UhkL8a9bJGG356covJ76qN )
- [ ] TopCoder (漸化式とマスター定理を含む):
- [計算の複雑さ: セクション 1 ](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20one )
- [計算の複雑さ: セクション 2 ](https://www.topcoder.com/thrive/articles/Computational%20Complexity%20part%20two )
2017-06-11 12:23:26 +06:00
- [ ] [チートシート ](http://bigocheatsheet.com/ )
2023-11-01 19:01:06 +06:00
- [ ] [【復習】5分でわかるBig-O記譜法( 動画) ](https://youtu.be/__vX2sjlpXU )
2017-06-11 12:23:26 +06:00
2023-11-01 19:01:06 +06:00
まあ、それだけで十分です。
2017-06-11 12:23:26 +06:00
2023-11-01 19:01:06 +06:00
「コーディング インタビューの解読」を進めると、これに関する章があり、最後に、さまざまなアルゴリズムの実行時の複雑さを特定できるかどうかを確認するクイズがあります。それはスーパーレビューとテストです。
2017-06-11 12:23:26 +06:00
## データ構造
2021-03-28 14:29:05 +06:00
- ### 配列
2023-11-01 19:01:06 +06:00
- [ ] 配列について:
- [アレイ CS50 ハーバード大学 ](https://www.youtube.com/watch?v=tI_tIZFyKBw&t=3009s )
- [配列 (動画) ](https://www.coursera.org/lecture/data-structures/arrays-OsBSF )
- [UC Berkeley CS61B - Linear and Multi-Dim Arrays (動画) (15 分 32 秒から視聴開始) ](https://archive.org/details/ucberkeley_webcast_Wp8oiO_CZZE ) (Start watching from 15m 32s)
- [動的配列 (動画) ](https://www.coursera.org/lecture/data-structures/dynamic-arrays-EwbnV )
- [ギザギザ配列 (動画) ](https://www.youtube.com/watch?v=1jtrQqYpt7g )
- [ ] ベクトルを実装します (自動サイズ変更を備えた可変配列):
- [ ] 配列とポインターを使用したコーディングと、インデックスを使用する代わりにインデックスにジャンプするポインターの計算を練習します。
- [ ] メモリが割り当てられた新しい生データ配列
- 内部で int 配列を割り当てることができますが、その機能は使用できません
- 16 から開始するか、開始番号がそれより大きい場合は、2 のべき乗 - 16、32、64、128 を使用します。
- [ ] size() - アイテムの数
- [ ] Capacity() - 保持できるアイテムの数
- [ ] is_empty()
- [ ] at(index) - 指定されたインデックスにある項目を返します。インデックスが範囲外の場合は爆発します。
- [ ] プッシュ(アイテム)
- [ ] insert(index, item) - インデックスに項目を挿入し、そのインデックスの値と末尾の要素を右にシフトします
- [ ] prepend(item) - インデックス 0 の上に挿入を使用できます
- [ ] Pop() - 末尾から削除し、値を返します
- [ ] delete(index) - インデックスにある項目を削除し、末尾の要素をすべて左にシフトします
- [ ]remove(item) - 値を検索し、それを保持するインデックスを削除します (複数の場所にある場合でも)
- [ ] find(item) - 値を検索し、その値を持つ最初のインデックスを返します。見つからない場合は -1 を返します。
- [ ]size(new_capacity) // プライベート関数
- 容量に達したら、サイズを 2 倍に変更します
- アイテムをポップするとき、サイズが容量の 1/4 の場合、サイズを半分に変更します
- [ ] 時間
- O(1) は、最後に追加/削除 (より多くの領域の割り当てのために償却)、インデックス付け、または更新を行います。
- O(n) は他の場所に挿入/削除します
- [ ] 空間
- メモリ内で連続しているため、近接性によりパフォーマンスが向上します
- 必要なスペース = (配列の容量、>= n) * 項目のサイズ、ただし 2n であっても O(n)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- ### 連結リスト
2017-06-11 12:23:26 +06:00
- [ ] 説明:
2023-11-01 19:01:06 +06:00
- [ ] [単独連結されたリスト(動画) ](https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists )
2017-10-30 20:17:27 +06:00
- [ ] [CS 61B - 連結リスト1(動画) ](https://www.youtube.com/watch?v=htzJdKoEmO0&list=PL4BBB74C7D2A1049C&index=7 )
- [ ] [CS 61B - 連結リスト2(動画) ](https://www.youtube.com/watch?v=-c4I3gFYe3w&index=8&list=PL4BBB74C7D2A1049C )
2023-11-01 19:01:06 +06:00
- [ ] [[レビュー] 4 分でわかるリンクリスト (動画)](https://youtu.be/F8AbOfQwl1c)
2017-06-11 12:23:26 +06:00
- [ ] [Cコード(動画) ](https://www.youtube.com/watch?v=QN6FPiD0Gzo )
2023-11-01 19:01:06 +06:00
- ビデオ全体ではなく、ノード構造とメモリ割り当てに関する部分のみ
- [ ] 連結リストと配列:
- [コア連結リストと配列 (動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays )
- [現実世界の連結リストと配列 (動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/quaUd/in-the-real-world-lists-vs )
- [ ] [連結リスト(動画)を避けるべき理由 ](https://www.youtube.com/watch?v=YQs6IC-vgmo )
- [ ] 注意事項: ポインタからポインタへの知識が必要です: (ポインタが指すアドレスを変更する可能性のある関数にポインタを渡すときのため) このページは、ptr から ptr への理解だけを目的としています。このリスト走査スタイルはお勧めしません。賢いため、可読性と保守性が低下します。
2017-10-30 20:17:27 +06:00
- [ポインターへのポインター ](https://www.eskimo.com/~scs/cclass/int/sx8.html )
2017-06-11 12:23:26 +06:00
- [ ] 実装する(私はテールポインタ&なしで行った):
- [ ] size() - リスト内のデータ要素の数を返す
- [ ] empty() - 空の場合はboolを返します
- [ ] value_at(index) - n番目の項目の値を返します(最初は0から始まります)
- [ ] push_front(value) - リストの先頭に項目を追加します
- [ ] pop_front() - 前面アイテムを削除してその値を返します
2017-10-30 20:17:27 +06:00
- [ ] push_back(value) - 最後に項目を追加する
2017-06-11 12:23:26 +06:00
- [ ] pop_back() - 終了アイテムを削除し、その値を返します
- [ ] front() - フロントアイテムの値を取得する
- [ ] back() - 終了項目の値を取得する
- [ ] insert(index、value) - インデックスに値を挿入するので、そのインデックスの現在のアイテムはインデックスの新しいアイテムによってポイントされます
- [ ] erase(index) - 指定したインデックスのノードを削除する
- [ ] value_n_from_end(n) - リストの最後からn番目のノ ードの値を返します
2017-10-30 20:17:27 +06:00
- [ ] reverse() - リストを反転する
2017-06-11 12:23:26 +06:00
- [ ] remove_value(value) - この値を持つリストの最初の項目を削除します。
2017-10-30 20:17:27 +06:00
- [ ] 二重連結リスト
2023-11-01 19:01:06 +06:00
- [説明(動画) ](https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists )
2017-06-11 12:23:26 +06:00
- 実装する必要はありません
2017-10-30 20:17:27 +06:00
- ### スタック
2023-11-01 19:01:06 +06:00
- [ ] [スタック (動画) ](https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks )
- [ ] [【復讐】3分でわかるスタック( 動画) ](https://youtu.be/KcT3aVgrrpU )
- [ ] 実装しません。配列を使った実装は簡単です
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- ### キュー
2023-11-01 19:01:06 +06:00
- [ ] [キュー(動画) ](https://www.coursera.org/learn/data-structures/lecture/EShpq/queue )
2017-10-30 20:17:27 +06:00
- [ ] [環状バッファ/ FIFO ](https://en.wikipedia.org/wiki/Circular_buffer )
2023-11-01 19:01:06 +06:00
- [ ] [【復習】3分でわかるキュー( 動画) ](https://youtu.be/D6gu-_tmEpQ )
2017-10-30 20:17:27 +06:00
- [ ] テールポインタ付き連結リストを使って実装する:
- enqueue(value) - テールの位置に値を追加する
- dequeue() - 値を返し、少なくとも最近追加された要素を削除する(前面)
2023-01-09 11:48:28 +06:00
- empty()
2017-06-11 12:23:26 +06:00
- [ ] 固定長配列を使って実装する:
2017-10-30 20:17:27 +06:00
- enqueue(value) - 利用可能なストレージの最後にアイテムを追加する
2017-06-11 12:23:26 +06:00
- dequeue() - 値を返し、最近追加された要素のうち最も古い要素を削除します
2023-01-09 11:48:28 +06:00
- empty()
2017-06-11 12:23:26 +06:00
- full()
- [ ] コスト:
2023-11-01 19:01:06 +06:00
- 先頭でエンキューし、末尾でデキューするリンク リストを使用した悪い実装では、最後から 2 番目の要素が必要になるため、O(n) となり、各デキューの完全な走査が発生します。
2017-10-30 20:17:27 +06:00
- enqueue: O(1)(償却、連結リストと配列[プロービング])
- dequeue: O(1)(連結リストと配列)
- empty: O(1)(連結リストと配列)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- ### ハッシュテーブル
2017-06-11 12:23:26 +06:00
- [ ] 動画:
2023-11-01 19:01:06 +06:00
- [ ] [チェーンを使用したハッシュ (動画) ](https://www.youtube.com/watch?v=0M_kIqhwbFo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=8 )
- [ ] [テーブルダブリング、Karp-Rabin (動画) ](https://www.youtube.com/watch?v=BRO7mVIFt08&index=9&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
2017-06-11 12:23:26 +06:00
- [ ] [公開アドレス指定、暗号化ハッシング(動画) ](https://www.youtube.com/watch?v=rvdJDijO2Ro&index=10&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
2023-11-01 19:01:06 +06:00
- [ ] [PyCon 2010: 強力な辞書 (動画) ](https://www.youtube.com/watch?v=C4Kc8xzcA68 )
- [ ] [PyCon 2017: 辞書がさらに強力に (動画)) ](https://www.youtube.com/watch?v=66P5FMkWoVU )
- [ ] [(上級)Randomization: ユニバーサル& 完全 ハッシング(動画) ](https://www.youtube.com/watch?v=z0lJ2k0sl1g&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=11 )
2017-10-30 20:17:27 +06:00
- [ ] [(高度)完全ハッシング(動画) ](https://www.youtube.com/watch?v=N0COwN14gt0&list=PL2B4EEwhKD-NbwZ4ezj7gyc_3yNrojKM9&index=4 )
2023-11-01 19:01:06 +06:00
- [ ] [【復習】4分でわかるハッシュテーブル( 動画) ](https://www.youtube.com/watch?v=knV86FlSXJ8 )
2017-06-11 12:23:26 +06:00
- [ ] オンラインコース:
2023-11-01 19:01:06 +06:00
- [ ] [コアハッシュテーブル(動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables )
- [ ] [データ構造(動画) ](https://www.coursera.org/learn/data-structures/home/week/3 )
- [ ] [電話帳の問題(動画) ](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem )
2017-06-11 12:23:26 +06:00
- [ ] 分散ハッシュテーブル:
2023-11-01 19:01:06 +06:00
- [Dropbox でのインスタント アップロードとストレージの最適化 (動画) ](https://www.coursera.org/learn/data-structures/lecture/DvaIb/instant-uploads-and-storage-optimization-in-dropbox )
- [分散ハッシュテーブル(動画) ](https://www.coursera.org/learn/data-structures/lecture/tvH8H/distributed-hash-tables )
2017-06-11 12:23:26 +06:00
- [ ] 線形プロービングを使用して配列で実装する
- hash(k、m) - mはハッシュテーブルのサイズです
- add(key、value) - キーがすでに存在する場合は、値を更新します。
2017-10-30 20:17:27 +06:00
- exists(キー)
2017-06-11 12:23:26 +06:00
- get(key)
2017-10-30 20:17:27 +06:00
- remove(キー)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
## その他の知識
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- ### 二分探索
- [ ] [二分探索(動画) ](https://www.youtube.com/watch?v=D5SrAga1pno )
2023-11-01 19:01:06 +06:00
- [ ] [二分探索(動画) ](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search )
2017-06-11 12:23:26 +06:00
- [ ] [詳細 ](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/ )
2023-11-01 19:01:06 +06:00
- [ ] [ブループリント ](https://leetcode.com/discuss/general-discussion/786126/python-powerful-ultimate-binary-search-template-solved-many-problems )
- [ ] [【復習】4分でわかる二分探索( 動画) ](https://youtu.be/fDKIpRe8GW4 )
2017-06-11 12:23:26 +06:00
- [ ] 実装:
2017-10-30 20:17:27 +06:00
- 二分探索(ソートされた整数の配列)
- 再帰を利用した二分探索
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
- ### ビット演算
2023-11-01 19:01:06 +06:00
- [ ] [ビットチートシート ](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/bits-cheat-sheet.pdf )
- (2^1 から 2^16 および 2^32) までの 2 のべき乗の多くを知っておく必要があります
2017-06-11 12:23:26 +06:00
- [ ] &、|、^、〜、>>、< < を使ってビットを操作することについての本当の理解を得る
2023-11-01 19:01:06 +06:00
- [ ] [言語 ](https://en.wikipedia.org/wiki/Word_(computer_architecture ))
2017-10-30 20:17:27 +06:00
- [ ] [良いイントロ:ビット操作(動画) ](https://www.youtube.com/watch?v=7jkIUgLC29I )
2023-11-01 19:01:06 +06:00
- [ ] [Cプログラミングチュートリアル2-10: ビット演算子(動画) ](https://www.youtube.com/watch?v=d0AwjSpNXR0 )
2017-06-11 12:23:26 +06:00
- [ ] [ビット操作 ](https://en.wikipedia.org/wiki/Bit_manipulation )
2017-10-30 20:17:27 +06:00
- [ ] [ビット演算 ](https://en.wikipedia.org/wiki/Bitwise_operation )
2017-06-11 12:23:26 +06:00
- [ ] [Bithacks ](https://graphics.stanford.edu/~seander/bithacks.html )
- [ ] [The Bit Twiddler ](http://bits.stephan-brumme.com/ )
2017-10-30 20:17:27 +06:00
- [ ] [インタラクティブなBit Twiddler ](http://bits.stephan-brumme.com/interactive.html )
2017-06-11 12:23:26 +06:00
- [ ] 2と1の補数
2023-11-01 19:01:06 +06:00
- [バイナリ: Plusses& Minuses(なぜ2の補数を使うのか)(動画) ](https://www.youtube.com/watch?v=lKTsv6iVxV4 )
2017-10-30 20:17:27 +06:00
- [1の補数 ](https://en.wikipedia.org/wiki/Ones%27_complement )
- [2の補数 ](https://en.wikipedia.org/wiki/Two%27s_complement )
2017-06-11 12:23:26 +06:00
- [ ] カウントセットビット
2023-11-01 19:01:06 +06:00
- [1バイトのビットを数える4つの方法(動画) ](https://youtu.be/Hzuzo9NJrlc )
2017-10-30 20:17:27 +06:00
- [カウントビット ](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan )
- [セットビットの数を32ビット整数で数える方法 ](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32ビット整数 )
2023-11-01 19:01:06 +06:00
- [ ] カウントセットビット:
- [バイト内のビットを数える 4 つの方法 (動画) ](https://youtu.be/Hzuzo9NJrlc )
- [ビットをカウントする ](https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan )
- [32 ビット整数のセットビット数を数える方法 ](http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer )
2017-06-11 12:23:26 +06:00
- [ ] スワップ値:
2017-10-30 20:17:27 +06:00
- [スワップ ](http://bits.stephan-brumme.com/swap.html )
2021-08-26 11:49:07 +06:00
- [ ] 絶対値:
2017-06-11 12:23:26 +06:00
- [絶対整数 ](http://bits.stephan-brumme.com/absInteger.html )
## 木
2017-10-30 20:17:27 +06:00
- ### 木 - メモと背景
2023-11-01 19:01:06 +06:00
- [ ] [シリーズ: Core Trees(動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees )
- [ ] [シリーズ:木々(動画) ](https://www.coursera.org/learn/data-structures/lecture/95qda/trees )
2017-06-11 12:23:26 +06:00
- 基本的な木の構築
- トラバーサル
- 操作アルゴリズム
- BFS(幅優先検索)
- [MIT(動画) ](https://www.youtube.com/watch?v=s-CYnVz-uh4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=13 )
2023-01-09 11:48:28 +06:00
- メモ:
- レベルオーダー(BFS、キューを使用)
- 時間複雑度: O(n)
- 空間の複雑さ: 最適: O(1)、最悪: O(n / 2)= O(n)
2017-06-11 12:23:26 +06:00
- DFS(深さ優先探索)
- [MIT(動画) ](https://www.youtube.com/watch?v=AfSk24UTFS8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=14 )
2023-01-09 11:48:28 +06:00
- メモ:
- 時間複雑度: O(n)
- 空間の複雑さ: 最良: O(log n) - 平均。木の高さ 最悪: O(n)
- inorder(DFS: left、self、right)
- postorder(DFS: left、right、self)
- preorder(DFS: 自己、左、右)
2023-02-10 05:15:32 +06:00
- [ ] [[Review] Breadth-first search in 4 minutes (video)](https://youtu.be/HZ5YTanv5QE)
- [ ] [[Review] Depth-first search in 4 minutes (video)](https://youtu.be/Urx87-NMm6c)
- [ ] [[Review] Tree Traversal (playlist) in 11 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO1JC2RgEi04nLy6D-rKk6b)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- ### 二分探索木: BST
- [ ] [二分探索木レビュー(動画) ](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6 )
2023-11-01 19:01:06 +06:00
- [ ] [シリーズ(動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/p82sw/core-introduction-to-binary-search-trees )
2017-06-11 12:23:26 +06:00
- シンボルテーブルから始まり、BSTアプリケーションを経由します
2023-11-01 19:01:06 +06:00
- [ ] [はじめに(動画) ](https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction )
2017-06-11 12:23:26 +06:00
- [ ] [MIT(動画) ](https://www.youtube.com/watch?v=9Jry5-82I68 )
- C / C ++:
2023-11-01 19:01:06 +06:00
- [ ] [二分探索木 - C / C ++での実装(動画) ](https://www.youtube.com/watch?v=COZK7NATh4k&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=28 )
- [ ] [BSTの実装 - スタックとヒープのメモリ割り当て(動画) ](https://www.youtube.com/watch?v=hWokyBoo0aI&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=29 )
- [ ] [二分探索木(動画)の最小要素と最大要素を検索 ](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P )
- [ ] [二分木の高さを見つける(動画) ](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31 )
- [ ] [二分木トラバース - 幅優先戦略(動画) ](https://www.youtube.com/watch?v=9RHO6jU--GU&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=32 )
2017-10-30 20:17:27 +06:00
- [ ] [二分木:レベルオーダートラバーサル(動画) ](https://www.youtube.com/watch?v=86g8jAQug04&index=33&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P )
- [ ] [二分木トラバーサル: Preorder、Inorder、Postorder(video) ](https://www.youtube.com/watch?v=gm8DUJJhmY4&index=34&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P )
2023-11-01 19:01:06 +06:00
- [ ] [二分木が二分探索木かどうかを確認する(動画) ](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P )
- [ ] [二分探索木(動画)からノードを削除 ](https://www.youtube.com/watch?v=gcULXE7ViZw&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=36 )
- [ ] [二分探索木(動画)のInorder Successor ](https://www.youtube.com/watch?v=5cPbNCrdotA&index=37&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P )
2017-06-11 12:23:26 +06:00
- [ ] 実装:
2017-10-30 20:17:27 +06:00
- [ ] insert //木に値を挿入する
2017-06-11 12:23:26 +06:00
- [ ] get_node_count //格納された値の数を取得する
2017-10-30 20:17:27 +06:00
- [ ] print_values //最小値から最大値まで木の値を出力します
2023-01-08 16:46:09 +06:00
- [ ] delete_tree
2017-10-30 20:17:27 +06:00
- [ ] is_in_tree //与えられた値が木に存在する場合はtrueを返します
2017-06-11 12:23:26 +06:00
- [ ] get_height //ノードの高さを返します(単一ノ ードの高さは1です)
2017-10-30 20:17:27 +06:00
- [ ] get_min //木に格納されている最小値を返します
- [ ] get_max //木に格納されている最大値を返します
2017-06-11 12:23:26 +06:00
- [ ] is_binary_search_tree
- [ ] delete_value
2017-10-30 20:17:27 +06:00
- [ ] get_successor //指定された値の後に木の次に高い値を返し、存在しなければ-1を返します
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- ### ヒープ/優先度つきキュー/二分ヒープ
- 木として可視化されますが、通常はストレージ内で線形です(配列、連結リスト)
2017-06-11 12:23:26 +06:00
- [ ] [ヒープ ](https://en.wikipedia.org/wiki/Heap_(data_structure ))
2023-11-01 19:01:06 +06:00
- [ ] [はじめに(動画) ](https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction )
2017-10-30 20:17:27 +06:00
- [ ] [ナイーブな実装(video) ](https://www.coursera.org/learn/data-structures/lecture/z3l9N/naive-implementations )
2023-11-01 19:01:06 +06:00
- [ ] [二分木(動画) ](https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees )
- [ ] [木の高さ備考(動画) ](https://www.coursera.org/learn/data-structures/supplement/S5xxz/tree-height-remark )
- [ ] [基本的な操作(動画) ](https://www.coursera.org/learn/data-structures/lecture/0g1dl/basic-operations )
- [ ] [完全な二分木(動画) ](https://www.coursera.org/learn/data-structures/lecture/gl5Ni/complete-binary-trees )
- [ ] [疑似コード(動画) ](https://www.coursera.org/learn/data-structures/lecture/HxQo9/pseudocode )
- [ ] [ヒープソート - ジャンプして開始(動画) ](https://youtu.be/odNJmw5TOEE?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291 )
- [ ] [ヒープソート(動画) ](https://www.coursera.org/learn/data-structures/lecture/hSzMO/heap-sort )
- [ ] [ヒープを作る(動画) ](https://www.coursera.org/learn/data-structures/lecture/dwrOS/building-a-heap )
- [ ] [MIT: ヒープとヒープソート(動画) ](https://www.youtube.com/watch?v=B7hVxCmfPtM&index=4&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
- [ ] [CS 61B講義24: 優先度つきキュー(動画) ](https://www.youtube.com/watch?v=yIUFT6AKBGE&index=24&list=PL4BBB74C7D2A1049C )
2017-10-30 20:17:27 +06:00
- [ ] [線形時間BuildHeap(max-heap) ](https://www.youtube.com/watch?v=MiyLo8adrWw )
2023-02-10 05:15:32 +06:00
- [ ] [[Review] Heap (playlist) in 13 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNsyqgPW-DNwUeT8F8uhWc6)
2017-06-11 12:23:26 +06:00
- [ ] 最大ヒープを実装する:
2017-10-30 20:17:27 +06:00
- [ ] insert
2017-06-11 12:23:26 +06:00
- [ ] sift_up - 挿入に必要
- [ ] get_max - 最大項目を削除せずに返します
- [ ] get_size() - 格納された要素の数を返す
- [ ] is_empty() - ヒープに要素が含まれていない場合はtrueを返します。
- [ ] extract_max - 最大アイテムを返し、それを削除します。
- [ ] sift_down - extract_maxに必要です
2023-01-09 11:48:28 +06:00
- [ ] remove(x) - インデックスxのアイテムを削除する
2017-06-11 12:23:26 +06:00
- [ ] heapify - heap_sortに必要な要素の配列からヒープを作成する
- [ ] heap_sort() - ソートされていない配列を取り出し、最大ヒープを使用してソート済みの配列に変換します
2017-10-30 20:17:27 +06:00
- 注意: 代わりにminヒープを使用すると、操作が節約されますが、必要な領域が2倍になります([in-place](https://ja.wikipedia.org/wiki/In-place%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)では実行できません)。
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
## ソート
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- [ ] note:
2017-06-11 12:23:26 +06:00
- ソートを実装し、最良のケース/最悪のケース、それぞれの平均的な複雑さを知る:
- バブルソートなし - ひどい - O(n ^ 2)、ただしn < = 16の場合を除く
- ソートアルゴリズムの安定性( "Quicksortは安定していますか? ")
- [ソートアルゴリズムの安定性 ](https://en.wikipedia.org/wiki/Sorting_algorithm#Stability )
2017-10-30 20:17:27 +06:00
- [ソートアルゴリズムの安定性 ](http://stackoverflow.com/questions/1517793/stability-in-sorting-algorithms )
- [ソートアルゴリズムの安定性 ](http://www.geeksforgeeks.org/stability-in-sorting-algorithms/ )
2017-06-11 12:23:26 +06:00
- [ソートアルゴリズム - 安定性 ](http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf )
2017-10-30 20:17:27 +06:00
- [ ] 連結リストで使用できるアルゴリズムはどれですか?どの配列ですか?両方でどちら?
- 連結リストのソートはお勧めしませんが、マージソートは実行可能です。
- [連結リストのマージソート ](http://www.geeksforgeeks.org/merge-sort-for-linked-list/ )
2017-06-11 12:23:26 +06:00
- ヒープソートについては、上記のヒープデータ構造を参照してください。ヒープソートは素晴らしいですが、安定していません。
- [ ] [バブルソート(動画) ](https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB )
- [ ] [バブルソートの分析(動画) ](https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB )
- [ ] [挿入ソート、マージソート(動画) ](https://www.youtube.com/watch?v=Kg4bqzAqRBM&index=3&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
2017-10-30 20:17:27 +06:00
- [ ] [挿入ソート(動画) ](https://www.youtube.com/watch?v=c4BRHC7kTaQ&index=2&list=PL89B61F78B552C1AB )
2017-06-11 12:23:26 +06:00
- [ ] [マージソート(動画) ](https://www.youtube.com/watch?v=GCae1WNvnZM&index=3&list=PL89B61F78B552C1AB )
- [ ] [クイックソート(動画) ](https://www.youtube.com/watch?v=y_G9BkAm6B8&index=4&list=PL89B61F78B552C1AB )
- [ ] [選択ソート(動画) ](https://www.youtube.com/watch?v=6nDMgr0-Yyo&index=8&list=PL89B61F78B552C1AB )
- [ ] マージソートコード:
- [ ] [出力配列(C)の使用 ](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/sorting/mergesort.c )
2017-10-30 20:17:27 +06:00
- [ ] [出力配列(Python)の使用 ](https://github.com/jwasham/practice-python/blob/master/merge_sort/merge_sort.py )
2017-06-11 12:23:26 +06:00
- [ ] [インプレース(C ++) ](https://github.com/jwasham/practice-cpp/blob/master/merge_sort/merge_sort.cc )
- [ ] クイックソートコード:
- [ ] [Implementation(C) ](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c )
- [ ] [実装(C) ](https://github.com/jwasham/practice-c/blob/master/quick_sort/quick_sort.c )
- [ ] [実装(Python) ](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py )
2023-02-10 05:15:32 +06:00
- [ ] [[Review] Sorting (playlist) in 18 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOZSbGAXAPIq1BeUf4j20pl)
- [ ] [Quick sort in 4 minutes (video) ](https://youtu.be/Hoixgm4-P4M )
- [ ] [Heap sort in 4 minutes (video) ](https://youtu.be/2DmK_H7IdTo )
- [ ] [Merge sort in 3 minutes (video) ](https://youtu.be/4VqmGXwpLqc )
- [ ] [Bubble sort in 2 minutes (video) ](https://youtu.be/xli_FI7CuzA )
- [ ] [Selection sort in 3 minutes (video) ](https://youtu.be/g-PGLbMth_g )
- [ ] [Insertion sort in 2 minutes (video) ](https://youtu.be/JU767SDMDvA )
2017-06-11 12:23:26 +06:00
- [ ] 実装:
- [ ] Mergesort: O(n log n)平均と最悪の場合
- [ ] Quicksort O(n log n)平均の場合
- 選択ソートと挿入ソートは両方ともO(n ^ 2)の平均と最悪の場合です
- ヒープソートについては、上記のヒープデータ構造を参照してください。
- [ ] 必須ではありませんが、私はそれらをお勧めしました:
2017-10-30 20:17:27 +06:00
- [ ] [Sedgewick - 基数ソート(6 videos) ](https://www.youtube.com/playlist?list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53 )
- [ ] [1. Javaの文字列 ](https://www.youtube.com/watch?v=zRzU-FWsjNU&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=6 )
- [ ] [2. キーインデックスのカウント ](https://www.youtube.com/watch?v=CtgKYmXs62w&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=5 )
- [ ] [3. 最下位桁の最初の文字列の基数ソート ](https://www.youtube.com/watch?v=2pGVq_BwPKs&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=4 )
- [ ] [4. 最も重要な数字の最初の文字列の基数ソート ](https://www.youtube.com/watch?v=M3cYNY90R6c&index=3&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53 )
- [ ] [5. 基数ソートの3つの方法 ](https://www.youtube.com/watch?v=YVl58kfE6i8&index=2&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53 )
2017-06-11 12:23:26 +06:00
- [ ] [6。接尾辞配列 ](https://www.youtube.com/watch?v=HKPrVm5FWvg&list=PLe-ggMe31CTcNvUX9E3tQeM6ntrdR8e53&index=1 )
- [ ] [基数ソート ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#radixSort )
- [ ] [基数ソート(動画) ](https://www.youtube.com/watch?v=xhr26ia4k38 )
2023-11-01 19:01:06 +06:00
- [ ] [基数ソート、ソート(線形時間指定の制約)(動画) ](https://www.youtube.com/watch?v=Nz1KZXbghj8&index=7&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
- [ ] [ランダム化: 行列乗算、クイックソート、Freivaldsのアルゴリズム(動画) ](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
- [ ] [線形時間で並べ替える(動画) ](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14 )
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
まとめとして、ここには[15ソートアルゴリズム](https://www.youtube.com/watch?v=kPRA0W1kECg)の視覚的表現があります。
2017-06-11 12:23:26 +06:00
このテーマの詳細が必要な場合は、[いくつかの科目の追加の詳細]の[ソート]の項を参照してください(#additional-detail-on-some-subjects)
2021-03-28 14:29:05 +06:00
## グラフ
2017-06-11 12:23:26 +06:00
グラフはコンピュータサイエンスの多くの問題を表現するために使用することができるので、このセクションは木やソートのように長いです。
2023-01-09 11:48:28 +06:00
- メモ:
2017-06-11 12:23:26 +06:00
- メモリにグラフを表示するには4つの基本的な方法があります:
- オブジェクトとポインタ
- 隣接行列
- 隣接リスト
2017-10-30 20:17:27 +06:00
- 隣接マップ
- それぞれの表現とその長所と短所を熟知してください
2017-06-11 12:23:26 +06:00
- BFSとDFS - 計算の複雑さとそのトレードオフ、そしてそれらを実際のコードに実装する方法を知っている
2017-10-30 20:17:27 +06:00
- 質問が表示されたら、まずグラフベースのソリューションを探し、それがなければ進んでください。
2017-06-11 12:23:26 +06:00
- [ ] Skiena Lectures - 素晴らしいイントロ:
2023-11-01 19:01:06 +06:00
- [ ] [CSE373 2012 - 講義11 - グラフデータ構造(動画) ](https://www.youtube.com/watch?v=OiXxhDrFruw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=11 )
- [ ] [CSE373 2012 - 講義12 - 幅優先検索(動画) ](https://www.youtube.com/watch?v=g5vF8jscteo&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=12 )
- [ ] [CSE373 2012 - 講義13 - グラフアルゴリズム(動画) ](https://www.youtube.com/watch?v=S23W6eTcqdY&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=13 )
- [ ] [CSE373 2012 - 講義14 - グラフアルゴリズム(1)(動画) ](https://www.youtube.com/watch?v=WitPBKGV0HY&index=14&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
- [ ] [CSE373 2012 - 講義15 - グラフアルゴリズム(2)(動画)(動画) ](https://www.youtube.com/watch?v=ia1L30l7OIg&index=15&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
- [ ] [CSE373 2012 - 講義16 - グラフアルゴリズム(3)(動画) ](https://www.youtube.com/watch?v=jgDOQq6iWy8&index=16&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
2017-06-11 12:23:26 +06:00
- [ ] グラフ(レビューなど):
2023-11-01 19:01:06 +06:00
- [ ] [6.006単一始点最短経路問題(動画) ](https://www.youtube.com/watch?v=Aa2sqUhIn-E&index=15&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
- [ ] [6.006 ダイクストラ(動画) ](https://www.youtube.com/watch?v=2E7MmKv0Y24&index=16&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
- [ ] [6.006 ベルマン-フォード法(動画) ](https://www.youtube.com/watch?v=ozsuci5pIso&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=17 )
- [ ] [6.006 ダイクストラ法のスピードアップ(動画) ](https://www.youtube.com/watch?v=CHvQ3q_gJ7E&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=18 )
- [ ] [Aduni: グラフアルゴリズムI - トポロジカルソート、最小スパニング木、プリムのアルゴリズム - 講演6(動画) ](https://www.youtube.com/watch?v=i_AQT_XfvD8&index=6&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm )
- [Aduni: グラフアルゴリズムII - DFS、BFS、クラスカル法のアルゴリズム、連合探索データ構造 - 講義7(動画) ](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7 )
- [Aduni: グラフアルゴリズムIII: 最短経路 - レクチャー8(動画) ](https://www.youtube.com/watch?v=DiedsPsMKXc&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=8 )
- [ ] [Aduni: グラフアルゴリズムIV: 幾何学アルゴリズムの紹介 - 第9講(動画) ](https://www.youtube.com/watch?v=XIAQRlNkJAw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=9 )
- [ ] [CS 61B 2014(58:09から開始)(動画) ](https://youtu.be/dgjX4HdMI-Q?list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&t=3489 )
- [ ] [CS 61B 2014: 加重グラフ(動画) ](https://www.youtube.com/watch?v=aJjlQCFwylA&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=19 )
- [ ] [欲張りアルゴリズム:最小スパニング木(動画) ](https://www.youtube.com/watch?v=tKwnms5iRBU&index=16&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
- [ ] [強固に接続されたコサラジュのアルゴリズムグラフアルゴリズム(動画) ](https://www.youtube.com/watch?v=RpgcYiky7uw )
2023-02-10 05:15:32 +06:00
- [ ] [[Review] Shortest Path Algorithms (playlist) in 16 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw)
- [ ] [[Review] Minimum Spanning Trees (playlist) in 4 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- フルcourseraコース:
2023-11-01 19:01:06 +06:00
- [ ] [グラフのアルゴリズム(動画) ](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome )
2017-06-11 12:23:26 +06:00
- 私は実装します:
- [ ] 隣接リストを持つDFS(再帰的)
- [ ] 隣接リストを持つDFS(スタックで反復)
- [ ] 隣接行列を持つDFS(再帰的)
- [ ] 隣接行列を持つDFS(スタックで反復)
2017-10-30 20:17:27 +06:00
- [ ] 隣接リストを持つBFS
- [ ] 隣接行列を持つBFS
- [ ] 単一始点の最短経路(ダイクストラ)
- [ ] 最小スパニング木
2017-06-11 12:23:26 +06:00
- DFSベースのアルゴリズム(上記のAduniの動画を参照):
2017-10-30 20:17:27 +06:00
- [ ] サイクルをチェックする(トポロジカルソートに必要.開始前にサイクルをチェックする)
2017-06-11 12:23:26 +06:00
- [ ] トポロジカルソート
- [ ] グラフ内の接続されたコンポーネントをカウントする
- [ ] 強く接続されたコンポーネントを一覧表示する
- [ ] 二部グラフをチェックする
2017-10-30 20:17:27 +06:00
Skienaの本(下記の書籍の節を参照)と面接の書籍
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## さらに多くの知識
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 再帰
2017-10-30 20:17:27 +06:00
- [ ] 再帰とバックトラックに関するスタンフォードの講義:
2023-11-01 19:01:06 +06:00
- [ ] [講義8 |プログラミングの抽象化(動画) ](https://www.youtube.com/watch?v=gl3emqCuueQ&list=PLFE6E58F856038C69&index=8 )
- [ ] [講義9 |プログラミングの抽象化(動画) ](https://www.youtube.com/watch?v=uFJhEPrbycQ&list=PLFE6E58F856038C69&index=9 )
- [ ] [講義10 |プログラミングの抽象化(動画) ](https://www.youtube.com/watch?v=NdF1QDTRkck&index=10&list=PLFE6E58F856038C69 )
- [ ] [講義11 |プログラミングの抽象化(動画) ](https://www.youtube.com/watch?v=p-gpaIGRCQI&list=PLFE6E58F856038C69&index=11 )
2017-06-11 12:23:26 +06:00
- それを使用するのが適切なとき
- 尾の再帰はどのように優れていないのですか?
- [ ] [テール再帰とは何かなぜそれが悪いのですか? ](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad )
2023-11-01 19:01:06 +06:00
- [ ] [テール再帰(動画) ](https://www.coursera.org/lecture/programming-languages/tail-recursion-YZic1 )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 動的プログラミング
2023-01-09 11:48:28 +06:00
- 面接で動的プログラミングの問題が見られることはおそらくないでしょうが、問題が動的プログラミングの候補であると認識できることは価値があります。
2017-10-30 20:17:27 +06:00
- この問題はかなり難しいかもしれません。なぜなら、それぞれのDP可溶性問題は再帰関係として定義されなければならず、それを思い付くのは難しいかもしれないからです。
2017-06-11 12:23:26 +06:00
- DPの問題の多くの例を見て、あなたが関連するパターンをしっかりと理解するまでお勧めします。
- [ ] 動画:
- Skienaのビデオは、時には見ることができないほど小さすぎるホワイトボードを使用することがあるため、フォローするのが難しい場合があります
2023-11-01 19:01:06 +06:00
- [ ] [Skiena: CSE373 2012 - 講義19 - 動的プログラミング入門(動画) ](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718 )
- [ ] [Skiena: CSE373 2012 - 講義20 - 編集距離(動画) ](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749 )
- [ ] [Skiena: CSE373 2012 - 講義21 - 動的プログラミング例(動画) ](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406 )
- [ ] [Skiena: CSE373 2012 - 講義22 - 動的プログラミングのアプリケーション(動画) ](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22 )
- [ ] [Simonson: 動的プログラミング0(59:18から開始)(動画) ](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558 )
- [ ] [Simonson: 動的プログラミングI - 講義11(動画) ](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm )
- [ ] [Simonson: 動的プログラミングII - 講演12(動画) ](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12 )
2017-06-11 12:23:26 +06:00
- [ ] 個々のDP問題のリスト(それぞれ短い):
[動的プログラミング(動画) ](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr )
2017-10-30 20:17:27 +06:00
- [ ] イェール講義ノート:
2017-06-11 12:23:26 +06:00
- [ ] [動的プログラミング ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicプログラミング )
- [ ] Coursera:
2023-11-01 19:01:06 +06:00
- [ ] [RNA二次構造の問題(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem )
- [ ] [動的プログラミングのアルゴリズム(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm )
- [ ] [DPアルゴリズムの説明(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm )
- [ ] [DPアルゴリズムの実行時間(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm )
- [ ] [DP Vs 再帰的実装(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation )
- [ ] [グローバル対配列アライメント(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment )
- [ ] [ローカル対配列アライメント(動画) ](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment )
2017-06-11 12:23:26 +06:00
- ### オブジェクト指向プログラミング
- [ ] [オプション: UML 2.0シリーズ(動画) ](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc )
- [ ] オブジェクト指向ソフトウェアエンジニアリング: UMLとJavaを使ったソフトウェア開発(21ビデオ):
2017-10-30 20:17:27 +06:00
- OOとOOの設計方法を十分に理解している場合は、これをスキップできます。
2017-06-11 12:23:26 +06:00
- [OOSE: UMLとJavaを使用したソフトウェア開発 ](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO )
- [ ] SOLID OOP原則:
2023-11-01 19:01:06 +06:00
- [ ] [Bob Martin SOLIDオブジェクト指向とアジャイルデザインの原則(動画) ](https://www.youtube.com/watch?v=TMuno5RZNeE )
- [ ] [SOLID原則(動画) ](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A )
2017-10-30 20:17:27 +06:00
- [ ] S - [単一責任の原則 ](http://www.oodesign.com/single-responsibility-principle.html )| [各オブジェクトへの単一責任 ](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html )
2017-06-11 12:23:26 +06:00
- [もっと味 ](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk )
2017-10-30 20:17:27 +06:00
- [ ] O - [オープン/クローズの原則l ](http://www.oodesign.com/open-close-principle.html )| [プロダクションレベルではオブジェクトは拡張の準備ができていますが、変更はできません ](https://en.wikipedia.org/wiki/Open/closed_principle )
2017-06-11 12:23:26 +06:00
- [もっと風味 ](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en )
2017-10-30 20:17:27 +06:00
- [ ] L - [リスコフの置換原則 ](http://www.oodesign.com/liskov-s-substitution-principle.html )| [基本クラスと派生クラスは `IS A`プリンシパルに従います ](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle )
2017-06-11 12:23:26 +06:00
- [もっと風味 ](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=ja )
2017-10-30 20:17:27 +06:00
- [ ] I - [インタフェース分離の原則 ](http://www.oodesign.com/interface-segregation-principle.html )|クライアントは、使用しないインタフェースを強制的に実装するべきではありません
2023-11-01 19:01:06 +06:00
- [インタフェース分離の原則5分(動画) ](https://www.youtube.com/watch?v=3CtAfl7aXAQ )
2017-06-11 12:23:26 +06:00
- [もっと味 ](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi&hl=ja )
2021-08-26 11:49:07 +06:00
- [ ] D - [依存性逆転の原則 ](http://www.oodesign.com/dependency-inversion-principle.html )|オブジェクトの構成における依存関係を減らす。
- [なぜ依存関係の逆転の原則とそれが重要なのか ](http://stackoverflow.com/questions/62539/what-is-the-dependency-inversion-principle-and-why-is-it-important )
2017-06-11 12:23:26 +06:00
- [もっと味 ](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz&hl=ja )
- ### デザインパターン
2023-11-01 19:01:06 +06:00
- [ ] [クイックUMLレビュー(動画) ](https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc&index=3 )
2017-06-11 12:23:26 +06:00
- [ ] これらのパターンを学ぶ:
2017-10-30 20:17:27 +06:00
- [ ] Strategy(戦略)
- [ ] Singleton(単一要素)
- [ ] Adapter(アダプタ)
- [ ] Prototype(原型)
- [ ] Decorator(装飾者)
- [ ] Visitor(訪問者)
- [ ] Factory,AbstractFactory(工場、抽象工場)
- [ ] Facade(外見)
- [ ] Observer(観察者)
- [ ] Proxy(代理)
- [ ] Delegate(委任)
- [ ] Command(命令)
- [ ] State(状態)
- [ ] Memento(記念品)
- [ ] Iterator(イテレータ)
- [ ] Composite(合成)
- [ ] Flyweight(フライ級)
2023-11-01 19:01:06 +06:00
- [ ] [第6章(パート1) - パターン(動画) ](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344 )
- [ ] [第6章(パート2) - 抽象化 - 発生、一般階層、プレーヤーロール、シングルトン、オブザーバー、代表団(動画) ](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO )
- [ ] [第6章(パート3) - アダプタ、ファサード、変更不可、読み取り専用インターフェイス、プロキシ(動画) ](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO )
2017-10-30 20:17:27 +06:00
- [ ] [ビデオシリーズ(27ビデオ) ](https://www.youtube.com/playlist?list=PLF206E906175C7E07 )
2017-06-11 12:23:26 +06:00
- [ ] [ヘッドファーストデザインパターン ](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124 )
- 正式な本は「デザインパターン: 再利用可能なオブジェクト指向ソフトウェアの要素」であることは分かっていますが、ヘッドファーストはOOの初心者には最適です。
2017-10-30 20:17:27 +06:00
- [ ] [参考: 開発者のための101のデザインパターンとヒント ](https://sourcemaking.com/design-patterns-and-tips )
2017-06-11 12:23:26 +06:00
- [ ] [人間のデザインパターン ](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns )
2021-03-28 14:45:48 +06:00
- ### 組み合わせ(nCk)と確率
2023-11-01 19:01:06 +06:00
- [ ] [数学のスキル:階乗、順列、組み合わせの見つけ方(選択)(動画) ](https://www.youtube.com/watch?v=8RRo6Ti9d0U )
- [ ] [学校を作る:確率(動画) ](https://www.youtube.com/watch?v=sZkAAk9Wwa4 )
- [ ] [学校を作る:確率とマルコフ連鎖(動画) ](https://www.youtube.com/watch?v=dNaJg-mLobQ )
2017-06-11 12:23:26 +06:00
- [ ] Khan Academy:
- コースのレイアウト:
- [ ] [基本理論的確率 ](https://www.khanacademy.org/math/probability/probability-and-combinatorics-topic )
- ちょうどビデオ - 41(それぞれ単純で、それぞれ短いです):
2023-11-01 19:01:06 +06:00
- [ ] [確率の説明(動画) ](https://www.youtube.com/watch?v=uzkc-qNVoOk&list=PLC58778F28211FA19 )
2017-10-30 20:17:27 +06:00
- ### NP、NP-完全/近似アルゴリズム
- 巡回セールスマン問題やナップザック問題など、NP完全問題の最も有名なクラスについて知りましょう。
そうすれば面接官がこれらについて偽装して尋ねるとき、それらを認識することができます。
- NP完全の意味を知る。
2023-11-01 19:01:06 +06:00
- [ ] [計算上の複雑さ(動画) ](https://www.youtube.com/watch?v=moPtwq_cVH8&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=23 )
2017-06-11 12:23:26 +06:00
- [ ] Simonson:
2023-11-01 19:01:06 +06:00
- [ ] [貪欲アルゴリズム。 II& NP完全性へのイントロ(動画) ](https://youtu.be/qcGnJ47Smlo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=2939 )
- [ ] [NP完全性II& リダクション(動画) ](https://www.youtube.com/watch?v=e0tGC6ZQdQE&index=16&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm )
- [ ] [NP完全性III(動画) ](https://www.youtube.com/watch?v=fCX1BGT3wjE&index=17&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm )
- [ ] [NP完全性IV(動画) ](https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18 )
2017-06-11 12:23:26 +06:00
- [ ] スキナ:
2023-11-01 19:01:06 +06:00
- [ ] [CSE373 2012 - 講義23 - NP完全性の紹介(動画) ](https://youtu.be/KiK5TVgXbFg?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1508 )
- [ ] [CSE373 2012 - 講義24 - NP完全性の証明(動画) ](https://www.youtube.com/watch?v=27Al52X3hd4&index=24&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
- [ ] [CSE373 2012 - 講演25 - NP完全性への挑戦(動画) ](https://www.youtube.com/watch?v=xCPH4gwIIXM&index=25&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
- [ ] [複雑さ: P、NP、NP完全性、削減(動画) ](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22 )
- [ ] [複雑さ:近似アルゴリズム(動画) ](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24 )
- [ ] [複雑さ:固定パラメータアルゴリズム(動画) ](https://www.youtube.com/watch?v=4q-jmGrmxKs&index=25&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
2017-10-30 20:17:27 +06:00
- ピーター・ノヴィグ(Peter Norvig)は、セールスマンの問題を解決するための最適なソリューションについて説明しています。
- [JupyterNotebook ](http://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipynb )
2017-06-11 12:23:26 +06:00
- あなたが持っているなら、CLRSの1048 - 1140ページ。
2023-01-09 12:01:10 +06:00
- ### コンピューターはどのようにプログラムを実行するか
- [ ] [CPU がどのようにプログラムを実行するか (動画) ](https://www.youtube.com/watch?v=XM4lGflQFvA )
- [ ] [コンピューターがどのように計算するか - ALU (動画) ](https://youtu.be/1I5ZMmrOfnA )
- [ ] [レジスタと RAM (動画) ](https://youtu.be/fpnE6UAfbtU )
- [ ] [中央処理装置 (CPU) (動画) ](https://youtu.be/FZGugFqdr60 )
- [ ] [命令とプログラム (動画) ](https://youtu.be/zltgXvg6r3k )
2021-03-28 14:45:48 +06:00
- ### キャッシュ
2017-06-11 12:23:26 +06:00
- [ ] LRUキャッシュ:
2023-11-01 19:01:06 +06:00
- [ ] [LRUキャッシュの魔法(Google Devの100日間)(動画) ](https://www.youtube.com/watch?v=R5ON3iwx78M )
- [ ] [LRU(動画)の実装 ](https://www.youtube.com/watch?v=bq6N7Ym81iI )
2017-06-11 12:23:26 +06:00
- [ ] [LeetCode - 146 LRU Cache(C ++)(video) ](https://www.youtube.com/watch?v=8-FZRAjR7qU )
- [ ] CPUキャッシュ:
2023-11-01 19:01:06 +06:00
- [ ] [MIT 6.004 L15: メモリ階層(動画) ](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24 )
2017-06-11 12:23:26 +06:00
- [ ] [MIT 6.004 L16: キャッシュの問題(動画) ](https://www.youtube.com/watch?v=ajgC3-pyGlk&index=25&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82- )
2021-03-28 14:45:48 +06:00
- ### プロセスとスレッド
2017-06-11 12:23:26 +06:00
- [ ] コンピュータサイエンス162 - オペレーティングシステム(25ビデオ):
2017-10-30 20:17:27 +06:00
- プロセスとスレッドのためのビデオ表示1-11
2023-11-01 19:01:06 +06:00
- [オペレーティングシステムとシステムプログラミング(動画) ](https://www.youtube.com/playlist?list=PL-XXv-cvA_iBDyz-ba4yDskqMDY6A1w_c )
2017-06-11 12:23:26 +06:00
- [プロセスとスレッドの違いは何ですか? ](https://www.quora.com/What-is-the-difference-between-a-process-and-thread )
- カバー:
- プロセス、スレッド、並行性の問題
- プロセスとスレッドの違い
- プロセス
- スレッド
- ロック
2017-10-30 20:17:27 +06:00
- ミューテックス
- セマフォ
- モニタ(同期)
- 彼らの動作の仕方
2017-06-11 12:23:26 +06:00
- デッドロック
- ライブロック
- CPUの動作、割り込み、コンテキストの切り替え
2017-10-30 20:17:27 +06:00
- マルチコアプロセッサを使用した最新の並行構成
2017-06-11 12:23:26 +06:00
- [ページング、セグメンテーション、仮想メモリ(動画) ](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2 )
- [割り込み(動画) ](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3 )
2017-10-30 20:17:27 +06:00
- [スケジューリング(動画) ](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8 )
- プロセスリソースのニーズ(メモリ: コード、静的ストレージ、スタック、ヒープ、ファイル記述子、I/O)
2017-06-11 12:23:26 +06:00
- スレッドリソースの必要性(同じプロセス内の他のスレッドとの上の(マイナススタック)の共有、それぞれが独自のpc、スタックカウンタ、レジスタ、およびスタックを持つ)
- フォークは、新しいプロセスがメモリに書き込むまで、実際には書き込み時にコピー(読み取り専用)され、次に完全なコピーを行います。
- コンテキストスイッチ
- オペレーティングシステムとその基盤となるハードウェアによってコンテキスト切り替えが開始される仕組み
2017-10-30 20:17:27 +06:00
- [ ] [C++のスレッド(シリーズ - 10ビデオ) ](https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M )
2023-11-01 19:01:06 +06:00
- [ ] Pythonでの並行性(動画):
2017-06-11 12:23:26 +06:00
- [ ] [スレッドに関する短いシリーズ ](https://www.youtube.com/playlist?list=PL1H1sBF1VAKVMONJWJkmUh6_p8g4F2oy1 )
- [ ] [Pythonスレッド ](https://www.youtube.com/watch?v=Bs7vPNbB9JM )
2017-10-30 20:17:27 +06:00
- [ ] [Python GIL(2010)について理解する ](https://www.youtube.com/watch?v=Obt-vMVdM8s )
2017-06-11 12:23:26 +06:00
- [参考文献 ](http://www.dabeaz.com/GIL )
- [ ] [David Beazley - 地上からのPython並行処理: LIVE! - PyCon 2015 ](https://www.youtube.com/watch?v=MCs5OvhV9S4 )
- [ ] [基調講演David Beazley - 興味のあるトピック(Python Asyncio) ](https://www.youtube.com/watch?v=ZzfHjytDceU )
2017-10-30 20:17:27 +06:00
- [ ] [Pythonのミューテックス ](https://www.youtube.com/watch?v=0zaPs8OtyKY )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 論文
2017-10-30 20:17:27 +06:00
- 完全に理解した上ですべてを読むことは、あなたが持っているより多くの時間がかかるでしょう。私は論文とそのセクションを選択することをお勧めします。
2017-06-11 12:23:26 +06:00
- [古典的な論文を愛する? ](https://www.cs.cmu.edu/~crary/819-f09/ )
- [ ] [1978: 順次プロセスの通信 ](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf )
- [Goで実装 ](https://godoc.org/github.com/thomas11/csp )
2017-10-30 20:17:27 +06:00
- [ ] [2003: The Googleファイルシステム ](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf )
2017-06-11 12:23:26 +06:00
- 2012年に巨像に置き換えられました
- [ ] [2004: MapReduce: 大規模クラスタでのデータ処理の簡略化 ](http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf )
- 主にCloud Dataflowに置き換えられましたか?
- [ ] [2006: Bigtable: 構造化データ用分散ストレージシステム ](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf )
- [Google BigQueryの内部を見る ](https://cloud.google.com/files/BigQueryTechnicalWP.pdf )
- [ ] [2006: 疎結合分散システムのChubby Lockサービス ](https://research.google.com/archive/chubby-osdi06.pdf )
2017-10-30 20:17:27 +06:00
- [ ] [2007: Dynamo: Amazonの高可用性 key valueストア ](https://www.akkadia.org/drepper/cpumemory.pdf )
2017-06-11 12:23:26 +06:00
- Dynamo紙がNoSQL革命を開始
2021-08-26 11:49:07 +06:00
- [すべてのプログラマーがメモリについて知っておくべきこと(非常に長く、著者はいくつかのセクションのスキップを奨励する) ](https://www.akkadia.org/drepper/cpumemory.pdf )
2017-06-11 12:23:26 +06:00
- [ ] [2010: Dapper、大規模分散システム追跡基盤 ](https://research.google.com/pubs/archive/36356.pdf )
- [ ] [2010: Dremel: Web-Scaleデータセットのインタラクティブ解析 ](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf )
- [ ] [2012: Googleの巨像 ](https://www.wired.com/2012/07/google-colossus/ )
2017-10-30 20:17:27 +06:00
- 論文がありません
2017-06-11 12:23:26 +06:00
- [ ] 2012: AddressSanitizer: 高速アドレス整合性チェッカー:
2017-10-30 20:17:27 +06:00
- [論文 ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf )
2017-06-11 12:23:26 +06:00
- [ビデオ ](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany )
- [ ] 2013: スパナ: Googleのグローバル分散データベース:
2017-10-30 20:17:27 +06:00
- [論文 ](http://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf )
2017-06-11 12:23:26 +06:00
- [ビデオ ](https://www.usenix.org/node/170855 )
2017-10-30 20:17:27 +06:00
- [ ] [2014年: 機械学習: 技術的負債の高利貸しクレジットカード ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43146.pdf )
2017-06-11 12:23:26 +06:00
- [ ] [2015: Googleの継続的なパイプライン ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf )
- [ ] [2015年: 大規模な高可用性: Googleの広告用データ基盤の構築 ](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44686.pdf )
2017-10-30 20:17:27 +06:00
- [ ] [2015: TensorFlow: 異種分散システムの大規模機械学習 ](http://download.tensorflow.org/paper/whitepaper2015.pdf )
- [ ] [2015年: 開発者がコードを検索する方法: ケーススタディ ](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf )
2017-06-11 12:23:26 +06:00
- [ ] [2016: Borg、Omega、Kubernetes ](http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44843.pdf )
2021-03-28 14:45:48 +06:00
- ### テスト
2017-06-11 12:23:26 +06:00
- カバーするために:
2017-10-30 20:17:27 +06:00
- ユニット(単体)テストの仕組み
2017-06-11 12:23:26 +06:00
- モックオブジェクトとは何ですか?
- 統合テストとは
- 依存性注入とは
2023-11-01 19:01:06 +06:00
- [ ] [James Bachによるアジャイルソフトウェアテスト(動画) ](https://www.youtube.com/watch?v=SAhJf36_u5U )
- [ ] [ジェイムス・バッハによるソフトウェアテストの公開講座(動画) ](https://www.youtube.com/watch?v=ILkT_HV9DVU )
- [ ] [Steve Freeman - テスト駆動開発(これは私たちが意味するものではありません)(動画) ](https://vimeo.com/83960706 )
2017-06-11 12:23:26 +06:00
- [スライド ](http://goocon.com/dl/goto-berlin-2013/slides/SteveFreeman_TestDrivenDevelopmentThatsNotWhatWeMeant.pdf )
- [ ] [TDDは死んでいます。長いライブテスト。 ](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html )
2023-11-01 19:01:06 +06:00
- [ ] [TDDは死んでいますか? (動画) ](https://www.youtube.com/watch?v=z9quxZsLcfo )
- [ ] [ビデオシリーズ(152ビデオ) - すべてではない(動画) ](https://www.youtube.com/watch?v=nzJapzxH_rE&list=PLAwxTw4SYaPkWVHeC_8aSIbSxE_NXI76g )
2017-06-11 12:23:26 +06:00
- [ ] [Pythonでテスト駆動型Web開発 ](http://www.obeythetestinggoat.com/pages/book.html#toc )
- [ ] 依存性注入:
- [ ] [動画 ](https://www.youtube.com/watch?v=IKD2-MAkXyQ )
- [ ] [テストのタオ ](http://jasonpolites.github.io/tao-of-testing/ch3-1.1.html )
- [ ] [テストの書き方 ](http://jasonpolites.github.io/tao-of-testing/ch4-1.1.html )
2021-03-28 14:45:48 +06:00
- ### スケジューリング
2017-10-30 20:17:27 +06:00
- OSで、どのように動作するか
2017-06-11 12:23:26 +06:00
- オペレーティングシステムのビデオから収集できます
2021-03-28 14:45:48 +06:00
- ### システムルーチンを実装する
2017-06-11 12:23:26 +06:00
- 使用するプログラミングAPIの下にあるものを理解する
あなたはそれらを実装できますか?
2021-03-28 14:45:48 +06:00
- ### 文字列の検索と操作
2023-11-01 19:01:06 +06:00
- [ ] [Sedgewick - 接尾辞配列(動画) ](https://www.youtube.com/watch?v=HKPrVm5FWvg )
2017-10-30 20:17:27 +06:00
- [ ] [Sedgewick - サブストリング(文字列の一部)検索(動画) ](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5 )
- [ ] [1. サブストリング検索の紹介 ](https://www.youtube.com/watch?v=2LvvVFCEIv8&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=5 )
- [ ] [2. ブルートフォースサブストリング検索 ](https://www.youtube.com/watch?v=CcDXwIGEXYU&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=4 )
- [ ] [3. クヌース・モーリス・プラット法 ](https://www.youtube.com/watch?v=n-7n-FDEWzc&index=3&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66 )
- [ ] [4. ボイヤー-ムーア文字列検索アルゴリズム ](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2 )
- [ ] [5. ラビン-カープ文字列検索アルゴリズム ](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66 )
2023-11-01 19:01:06 +06:00
- [ ] [テキストの検索パターン(動画) ](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text )
2017-06-11 12:23:26 +06:00
このテーマについてさらに詳しく知りたい場合は、[いくつかの科目の追加の詳細]の「文字列のマッチング」の項を参照してください(#additional-detail-on-some-subjects)
2021-03-28 14:45:48 +06:00
- ### トライ木
2017-10-30 20:17:27 +06:00
- さまざまなトライ木があることに注意してください。いくつかは接頭辞を持ち、あるものはパスを追跡するビットの代わりに文字列を使用します。
2017-06-11 12:23:26 +06:00
- 私はコードを読んだが、実装しないだろう。
- [ ] [Sedgewick - 試してみる(3ビデオ) ](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ )
2017-10-30 20:17:27 +06:00
- [ ] [1. R Way トライ木 ](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ )
- [ ] [2. 3分探索木 ](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ )
- [ ] [3. キャラクターベースの操作 ](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1 )
2017-06-11 12:23:26 +06:00
- [ ] [データ構造とプログラミング手法に関する注記 ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries )
- [ ] 短期コースビデオ:
2023-11-01 19:01:06 +06:00
- [ ] [トライ木の紹介(動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries )
- [ ] [トライ木のパフォーマンス(動画) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries )
2017-10-30 20:17:27 +06:00
- [ ] [トライ木の実装ビデオ) ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie )
2017-06-11 12:23:26 +06:00
- [ ] [Trie: 無視されたデータ構造 ](https://www.toptal.com/java/the-trie-a-neglected-data-structure )
2017-10-30 20:17:27 +06:00
- [ ] [TopCoder - トライ木の使用 ](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/ )
2023-11-01 19:01:06 +06:00
- [ ] [スタンフォード講演(現実世界のユースケース)(動画) ](https://www.youtube.com/watch?v=TJ8SkcUSdbU )
2017-06-11 12:23:26 +06:00
- [ ] [MIT、高度なデータ構造、文字列(途中でかなり不明瞭になることがあります) ](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf )
2021-03-28 14:45:48 +06:00
- ### 浮動小数点数
2017-06-11 12:23:26 +06:00
- [ ] 単純な8ビット: [浮動小数点数の表現 - 1(ビデオ - 計算にエラーがあります - ビデオの説明を参照)](https://www.youtube.com/watch?v=ji3SfClm8TU)
2023-11-01 19:01:06 +06:00
- [ ] 32ビット: [IEEE754 32ビット浮動小数点バイナリ(動画)](https://www.youtube.com/watch?v=50ZYcZebIec)
2017-06-11 12:23:26 +06:00
- ### Unicode
- [ ] [すべてのソフトウェア開発者が絶対に最低限必要とする、絶対にUnicodeと文字セットについて熟知していること ](http://www.joelonsoftware.com/articles/Unicode.html )
- [ ] [すべてのプログラマーが、エンコーディングと文字セットについて知る必要があることは間違いない ](http://kunststube.net/encoding/ )
2021-03-28 14:45:48 +06:00
- ### バイト順(エンディアン)
2017-10-30 20:17:27 +06:00
- [ ] [ビッグエンディアンとリトルエンディアン ](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html )
2023-11-01 19:01:06 +06:00
- [ ] [ビッグエンディアン Vs リトルエンディアン(動画) ](https://www.youtube.com/watch?v=JrNF0KRAlyo )
- [ ] [ビッグエンディアンとリトルエンディアンの イン/アウト(動画) ](https://www.youtube.com/watch?v=oBSuXP-1Tc0 )
2017-06-11 12:23:26 +06:00
- カーネル開発者のための非常に技術的な話。ほとんどがあなたの頭の上にある場合は心配しないでください。
- 前半で十分です。
2021-03-28 14:45:48 +06:00
- ### ネットワーキング
2017-06-11 12:23:26 +06:00
- **ネットワーク経験がある、またはシステムエンジニアになりたい場合は、質問を期待してください**
- そうでなければ、これは知っているだけでいいです
- [ ] [Khan Academy ](https://www.khanacademy.org/computing/computer-science/internet-intro )
- [ ] [UDPとTCP: トランスポートプロトコルの比較 ](https://www.youtube.com/watch?v=Vdc8TCESIg8 )
2021-08-26 11:49:07 +06:00
- [TCP / IPとOSIモデルの説明! ](https://www.youtube.com/watch?v=e5DEVa9eSN0 )
2017-06-11 12:23:26 +06:00
- [ ] [インターネット経由のパケット伝送。ネットワーク& TCP / IPチュートリアル ](https://www.youtube.com/watch?v=nomyRJehhnM )
- [ ] [HTTP ](https://www.youtube.com/watch?v=WGJrLqtX7As )
- [ ] [SSLとHTTPS ](https://www.youtube.com/watch?v=S2iBR2ZlZf0 )
- [ ] [SSL / TLS ](https://www.youtube.com/watch?v=Rp3iZUvXWlM )
- [ ] [HTTP 2.0 ](https://www.youtube.com/watch?v=E9FxNzv1Tr8 )
- [ ] [ビデオシリーズ(21ビデオ) ](https://www.youtube.com/playlist?list=PLEbnTDJUr_IggfoqO4iPnPYQui46QqT0j )
2017-10-30 20:17:27 +06:00
- [ ] [詳解サブネット化 - 第5部CIDR表記 ](https://www.youtube.com/watch?v=t5xYI0jzOf4 )
2017-06-11 12:23:26 +06:00
- [ ] ソケット:
- [ ] [Java - Sockets - Introduction(video) ](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s )
2023-11-01 19:01:06 +06:00
- [ ] [ソケットプログラミング(動画) ](https://www.youtube.com/watch?v=G75vN2mnJeQ )
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## システム設計、スケーラビリティ、データ処理
2017-06-11 12:23:26 +06:00
- **4年以上の経験があれば、システム設計の質問を期待できます。**
- スケーラビリティとシステム設計は、多くのトピックとリソースを持つ非常に大きなトピックです。
2017-10-30 20:17:27 +06:00
スケーラビリティ(拡張可能)なソフトウェア/ハードウェアシステムを設計する際には、考慮すべき点がたくさんあります。
2017-06-11 12:23:26 +06:00
これにかなりの時間を費やすことを期待してください。
2017-10-30 20:17:27 +06:00
- 考慮事項:
2017-06-11 12:23:26 +06:00
- スケーラビリティ
- 大きなデータセットを単一の値に変換する
- あるデータセットを別のデータセットに変換する
- 莫大な量のデータを扱う
- システム設計
- 機能セット
- インターフェース
- クラス階層
- 一定の制約の下でシステムを設計する
- シンプルさと丈夫さ
- トレードオフ
- パフォーマンス分析と最適化
2017-10-30 20:17:27 +06:00
- [ ] **ここをクリック** : [システム設計入門](https://github.com/donnemartin/system-design-primer)
2017-06-11 12:23:26 +06:00
- [ ] [HiredInTechのシステム設計 ](http://www.hiredintech.com/system-design/ )
2017-10-30 20:17:27 +06:00
- [ ] [技術面接で設計質問に答えるための準備方法 ](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023 )
- [ ] [システムデザイン面接の前に知っておくべき8つの事柄 ](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/ )
2017-06-11 12:23:26 +06:00
- [ ] [アルゴリズム設計 ](http://www.hiredintech.com/algorithm-design/ )
2023-11-01 19:01:06 +06:00
- [ ] [データベースの正規化 - 1NF、2NF、3NF、4NF(動画) ](https://www.youtube.com/watch?v=UrYLYV7WSHM )
2017-10-30 20:17:27 +06:00
- [ ] [システム設計の面接 ](https://github.com/checkcheckzz/system-design-interview ) - この中には多くのリソースがあります。記事や例を見てください。私はそれらのいくつかを下に置いた。
- [ ] [システム設計面接の方法 ](http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/ )
- [ ] [誰もが知っておくべき数字 ](http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/ )
2017-06-11 12:23:26 +06:00
- [ ] [コンテキストスイッチを作るのにどれくらい時間がかかりますか? ](http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html )
- [ ] [データセンター間の取引(動画) ](https://www.youtube.com/watch?v=srOgpXECblk )
- [ ] [CAP定理の簡単な英語入門 ](http://ksat.me/a-plain-english-introduction-to-cap-theorem/ )
2017-10-30 20:17:27 +06:00
- [ ] Paxosアルゴリズム:
2017-06-11 12:23:26 +06:00
- [短い動画 ](https://www.youtube.com/watch?v=s8JqcZtvnsM )
2017-10-30 20:17:27 +06:00
- [ユースケースとマルチパクソスによる拡張動画 ](https://www.youtube.com/watch?v=JEpsBg0AO6o )
- [論文 ](http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf )
- [ ] [コンシステントハッシュ法 ](http://www.tom-e-white.com/2007/11/consistent-hashing.html )
- [NoSQLパターン ](http://horicky.blogspot.com/2009/11/nosql-patterns.html )
2017-06-11 12:23:26 +06:00
- [ ] スケーラビリティ:
- [ ] [概要(動画) ](https://www.youtube.com/watch?v=-W9F__D3oY4 )
- [ ] 短いシリーズ:
2017-10-30 20:17:27 +06:00
- [クローン ](http://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones )
2017-06-11 12:23:26 +06:00
- [データベース ](http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database )
- [キャッシュ ](http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-cache )
- [非同期 ](http://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism )
- [ ] [スケーラブルなWebアーキテクチャと分散システム ](http://www.aosabook.org/ja/distsys.html )
2017-10-30 20:17:27 +06:00
- [ ] [分散コンピューティングの説明の誤り ](https://pages.cs.wisc.edu/~zuyu/files/fallacies.pdf )
- [ ] [実用的なプログラミングテクニック ](http://horicky.blogspot.com/2010/10/scalable-system-design-patterns.html )
- [extra: Google Pregel グラフ処理 ](http://horicky.blogspot.com/2010/07/google-pregel-graph-processing.html )
2023-11-01 19:01:06 +06:00
- [ ] [Jeff Dean - Googleのソフトウェアシステム構築と教訓(動画) ](https://www.youtube.com/watch?v=modXC5IWTJI )
2017-10-30 20:17:27 +06:00
- [ ] [スケールのための設計システムの紹介 ](http://lethain.com/introduction-to-architecting-systems-for-scale/ )
2023-11-01 19:01:06 +06:00
- [ ] [App EngineとCloud Datastoreを使用してモバイルゲームを世界中の視聴者に拡大(動画) ](https://www.youtube.com/watch?v=9nWyWwY2Onc )
2017-10-30 20:17:27 +06:00
- [ ] [Googleがプラネットスケールのインフラのプラネットスケールエンジニアリングを行う仕組み ](https://www.youtube.com/watch?v=H4vMcD7zKM0 )
2017-06-11 12:23:26 +06:00
- [ ] [アルゴリズムの重要性 ](https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/ )
- [ ] [シャーディング ](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html )
2017-10-30 20:17:27 +06:00
- [ ] [Facebook( 2009) でスケール ](https://www.infoq.com/presentations/Scale-at-Facebook )
2023-11-01 19:01:06 +06:00
- [ ] [Facebook(2012年)、「10億ユーザー向けビルド(動画)」 ](https://www.youtube.com/watch?v=oodS71YtkGU )
- [ ] [ロングゲームのためのエンジニアリング - Astrid Atkinson Keynote(動画) ](https://www.youtube.com/watch?v=p0jGmgIrf_M&list=PLRXxvay_m8gqVlExPC5DG3TGWJTaBgqSA&index=4 )
2017-06-11 12:23:26 +06:00
- [ ] [7年間のYouTubeスケーラビリティレッスン30分 ](http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html )
- [動画 ](https://www.youtube.com/watch?v=G-lGCC4KKok )
2017-10-30 20:17:27 +06:00
- [ ] [ペイパルが毎日何十億ものトランザクションにスケーリングされる方法(8VMだけを使用) ](http://highscalability.com/blog/2016/8/15/how-paypal-scaled-to-billions-of-transactions-daily-using-ju.html )
2017-06-11 12:23:26 +06:00
- [ ] [大きなデータセットで重複を削除する方法 ](https://blog.clevertap.com/how-to-remove-duplicates-in-large-datasets/ )
2023-11-01 19:01:06 +06:00
- [ ] [Jon CowieによるEtsyのスケールとエンジニアリング文化の中の一見(動画) ](https://www.youtube.com/watch?v=3vV4YiqKm1o )
2017-10-30 20:17:27 +06:00
- [ ] [Amazonは独自のマイクロサービスアーキテクチャをどのように導いたか ](http://thenewstack.io/led-amazon-microservices-architecture/ )
- [ ] [圧縮するか圧縮しないか、それはUberの質問でした ](https://eng.uber.com/trip-data-squeeze/ )
- [ ] [Tarantoolの非同期キュー、キューに入れる ](http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html )
- [ ] [おおよそのクエリ処理を使用するタイミング ](http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html )
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- [ ] [単一のデータセンターからフェイルオーバーするための、Googleのネイティブマルチホームアーキテクチャへの移行 ](http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html )
2017-06-11 12:23:26 +06:00
- [ ] [スパナ ](http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html )
2017-10-30 20:17:27 +06:00
- [ ] [Egnyteアーキテクチャ: マルチペタバイト分散システムの構築とスケーリングの教訓 ](http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html )
- [ ] [機械学習駆動プログラミング:新しい世界のための新しいプログラミング ](http://highscalability.com/blog/2016/7/6/machine-learning-driven-programming-a-new-programming-for-a.html )
- [ ] [1日あたり何百万ものリクエストを処理する画像最適化技術 ](http://highscalability.com/blog/2016/6/15/the-image-optimization-technology-that-serves-millions-of-re.html )
- [ ] [Patreonのアーキテクチャの概要 ](http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html )
- [ ] [Tinder: どのようにして最大のレコメンデーションエンジンの誰があなたが次に誰を見るか決定する? ](http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html )
2017-06-11 12:23:26 +06:00
- [ ] [現代のキャッシュのデザイン ](http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html )
- [ ] [Facebookのスケールでライブビデオストリーミング ](http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html )
2021-08-26 11:49:07 +06:00
- [ ] [AmazonのAWSで1,100万人以上のユーザーに拡大するための初心者向けガイド ](http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html )
2017-10-30 20:17:27 +06:00
- [ ] [Dockerの効果待ち時間の使用方法 ](http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html )
2017-06-11 12:23:26 +06:00
- [ ] [AMPはGoogleに存在する脅威に対抗していますか? ](http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html )
2023-01-08 16:46:09 +06:00
- [ ] [全Netflixスタックの360度ビュー ](http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html )
2017-06-11 12:23:26 +06:00
- [ ] [レイテンシはどこにでもあり、それはあなたのセールスに費やされます - それを粉砕する方法 ](http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it )
2021-08-26 11:49:07 +06:00
- [ ] [サーバーレス(非常に長い、要点が必要 ](http://martinfowler.com/articles/serverless.html )
2017-10-30 20:17:27 +06:00
- [ ] [Instagramを動かすもの: 何百ものインスタンス、数十のテクノ ロジ ](http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances )
- [ ] [シンクキャストアーキテクチャ - 毎日1,500時間の音声を生成する ](http://highscalability.com/blog/2012/7/16/cinchcast-architecture-producing-1500-hours-of-audio-every-d.html )
2017-06-11 12:23:26 +06:00
- [ ] [Justin.Tvのライブビデオブロードキャストアーキテクチャ ](http://highscalability.com/blog/2010/3/16/justintvs-live-video-broadcasting-architecture.html )
2023-01-08 16:46:09 +06:00
- [ ] [Playfishのソーシャルゲームアーキテクチャ - 月間5000万人のユーザーと成長 ](http://highscalability.com/blog/2010/9/21/playfishs-social-gaming-architecture-50-million-monthly-user.html )
2017-10-30 20:17:27 +06:00
- [ ] [アーキテクチャ - 40Mビジター、200Mダイナミックページビュー、30TBデータ]()
2017-06-11 12:23:26 +06:00
- [ ] [PlentyOfFishアーキテクチャ ](http://highscalability.com/plentyoffish-architecture )
2023-01-08 16:46:09 +06:00
- [ ] [Salesforceのアーキテクチャ - どのように130億回のトランザクションを処理するか ](http://highscalability.com/blog/2013/9/23/salesforce-architecture-how-they-handle-13-billion-transacti.html )
2017-10-30 20:17:27 +06:00
- [ ] [ESPNの規模でのアーキテクチャ - 毎秒100,000のDuh Nuh Nuhsで動作 ](http://highscalability.com/blog/2013/11/4/espns-architecture-at-scale-operating-at-100000-duh-nuh-nuhs.html )
- [ ] サービスを結合する技術の情報については、以下の「メッセージング、シリアライゼーション、およびキューイングシステム」を参照してください。
2017-06-11 12:23:26 +06:00
- [ ] Twitter:
2023-11-01 19:01:06 +06:00
- [O`Reilly MySQL CE 2011: Jeremy Cole、「@Twitterの大小データ」(動画) ](https://www.youtube.com/watch?v=5cKTP36HVgI )
2017-06-11 12:23:26 +06:00
- [スケール時のタイムライン ](https://www.infoq.com/presentations/Twitter-Timeline-Scalability )
2017-10-30 20:17:27 +06:00
- さらに詳しくは、[ビデオシリーズ](ビデオシリーズ)セクションの「Mining Massive Datasets」ビデオシリーズを参照してください。
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- [ ] システム設計プロセスの練習:紙で作業しようとするいくつかのアイデアがあります。実際にどのように処理されたかについてのいくつかの文書があります。
- レビュー:[システム設計入門](https://github.com/donnemartin/system-design-primer)
2017-06-11 12:23:26 +06:00
- [HiredInTechのシステム設計 ](http://www.hiredintech.com/system-design/ )
2021-02-10 09:53:37 +06:00
- [チートシート ](https://github.com/jwasham/coding-interview-university/blob/main/extras/cheat%20sheets/system-design.pdf )
2017-06-11 12:23:26 +06:00
- 流れ:
1. 問題と範囲を理解する:
2017-10-30 20:17:27 +06:00
- 面接官の助けを借りてユースケースを定義する
2017-06-11 12:23:26 +06:00
- 追加の機能を提案する
2017-10-30 20:17:27 +06:00
- 面接官が範囲外とみなすアイテムを削除する
2017-06-11 12:23:26 +06:00
- 高可用性が必要と仮定し、ユースケースとして追加する
2. 制約について考える:
2017-10-30 20:17:27 +06:00
- 毎月のリクエスト数を尋ねる
- 毎秒どれくらいのリクエストをするか(彼らはボランティアでもよいし、あなたに数学をさせるかもしれない)
- 読み込みと書き込みの割合を見積もります
- 推定時に80/20ルールを守って下さい
2017-06-11 12:23:26 +06:00
- 1秒あたりに書き込まれるデータの量
- 5年間に必要な合計ストレージ
2017-10-30 20:17:27 +06:00
- 毎秒読み取られるデータの量
2017-06-11 12:23:26 +06:00
3. 抽象的なデザイン:
- レイヤー(サービス、データ、キャッシング)
- インフラストラクチャ:負荷分散、メッセージング
- サービスを駆動する主要なアルゴリズムの概要
- ボトルネックを考慮し、解決策を決定する
- 演習:
- [CDNネットワークの設計: 古い記事 ](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2112&context=compsci )
- [ランダムなID生成システムの設計 ](https://blog.twitter.com/2010/announcing-snowflake )
- [オンラインマルチプレイヤーカードゲームのデザイン ](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html )
- [Key-Valueデータベースの設計 ](http://www.slideshare.net/dvirsky/introduction-to-redis )
- [画像共有システムの設計 ](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html )
- [推薦システムの設計 ](http://ijcai13.org/files/tutorial_slides/td3.pdf )
- [URL短縮システムの設計: 上からコピー ](http://www.hiredintech.com/system-design/the-system-design-process/ )
2017-10-30 20:17:27 +06:00
- [キャッシュシステムの設計 ](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/ )
2017-06-11 12:23:26 +06:00
---
2021-03-28 14:29:05 +06:00
## 最終レビュー
2017-06-11 12:23:26 +06:00
このセクションでは、重要な概念のほとんどを見直すためにかなり短いビデオを見ることができます。
2017-10-30 20:17:27 +06:00
あなたが頻繁に再学習をしたいならいいですね。
2017-06-11 12:23:26 +06:00
- [ ] 2〜3分短編ビデオシリーズ(23ビデオ)
- [動画 ](https://www.youtube.com/watch?v=r4r1DZcx1cM&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj&index=22 )
2023-06-24 04:11:28 +06:00
- [ ] 2〜5分の短編シリーズビデオ - Michael Sambol(46ビデオ)
- [動画 ](https://www.youtube.com/@MichaelSambol )
- [Code Examples ](https://github.com/msambol/dsa )
2017-06-11 12:23:26 +06:00
---
2021-03-28 14:29:05 +06:00
## コーディングの質問練習
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
上のすべてのコンピュータサイエンスのトピックを知ったので、コーディングの問題に答える練習をしましょう。
2017-06-11 12:23:26 +06:00
**コーディング質問の練習は、プログラミング問題への回答を記憶することではありません。**
プログラミングの問題を練習する必要がある理由
- 問題の認識、そして適切なデータ構造とアルゴリズムの適合
- 問題のための要件を集める
2017-10-30 20:17:27 +06:00
- 面接であなたのように問題をあなたの方法で話している
2017-06-11 12:23:26 +06:00
- コンピュータではなく、ホワイトボードや紙でのコーディング
- ソリューションの時間と空間の複雑さが増す
- ソリューションのテスト
2017-10-30 20:17:27 +06:00
面接では、体系的でコミュニケーション的な問題解決の素晴らしいイントロがあります。あなたはプログラミングの面接の本からもこれを手に入れるでしょうが、私はこの優れた発見しました:
2017-06-11 12:23:26 +06:00
[アルゴリズム設計キャンバス ](http://www.hiredintech.com/algorithm-design/ )
自宅にホワイトボードはありませんか?それは理にかなっている。私は変わった人で、大きなホワイトボードを持っています。ホワイトボードの代わりに、
2017-10-30 20:17:27 +06:00
アートストアから大きなドローイングパッドを拾い上げます。あなたはソファに座って練習することができます。これが私の「ソファホワイトボード」です。
2017-06-11 12:23:26 +06:00
私はスケールの写真にペンを追加しました。ペンを使うと、あなたは消すことができます。すぐに厄介になる。
![私のソファホワイトボード ](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg )
補足:
- [Topcodersの数学 ](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/ )
2017-10-30 20:17:27 +06:00
- [動的プログラミング - 初心者から上級者まで ](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/ )
- [MIT面接資料 ](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php )
2017-06-11 12:23:26 +06:00
**プログラミングの問題を読んでやる(この順番で): **
2017-10-30 20:17:27 +06:00
- [ ] [プログラミング面接公開: あなたが次の仕事に着任する秘訣、第2版 ](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html )
2017-06-11 12:23:26 +06:00
- C、C ++、Javaの回答
2017-10-30 20:17:27 +06:00
- [ ] [コーディング面接をクラッキング、第6版 ](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/ )
2017-06-11 12:23:26 +06:00
- Javaでの回答
[上記のブックリスト ](#ブックリスト )を参照してください
2021-03-28 14:29:05 +06:00
## コード演習/挑戦
2017-06-11 12:23:26 +06:00
あなたの脳を学んだら、脳を働かせてください。
できるだけ多く、毎日コーディングの課題に取り組んでください。
2017-10-30 20:17:27 +06:00
- [ ] [解決策を見つける方法 ](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/ )
- [ ] [Topcoderの問題を解読する方法 ](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/ )
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
コーディング面接質問ビデオ:
2017-06-11 12:23:26 +06:00
- [IDeserve(88ビデオ) ](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI )
- [Tushar Roy(5プレイリスト) ](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd )
チャレンジサイト:
- [LeetCode ](https://leetcode.com/ )
- [TopCoder ](https://www.topcoder.com/ )
- [プロジェクトオイラー(Math-focused) ](https://projecteuler.net/index.php?section=problems )
- [コードワード ](http://www.codewars.com )
- [HackerEarth ](https://www.hackerearth.com/ )
- [HackerRank ](https://www.hackerrank.com/ )
- [Codility ](https://codility.com/programmers/ )
- [InterviewCake ](https://www.interviewcake.com/ )
- [Geeks for Geeks ](http://www.geeksforgeeks.org/ )
2021-05-06 21:28:15 +06:00
- [InterviewBit ](https://www.interviewbit.com )
2017-06-11 12:23:26 +06:00
- [Sphere(Sphere) ](http://www.spoj.com/ )
チャレンジレポ:
2017-10-30 20:17:27 +06:00
- [Pythonでインタラクティブなコーディング面接の課題 ](https://github.com/donnemartin/interactive-coding-challenges )
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
疑似面接:
2022-01-02 08:37:59 +06:00
- [Gainlo.co: 大企業の疑似面接官 ](http://www.gainlo.co/#!/ )
2017-10-30 20:17:27 +06:00
- [Pramp: 仲間との面接 ](https://www.pramp.com/ )
- [Refdash: 疑似面接 ](https://refdash.com/ )
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## 面接に近づいたら
2017-06-11 12:23:26 +06:00
2023-11-01 19:01:06 +06:00
- [ ] クラッキングコーディング面接セット2(動画):
2017-10-30 20:17:27 +06:00
- [コード面接をクラッキングする ](https://www.youtube.com/watch?v=4NIb9l3imAo )
- [コード面接をクラックする - Fullstack Speaker Series ](https://www.youtube.com/watch?v=Eg5-tdAwclo )
2017-06-11 12:23:26 +06:00
## あなたの履歴書
2017-10-30 20:17:27 +06:00
- クラッキングでの準備項目の再開を参照してください。コーディング面接とプログラミング面接の公開
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## 面接が来たときに考えてください
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
あなたが得る20の面接の質問と、以下の項目の行を考えてみましょう。
それぞれ2-3の答えがあります。
2017-06-11 12:23:26 +06:00
あなたが達成したことについての物語だけでなく、データを持ってください。
- なぜあなたはこの仕事をしたいです?
- あなたが解決した厳しい問題は何ですか?
- 最大の課題に直面した?
- ベスト/最悪のデザインが見られる?
- 既存の製品を改善するためのアイデア。
- 個人として、そしてチームの一員として、どのようにベストを尽くしていますか?
- あなたのスキルや経験のうち、その役割の資産とその理由は?
- [job x / project y]で一番楽しかったことは何ですか?
- [job x / project y]に直面した最大の課題は何ですか?
- [job x / project y]で直面した最も難しいバグは何でしたか?
- [job x / project y]で何を学びましたか?
- あなたは[job x / project y]で何を良くしていますか?
2021-03-28 14:29:05 +06:00
## 面接官に質問があります
2017-06-11 12:23:26 +06:00
私の中には(私は既に知っているかもしれませんが、彼らの意見やチームの視点が必要です):
2017-10-30 20:17:27 +06:00
あなたのチームはどれくらいの規模ですか?
- あなたの開発サイクルはどのように見えるのですか?あなたはウォーターフォール/スプリント/アジャイルをしますか?
- 締め切りまでのフローは共通ですか?それとも柔軟性はありますか?
2017-06-11 12:23:26 +06:00
- あなたのチームではどのように意思決定が行われますか?
- 週に何回会議がありますか?
- あなたの仕事環境が集中するのに役立つと思いますか?
- 何をしているの?
- それについて何が好きですか?
- 仕事の生活はどうですか?
2023-01-09 12:01:10 +06:00
- ワークライフバランスはどうですか?
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## 一度あなたは仕事を得た
2017-06-11 12:23:26 +06:00
おめでとう!
2023-01-09 12:01:10 +06:00
学び続けてください。
2017-06-11 12:23:26 +06:00
あなたは決して本当に終わらない。
---
** ************************************************* ** ************************************************* *
** ************************************************* ** ************************************************* *
この点以下のものはすべてオプションです。
これらを勉強することで、より多くのCSコンセプトにさらされることになります。
任意のソフトウェアエンジニアリングジョブ。あなたはもっと豊富なソフトウェアエンジニアになるでしょう。
** ************************************************* ** ************************************************* *
** ************************************************* ** ************************************************* *
---
2021-03-28 14:29:05 +06:00
## その他の書籍
2017-06-11 12:23:26 +06:00
- [ ] [Unixプログラミング環境 ](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=情報 )
- 古き良き時代
- [ ] [Linuxコマンドライン: 完全な紹介 ](https://www.amazon.com/dp/1593273894/ )
- 現代的な選択肢
- [ ] [TCP / IP Illustrated Series ](https://en.wikipedia.org/wiki/TCP/IP_Illustrated )
- [ ] [ヘッドファーストデザインパターン ](https://www.amazon.com/gp/product/0596007124/ )
- デザインパターンへの穏やかな紹介
- [ ] [デザインパターン:再利用可能なオブジェクト指向ソフトウェアの要素 ](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 )
- 別名「Gang Of Four」の本、またはGOF
- 正式なデザインパターンの本
- [ ] [UNIXおよびLinuxシステム管理ハンドブック、第4版 ](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/ )
2021-03-28 14:29:05 +06:00
## その他の学習
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
これらの話題は面接では出てこないかもしれませんが、
2017-06-11 12:23:26 +06:00
特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。
2021-04-02 11:48:13 +06:00
- [ ] [アルゴリズム設計マニュアル ](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202 )(Skiena)
- [ ] [日本語版:アルゴリズム設計マニュアル ](https://www.amazon.co.jp/dp/4621085107 )
- レビューと問題認識として
- アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。
- この本は2パートに分かれます:
- データ構造とアルゴリズムに関する教科書
- 長所:
- アルゴリズムの教科書はどんなものでも良いレビューです
- 業界および学界の問題を解決した経験から得た素敵な話
- Cのコード例
- 短所:
- Introduction to Algorithms(CLRS)と同様に密集しているか、侵入不可能な場合があります。場合によっては、CLRSが一部の科目にとってより良い選択肢になる可能性があります
- 7章、8章、9章では、いくつかの項目がうまく説明されていないか、私が持っているよりも多くの脳を必要とするため、追跡しようとすると痛いことがあります
- 誤解しないで: 私はSkiena、彼の教え方、そしてマナーを好きですが、Stony Brookの教材ではないかもしれません。
- アルゴリズムカタログ:
- これがあなたがこの本を買う本当の理由です。
- この部分に近づきます。一度私がそれを通り抜けたら、ここで更新されます。
- Kindleで読むことが出来ます
- Half.comは教科書のための良いリソースです。
- 回答:
- [ソリューション ](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition ))
- [ソリューション ](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/ )
- [正誤表 ](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata )
- [ ] [アルゴリズムイントロダクション ](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844 )
- [ ] [日本語版:アルゴリズムイントロダクション ](https://www.amazon.co.jp/dp/B078WPYHGN/ )
- **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。
- Half.comは、良い価格で教科書のための素晴らしいリソースです。
- スタインはゲームに遅れていたので、別名CLR、ときにはCLRSと呼ばれている
- [ ] [Programming Pearls ](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880 )
- プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。
これはプログラムの設計とアーキテクチャに関するガイドブックです。
これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。
- ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~
- 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。
- むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう
2021-03-28 14:45:48 +06:00
- ### コンパイラ
2023-11-01 19:01:06 +06:00
- [ ] [1分でコンパイラがどのように動作するか(動画) ](https://www.youtube.com/watch?v=IhC7sdYe-Jg )
- [ ] [Harvard CS50 - コンパイラ(動画) ](https://www.youtube.com/watch?v=CSZLNYF4Klo )
2017-06-11 12:23:26 +06:00
- [ ] [C ++(video) ](https://www.youtube.com/watch?v=twodd1KFfGk )
2023-11-01 19:01:06 +06:00
- [ ] [コンパイラの最適化について(C ++)(動画) ](https://www.youtube.com/watch?v=FnGCDLhaxKU )
2017-06-11 12:23:26 +06:00
- ### Emacsとvi(m)
- UNIXベースのコードエディタに慣れましょう
- vi(m):
2023-11-01 19:01:06 +06:00
- [vim 01での編集 - インストール、設定、およびモード(動画) ](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr )
2017-06-11 12:23:26 +06:00
- [VIM Adventures ](http://vim-adventures.com/ )
- 4ビデオのセット:
- [vi / vimエディタ - レッスン1 ](https://www.youtube.com/watch?v=SI8TeVMX8pk )
- [vi / vimエディタ - レッスン2 ](https://www.youtube.com/watch?v=F3OO7ZIOaJE )
- [vi / vimエディター - レッスン3 ](https://www.youtube.com/watch?v=ZYEccA_nMaI )
- [vi / vimエディタ - レッスン4 ](https://www.youtube.com/watch?v=1lYD5gwgZIA )
- [Emacsの代わりにViを使う ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Using_Vi_instead_of_Emacs )
- emacs:
2023-11-01 19:01:06 +06:00
- [基本Emacsチュートリアル(動画) ](https://www.youtube.com/watch?v=hbmV1bnQ-i0 )
- 3つのセット(動画):
2017-06-11 12:23:26 +06:00
- [Emacsチュートリアル(初心者向け) - 第1部 - ファイルコマンド、カット/コピー/ペースト、カーソルコマンド ](https://www.youtube.com/watch?v=ujODL7MD04Q )
- [Emacsチュートリアル(初心者向け) - パート2 - バッファ管理、検索、M-grep、rgrepモード ](https://www.youtube.com/watch?v=XWpsRupJ4II )
- [Emacsチュートリアル(初心者) - 第3章式、ステートメント、〜/ .emacsファイルとパッケージ ](https://www.youtube.com/watch?v=paSgzPso-yc )
- [邪悪なモード: または、私がEmacsを気絶させ、愛する方法(動画) ](https://www.youtube.com/watch?v=JWD1Fpdd4Pc )
- [EmacsでCプログラムを書く ](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Writing_C_programs_with_Emacs )
2023-11-01 19:01:06 +06:00
- [(多分)組織モードの詳細:構造の管理(動画) ](https://www.youtube.com/watch?v=nsGYet02bEk )
2017-06-11 12:23:26 +06:00
- ### Unixコマンドラインツール
- 私は良いツールから下のリストに記入しました。
- [ ] bash
- [ ] cat
- [ ] grep
- [ ] sed
- [ ] awk
- [ ] カールまたはwget
- [ ] ソート
- [ ] tr
- [ ] uniq
- [ ] [strace ](https://en.wikipedia.org/wiki/Strace )
- [ ] [tcpdump ](https://danielmiessler.com/study/tcpdump/ )
2023-11-01 19:01:06 +06:00
- ### 情報理論(動画)
2017-06-11 12:23:26 +06:00
- [ ] [Khan Academy ](https://www.khanacademy.org/computing/computer-science/informationtheory )
- [ ] Markovプロセスの詳細:
- [ ] [Core Markov Text Generation ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation )
- [ ] [Markov Text Generationを実装するコア ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/gZhiC/core-implementing-markov-text-generation )
- [ ] [プロジェクト=マルコフテキスト生成ウォークスルー ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/EUjrq/project-markov-text-generation-walkthroughs )
- 下記のMIT 6.050J Information and Entropyシリーズを参照してください。
2023-11-01 19:01:06 +06:00
- ### パリティ&ハミングコード(動画)
2017-06-11 12:23:26 +06:00
- [ ] [イントロ ](https://www.youtube.com/watch?v=q-3BctoUpHE )
- [ ] [Parity ](https://www.youtube.com/watch?v=DdMcAUlxh1M )
- [ ] ハミングコード:
- [エラー検出 ](https://www.youtube.com/watch?v=1A_NcXxdoCc )
- [エラー修正 ](https://www.youtube.com/watch?v=JAMLuxdHH8o )
- [ ] [エラーチェック ](https://www.youtube.com/watch?v=wbH2VxzmoZk )
2021-08-26 11:49:07 +06:00
- ### エントロピー
2017-06-11 12:23:26 +06:00
- 下記の動画もご覧ください
- 最初に情報理論ビデオを見てください
2023-11-01 19:01:06 +06:00
- [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(動画) ](https://youtu.be/JnJq3Py0dyM?t=176 )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 暗号化
2017-06-11 12:23:26 +06:00
- 下記の動画もご覧ください
- 最初に情報理論ビデオを見てください
- [ ] [Khan Academy Series ](https://www.khanacademy.org/computing/computer-science/cryptography )
- [ ] [暗号化:ハッシュ関数 ](https://www.youtube.com/watch?v=KqqOXndnvic&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=30 )
- [ ] [暗号化:暗号化 ](https://www.youtube.com/watch?v=9TNI2wHmaeI&index=31&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
2021-03-28 14:45:48 +06:00
- ### 圧縮
2017-06-11 12:23:26 +06:00
- 最初に情報理論ビデオを見てください
2023-11-01 19:01:06 +06:00
- [ ] Computerphile(動画):
2017-06-11 12:23:26 +06:00
- [ ] [圧縮 ](https://www.youtube.com/watch?v=Lto-ajuqW3w )
- [ ] [Entropy in Compression ](https://www.youtube.com/watch?v=M5c_RFKVkko )
2017-10-30 20:17:27 +06:00
- [ ] [上向きの木(ハフマン木) ](https://www.youtube.com/watch?v=umTbivyJoiI )
- [ ] [エキストラビット/ TRITS - ハフマン木 ](https://www.youtube.com/watch?v=DV8efuB3h2g )
2017-06-11 12:23:26 +06:00
- [ ] [テキストのエレガントな圧縮(LZ 77方式) ](https://www.youtube.com/watch?v=goOa3DGezUA )
- [ ] [テキスト圧縮が確率を満たす ](https://www.youtube.com/watch?v=cCDCfoHTsaU )
- [ ] [Compressor Head videos ](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H )
- [ ] [(オプション)Google Developers Live: GZIPでは不十分です! ](https://www.youtube.com/watch?v=whGwm0Lky2s )
2021-03-28 14:45:48 +06:00
- ### コンピュータセキュリティ
2017-06-11 12:23:26 +06:00
- [MIT(23ビデオ) ](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [はじめに、脅威モデル ](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [ハイジャック攻撃の制御 ](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2 )
- [ ] [バッファオーバーフローの悪用と防御 ](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3 )
- [ ] [特権の分離 ](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [機能 ](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [サンドボックス化ネイティブコード ](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6 )
- [ ] [ウェブセキュリティモデル ](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [Webアプリケーションの保護 ](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [シンボリック実行 ](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [ネットワークセキュリティ ](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [ネットワークプロトコル ](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
- [ ] [サイドチャネル攻撃 ](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
2021-03-28 14:45:48 +06:00
- ### ガベージコレクション
2017-06-11 12:23:26 +06:00
- [ ] [ガベージコレクション(Java);データの拡張(動画) ](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25 )
2023-11-01 19:01:06 +06:00
- [ ] [コンパイラ(動画) ](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff )
2017-06-11 12:23:26 +06:00
- [ ] [GC in Python(video) ](https://www.youtube.com/watch?v=iHVs_HkjdmI )
- [ ] [ディープダイブJava: ガーベッジコレクションは良いです! ](https://www.infoq.com/presentations/garbage-collection-benefits )
2023-11-01 19:01:06 +06:00
- [ ] [Deep Dive Python: CPythonでのガベージコレクション(動画) ](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3 )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### パラレルプログラミング
2017-06-11 12:23:26 +06:00
- [ ] [Coursera(Scala) ](https://www.coursera.org/learn/parprog1/home/week/1 )
2023-11-01 19:01:06 +06:00
- [ ] [高性能並列計算のための効率的なPython(動画) ](https://www.youtube.com/watch?v=uY85GkaYzBk )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### メッセージング、シリアライゼーション、およびキューイングシステム
2017-06-11 12:23:26 +06:00
- [ ] [Thrift ](https://thrift.apache.org/ )
- [チュートリアル ](http://thrift-tutorial.readthedocs.io/ja/latest/intro.html )
- [ ] [プロトコルバッファ ](https://developers.google.com/protocol-buffers/ )
- [チュートリアル ](https://developers.google.com/protocol-buffers/docs/tutorials )
- [ ] [gRPC ](http://www.grpc.io/ )
- [gRPC 101 for Java Developers(video) ](https://www.youtube.com/watch?v=5tmPvSe7xXQ&list=PLcTqM9n_dieN0k1nSeN36Z_ppKnvMJoly&index=1 )
- [ ] [Redis ](http://redis.io/ )
- [チュートリアル ](http://try.redis.io/ )
- [ ] [Amazon SQS(キュー) ](https://aws.amazon.com/sqs/ )
- [ ] [Amazon SNS(pub-sub) ](https://aws.amazon.com/sns/ )
- [ ] [RabbitMQ ](https://www.rabbitmq.com/ )
- [はじめに ](https://www.rabbitmq.com/getstarted.html )
- [ ] [Celery ](http://www.celeryproject.org/ )
- [セロリの最初のステップ ](http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html )
- [ ] [ZeroMQ ](http://zeromq.org/ )
- [イントロ - マニュアルを読む ](http://zeromq.org/intro:read-the-manual )
- [ ] [ActiveMQ ](http://activemq.apache.org/ )
- [ ] [Kafka ](http://kafka.apache.org/documentation.html#introduction )
- [ ] [MessagePack ](http://msgpack.org/index.html )
- [ ] [Avro ](https://avro.apache.org/ )
- ### A *
- [ ] [検索アルゴリズム ](https://en.wikipedia.org/wiki/A*_search_algorithm )
- [ ] [A * Pathfinding Tutorial(video) ](https://www.youtube.com/watch?v=KNXfSOx4eEE )
2023-11-01 19:01:06 +06:00
- [ ] [A *経路探索(E01: アルゴリズムの説明)(動画) ](https://www.youtube.com/watch?v=-L-WgKMFuhE )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 高速フーリエ変換
2017-06-11 12:23:26 +06:00
- [ ] [フーリエ変換のインタラクティブガイド ](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/ )
- [ ] [フーリエ変換とは何ですか?それは何のために使われますか? ](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/ )
2023-11-01 19:01:06 +06:00
- [ ] [フーリエ変換とは何ですか? (動画) ](https://www.youtube.com/watch?v=Xxut2PN-V8Q )
- [ ] [Divide& Conquer: FFT(動画) ](https://www.youtube.com/watch?v=iTMn0Kt18tg&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=4 )
2017-06-11 12:23:26 +06:00
- [ ] [FFTの理解 ](http://jakevdp.github.io/blog/2013/08/28/understanding-the-fft/ )
2021-03-28 14:45:48 +06:00
- ### ブルームフィルター
2017-06-11 12:23:26 +06:00
- mビットとkハッシュ関数を持つBloomフィルタが与えられた場合、挿入とメンバーシップの両方のテストはO(k)
- [Bloom Filters ](https://www.youtube.com/watch?v=-SuTGoFYjZs )
- [ブルームフィルター|大規模なデータセットのマイニング|スタンフォード大学 ](https://www.youtube.com/watch?v=qBTdukbzc78 )
- [チュートリアル ](http://billmill.org/bloomfilter-tutorial/ )
- [Bloom Filter Appを書く方法 ](http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/ )
- ### HyperLogLog
2021-08-26 11:49:07 +06:00
- [わずか1.5KBのメモリを使用して10億の異なるオブジェクトを数える方法 ](http://highscalability.com/blog/2012/4/5/big-data-counting-how-to-count-a-billion-distinct-objects-us.html )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 局所性に敏感なハッシング
2017-06-11 12:23:26 +06:00
- ドキュメントの類似性を判断するために使用されます。
- 2つの文書/文字列がまったく同じかどうかを判断するために使用されるMD5またはSHAの反対。
- [Simhashing(うまくいけば)シンプルに ](http://ferd.ca/simhashing-hopefully-made-simple.html )
2021-03-28 14:45:48 +06:00
- ### ヴァンEmde Boasの木
2023-11-01 19:01:06 +06:00
- [Divide& Conquer: van Emde Boas Trees(動画) ](https://www.youtube.com/watch?v=hmReJCupbNU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=6 )
2021-08-26 11:49:07 +06:00
- [ ] [MIT講義ノ ート ](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2012/lecture-notes/MIT6_046JS12_lec15.pdf )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### 拡張データ構造
2017-06-11 12:23:26 +06:00
- [ ] [CS 61B講義39: データ構造の拡張 ](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950 )
2021-03-28 14:45:48 +06:00
- ### バランスの取れた検索木
2017-06-11 12:23:26 +06:00
- 少なくとも1つのタイプの平衡二分木を知っている(そしてそれがどのように実装されているか知っている):
- "バランスの取れた探索木の 中で、AVLと2/3の樹木が通過し、赤黒の木がより人気があるようです。
2017-10-30 20:17:27 +06:00
特に興味深い自己組織化データ構造は、スプレイ木であり、回転を使用します
2017-06-11 12:23:26 +06:00
アクセスされたキーをルートに移動する」 - Skiena
2017-10-30 20:17:27 +06:00
これらのうち、私はスプレイ木を実装することを選択しました。私が読んだことから、あなたは
あなたの面接でバランスの取れた検索木。しかし、私は1つのコーディングへの露出を望んでいた
2017-06-11 12:23:26 +06:00
そしてそれに直面しましょう、スプレーの木はミツバチの膝です。私は赤黒の木のコードをたくさん読んだ。
2017-10-30 20:17:27 +06:00
- スプレイ木:挿入、検索、削除機能
2017-06-11 12:23:26 +06:00
あなたが赤/黒の木の実装を終わらせるならば、これらを試してみてください:
- 検索と挿入機能、削除をスキップする
B-Treeについては、非常に大規模なデータセットで非常に広く使用されているため、詳細を知りたい。
- [ ] [Self-balancing binary search tree ](https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree )
2021-08-26 11:49:07 +06:00
- [ ] **AVL木**
2017-06-11 12:23:26 +06:00
- 実際には:
私が言うことから、これらは実際にはあまり使われていませんが、どこになるか分かります。
2017-10-30 20:17:27 +06:00
AVL木は、O(log n)検索、挿入、および削除をサポートする別の構造です。より厳格に
2017-06-11 12:23:26 +06:00
赤黒の木よりもバランスがとれているため、挿入と取り出しが遅くなりますが、検索が速くなります。これにより
一度構築され、再構成なしでロードされる、例えば言語
辞書(または、アセンブラまたはインタプリタのオペコードなどのプログラム辞書)を含む。
2023-11-01 19:01:06 +06:00
- [ ] [MIT AVL Trees / AVL Sort(動画) ](https://www.youtube.com/watch?v=FNeL18KsWPc&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=6 )
- [ ] [AVL木(動画) ](https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees )
- [ ] [AVL木実装(動画) ](https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation )
2017-06-11 12:23:26 +06:00
- [ ] [スプリットアンドマージ ](https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge )
2023-06-24 04:11:28 +06:00
- [ ] [[Review] AVL Trees (playlist) in 19 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZOUFgdIeOPuH6cfSnNRMau-)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- [ ] **スプレッド木**
2017-06-11 12:23:26 +06:00
- 実際には:
2017-10-30 20:17:27 +06:00
スプレイ・木は、キャッシュ、メモリ・アロケータ、ルータ、ガベージ・コレクタ、
2017-06-11 12:23:26 +06:00
データ圧縮、ロープ(長いテキスト文字列に使用される文字列の置換)、Windows NT(仮想メモリ、
ネットワークおよびファイルシステムコードなど)
- [ ] [CS 61B: Splay Trees(video) ](https://www.youtube.com/watch?v=Najzh1rYQTo&index=23&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd )
- [ ] MIT講義: Splay Trees:
- 非常にマッシーになりますが、最後の10分を確かめてください。
- [動画 ](https://www.youtube.com/watch?v=QnPl_Y6EqMo )
- [ ] **レッド/ブラックの木**
- これらは2-3木の翻訳です(下記参照)
- 実際には:
赤黒の木は、挿入時間、削除時間、および検索時間に対して最悪の場合の保証を提供します。
これは、リアルタイムアプリケーションなどの時間に敏感なアプリケーションでは、これらを貴重なものにするだけでなく、
それは最悪の場合の保証を提供する他のデータ構造における貴重なビルディングブロックになります。
例えば、計算幾何学で使用される多くのデータ構造は赤黒の木に基づくことができ、
2017-10-30 20:17:27 +06:00
現在のLinuxカーネルで使用されている完全に公正なスケジューラは赤黒の木を使用します。 Javaのバージョン8では、
2017-06-11 12:23:26 +06:00
Collection HashMapが変更され、LinkedListを使用して同一の要素を貧弱に保存する代わりに
2017-10-30 20:17:27 +06:00
ハッシュコードでは、赤黒の木が使用されます。
2023-11-01 19:01:06 +06:00
- [Aduni - アルゴリズム - 講義4(リンク先のジャンプ先)(動画) ](https://youtu.be/1W3x0f_RmUo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3871 )
- [Aduni - アルゴリズム - 講義5(動画) ](https://www.youtube.com/watch?v=hm2GHwyKF1o&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=5 )
2017-06-11 12:23:26 +06:00
- [ ] [黒い木 ](https://en.wikipedia.org/wiki/Red%E2%80%93black_tree )
2021-08-26 11:49:07 +06:00
- [ ] [バイナリサーチとレッドブラック木の紹介 ](https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-binary-search-and-red-black-trees/ )
2023-02-10 05:15:32 +06:00
- [[Review] Red-Black Trees (playlist) in 30 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNqDI8qfOZgzbqahCUmUEin)
2017-06-11 12:23:26 +06:00
2017-10-30 20:17:27 +06:00
- [ ] **2-3の検索木**
2017-06-11 12:23:26 +06:00
- 実際には:
2〜3本の木は、検索が遅くなるため(AVL木よりも高さが高いため)、挿入が速くなります。
2017-10-30 20:17:27 +06:00
- 2-3の木は非常にまれにしか使用しませんが、実装にはさまざまなタイプのノ ードが含まれるためです。代わりに、人々はレッドブラックの木を使用します。
2023-11-01 19:01:06 +06:00
- [ ] [23木の直感と定義(動画) ](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2 )
2017-06-11 12:23:26 +06:00
- [ ] [23-Treeのバイナリビュー ](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6 )
2023-11-01 19:01:06 +06:00
- [ ] [2-3木(学生の暗唱)(動画) ](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
2017-06-11 12:23:26 +06:00
- [ ] **2-3-4木(別名2-4木)**
- 実際には:
2017-10-30 20:17:27 +06:00
すべての2-4木には、同じ順序でデータ要素を持つ対応する赤黒の木があります。挿入と削除
2017-06-11 12:23:26 +06:00
2-4木の操作は、赤黒の木の色の反転と回転にも相当します。これは2-4の木を
赤黒の木の背後にある論理を理解するための重要なツールです。そのため、多くの導入アルゴリズムのテキストでは、
2〜4本の木は実用的ではありません**。
2023-11-01 19:01:06 +06:00
- [ ] [CS 61B講義26: バランスの取れた検索木(動画) ](https://www.youtube.com/watch?v=zqrqYXkth6Q&index=26&list=PL4BBB74C7D2A1049C )
- [ ] [ボトムアップ234-Trees(動画) ](https://www.youtube.com/watch?v=DQdMYevEyE4&index=4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6 )
2017-10-30 20:17:27 +06:00
- [ ] [トップダウン234木(動画) ](https://www.youtube.com/watch?v=2679VQ26Fp4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=5 )
2017-06-11 12:23:26 +06:00
- [ ] **N-ary(K-ary、M-ary)木**
- 注記: NまたはKは分岐因子(最大分岐)であり、
- 2分木は2分木であり、分岐因子= 2
- 2-3本の木は3本である
- [ ] [K-Ary Tree ](https://en.wikipedia.org/wiki/K-ary_tree )
- [ ] **B-Tree**
- 楽しい事実: それは謎ですが、Bはボーイング、バランスの取れた、またはバイエル(共同発明家)のために立つことができます。
- 実際には:
2017-10-30 20:17:27 +06:00
B木はデータベースで広く使用されています。最近のファイルシステムのほとんどは、B-tree(またはVariants)を使用しています。に加えて
B木はファイルシステムでも使用され、任意のデータベースへの迅速なランダムアクセスを可能にします
2017-06-11 12:23:26 +06:00
特定のファイル内のブロック基本的な問題は、ファイルブロックのiアドレスをディスクブロックに変換することです
(またはおそらくシリンダーヘッドセクターへの)アドレスである。
- [ ] [B-Tree ](https://en.wikipedia.org/wiki/B-tree )
2023-11-01 19:01:06 +06:00
- [ ] [B木(動画)の紹介 ](https://www.youtube.com/watch?v=I22wEC1tTGo&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=6 )
- [ ] [B木の定義と挿入(動画) ](https://www.youtube.com/watch?v=s3bCdZGrgpA&index=7&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6 )
2017-10-30 20:17:27 +06:00
- [ ] [B木削除(動画) ](https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6 )
2023-11-01 19:01:06 +06:00
- [ ] [MIT 6.851 - メモリ階層モデル(動画) ](https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf )
2017-10-30 20:17:27 +06:00
- キャッシュに気付かないB木、非常に興味深いデータ構造
2017-06-11 12:23:26 +06:00
- 最初の37分は非常に技術的であり、スキップすることができます(Bはブロックサイズ、キャッシュラインサイズです)
2023-02-10 05:15:32 +06:00
- [[Review] B-Trees (playlist) in 26 minutes (video)](https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz)
2017-06-11 12:23:26 +06:00
- ### k-D木
- 矩形または高次元のオブジェクトの点数を見つけるのに最適
- k最近接の隣人に適している
2023-11-01 19:01:06 +06:00
- [ ] [Kd Trees(動画) ](https://www.youtube.com/watch?v=W94M9D_yXKk )
- [ ] [kNN K-d木アルゴリズム(動画) ](https://www.youtube.com/watch?v=Y4ZgLlDfKDg )
2017-06-11 12:23:26 +06:00
2021-03-28 14:45:48 +06:00
- ### リストをスキップする
2017-06-11 12:23:26 +06:00
- 「これは多少のカルトデータ構造です」 - Skiena
2023-11-01 19:01:06 +06:00
- [ ] [ランダム化:リストをスキップ(動画) ](https://www.youtube.com/watch?v=2g9OSRKJuzM&index=10&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
2017-06-11 12:23:26 +06:00
- [ ] [アニメーションともう少し詳しく ](https://en.wikipedia.org/wiki/Skip_list )
2021-03-28 14:45:48 +06:00
- ### ネットワークの流れ
2023-11-01 19:01:06 +06:00
- [ ] [Ford-Fulkerson(動画) ](https://www.youtube.com/watch?v=v1VgJmkEJW0 )
- [ ] [Ford-Fulkersonアルゴリズム(動画) ](https://www.youtube.com/watch?v=v1VgJmkEJW0 )
2017-06-11 12:23:26 +06:00
- [ ] [ネットワークフロー(動画) ](https://www.youtube.com/watch?v=2vhN4Ice5jI )
2021-03-28 14:45:48 +06:00
- ### 高速処理のための数学
2023-11-01 19:01:06 +06:00
- [ ] [整数演算、Karatsuba倍数(動画) ](https://www.youtube.com/watch?v=eCaXlAaN2uE&index=11&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
- [中国の剰余定理(暗号で使用)(動画) ](https://www.youtube.com/watch?v=ru7mWZJlRQg )
2017-06-11 12:23:26 +06:00
2021-03-28 14:48:26 +06:00
- ### Treap
2017-10-30 20:17:27 +06:00
- 二分探索木とヒープの組み合わせ
2017-06-11 12:23:26 +06:00
- [ ] [Treap ](https://en.wikipedia.org/wiki/Treap )
- [ ] [データ構造: Treaps説明(動画) ](https://www.youtube.com/watch?v=6podLUYinH8 )
- [ ] [セット操作のアプリケーション ](https://www.cs.cmu.edu/~scandal/papers/treaps-spaa98.pdf )
2023-11-01 19:01:06 +06:00
- ### リニアプログラミング(動画)
2017-06-11 12:23:26 +06:00
- [ ] [線形計画法 ](https://www.youtube.com/watch?v=M4K6HYLHREQ )
- [ ] [最小費用の見積もり ](https://www.youtube.com/watch?v=2ACJ9EWUC6U )
- [ ] [最大値の検索 ](https://www.youtube.com/watch?v=8AA_81xI3ik )
- [ ] [Pythonで線形方程式を解く - シンプレックスアルゴリズム ](https://www.youtube.com/watch?v=44pAWI7v5Zk )
2023-11-01 19:01:06 +06:00
- ### 幾何学、凸包(動画)
2021-08-26 11:49:07 +06:00
- [ ] [Graph Alg。 IV: 幾何学アルゴリズムの紹介 - 講義9 ](https://youtu.be/XIAQRlNkJAw?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3164 )
2017-06-11 12:23:26 +06:00
- [ ] [Geometric Algorithms: Graham& Jarvis - 講義10 ](https://www.youtube.com/watch?v=J5aJEcOr6Eo&index=10&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm )
- [Divide& Conquer: Convex Hull、Median Finding ](https://www.youtube.com/watch?v=EzeYI7p9MjU&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=2 )
2021-03-28 14:45:48 +06:00
- ### 離散数学
2017-06-11 12:23:26 +06:00
- 下のビデオを見る
2021-03-28 14:45:48 +06:00
- ### 機械学習
2017-06-11 12:23:26 +06:00
- [ ] なぜMLですか?
- [ ] [Googleがどのように最初の企業を学習するマシンとして自分自身を作り直すか ](https://backchannel.com/how-google-is-remaking-itself-as-a-machine-learning-first-company-ada63defcb70 )
2023-11-01 19:01:06 +06:00
- [ ] [知的コンピュータシステムのための大規模な深い学習(動画) ](https://www.youtube.com/watch?v=QSaZGT4-6EY )
2017-06-11 12:23:26 +06:00
- [ ] [深い学習と理解度対ソフトウェア工学と検証、Peter Norvig ](https://www.youtube.com/watch?v=X769cyzBNVw )
- [ ] [Googleのクラウドマシン学習ツール(動画) ](https://www.youtube.com/watch?v=Ja2hxBAwG_0 )
2023-11-01 19:01:06 +06:00
- [ ] [Google Developers `Machine Learning Recipes(Scikit Learn& Tensorflow)(動画) ](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal )
2017-06-11 12:23:26 +06:00
- [ ] [Tensorflow(video) ](https://www.youtube.com/watch?v=oZikw5k_2FM )
- [ ] [Tensorflowチュートリアル ](https://www.tensorflow.org/versions/r0.11/tutorials/index.html )
- [ ] [Pythonでニューラルネットワークを実装する実践ガイド(Theanoを使用) ](http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/ )
- コース:
- [グレートスターターコース:機械学習 ](https://www.coursera.org/learn/machine-learning )
- [動画のみ ](https://www.youtube.com/playlist?list=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPW )
- 線形代数のレビューについてはビデオ12〜18を参照してください(14と15は重複しています)
- [機械学習のためのニューラルネットワーク ](https://www.coursera.org/learn/neural-networks )
- [GoogleのDeep Learning Nanodegree ](https://www.udacity.com/course/deep-learning--ud730 )
- [Google / Kaggle Machine Learning Engineer Nanodegree ](https://www.udacity.com/course/machine-learning-engineer-nanodegree-by-google--nd009 )
- [自己運転車技術者Nanodegree ](https://www.udacity.com/drive )
- リソース:
- 書籍:
- [Python Machine Learning ](https://www.amazon.com/Python-Machine-Learning-Sebastian-Raschka/dp/1783555130/ )
- [ゼロからのデータ科学: Pythonの第一原理 ](https://www.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X )
- [Pythonによる機械学習入門 ](https://www.amazon.com/Introduction-Machine-Learning-Python-Scientists/dp/1449369413/ )
- [ソフトウェアエンジニア向け機械学習 ](https://github.com/ZuzooVn/machine-learning-for-software-engineers )
- データスクール: http://www.dataschool.io/
-
2021-03-28 14:29:05 +06:00
## 追加科目の詳細
2017-06-11 12:23:26 +06:00
私は既に上記のいくつかのアイデアを強化するためにこれらを追加しましたが、それらを含めたくありませんでした
2017-10-30 20:17:27 +06:00
それはちょうどあまりにも多くのためです。それは科目にそれを過ごすのは簡単です。
2017-06-11 12:23:26 +06:00
あなたは今世紀に雇われたかったですね。
- [ ] **連合検索**
- [ ] [概要 ](https://www.coursera.org/learn/data-structures/lecture/JssSY/overview )
- [ ] [Naive Implementation ](https://www.coursera.org/learn/data-structures/lecture/EM5D0/naive-implementations )
2017-10-30 20:17:27 +06:00
- [ ] [木 ](https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees )
2017-06-11 12:23:26 +06:00
- [ ] [ランキングによる連合 ](https://www.coursera.org/learn/data-structures/lecture/qb4c2/union-by-rank )
- [ ] [パス圧縮 ](https://www.coursera.org/learn/data-structures/lecture/Q9CVI/path-compression )
- [ ] [分析オプション ](https://www.coursera.org/learn/data-structures/lecture/GQQLN/analysis-optional )
2023-11-01 19:01:06 +06:00
- [ ] **もっとダイナミックなプログラミング** (動画)
2017-06-11 12:23:26 +06:00
- [ ] [6.006: 動的プログラミングI: フィボナッチ、最短経路 ](https://www.youtube.com/watch?v=OQ5jsbhAv_M&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=19 )
- [ ] [6.006: ダイナミックプログラミングII: テキストジャスティフィケーション、ブラックジャック ](https://www.youtube.com/watch?v=ENyox7kNKeY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=20 )
- [ ] [6.006: DP III: かっこ、編集距離、ナップザック ](https://www.youtube.com/watch?v=ocZMDMZwhCY&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=21 )
- [6.006: DP IV: Guitar Fingering、Tetris、Super Mario Bros. ](https://www.youtube.com/watch?v=tp4_UXaVyx8&index=22&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb )
- [ ] [6.046: Dynamic Programming& Advanced DP ](https://www.youtube.com/watch?v=Tw1k46ywN6E&index=14&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
- [ ] [6.046:ダイナミックプログラミング:オールペア最短パス ](https://www.youtube.com/watch?v=NzgFUwOaoIw&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=15 )
- [ ] [6.046:ダイナミックプログラミング(学生の暗唱) ](https://www.youtube.com/watch?v=krZI60lKPek&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=12 )
2023-11-01 19:01:06 +06:00
- [ ] **高度なグラフ処理** (動画)
2017-10-30 20:17:27 +06:00
- [ ] [同期分散アルゴリズム:対称性を破る。木にまたがる最短パス ](https://www.youtube.com/watch?v=mUBmcbbJNf4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=27 )
- [ ] [非同期分散アルゴリズム:木にまたがる最短パス ](https://www.youtube.com/watch?v=kQ-UQAzcnzA&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=28 )
2017-06-11 12:23:26 +06:00
2023-11-01 19:01:06 +06:00
- [ ] MIT **確率** (mathy、ゆっくりと進み、数学的なことに良い)(動画):
2017-06-11 12:23:26 +06:00
- [ ] [MIT 6.042J - 確率の紹介 ](https://www.youtube.com/watch?v=SmFwFdESMHI&index=18&list=PLB7540DEDD482705B )
- [ ] [MIT 6.042J - 条件付き確率 ](https://www.youtube.com/watch?v=E6FbvM-FGZ8&index=19&list=PLB7540DEDD482705B )
- [ ] [MIT 6.042J - 独立性 ](https://www.youtube.com/watch?v=l1BCv3qqW4A&index=20&list=PLB7540DEDD482705B )
- [ ] [MIT 6.042J - ランダム変数 ](https://www.youtube.com/watch?v=MOfhhFaQdjw&list=PLB7540DEDD482705B&index=21 )
- [ ] [MIT 6.042J - 期待値I ](https://www.youtube.com/watch?v=gGlMSe7uEkA&index=22&list=PLB7540DEDD482705B )
- [ ] [MIT 6.042J - Expectation II ](https://www.youtube.com/watch?v=oI9fMUqgfxY&index=23&list=PLB7540DEDD482705B )
- [ ] [MIT 6.042J - 大きな偏差 ](https://www.youtube.com/watch?v=q4mwO2qS2z4&index=24&list=PLB7540DEDD482705B )
- [ ] [MIT 6.042J - ランダムウォーク ](https://www.youtube.com/watch?v=56iFMY8QW2k&list=PLB7540DEDD482705B&index=25 )
- [ ] [Simonson: Approximation Algorithms(video) ](https://www.youtube.com/watch?v=oDniZCmNmNw&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=19 )
- [ ] **文字列マッチング**
2023-11-01 19:01:06 +06:00
- [ ] Rabin-Karp(動画):
2017-06-11 12:23:26 +06:00
- [Rabin Karps Algorithm ](https://www.coursera.org/learn/data-structures/lecture/c0Qkw/rabin-karps-algorithm )
- [Precomputing ](https://www.coursera.org/learn/data-structures/lecture/nYrc8/optimization-precomputation )
- [最適化:実装と分析 ](https://www.coursera.org/learn/data-structures/lecture/h4ZLc/optimization-implementation-and-analysis )
- [表倍増、Karp-Rabin ](https://www.youtube.com/watch?v=BRO7mVIFt08&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=9 )
- [ローリングハッシュ、償却分析 ](https://www.youtube.com/watch?v=w6nuXg0BISo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=32 )
- [ ] クヌース・モリス・プラット(KMP):
- [Knuth-Morris-Pratt(KMP)文字列マッチングアルゴリズム ](https://www.youtube.com/watch?v=5i7oKodCRJo )
- [ ] Boyer-Moore文字列検索アルゴリズム
- [Boyer-Moore String Search Algorithm ](https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm )
2023-11-01 19:01:06 +06:00
- [高度な文字列検索Boyer-Moore-Horspoolアルゴリズム(動画) ](https://www.youtube.com/watch?v=QDZpzctPf10 )
2017-06-11 12:23:26 +06:00
- [ ] [Coursera: 文字列のアルゴリズム ](https://www.coursera.org/learn/algorithms-on-strings/home/week/1 )
- すごく始まりますが、KMPを過ぎるまでには、必要以上に複雑になります
- 試行の良い説明
- スキップすることができます
- [ ] **ソート**
- [ ] スタンフォードのソーティングに関する講義:
2023-11-01 19:01:06 +06:00
- [ ] [講義15 |プログラミングの抽象化(動画) ](https://www.youtube.com/watch?v=ENp00xylP7c&index=15&list=PLFE6E58F856038C69 )
- [ ] [講義16 |プログラミングの抽象化(動画) ](https://www.youtube.com/watch?v=y4M9IVgrVKo&index=16&list=PLFE6E58F856038C69 )
2017-06-11 12:23:26 +06:00
- [ ] Shai Simonson、[Aduni.org](http://www.aduni.org/):
2023-11-01 19:01:06 +06:00
- [ ] [アルゴリズム - ソート - 講義2(動画) ](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=2 )
- [ ] [アルゴリズム - ソートII - レクチャー3(動画) ](https://www.youtube.com/watch?v=hj8YKFTFKEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=3 )
2017-06-11 12:23:26 +06:00
- [ ] Steven Skienaのソーティングに関する講義:
2023-11-01 19:01:06 +06:00
- [ ] [講義は26:46に始まります(動画) ](https://youtu.be/ute-pmMkyuk?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1600 )
- [ ] [講義は27:40(動画)から開始 ](https://www.youtube.com/watch?v=yLvp-pB8mak&index=8&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
- [ ] [講演は35:00(動画)から開始 ](https://www.youtube.com/watch?v=q7K9otnzlfE&index=9&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b )
- [ ] [講演は23:50から始まります(動画) ](https://www.youtube.com/watch?v=TvqIGu9Iupw&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=10 )
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## ビデオシリーズ
2017-06-11 12:23:26 +06:00
座って楽しんでください。 「ネットフリックスとスキル」: P
- [ ] [個々の動的プログラミングの問題のリスト(それぞれ短いです) ](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr )
- [ ] [x86アーキテクチャ、アセンブリ、アプリケーション(11ビデオ) ](https://www.youtube.com/playlist?list=PL038BE01D3BAEFDB0 )
- [ ] [MIT 18.06線形代数、2005年春(35ビデオ) ](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8 )
- [ ] [優秀 - MIT Calculus Revisited: 単一変数計算 ](https://www.youtube.com/playlist?list=PL3B08AE665AB9002A )
- [ ] [コンピュータサイエンス70,001 - 春2015 - 離散数学と確率論 ](https://www.youtube.com/playlist?list=PL-XXv-cvA_iD8wQm8U0gG_Z1uHjImKXFy )
2021-06-14 13:30:48 +06:00
- [ ] [Shai Simonsonによる離散数学(19ビデオ) ](https://www.youtube.com/playlist?list=PLWX710qNZo_sNlSWRMVIh6kfTjolNaZ8t )
2017-06-11 12:23:26 +06:00
- [ ] [離散数学第1部: Sarada Herke(5ビデオ) ](https://www.youtube.com/playlist?list=PLGxuz-nmYlQPOc4w1Kp2MZrdqOOm4Jxeo )
- [ ] CSE373 - アルゴリズムの分析(25ビデオ)
- [アルゴリズム設計マニュアルのSkiena講義 ](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=1 )
- [UCバークレー61B(Spring 2014):データ構造(25ビデオ) ](https://www.youtube.com/watch?v=mFPmKGIrQs4&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd )
- [UC Berkeley 61B(2006年秋):データ構造(39ビデオ) ](https://www.youtube.com/playlist?list=PL4BBB74C7D2A1049C )
- [UC Berkeley 61C: 機械構造物(26ビデオ) ](https://www.youtube.com/watch?v=gJJUUFyuvvg&list=PL-XXv-cvA_iCl2-D-FS5mk0jFF6cYSJs_ )
- [ ] [OOSE: UMLとJavaを使用したソフトウェア開発(21ビデオ) ](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO )
- [ ] [UC Berkeley CS 152: コンピュータアーキテクチャとエンジニアリング(20ビデオ) ](https://www.youtube.com/watch?v=UH0QYvtP7Rk&index=20&list=PLkFD6_40KJIwEiwQx1dACXwh-2Fuo32qr )
- [ ] [MIT 6.004:計算構造(49ビデオ) ](https://www.youtube.com/playlist?list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82- )
- [Carnegie Mellon - Computer Architecture Lectures(39ビデオ) ](https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq )
- [ ] [MIT 6.006:アルゴリズム紹介(47ビデオ) ](https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False )
- [ ] [MIT 6.033:コンピュータシステムエンジニアリング(22ビデオ) ](https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484 )
- [ ] [MIT 6.034人工知能、2010年秋(30ビデオ) ](https://www.youtube.com/playlist?list=PLUl4u3cNGP63gFHB6xb-kVBiQHYe_4hSi )
- [ ] [MIT 6.042J: コンピュータサイエンスの数学、2010年秋(25ビデオ) ](https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B )
- [ ] [MIT 6.046:アルゴリズムの設計と分析(34ビデオ) ](https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp )
- [ ] [MIT 6.050J: 情報とエントロピー、2008年春(19ビデオ) ](https://www.youtube.com/watch?v=phxsQrZQupo&list=PL_2Bwul6T-A7OldmhGODImZL8KEVE38X7 )
- [ ] [MIT 6.851:高度なデータ構造(22ビデオ) ](https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=1 )
- [ ] [MIT 6.854: Advanced Algorithms、Spring 2016(24ビデオ) ](https://www.youtube.com/playlist?list=PL6ogFv-ieghdoGKGg2Bik3Gl1glBTEu8c )
- [ ] [Harvard COMPSCI 224: Advanced Algorithms(25ビデオ) ](https://www.youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf )
- [ ] [MIT 6.858コンピュータシステムセキュリティ、2014年秋 ](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh )
2021-07-27 10:02:12 +06:00
- [ ] [Stanford: Programming Paradigms(27ビデオ) ](https://www.youtube.com/playlist?list=PL9D558D49CA734A02 )
2017-06-11 12:23:26 +06:00
- [ ] [Christof Paarによる暗号の概要 ](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy )
- [スライドと問題セットと一緒のコースウェブサイト ](http://www.crypto-textbook.com/ )
- [ ] [Mining Massive Datasets - スタンフォード大学(94ビデオ) ](https://www.youtube.com/playlist?list=PLLssT5z_DsK9JDLcT8T62VtzwyW9LNepV )
2021-08-26 11:49:07 +06:00
- [ ] [グラフ理論(Sarada Herke)(67ビデオ) ](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd )
2017-06-11 12:23:26 +06:00
2021-03-28 14:29:05 +06:00
## コンピュータサイエンスコース
2017-06-11 12:23:26 +06:00
- [オンラインCSコースのディレクトリ ](https://github.com/open-source-society/computer-science )
2022-11-02 16:33:13 +06:00
- [CSコースのディレクトリ(多くはオンライン講義あり) ](https://github.com/prakhar1989/awesome-courses )