劍指offer_02

文章目錄

    • 第二章 面試需要的基礎知識
      • 1.1 面試官談基礎知識
      • 1.2 編程語言
      • 1.3 數據結構
      • 1.4 算法和數據操作

第二章 面試需要的基礎知識

1.1 面試官談基礎知識

  1. 數據結構和算法,編程能力,部分數學能力,問題分析和推理能力
  2. 編程基礎,計算機基礎,算法設計
  3. 計算機操作系統,編程語言,數據結構

1.2 編程語言

  1. 考察形式
  • 語言的語法
  • 通過實際寫代碼解決問題
  1. C++
  • 推薦的書籍<effect c++>
  • 設計模式中單例模式時常常考的內容

1.3 數據結構

  1. 數據結構是技術面試中的重點
  • 主要圍繞著數組,鏈表,字符串,樹,隊列,棧幾種常見的數據結構
  • 數組和鏈表是面試中常常考的兩種數據結構,由于使用了指針,應該注意程序的魯棒性2.
  1. 數組
  • 數組需要實現申明空間大小,數組支持隨機存取,讀取時間復雜度為O(1),插入刪除操作時間復雜度為O(N)
  • 動態數組的考察,數組和指針的關系
  • 當我們遇到復雜的問題的時候,一個有效的方法就是從一個具體的問題入手,通過分析簡單具體的例子,找出普遍的規律。(二位數組的查找)
  1. 字符串
  • C/C++中的字符串都是以“\n”結尾的。
  • 為了節省內存,C/C++把常量字符串放到單獨的一個內存區域中,當使用幾個不同的指針指向的時候,實際指向的是相同的內存地址。
  • 常考的字符串的復制,比較,插入等。可以打破常規思維,從后往前遍歷。
  1. 鏈表
  • 鏈表是面試時候被問及最多的一種數據結構
  • 鏈表的創建,插入刪除節點和查詢節點實現起來代碼量都不大。
  • 在面試中如果要修改輸入數據時,最好問面試官是否允許進行修改。

在寫測試用例的時候,常常分為功能測試和特殊輸入測試。

  1. 樹是一種在實際編程中常常用到的數據結構,由于樹的實驗涉及到大量的指針,所以面試中考的概率不大
  2. 面試中要考察的樹常常為二叉樹,常考查二叉樹的遍歷:
  • 前序遍歷
  • 中序遍歷
  • 后序遍歷

3種遍歷方法都有循環和遞歸的時現,需要對這6種方法比較了解。

  • 二叉樹的另外兩個特例是堆和紅黑樹
  • 有很多快速找到最大值和最小值的算法都用到堆來實現
  1. 棧和隊列
  2. 棧是一個非常常見的數據結構,在計算機中被廣泛應用。
  • 通常棧是一個不考慮排序的數據結構,找到最大值或者最小值需要O(N)的時間。
  1. 隊列是另外一種比較重要的數據結構
  • 對列和棧兩個數據結構是相互聯系的,可以相互表示。

1.4 算法和數據操作

重點掌握二分查找,歸并排序,快速排序,能夠做到隨時隨地快速準確的用代碼實現他們。
很多算法都可以使用循環和遞歸實現,其中遞歸方法看起來代碼簡潔,但是性能不佳。
位操作應該也要進行掌握

  1. 查找和排序
  • 查找和排序是程序設計中常用到的算法
  • 查找比較簡單,包括:順序查找,二分查找,哈希查找和二叉樹查找。
    • 如果面試中要對一個排好序的數組或者部分排序的數組進行查找,都可以考慮使用二分查找的方法
    • 哈希表最主要的優點是可以完成在O(1)時間內查找某個元素,但是需要額外的空間來實現哈希表。
    • 二叉搜索樹是樹結構在查找算法中的應用。
  • 排序算法比查找算法要難一些,需要我們對常見的一些排序算法熟記于心。
    • 插入排序,冒泡排序,歸并排序,快速排序等不同排序算法的優劣。
    • 可以從空間消耗,平均時間復雜度和最壞時間復雜度去分析比較。
    • 快速排序的代碼常常被要求寫出。
    • 如果面試官要求實現一個排序算法,一定要問清楚排序算法的應用背景,再來決定使用哪種排序算法。
  1. 遞歸和循環
  • 如歸針對一個問題需要重復多次計算相同的問題,則可以使用遞歸或者循環兩種方法。
  • 遞歸代碼相比于循環代碼常常比較簡潔;在樹的前序,中序,后序遍歷中常常采用遞歸算法。如果面試中沒有說明用循環還是遞歸,最好先用循環實現后,再用遞歸實現。

