diff --git a/translations/README-ja.md b/translations/README-ja.md index 1cfb0fa..dfee95f 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -51,124 +51,57 @@ SREまたはシステムエンジニアになりたい場合は、オプショ ## 目次 -- [これは何?](#これは何?) -- [なぜこれを使うの?](#why-use-it) -- [使い方](#使い方) -- [あなたは十分にスマートではないと感じないでください](十分にスマートではありません) -- [ビデオリソースについて](#about-video-resources) -- [面接のプロセスと一般的な面接の準備](#面接プロセス--一般面接--準備) -- [面接のための1つの言語を選ぶ](面接のために1つの言語を選択する) -- [ブックリスト](#ブックリスト) -- [始める前に](始める前に#) -- あなたがカバーしていないもの(何があなたには見えません) -- [前提知識](#前提条件知識) -- [日々の計画](日々の計画) -- [アルゴリズムの複雑さ/ Big-O / Asymptotic分析](#アルゴリズム--複雑--big-o--漸近分析) -- [データ構造](#データ構造) - - [配列](#配列) - - [連結リスト](#連結リスト) - - [スタック](#スタック) - - [キュー](#キュー) - - [ハッシュテーブル](#ハッシュテーブル) -- [その他の知識](#more-knowledge) - - [二分探索](#二分探索) - - [ビット演算](#ビット演算) -- [木構造](#木) - - [木構造 - ノートと背景](#木---ノート--背景) - - [二分探索木: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-and-vim) - - [Unixコマンドラインツール](#unix-command-line-tools) - - [情報理論](#情報理論) - - [パリティとハミング符号](#パリティ--ハミングコード) - - [情報量(エントロピー)](#エントロピー) - - [暗号化](#暗号化) - - [圧縮](#圧縮) - - [コンピュータセキュリティ](#コンピュータセキュリティ) - - [ガベージコレクション](#ガベージコレクション) - - [並列計算](#パラレルプログラミング) - - [メッセージング、シリアライゼーション・キューイングシステム](#メッセージングシリアライゼーションとキューイングシステム) - - [A *](#a) - - [高速フーリエ変換](#高速フーリエ変換) - - [ブルームフィルタ](#ブルームフィルタ) - - [HyperLogLog](#hyperloglog) - - [局所性鋭敏型ハッシュ](#ローカリティセンシティブハッシング) - - [van Emde Boas Trees(バン エンデ ボース)](ヴァン・エムード・ボア・木) - - [拡張データ構造](#拡張データ構造) - - [N-ary(k-ary、M-ary)木](#n-ary-k-ary-m-ary-trees) - - [平衡探索木](#バランス検索木) - - AVL木 - - スプレー木 - - 赤黒木 - - 2-3木 - - 2-3-4木(別名2-4木) - - 多分木(N-ary,K-ary,M-ary木) - - B木 - - [kd木](#k-d-trees) - - [スキップリスト](#スキップリスト) - - [ネットワークのフロー](#ネットワークフロー) - - [素集合データ構造とUnion-Findアルゴリズム](#disjoint-sets--union-find) - - [高速処理のための数学](#数学のための高速処理) - - [Treap](#treap) - - [線形計画法](#線形計画法) - - [ジオメトリ、凸包](#ジオメトリ--凸包) - - [離散数学](離散数学) - - [機械学習](機械学習) -- [いくつかの科目の追加の詳細](#追加の詳細--いくつかの科目) -- [ビデオシリーズ](#ビデオシリーズ) -- [コンピュータサイエンスコース](#コンピュータサイエンスコース) +- [コーディング面接の大学](#コーディング面接の大学) + - [これは何?](#これは何) + - [目次](#目次) + - [なぜこれを使用するのか](#なぜこれを使用するのか) + - [それの使い方](#それの使い方) + - [あなたは十分にスマートではないと感じないでください](#あなたは十分にスマートではないと感じないでください) + - [ビデオリソースについて](#ビデオリソースについて) + - [面接のプロセスと一般的な面接の準備](#面接のプロセスと一般的な面接の準備) + - [面接のための1つの言語を選ぶ](#面接のための1つの言語を選ぶ) + - [ブックリスト](#ブックリスト) + - [面接の準備](#面接の準備) + - [コンピュータアーキテクチャ](#コンピュータアーキテクチャ) + - [言語固有](#言語固有) + - [C++](#c) + - [Java](#java) + - [Python](#python) + - [始める前に](#始める前に) + - [1.あなたはそれをすべて覚えていない](#1あなたはそれをすべて覚えていない) + - [2.フラッシュカードを使用する](#2フラッシュカードを使用する) + - [3.レビュー、レビュー、評価](#3レビューレビュー評価) + - [4.フォーカス](#4フォーカス) + - [カバーされていないもの](#カバーされていないもの) + - [日々の計画](#日々の計画) + - [前提知識](#前提知識) + - [アルゴリズムの複雑さ/ Big-O / Asymptotic解析](#アルゴリズムの複雑さ-big-o--asymptotic解析) + - [データ構造](#データ構造) + - [その他の知識](#その他の知識) + - [木](#木) + - [ソート](#ソート) + - [グラフ](#グラフ) + - [さらに多くの知識](#さらに多くの知識) + - [システム設計、スケーラビリティ、データ処理](#システム設計スケーラビリティデータ処理) + - [最終レビュー](#最終レビュー) + - [コーディングの質問練習](#コーディングの質問練習) + - [コード演習/挑戦](#コード演習挑戦) + - [面接に近づいたら](#面接に近づいたら) + - [あなたの履歴書](#あなたの履歴書) + - [面接が来たときに考えてください](#面接が来たときに考えてください) + - [面接官に質問があります](#面接官に質問があります) + - [一度あなたは仕事を得た](#一度あなたは仕事を得た) + - [その他の書籍](#その他の書籍) + - [その他の学習](#その他の学習) + - [追加科目の詳細](#追加科目の詳細) + - [ビデオシリーズ](#ビデオシリーズ) + - [コンピュータサイエンスコース](#コンピュータサイエンスコース) -## なぜそれを使用するのですか? +## なぜこれを使用するのか -私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-Oの何か、樹木に関すること、グラフをたどる方法を知らなかったのです。 +私はこのプロジェクトを始めたとき、ヒープからスタックを知りませんでしたし、Big-O とは何か、木構造に関すること、グラフをたどる方法を知らなかったのです。 ソートアルゴリズムをコーディングしなければならない場合は、あまりうまくいきませんでした。 これまで使用してきたすべてのデータ構造は言語に組み込まれていて、どのようにしてそれらがどのようにして動作するのか分かりませんでした。 私が実行していたプロセスが "メモリ不足"エラーを出さない限り、メモリを管理する必要はありませんでしたが、回避策を見つけなければなりません。 @@ -210,7 +143,7 @@ SREまたはシステムエンジニアになりたい場合は、オプショ ## あなたは十分にスマートではないと感じないでください - 成功したソフトウェアエンジニアはスマートですが、多くの人はスマートではないという不安があります。 -- [Geniusプログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) +- [天才プログラマーの神話](https://www.youtube.com/watch?v=0SARbwvhupQ) - [一人で行くのは危険だ:テクノロジーの見えない魔物と戦う](https://www.youtube.com/watch?v=1i8ylq4j_EY) --- @@ -220,10 +153,10 @@ SREまたはシステムエンジニアになりたい場合は、オプショ 一部のビデオは、Coursera、EdX、またはLynda.comクラスに登録することによってのみ利用できます。 これらはMOOCと呼ばれています。 時にはクラスがセッションに入っていないので、数ヶ月待つ必要があるため、アクセス権がありません。 -Lynda.comコースは無料ではありません。 +Lynda.comコースは有料です。 -    オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 -    私は大学の講義を使うのが好きです。 +オンラインコースビデオに付随するYouTubeビデオなど、無料で常時利用可能なパブリックソースを追加することに感謝します。 +私は大学の講義を使うのが好きです。 ## 面接のプロセスと一般的な面接の準備 @@ -278,6 +211,7 @@ Lynda.comコースは無料ではありません。 - コーディング面接をクラッキングするためのウォームアップが良い - あまりにも難しくない、ほとんどの問題はあなたが面接で(私が読んだことから)見ることよりも簡単かもしれない - [ ] [Cracking the Coding Interview、第6版](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) +- [ ] [日本語版(世界で闘うプログラミング力を鍛える本)](https://www.amazon.co.jp/dp/4839960100/ref=cm_sw_r_tw_dp_6TFC3Y2R6TQTDEFFFPKZ) - Javaでの回答 もし余分な時間があれば: @@ -289,26 +223,28 @@ Lynda.comコースは無料ではありません。 ### コンピュータアーキテクチャ -短い時間: +短期: - [ ] [グレートコードの作成:第1巻:マシンの理解](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) +- [ ] [日本語版:Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く](https://www.amazon.co.jp/dp/4839918201/ref=cm_sw_r_tw_dp_69724M3EHRJ8E7A14JNC) - この本は2004年に出版され、幾分古いですが、コンピュータを簡単に理解するには素晴らしいリソースです。 - 作者はHLAを発明したので、塩の穀物でHLAの言及と例を取り上げます。広く使われているわけではありませんが、どのようなアセンブリのように見えますか? - これらの章はあなたに素敵な基礎を与えるために読む価値があります: - - 第2章 - 数値表現 -        - 第3章 - 2進算術とビット演算 + - 第2章 - 数値表現 + - 第3章 - 2進算術とビット演算 - 第4章 - 浮動小数点表現 - 第5章 - キャラクター表現 - 第6章 - メモリ構成とアクセス -        - 第7章 - 複合データ型とメモリオブジェクト -        - 第9章 - CPUアーキテクチャ + - 第7章 - 複合データ型とメモリオブジェクト + - 第9章 - CPUアーキテクチャ - 第10章 - 命令セットのアーキテクチャ - 第11章 - メモリのアーキテクチャと構成 もっと時間があれば(私はこの本が欲しい): - [ ] [Computer Architecture、第5版:定量的アプローチ](https://www.amazon.com/dp/012383872X/) - - より豊かで最新の(2011年)、より長い治療のために +- [ ] [日本語最新版:コンピュータアーキテクチャ[第6版]定量的アプローチ](https://www.amazon.co.jp/dp/4434264001/) + - お金がある人向け、より最新(2017(日本語版は2019))かつ歴史も長い ### 言語固有 @@ -351,47 +287,6 @@ OR: - 私の輝く本のレポート:https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/ -### オプションの書籍 - -**ソフトウェア工学の長年の経験があり、もっと面白い面接を期待しない限り、これらのことをお勧めする人もいます。** - -- [ ] [アルゴリズム設計マニュアル](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)(Skiena) - - レビューと問題認識として - - アルゴリズムのカタログ部分は、面接で得られる難易度の範囲をはるかに超えています。 - - この本は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) - - **重要:** この本を読む価値は限られています。この本はアルゴリズムとデータ構造の素晴らしいレビューですが、良いコードを書く方法を教えてくれません。まともなソリューションを効率的にコーディングすることができなければなりません。 - - Half.comは、良い価格で教科書のための素晴らしいリソースです。 - - スタインはゲームに遅れていたので、別名CLR、ときにはCLRS - -- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) - - プログラミング上の問題(データテープを使っているものもあります)への巧妙な解決策を示していますが、これは単なるイントロです。 -      これはプログラムの設計とアーキテクチャに関するガイドブックです。 - これはプログラムの設計とアーキテクチャに関するガイドブックです。Code Completeとよく似ていますが、はるかに短いものです。 - -- ~~シェンの "アルゴリズムとプログラミング:問題と解決策"~~ - - 良い本ですが、いくつかのページで問題を解決した後、私はPascalに悩まされ、whileループ、1つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 - - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう - ## 始める前に @@ -1516,6 +1411,46 @@ Skienaの本(下記の書籍の節を参照)と面接の書籍 これらの話題は面接では出てこないかもしれませんが、 特定のテクノロジとアルゴリズムを認識するためには、より大きなツールボックスが必要になります。 +- [ ] [アルゴリズム設計マニュアル](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つのインデックス付き配列、不確実な事後条件の満足度結果を得ました。 + - むしろ別の本やオンラインのコーディングの問題からコーディングの問題に時間を費やすだろう + + - ### コンパイラ - [ ] [1分でコンパイラがどのように動作するか(ビデオ)](https://www.youtube.com/watch?v=IhC7sdYe-Jg) - [ ] [Harvard CS50 - コンパイラ(ビデオ)](https://www.youtube.com/watch?v=CSZLNYF4Klo)