This commit is contained in:
ka_ueno 2021-04-02 13:03:48 +09:00
parent 6f24512b00
commit c75d34160f
2 changed files with 221 additions and 182 deletions

209
README.md
View File

@ -67,111 +67,120 @@ If you want to be a reliability engineer or operations engineer, study more from
## Table of Contents ## Table of Contents
- [Coding Interview University](#coding-interview-university) - [What is it?](#what-is-it)
- [What is it?](#what-is-it) - [Why use it?](#why-use-it)
- [Table of Contents](#table-of-contents) - [How to use it](#how-to-use-it)
- [Additional Resources](#additional-resources) - [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough)
- [Why use it?](#why-use-it) - [About Video Resources](#about-video-resources)
- [How to use it](#how-to-use-it) - [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - [Pick One Language for the Interview](#pick-one-language-for-the-interview)
- [About Video Resources](#about-video-resources) - [Book List](#book-list)
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [Before you Get Started](#before-you-get-started)
- [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [What you Won't See Covered](#what-you-wont-see-covered)
- [Book List](#book-list) - [The Daily Plan](#the-daily-plan)
- [Interview Prep](#interview-prep) - [Prerequisite Knowledge](#prerequisite-knowledge)
- [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis)
- [Language Specific](#language-specific) - [Data Structures](#data-structures)
- [C++](#c) - [Arrays](#arrays)
- [Java](#java) - [Linked Lists](#linked-lists)
- [Python](#python) - [Stack](#stack)
- [Before you Get Started](#before-you-get-started) - [Queue](#queue)
- [1. You Won't Remember it All](#1-you-wont-remember-it-all) - [Hash table](#hash-table)
- [2. Use Flashcards](#2-use-flashcards) - [More Knowledge](#more-knowledge)
- [3. Start doing coding interview questions while you're learning data structures and algorithms](#3-start-doing-coding-interview-questions-while-youre-learning-data-structures-and-algorithms) - [Binary search](#binary-search)
- [4. Review, review, review](#4-review-review-review) - [Bitwise operations](#bitwise-operations)
- [5. Focus](#5-focus) - [Trees](#trees)
- [What you won't see covered](#what-you-wont-see-covered) - [Trees - Notes & Background](#trees---notes--background)
- [The Daily Plan](#the-daily-plan) - [Binary search trees: BSTs](#binary-search-trees-bsts)
- [Prerequisite Knowledge](#prerequisite-knowledge) - [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap)
- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - balanced search trees (general concept, not details)
- [Data Structures](#data-structures) - traversals: preorder, inorder, postorder, BFS, DFS
- [More Knowledge](#more-knowledge) - [Sorting](#sorting)
- [Trees](#trees) - selection
- [Sorting](#sorting) - insertion
- [Graphs](#graphs) - heapsort
- [Even More Knowledge](#even-more-knowledge) - quicksort
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - merge sort
- [Final Review](#final-review) - [Graphs](#graphs)
- [Coding Question Practice](#coding-question-practice) - directed
- [Coding exercises/challenges](#coding-exerciseschallenges) - undirected
- [Once you're closer to the interview](#once-youre-closer-to-the-interview) - adjacency matrix
- [Your Resume](#your-resume) - adjacency list
- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - traversals: BFS, DFS
- [Have questions for the interviewer](#have-questions-for-the-interviewer) - [Even More Knowledge](#even-more-knowledge)
- [Once You've Got The Job](#once-youve-got-the-job) - [Recursion](#recursion)
- [Additional Books](#additional-books) - [Dynamic Programming](#dynamic-programming)
- [Additional Learning](#additional-learning) - [Object-Oriented Programming](#object-oriented-programming)
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects) - [Design Patterns](#design-patterns)
- [Video Series](#video-series) - [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability)
- [Computer Science Courses](#computer-science-courses) - [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms)
- [Algorithms implementation](#algorithms-implementation) - [Caches](#caches)
- [Papers](#papers) - [Processes and Threads](#processes-and-threads)
- [LICENSE](#license) - [Testing](#testing)
- [Scheduling](#scheduling)
- [String searching & manipulations](#string-searching--manipulations)
- [Tries](#tries)
- [Floating Point Numbers](#floating-point-numbers)
- [Unicode](#unicode)
- [Endianness](#endianness)
- [Networking](#networking)
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience)
- [Final Review](#final-review)
- [Coding Question Practice](#coding-question-practice)
- [Coding exercises/challenges](#coding-exerciseschallenges)
- [Once you're closer to the interview](#once-youre-closer-to-the-interview)
- [Your Resume](#your-resume)
- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes)
- [Have questions for the interviewer](#have-questions-for-the-interviewer)
- [Once You've Got The Job](#once-youve-got-the-job)
---------------- Everything below this point is optional ---------------- ---------------- Everything below this point is optional ----------------
## Additional Resources ## Additional Resources
- [Coding Interview University](#coding-interview-university) - [Additional Books](#additional-books)
- [What is it?](#what-is-it) - [Additional Learning](#additional-learning)
- [Table of Contents](#table-of-contents) - [Compilers](#compilers)
- [Additional Resources](#additional-resources) - [Emacs and vi(m)](#emacs-and-vim)
- [Why use it?](#why-use-it) - [Unix command line tools](#unix-command-line-tools)
- [How to use it](#how-to-use-it) - [Information theory](#information-theory-videos)
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough) - [Parity & Hamming Code](#parity--hamming-code-videos)
- [About Video Resources](#about-video-resources) - [Entropy](#entropy)
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep) - [Cryptography](#cryptography)
- [Pick One Language for the Interview](#pick-one-language-for-the-interview) - [Compression](#compression)
- [Book List](#book-list) - [Computer Security](#computer-security)
- [Interview Prep](#interview-prep) - [Garbage collection](#garbage-collection)
- [If you have tons of extra time:](#if-you-have-tons-of-extra-time) - [Parallel Programming](#parallel-programming)
- [Language Specific](#language-specific) - [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems)
- [C++](#c) - [A*](#a)
- [Java](#java) - [Fast Fourier Transform](#fast-fourier-transform)
- [Python](#python) - [Bloom Filter](#bloom-filter)
- [Before you Get Started](#before-you-get-started) - [HyperLogLog](#hyperloglog)
- [1. You Won't Remember it All](#1-you-wont-remember-it-all) - [Locality-Sensitive Hashing](#locality-sensitive-hashing)
- [2. Use Flashcards](#2-use-flashcards) - [van Emde Boas Trees](#van-emde-boas-trees)
- [3. Start doing coding interview questions while you're learning data structures and algorithms](#3-start-doing-coding-interview-questions-while-youre-learning-data-structures-and-algorithms) - [Augmented Data Structures](#augmented-data-structures)
- [4. Review, review, review](#4-review-review-review) - [Balanced search trees](#balanced-search-trees)
- [5. Focus](#5-focus) - AVL trees
- [What you won't see covered](#what-you-wont-see-covered) - Splay trees
- [The Daily Plan](#the-daily-plan) - Red/black trees
- [Prerequisite Knowledge](#prerequisite-knowledge) - 2-3 search trees
- [Algorithmic complexity / Big-O / Asymptotic analysis](#algorithmic-complexity--big-o--asymptotic-analysis) - 2-3-4 Trees (aka 2-4 trees)
- [Data Structures](#data-structures) - N-ary (K-ary, M-ary) trees
- [More Knowledge](#more-knowledge) - B-Trees
- [Trees](#trees) - [k-D Trees](#k-d-trees)
- [Sorting](#sorting) - [Skip lists](#skip-lists)
- [Graphs](#graphs) - [Network Flows](#network-flows)
- [Even More Knowledge](#even-more-knowledge) - [Disjoint Sets & Union Find](#disjoint-sets--union-find)
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) - [Math for Fast Processing](#math-for-fast-processing)
- [Final Review](#final-review) - [Treap](#treap)
- [Coding Question Practice](#coding-question-practice) - [Linear Programming](#linear-programming-videos)
- [Coding exercises/challenges](#coding-exerciseschallenges) - [Geometry, Convex hull](#geometry-convex-hull-videos)
- [Once you're closer to the interview](#once-youre-closer-to-the-interview) - [Discrete math](#discrete-math)
- [Your Resume](#your-resume) - [Machine Learning](#machine-learning)
- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes) - [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
- [Have questions for the interviewer](#have-questions-for-the-interviewer) - [Video Series](#video-series)
- [Once You've Got The Job](#once-youve-got-the-job) - [Computer Science Courses](#computer-science-courses)
- [Additional Books](#additional-books) - [Papers](#papers)
- [Additional Learning](#additional-learning)
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
- [Video Series](#video-series)
- [Computer Science Courses](#computer-science-courses)
- [Algorithms implementation](#algorithms-implementation)
- [Papers](#papers)
- [LICENSE](#license)
--- ---

View File

@ -36,7 +36,7 @@
## これは何? ## これは何?
これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の数月の学習計画です。 これは、Webエンジニア(独学で、CS学位なし)から大企業のソフトウェアエンジニアを目指すための私の数月の学習計画です。
![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png) ![ホワイトボードでのコーディング - HBOのシリコンバレーから](https://d3j2pkmjtin6ou.cloudfront.net/coding-at-the-whiteboard-silicon-valley.png)
@ -50,92 +50,122 @@ SREまたはシステムエンジニアになりたい場合は、オプショ
--- ---
## 目次 ## 目次
- [コーディング面接の大学](#コーディング面接の大学)
- [これは何?](#これは何) - [これは何?](#これは何?)
- [目次](#目次) - [なぜこれを使うの?](#why-use-it)
- [なぜそれを使用するのですか?](#なぜそれを使用するのですか) - [使い方](#使い方)
- [それの使い方](#それの使い方) - [あなたは十分にスマートではないと感じないでください](十分にスマートではありません)
- [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) - [ビデオリソースについて](#about-video-resources)
- [ビデオリソースについて](#ビデオリソースについて) - [面接のプロセスと一般的な面接の準備](#面接プロセス--一般面接--準備)
- [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) - [面接のための1つの言語を選ぶ](面接のために1つの言語を選択する)
- [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) - [ブックリスト](#ブックリスト)
- [ブックリスト](#ブックリスト) - [始める前に](始める前に#)
- [面接の準備](#面接の準備) - あなたがカバーしていないもの(何があなたには見えません)
- [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) - [前提知識](#前提条件知識)
- [言語固有](#言語固有) - [日々の計画](日々の計画)
- [C++](#c) - [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム--複雑--big-o--漸近分析)
- [Java](#java) - [データ構造](#データ構造)
- [Python](#python) - [配列](#配列)
- [オプションの書籍](#オプションの書籍) - [連結リスト](#連結リスト)
- [始める前に](#始める前に) - [スタック](#スタック)
- [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) - [キュー](#キュー)
- [2.フラッシュカードを使用する](#2フラッシュカードを使用する) - [ハッシュテーブル](#ハッシュテーブル)
- [3.レビュー、レビュー、評価](#3レビューレビュー評価) - [その他の知識](#more-knowledge)
- [4.フォーカス](#4フォーカス) - [二分探索](#二分探索)
- [カバーされていないもの](#カバーされていないもの) - [ビット演算](#ビット演算)
- [日々の計画](#日々の計画) - [木構造](#木)
- [前提知識](#前提知識) - [木構造 - ノートと背景](#木---ノート--背景)
- [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) - [二分探索木BST](#binary-search-trees-bsts)
- [データ構造](#データ構造) - [ヒープ/優先度つきキュー/二分ヒープ](#ヒープ--優先度キュー--バイナリヒープ)
- [その他の知識](#その他の知識) - 平衡探索木(詳細ではなく一般概念)
- [](#木) - 木の走査(traversal):行きがけ順(pre-order)、通りがかり順(in-order)、帰りがけ順(postorder)、深さ優先探索(BFS)、幅優先探索(DFS)
- [ソート](#ソート) - [ソート](#ソート)
- [グラフ](#グラフ) - 選択ソート
- [さらに多くの知識](#さらに多くの知識) - 挿入ソート
- [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) - ヒープソート
- [最終レビュー](#最終レビュー) - クイックソート
- [コーディングの質問練習](#コーディングの質問練習) - マージソート
- [コード演習/挑戦](#コード演習挑戦) - [グラフ](#グラフ)
- [面接に近づいたら](#面接に近づいたら) - 有向グラフ
- [あなたの履歴書](#あなたの履歴書) - 無向グラフ
- [面接が来たときに考えてください](#面接が来たときに考えてください) - 隣接行列
- [面接官に質問があります](#面接官に質問があります) - 隣接リスト
- [一度あなたは仕事を得た](#一度あなたは仕事を得た) - トラバーサルBFS、DFS
- [その他の書籍](#その他の書籍) - [さらに多くの知識](#偶数知識)
- [その他の学習](#その他の学習) - [再帰](#再帰)
- [追加科目の詳細](#追加科目の詳細) - [動的プログラミング](#動的プログラミング)
- [ビデオシリーズ](#ビデオシリーズ) - [オブジェクト指向プログラミング](#オブジェクト指向プログラミング)
- [コンピュータサイエンスコース](#コンピュータサイエンスコース) - [デザインパターン](#デザインパターン)
- [組み合わせと確率](#combinatorics-n-choose-k--確率)
- [NP、NP完全/近似アルゴリズム](#np-np-complete-and-approximation-algorithms)
- [キャッシュ](#キャッシュ)
- [プロセスとスレッド](#processes-and-threads)
- [論文](#論文)
- [テスト](#テスト)
- [スケジューリング](#スケジューリング)
- [システムルーチンを実装する](#implement-system-routines)
- [文字列検索と操作](#文字列検索--操作)
- [試行](#試行)
- [浮動小数点数](浮動小数点数)
- [ユニコード](#ユニコード)
- [バイト順(エンディアン)](#エンディアン)
- [ネットワーキング](#ネットワーキング)
- [システム設計、スケーラビリティ、データ処理](#システム設計--スケーラビリティなデータ処理)(4年以上の経験がある場合)
- [最終審査](#最終審査)
- [コーディング質問練習](#コーディング質問練習)
- [コーディング練習問題/挑戦](#コーディング演習問題)
- [面接に近づいたら](面接に一度近づいて)
- [履歴書](あなたの履歴書)
- [面接が来たときに考える](面接のときに考えている)
- [面接官に質問があります](#面接のための質問があります)
- [一度あなたは仕事を得た](一度あなたが仕事をしたこと)
----------------この時点より下のものはすべてオプションです---------------- ----------------この時点より下のものはすべてオプションです----------------
- [その他の書籍](#その他の書籍) - [追加の書籍](追加の書籍数)
- [その他の学習](#その他の学習) - [追加の学習](追加学習)
- [コンパイラ](#コンパイラ) - [コンパイラ](#コンパイラ)
- [Emacsとvi(m)](#Emacsとvi(m)) - [Emacsとvi(m)](#emacs-and-vim)
- [Unixコマンドラインツール](#Unixコマンドラインツール) - [Unixコマンドラインツール](#unix-command-line-tools)
- [情報理論(ビデオ)](#情報理論(ビデオ)) - [情報理論](#情報理論)
- [パリティ&ハミングコード(ビデオ)](#パリティ&ハミングコード(ビデオ)) - [パリティとハミング符号](#パリティ--ハミングコード)
- [エントロピー](#エントロピー) - [情報量(エントロピー)](#エントロピー)
- [暗号化](#暗号化) - [暗号化](#暗号化)
- [圧縮](#圧縮) - [圧縮](#圧縮)
- [コンピュータセキュリティ](#コンピュータセキュリティ) - [コンピュータセキュリティ](#コンピュータセキュリティ)
- [ガベージコレクション](#ガベージコレクション) - [ガベージコレクション](#ガベージコレクション)
- [パラレルプログラミング](#パラレルプログラミング) - [並列計算](#パラレルプログラミング)
- [メッセージング、シリアライゼーション、およびキューイングシステム](#メッセージング、シリアライゼーション、およびキューイングシステム) - [メッセージング、シリアライゼーション・キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム)
- [A *](#A *) - [A *](#a)
- [高速フーリエ変換](#高速フーリエ変換) - [高速フーリエ変換](#高速フーリエ変換)
- [ブルームフィルター](#ブルームフィルター) - [ブルームフィルタ](#ブルームフィルタ)
- [HyperLogLog](#HyperLogLog) - [HyperLogLog](#hyperloglog)
- [局所性に敏感なハッシング](#局所性に敏感なハッシング) - [局所性鋭敏型ハッシュ](#ローカリティセンシティブハッシング)
- [ヴァンEmde Boasの木](#ヴァンEmde Boasの木) - [van Emde Boas Trees(バン エンデ ボース)](ヴァン・エムード・ボア・木)
- [拡張データ構造](#拡張データ構造) - [拡張データ構造](#拡張データ構造)
- [バランスの取れた検索木](#バランスの取れた検索木) - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees)
- [kD木](#kD木) - [平衡探索木](#バランス検索木)
- [リストをスキップする](#リストをスキップする) - AVL木
- [ネットワークの流れ](#ネットワークの流れ) - スプレー木
- [分離集合と連合検索](#分離集合と連合検索) - 赤黒木
- [高速処理のための数学](#高速処理のための数学) - 2-3木
- [Treap](#Treap) - 2-3-4木(別名2-4木)
- [リニアプログラミング(ビデオ)](#リニアプログラミング(ビデオ)) - 多分木(N-aryK-aryM-ary木)
- [幾何学、凸包(ビデオ)](#幾何学、凸包(ビデオ)) - B木
- [離散数学](#離散数学) - [kd木](#k-d-trees)
- [機械学習](#機械学習) - [スキップリスト](#スキップリスト)
- [追加科目の詳細](#追加科目の詳細) - [ネットワークのフロー](#ネットワークフロー)
- [素集合データ構造とUnion-Findアルゴリズム](#disjoint-sets--union-find)
- [高速処理のための数学](#数学のための高速処理)
- [Treap](#treap)
- [線形計画法](#線形計画法)
- [ジオメトリ、凸包](#ジオメトリ--凸包)
- [離散数学](離散数学)
- [機械学習](機械学習)
- [いくつかの科目の追加の詳細](#追加の詳細--いくつかの科目)
- [ビデオシリーズ](#ビデオシリーズ) - [ビデオシリーズ](#ビデオシリーズ)
- [コンピュータサイエンスコース](#コンピュータサイエンスコース) - [コンピュータサイエンスコース](#コンピュータサイエンスコース)
## なぜそれを使用するのですか? ## なぜそれを使用するのですか?
私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。 私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。
@ -1543,7 +1573,7 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍
- [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o) - [エラー修正](https://www.youtube.com/watch?v=JAMLuxdHH8o)
- [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk) - [ ] [エラーチェック](https://www.youtube.com/watch?v=wbH2VxzmoZk)
- ### エントロピー - ## #エントロピー
- 下記の動画もご覧ください - 下記の動画もご覧ください
- 最初に情報理論ビデオを見てください - 最初に情報理論ビデオを見てください
- [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176) - [情報理論、Claude Shannon、エントロピー、冗長性、データ圧縮およびビット(ビデオ)](https://youtu.be/JnJq3Py0dyM?t=176)