測試用例:功能測試,邊界值測試,性能測試

  1. 位運算
  • 位運算是把數字用二進制表示后,對每一位上的0或者1進行運算。
  • 熟練掌握2進制和10進制之間的轉換關系,熟悉掌握二進制數的與,或,異或,左移好和右移操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

求完全二叉樹的結點個數

第一次見這個題&#xff0c;看時間小于O(N)。。。。。 只能是二分啊。 但是怎么二分&#xff0c;條件是什么&#xff0c;真的想不到。 后來知道了&#xff0c;我們要找最深一層最右邊那個結點。借此確定結點個數。 我們知道&#xff0c;滿二叉樹的結點個數和深度是有公式的&a…

劍指offer_03

文章目錄第三章 高質量代碼1.1 面試官談高質量代碼1.2 代碼的規范性1.3 代碼的完整性1.4 代碼的魯棒性第三章 高質量代碼 1.1 面試官談高質量代碼 代碼應該考慮異常狀況和垃圾回收問題&#xff0c;不能忽視邊界情況變量&#xff0c;函數命名應該要統一&#xff0c;備注要恰到…

劍指offer_04

文章目錄第四章 解決面試題的思路1.1 面試官談面試思路1.2 畫圖讓問題抽象化1.3 舉例讓抽象問題具體化1.4 分解讓復雜問題具體化第四章 解決面試題的思路 1.1 面試官談面試思路 編程前講自己的思路是一項考核指標&#xff0c;不能一開始就變成&#xff0c;面試的時候應該和面…

先序中序后序兩兩結合重建二叉樹

遍歷是對樹的一種最基本的運算&#xff0c;所謂遍歷二叉樹&#xff0c;就是按一定的規則和順序走遍二叉樹的所有結點&#xff0c;使每一個結點都被訪問一次&#xff0c;而且只被訪問一次。由于二叉樹是非線性結構&#xff0c;因此&#xff0c;樹的遍歷實質上是將二叉樹的各個結…

劍指offer_05

文章目錄第五章 優化時間和空間效率1.1 面試官談效率1.2 時間效率1.3 時間效率和空間效率的平衡第五章 優化時間和空間效率 1.1 面試官談效率 1.時間和空間復雜度是寫程序的時候&#xff0c;我們需要分析的&#xff0c;最好每次寫完代碼后自己都可以將程序的時間和空間復雜度…

先序中序數組推后序數組

二叉樹遍歷 所謂遍歷(Traversal)是指沿著某條搜索路線&#xff0c;依次對樹中每個結點均做一次且僅做一次訪問。訪問結點所做的操作依賴于具體的應用問 題。 遍歷是二叉樹上最重要的運算之一&#xff0c;是二叉樹上進行其它運算之基礎。 從二叉樹的遞歸定義可知&#xff0c;一…

劍指offer_06

文章目錄第六章 面試中的各項能力1.1 面試官談能力1.2 溝通能力和學習能力1.3 知識遷移能力1.4 抽象建模能力1.5 發散思維能力第六章 面試中的各項能力 1.1 面試官談能力 1.禮貌平和&#xff0c;不卑不亢的和面試官溝通&#xff1b;邏輯清楚&#xff0c;詳略得到的介紹項目經…

數據結構課上筆記11

滿二叉樹 (Full binary tree) 除最后一層無任何子節點外&#xff0c;每一層上的所有結點都有兩個子結點二叉樹。 國內教程定義&#xff1a;一個二叉樹&#xff0c;如果每一個層的結點數都達到最大值&#xff0c;則這個二叉樹就是滿二叉樹。也就是說&#xff0c;如果一個二叉樹…

數據結構和算法(01)--- 算法復雜度

文章目錄算法時間復雜度算法時間復雜度 要判斷算法的好壞&#xff0c;可以從時間方面進行分析。算法運行的越快&#xff0c;所用的時間越短則算法越好。但是同一個算法在不同的平臺上的運行時間不同。那么又該如何進行評判呢&#xff1f;我們采用時間復雜度進行衡量。 1.算法時…

數據結構課上筆記12

