世界で闘うプログラミング力を鍛える本 コーディング面接189問とその解法
世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~
マイナビ
著者:Gayle Laakmann McDowell
訳者:岡田佑一、小林啓倫
訳者より
はじめに
イントロダクション
I 面接の流れ
「なぜ?」
問題はどう選ばれるか
すべては相対的
FAQ:よくある質問
II 面接試験の舞台裏
マイクロソフト(Microsoft)の面接
アマゾン(Amazon)の面接
グーグル(Google)の面接
アップル(Apple)の面接
フェイスブック(Facebook)の面接
パランティール(Palantir)の面接
III 特殊な状況
職歴の長い候補者
テスターとSDET
プロダクト/プログラム・マネージャ
開発リーダー/マネージャ
スタートアップ起業
合併や買収による人材獲得
面接官に向けたアドバイス
IV 面接の前に
よい経験を得る
履歴書の書き方
準備表
V 行動に関する質問
面接準備の表
技術的プロジェクトについて整理する
行動に関する質問への対応
「では、あなた自身のことについて聞かせてください・・・」
VI ビッグ・オー記法(Big O)
簡単な例
時間計算量
空間計算量
定数を捨てる
影響の少ない項を捨てる
複数パートから成るアルゴリズムの計算時間:足すべきか掛けるべきか
償却計算量
LogN実行時間
再帰の実行時間
例題と練習
VII 技術的な質問
どうやって準備するか
知っておくべきこと
問題攻略ガイド
最適化と解答テクニックその1:BUDをさがそう
最適化と解答テクニックその2:DIYの精神で
最適化と解答テクニックその3:単純化と一般化
最適化と解答テクニックその4:初期状態からの積み上げ
最適化と解答テクニックその5:データ構造総当たり
BCR
正しくない解答の扱い
問題を以前に聞いたことがあるとき
面接の「最強」言語
良い、きれいなコードとは
あきらめないで!
VIII オファーとその後
オファーと不採用の取り扱い
オファーの評価
交渉
仕事をしていく上で
IX 問題
[データ構造]
Chapter 1 配列と文字列
Chapter 2 連結リスト
Chapter 3 スタックとキュー
Chapter 4 木とグラフ
[考え方とアルゴリズム]
Chapter 5 ビット操作
Chapter 6 数学と論理パズル
Chapter 7 オブジェクト指向設計
Chapter 8 再帰と動的計画法
Chapter 9 スケーラビリティとシステムデザイン
Chapter 10 ソートと探索
Chapter 11 テスト
[知識ベース]
Chapter 12 CとC++
Chapter 13 Java
Chapter 14 データベース
Chapter 15 スレッドとロック
[追加練習問題]
Chapter 16 中級編
Chapter 17 上級編
X 解法
[データ構造]
Chapter 1 “配列と文字列"の解法
Chapter 2 “連結リスト"の解法
Chapter 3 “スタックとキュー"の解法
Chapter 4 “木とグラフ"の解法
[考え方とアルゴリズム]
Chapter 5 “ビット操作"の解法
Chapter 6 “数学と論理パズル"の解法
Chapter 7 “オブジェクト指向設計"の解法
Chapter 8 “再帰と動的計画法"の解法
Chapter 9 “スケーラビリティとシステムデザイン"の解法
Chapter 10 “ソートと探索"の解法
Chapter 11 “テスト"の解法
[知識ベース]
Chapter 12 “CとC++"の解法
Chapter 13 “Java"の解法
Chapter 14 “データベース"の解法
Chapter 15 “スレッドとロック"の解法
[追加練習問題]
Chapter 16 “中級編"の解法
Chapter 17 “上級編"の解法
XI より高度な話題
役に立つ数学
トポロジカルソート
ダイクストラ法
ハッシュテーブルの衝突処理
ラビン-カープ文字列検索
AVL木
赤黒木
マップリデュース
さらに学びたい人へ
XII コードライブラリ
HashMapList
TreeNode(二分探索木)
LinkedListNode(連結リスト)
Trie & TrieNode(トライ木)
XIII ヒント
[データ構造]のヒント
[考え方とアルゴリズム]
[知識ベース]のヒント
[追加練習問題]のヒント
索引
プロフィール