第1章 國內筆試面試風格及准備方法
--- 分享面試經驗,通過例題分析國內面試的風格及准備方法
· 1) C/C++部分:
實現 memcpy 函數
STL 中 vector 的實現原理
· 2)概率題部分:
給 N 張牌和一個隨機函數,設計一個算法對這堆牌進行洗牌
· 3)智力題部分
25 匹馬,5 個賽道,最少賽多少次找出前三
· 4)操作系統部分
進程和線程的區別和聯系
· 5)大數據部分
100 億個整數,如何找到中位數
· 6)算法題部分
手寫快排
手寫堆
刷LintCode
第2章 C/C++面試知識點梳理
--- 本節通過真實的筆試、面試題講解 C++相關的基礎內容,包括各種關 鍵字的作用,字節對齊,智能指針,單例模式等
· 1) 敘述智能指針的原理
衍生出 STL 中 auto_ptr 以及 shared_ptr 的使用
如果出現循環引用如何處理?
· 2) C++單例模式寫法
衍生問題:如何定義一個只能在堆上定義對象的類?棧上呢?
· 3) Struct 的字節對齊問題
· 4) C 與 C++易混淆概念分析
引用和指針有什么區別? const 和 define 有什么區別? new 和 malloc 有什么區別? define 和 inline 有什么區別?
· 5) static 關鍵字用法總結
衍生問題:成員函數能否聲明為 static 和 const 的呢? static 函數能否調用非 static 函數
· 6) const 關鍵字用法
· 7) C++四種強制類型轉換
第3章 C/C++面試知識點梳理下
--- 本節詳細講解 C/C++面試中非常高頻的虛函數、虛繼承以及 C++對象 內存模型,從此遇到這類問題不再“虛”!
· 1) C++虛函數詳解
什么是虛函數,有什么作用?
虛函數實現原理:包括虛函數表、虛函數指針等
衍生問題:
為什么 C++里訪問虛函數比訪問普通函數慢?
為什么需要虛析構函數?
內聯函數、構造函數、靜態成員函數可以是虛函數嗎?
構造函數中可以調用虛函數嗎?
· 2) C++虛繼承詳解
為什么需要虛繼承? 虛繼承實現原理解析
· 3) C++對象內存模型詳解
融合虛函數、虛繼承,講解 C++對象模型
第4章 智力題
--- 本節詳細講解國內面試中高頻的智力題, 並總結常見的解決這類問題的思路與技巧
· 10+個常見智力面試題
第5章 概率題與操作系統題
· 操作系統相關的面試問題
第6章 面向對象設計
· 1、請設計一個抽象類,用來支持有序數組歸並任務
· 2、請設計一個LRU Cache
· 3、設計一個在線聊天系統
· 4、設計一個基於內存的簡單文件系統
· 5、設計一個支持多終端的日志打印系統(如向文件打印、向網絡打印、向屏幕打印)
· 6、設計一個棋盤游戲
· 7、請設計一個數據結構,它能夠支持插入、刪除、最大值、最小值、隨機返回一個數的操作
· 8、設計一個函數,使得它在n毫秒內最多訪問M次
第7章 海量數據處理問題
· 1、Map-Reduce原理
· 2、BloomFilter原理
· 3、Trie樹原理
· 4、兩個大文件,每個文件里都存有上億個url,怎么找到重復的url
· 5、給百度一天的querylog,如何找到一天中出現頻率最多的k個query