二叉樹的存儲結構 順序存儲結構 完全二叉樹&#xff1a;用一組地址連續的 存儲單元依次自上而下、自左至右存 儲結點元素&#xff0c;即將編號為 i 的結點元 素存儲在一維數組中下標為 i –1 的分量中。 一般二叉樹&#xff1a;將其每個結點與完 全二叉樹上的結點相對照&…

kaggle(01)-泰坦尼克號問題

經典又兼具備趣味性的Kaggle案例泰坦尼克號問題 大家都熟悉的『Jack and Rose』的故事&#xff0c;豪華游艇倒了&#xff0c;大家都驚恐逃生&#xff0c;可是救生艇的數量有限&#xff0c;無法人人都有&#xff0c;副船長發話了『lady and kid first&#xff01;』&#xff0c…

數據結構課上筆記13

樹存儲結構 父節點表示法 數據域&#xff1a;存放結點本身信息。 雙親域&#xff1a;指示本結點的雙親結點在數組中的位置。 對應的樹&#xff1a; /* 樹節點的定義 */ #define MAX_TREE_SIZE 100typedef struct{TElemType data;int parent; /* 父節點位置域 */ } PTNode;type…

數據結構課上筆記14

圖是一種&#xff1a; 數據元素間存在多對多關系的數據結構 加上一組基本操作構成的抽象數據類型。 圖 (Graph) 是一種復雜的非線性數據結構&#xff0c;由頂點集合及頂點間的關系&#xff08;也稱弧或邊&#xff09;集合組成。可以表示為&#xff1a; G&#xff1d;(V, V…

kaggle(03)-自行車租賃預測問題(基礎版)

文章目錄問題描述&#xff1a;問題解決分析問題&#xff1a;解決問題第一步&#xff1a;讀取原始數據第二步&#xff1a;觀察原始數據第三步&#xff1a;原始數據的可視化第四步&#xff1a;數據的預處理時間屬性的分解第五步&#xff1a;數據的特征提取特征生成特征選擇第六步…

二叉樹序列化/反序列化

二叉樹被記錄成文件的過程&#xff0c;為二叉樹的序列化 通過文件重新建立原來的二叉樹的過程&#xff0c;為二叉樹的反序列化 設計方案并實現。 &#xff08;已知結點類型為32位整型&#xff09; 思路&#xff1a;先序遍歷實現。 因為要寫入文件&#xff0c;我們要把二叉樹…

機器學習總結(17)-XGBoost

文章目錄lecture17&#xff1a;XGBoost(eXtreme Gradient Boosting)目錄1. XGBoost的基本信息2. XGBoost與GBDT的異同點3. XGBoost的原理3.1定義樹的復雜度3.2 分裂節點3.3 自定義損失函數4. XGBoost的使用lecture17&#xff1a;XGBoost(eXtreme Gradient Boosting) 目錄 1. …

C++基礎學習(01)--(介紹,環境配置,基本語法,注釋)

文章目錄目錄一. c介紹二. c開發環境到的配置三. c基本語法四. c注釋目錄 一. c介紹 C 是一種靜態類型的、編譯式的、通用的、大小寫敏感的、不規則的編程語言&#xff0c;支持過程化編程、面向對象編程和泛型編程。 C 被認為是一種中級語言&#xff0c;它綜合了高級語言和低…

《Head First設計模式》讀書筆記_第一章

策略模式 例&#xff1a;設計一個模擬鴨子游戲&#xff0c;游戲中有各種鴨子&#xff0c;一邊戲水一邊嘎嘎叫。 所以學習設計模式前&#xff0c;我們最先想到的就是設置一個超類&#xff0c;并讓其他子類去繼承這個類&#xff0c;UML圖如下&#xff1a; * * 但是&#xff0…

根據數組建立平衡二叉搜索樹

它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1&#xff0c;并且左右兩個子樹都是一棵平衡二叉&#xff08;搜索&#xff09;樹。 二分&#xff1a;用有序數組中中間的數生成搜索二叉樹的頭節點&#xff0c;然后對數組的左右部分分別生成左右子樹即可&#xff08;重復…

C++基礎學習(02)--(數據類型,變量類型,變量作用域,常量,修飾符類型)

文章目錄目錄一. 數據類型C 中的數據類型typedefenumeration枚舉類型c中變量類型二.變量作用域三.常量四.修飾符類型目錄 一. 數據類型 C 中的數據類型 使用編程語言進行編程時&#xff0c;需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內存位置。這意味著&a…