天天看點

程式員面試資源大收集

原文連結:http://www.cricode.com/3282.html

資源一:《crack the code interview》——谷歌資深技術面試官經典之作

本書的中文目錄如下,大部分内容由Hawstein君原創翻譯,部分缺失的由快課網Jay13補充。

1.1 判斷一個字元串中的字元是否唯一

1.2 字元串翻轉

1.3 去除字元串中重複字元

1.8 利用已知函數判斷字元串是否為另一字元串的子串

2.1 從連結清單中移除重複結點

2.2 實作一個算法從一個單連結清單中傳回倒數第n個元素

2.3 給定連結清單中間某結點指針,删除連結清單中該結點

2.4 求由兩個連結清單結點組成的數之和

2.5 給定一個循環連結清單,實作一個算法傳回這個環的開始結點

3.1 如何隻用一個數組實作三個棧

3.2 實作一個棧,要求實作min函數以傳回棧中的最小值

3.3 實作資料結構SetOfStacks來模拟疊盤子

3.4 程式設計解決漢諾塔問題

3.5 使用兩個棧實作一個隊列

3.6 寫程式将一個棧按升序排序

4.1 用一個函數判斷一棵樹是否平衡

4.2 設計算法判斷有向圖兩結點間是否存在路徑

4.3 将遞增數組建構成一顆最小高度二叉樹

4.4 将二叉樹每一層結點建構成一個連結清單

4.5 查找二叉查找樹的任意給定結點的“下一個”結點

4.6 找出一棵二叉樹中兩個結點的第一個共同祖先結點

4.7 判斷一棵二叉樹是否為另一棵二叉樹的子樹

4.8 輸出二叉樹中路徑上結點值之和為給定值的所有路徑

5.1 寫程式使整數N中第i位到第j位的值與整數M中的相同

5.2 給定一個字元串類型表示的小數,輸出其二進制表示

5.3 給定一個整數x,找出另外兩個二進制表示中1的個數和x相同的數

5.4 解釋以下代碼的作用:((n & (n-1)) == 0)

5.5 寫程式計算從整數A變為整數B需要修改的二進制位數

5.6 交換一個整數二進制表示中的奇數位和偶數位

5.7 寫程式找出丢失的整數,要求時間複雜度O(n)

6.1-6.6 程式員”腦筋急轉彎”

7.1 為通用卡牌遊戲設計資料結構,并設計子類

7.2 為電話呼叫中心設計類和資料結構

7.3 用面向對象的方法設計一個音樂播放機

7.4 用面向對象思想設計一個國際象棋遊戲

7.5 利用OOP思想設計線上讀書系統

7.6 設計一個拼圖遊戲的資料結構

7.7 如何設計一個聊天服務程式

7.8 用面向對象思想設計奧賽羅遊戲(Othello)

7.9 為一個記憶體檔案系統設計資料結構和算法

7.10 使用C++實作一個垃圾回收器

8.1 寫一個函數來産生第n個斐波那契數

8.2 機器人路徑計算

8.3 寫一個函數傳回一個集合中的所有子集

8.4 寫一個函數傳回一個串的所有排列

8.5 實作一個算法列印出n對括号的有效組合

8.6 實作圖像處理軟體中的“填充”函數

8.7 有25分,10分,5分和1分的硬币無限個,計算組成n分的組合數

8.8 經典八皇後問題

9.1 寫一個函數将數組B融入數組A,并使其有序

9.2 寫一個函數對字元串數組排序,使所有變位詞都相鄰

9.3 在一個數字中查找特定元素

9.4 如何給一個2G檔案中的字元串排序?

9.5 寫一個函數找到給定字元串的位置

9.6 在一個矩陣中找出特定的數

9.7 寫一個函數模拟疊羅漢節目

10.1-10.7 程式員面試——數學相關題目

11.1-11.6 程式員面試—測試相關題目

12.1 股價資訊摘要整合方案

12.2 如何為社交網站(如facebook,新浪微網誌)設計資料結構

12.3 在40億個整數值中查找特定資料

12.4 數組去重(限制記憶體為4kb)

12.5 如果讓你設計一個網絡爬蟲,你怎麼避免陷入無限循環?

12.6 10億個url,每個url對應一個網頁,如何檢測重複的網頁?

12.7 如何設計一個支援TB級别資料的資料庫

13.1 用C++寫一個函數,輸出檔案的最後k行。

13.2 淺析哈希表和STL map

13.3 C++中的虛函數是如何工作的?

13.4 深拷貝和淺拷貝有什麼差別,如何使用?

13.5 C語言關鍵字”volatile”的作用?

13.6 C++中名字隐藏是指什麼?

13.7 為什麼基類中的析構函數要聲明為虛析構函數?

13.8 寫一個函數,傳回傳入資料結構的一份完全拷貝

13.9 寫一個智能指針類(smart_ptr)

