軟體/韌體工程師《面試重點與觀念複習》: 資料結構 / 變數儲存與記憶體

本文章 目錄:
--- 面試須知與應答技巧
--- 資料結構 / 變數儲存與記憶體
--- 程式語言 / 演算法
--- 作業系統 / 多執行緒(多程序)的觀念與實作控制
--- 轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
--- 擬真試題1/擬真試題2/擬真試題3/擬真試題4
--- 直接列出考古題1(精華完整53題含解答)
--- 直接列出考古題2(精華完整35題含解答)
--- 深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
--- 深度討論考古題2(DEMO完整11題含解答) 選擇使用C,C++,C#或JAVA
--- 撲克牌(大老二)洗牌與牌型判斷(JAVA)
--- Python基本教學
--- Leetcode實戰討論

資料結構

  • Linked List:
    連結串列(Linked List)是串列(List)的一種,是一種常見的資料結構,利用這個資料結構也能進一步實作出其他的資料結構,例如堆疊(Stack)和佇列(Queue)等。
    特性是能夠不使用連續的記憶體空間的情況下,能夠保有並使用一份連續的資料;相對來看,陣列則需要使用連續的記憶體空間。
  • stack:
    是一種後進先出(Last-In-First-Out, LIFO)的排程,而在此資料結構中至少會實作兩個操作:
    push:將資料放入堆疊頂端 / pop:取出堆疊頂端之資料
    在實作上一般可以使用陣列或連結串列(LinkedList)兩種方式來實作
  • Queue:
    佇列(Queue) 是一種先進先出(First-In-First-Out, FIFO)的排程,而在此資料結構中至少會實作兩個操作:
    enqueue:將資料放入佇列尾端。(註:C++中用push、Java用offer、也有add等不同的用字)
    dequeue:取出佇列前端之資料。(註:C++中用pop、Java用poll、也有remove等不同的用字)
    在實作上一般使用連結串列(LinkedList)來實作,使用陣列同樣可以達成,但較為複雜
  • Tree:
    樹(Tree)是一種常見的資料結構,他是一種階層式(Hierarchical)的資料集合, 實作上可以用連結串列完成

資料結構更多詳細介紹如下:

筆記轉型成部分不對外開放。
閱讀請繳交3,280元,您就會收到授權一年的邀請函Email,以及紙本重點筆記郵寄給您!

匯款帳號請來信詢問, 站長信箱:eeepage@gmail.com
匯款後,請告知您的帳號後三碼與您Gmail作為帳號,易春木會寄出權限開啟之邀請函,三個工作日內可開啟權限。
(*若需信用卡支付, 請來信詢問)

關於變數儲存與記憶體:

記憶體中資料配置的方式

1. 動態配置(Dynamic Memory Allocation):
以非循序配置方式儲存資料。利用鏈結串列之資料結構,勿需事先宣告固定記憶空間。當資料插入或刪除後,整個資料次序改變。例如:指標(pointer)、樹(tree)。

2. 靜態配置(Static Memory Allocation):
以循序配置方式儲存資料,使用前要宣告一個大小、長度固定的記憶空間。當資料插入或刪除後,不改變其資料次序。例如:陣列(array)。

變數使用:

  • Local 變數
    一般區域變數均被宣告在某區段之內,事實上區域變數是用 stack 或 heap 方式 佔用記憶體空間
  • static 變數
    static變數的宣告方式,也是一種區域變數的宣告方式它和區域變數最大的不同在於存在 global區,static變數不會在程式執行完這個區段後,將記憶體回收。
  • Global 外在變數
    外在變數是指定義於程式外部的變數存在 global區,當一個變數被定義為外在變數後,其他所有的函式或區段皆可使用此變數。

記憶體儲存變數分區:

變數會佔用記憶體,記憶體分為三個部份來存這些變數,分別是global、stack與heap。

筆記轉型成部分不對外開放。
閱讀請繳交3,280元,您就會收到授權一年的邀請函Email,以及紙本重點筆記郵寄給您!

匯款帳號請來信詢問, 站長信箱:eeepage@gmail.com
匯款後,請告知您的帳號後三碼與您Gmail作為帳號,易春木會寄出權限開啟之邀請函,三個工作日內可開啟權限。
(*若需信用卡支付, 請來信詢問)

 

重要基本補充: C語言所定義的資料型別如下

這些內容非常基本卻又很容易忘記, 寫程式容易忽略而造成overflow溢位問題.

筆記轉型成部分不對外開放。
閱讀請繳交3,280元,您就會收到授權一年的邀請函Email,以及紙本重點筆記郵寄給您!

匯款帳號請來信詢問, 站長信箱:eeepage@gmail.com
匯款後,請告知您的帳號後三碼與您Gmail作為帳號,易春木會寄出權限開啟之邀請函,三個工作日內可開啟權限。
(*若需信用卡支付, 請來信詢問)


繼續閱讀…

本文章 目錄:
--- 面試須知與應答技巧
--- 資料結構 / 變數儲存與記憶體
--- 程式語言 / 演算法
--- 作業系統 / 多執行緒(多程序)的觀念與實作控制
--- 轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
--- 擬真試題1/擬真試題2/擬真試題3/擬真試題4
--- 直接列出考古題1(精華完整53題含解答)
--- 直接列出考古題2(精華完整35題含解答)
--- 深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
--- 深度討論考古題2(DEMO完整11題含解答) 選擇使用C,C++,C#或JAVA
--- 撲克牌(大老二)洗牌與牌型判斷(JAVA)
--- Python基本教學
--- Leetcode實戰討論

發表迴響