15.1 寫一條SQL語句找到每個部門員工的數量

15.2 SQL的連接配接有哪些不同的類型?并解釋其異同點

15.3 什麼是反範式?它的優缺點是什麼?

15.4 畫一個資料庫的(ER圖),實體包括:公司、人、 專業人士

15.5 寫SQL查詢語句查詢成績排名前10%的學生

16.1 解釋術語:虛拟記憶體、缺頁中斷、抖動

16.5 寫程式判斷一台機器是大端序還是小端序

16.10 寫一個名為my2DAlloc的函數,用它開辟一個二維數組

17.1 解釋一下,在你往浏覽器中輸入一個URL後都發生了什麼,要盡可能詳細

17.2 介紹常用路由協定。例如:BGP,OSPF,RIP

17.4 網絡/子網路遮罩是什麼?網絡路由是什麼?

17.3 比較IPv4和IPv6協定

17.5 TCP和UDP之間有什麼差別?

程序與線程的一個簡單解釋

18.1 線程和程序的差別是什麼?

18.1 線程和程序的差別是什麼?

18.2 你如何測量一次上下文切換所需時間?

18.3 實作一個單例模式的模闆

18.5 線程排程

19.1 不能使用臨時變量,交換兩個數

19.2 設計算法檢查某人是否赢得了井字遊戲

19.3 寫一個算法計算n的階乘末尾0的個數

19.4 你使用if-else及任何比較操作符,傳回兩個數中的較大者

19.5 寫一個函數來模拟遊戲

19.7 求最大連續子序列和

19.8 統計給定單詞在一本書中出現的次數

19.10 給定一個能生成1到5随機數的函數,如何利用它來生成1到7的随機數。

19.11 設計一個算法,找到數組中所有和為指定值的整數對

20.1 不能使用+号或其它算術運算符求兩個數的和

20.2 寫一個随機洗牌函數

20.3 寫一個函數,随機地從大小為n的數組中選取m個整數

20.4 寫一個函數,計算0到n之間2的個數。

20.5 給出兩個單詞,找到它們的最短距離

資源二:《程式員程式設計藝術:面試和算法心得》

CSDN知名部落客周磊的作品,真的是精益求精,不可多得的一本好書。紙質版的據說10月面市,期待。以下為全書的電子版目錄。

第一部分 資料結構

  •  第一章 字元連結清單
    •  1.0 本章導讀
    •  1.1 旋轉字元串
    •  1.2 字元串包含
    •  1.3 字元串轉換成整數
    •  1.4 回文判斷
    •  1.5 最長回文子串
    •  1.6 字元串的全排列
    •  1.10 本章習題
  •  第二章 數組隊列
    •  2.0 本章導讀
    •  2.1 尋找最小的 k 個數
    •  2.2 尋找和為定值的兩個數
    •  2.3 尋找和為定值的多個數
    •  2.4 最大連續子數組和
    •  2.5 跳台階
    •  2.6 奇偶排序
    •  2.7 荷蘭國旗
    •  2.8 矩陣相乘
    •  2.9 完美洗牌
    •  2.15 本章習題
  •  第三章 堆棧樹圖
    •  3.0 本章導讀
    •  3.1 紅黑樹
    •  3.2 B樹
    •  3.3 最近公共祖先LCA
    •  3.10 本章習題

第二部分 算法心得

  •  第四章 查找排序
    •  4.1 有序數組的查找
    •  4.2 行列遞增矩陣的查找
    •  4.3 出現次數超過一半的數字
  •  第五章 動态規劃
    •  5.0 本章導讀
    •  5.1 最大連續乘積子串
    •  5.2 字元串編輯距離
    •  5.3 格子取數
    •  5.4 交替字元串
    •  5.10 本章習題

第三部分 綜合演練

  •  第六章 海量資料
    •  6.0 本章導讀
    •  6.1 關聯式容器
    •  6.2 分而治之
    •  6.3 simhash算法
    •  6.4 外排序
    •  6.5 MapReduce
    •  6.6 多層劃分
    •  6.7 Bitmap
    •  6.8 Bloom filter
    •  6.9 Trie樹
    •  6.10 資料庫
    •  6.11 反向索引
    •  6.15 本章習題
  •  第七章 進階技術
    •  7.1 K 近鄰算法
    •  7.2 支援向量機
  •  附錄 更多題型
    •  附錄A 語言基礎
    •  附錄B 機率統計
    •  附錄C 智力邏輯
    •  附錄D 系統設計
    •  附錄E 作業系統
    •  附錄F 網絡協定

資源三:一些其他的基礎知識

快課網彙總了一些常用的面試筆試題,寫成兩篇關于作業系統和計算機網絡的博文如下:

程式員的自我修養(1)——作業系統篇

程式員的自我修養(2)——計算機網絡

繼續閱讀