嵌入式面試常問問題

以下內容面向嵌入式/系統方向的初學者與面試備考者,全面梳理了以下幾大板塊,并在每個板塊末尾列出常見的面試問答思路,幫助你既能夯實基礎,又能應對面試挑戰。


一、TCP/IP 協議

1.1 TCP/IP 五層模型概述

  • 鏈路層(Link Layer)

    • 包括網卡驅動、以太網、Wi?Fi、PPP 等。負責把數據幀(Frame)在相鄰節點間傳輸。

  • 網絡層(Internet Layer)

    • 最典型的是 IP 協議 (IPv4/IPv6)。負責 路由選路分片與重組

    • 其他:ICMP(Ping、目的不可達等)、ARP/ND (地址解析協議/鄰居發現)。

  • 傳輸層(Transport Layer)

    • TCP(Transmission Control Protocol):面向連接、可靠傳輸、有序到達、流量控制與擁塞控制。

    • UDP(User Datagram Protocol):無連接、不保證可靠性、低開銷。

  • 會話層、表示層(合并在“應用層”討論)

  • 應用層(Application Layer)

    • HTTP/HTTPS、FTP、SMTP/POP3、DNS、Telnet、SSH 等。

面試常問:

  1. 請簡述 TCP/IP 模型與 OSI 七層模型的對應關系。

  2. TCP 與 UDP 的區別?各有什么典型應用場景?

  3. DNS 查詢過程是怎樣的?(迭代查詢 vs 遞歸查詢)


1.2 IP 協議要點

  • IP 地址與子網掩碼

    • IPv4:32 位,常見寫法 192.168.1.10/24(子網掩碼 255.255.255.0)。

    • IPv6:128 位,常見壓縮寫法 fe80::1ff:fe23:4567:890a/64

  • 分片與重組

    • 當數據包超過鏈路層最大傳輸單元(MTU)時,IP 層會分片。目的主機負責重組。

  • 路由選擇

    • 路由表:根據目的 IP 匹配最長前綴,選擇下一跳。

    • 默認網關、直連網絡、三層交換等。

面試常問:

  1. 如何計算某 IP 的網絡地址、廣播地址?

  2. 什么是 CIDR?為什么要劃分子網?

  3. 簡述 IP 分片過程及可能帶來的問題(性能、重組失敗)。


1.3 TCP 核心機制

  • 三次握手(Three?way Handshake)

    1. 客戶端發送 SYN, seq = x

    2. 服務器收到 SYN, 回復 SYN?ACK, seq = y, ack = x+1

    3. 客戶端收到 SYN?ACK, 回復 ACK, ack = y+1;連接建立

  • 四次揮手(Four?way Teardown)

    1. 主動關閉方發送 FIN, seq = a

    2. 對端回復 ACK, ack = a+1

    3. 對端發送 FIN, seq = b

    4. 主動關閉方回復 ACK, ack = b+1;連接關閉

  • 流量控制(窗口機制)

    • 發送端發送窗口(rwnd)由接收端根據緩沖區大小告知。

  • 擁塞控制(慢啟動、擁塞避免、快速重傳、快速恢復)

    • 擁塞窗口(cwnd)從 1 MSS 開始,遇到丟包或超時則觸發相應算法。

面試常問:

  1. TCP 三次握手的目的?如果少一次會發生什么?

  2. TCP 四次揮手與三次揮手有什么區別?為什么需要四次?

  3. 怎么理解 TCP 的流量控制與擁塞控制?

  4. 如何粗略計算 RTT?什么是滑動窗口?


1.4 UDP 與其他協議

  • UDP(User Datagram Protocol)

    • “不可靠”傳輸:不保證到達、不保證順序。

    • 頭部開銷小,僅 8 字節:源端口(2B) | 目標端口(2B) | 長度(2B) | 校驗和(2B)

    • 常見應用:DNS 查詢、VoIP、視頻流、DHCP。

  • ICMP(Internet Control Message Protocol)

    • 用于網絡診斷(ping)、不可達報告、TTL 超時等。

  • 常見端口號

    • HTTP:80,HTTPS:443,DNS:53,SSH:22,FTP:21,SMTP:25,POP3:110,IMAP:143 等。

面試常問:

  1. 為什么 DNS 通常使用 UDP?遇到數據包丟失怎么辦?

  2. 簡述 ICMP 報文類型(Echo Request/Reply,Destination Unreachable 等)。

  3. 常見的服務器如何處理端口搶占和端口復用?


二、C 語言基礎

以下內容面向零基礎讀者,從最基本的概念開始,一步步推進到鏈表、環形隊列和指針的“進階姿勢”。


2.1 結構體(struct

2.1.1 概念
  • 定義:把多個不同類型的變量組合成一個“整體”,類似現實世界中“一個學生有姓名、年齡、成績”。

  • 語法

    struct Student {char name[32];int age;float score;
    };
    
  • 用法

    struct Student s1;
    strcpy(s1.name, "Alice");
    s1.age = 20;
    s1.score = 92.5f;
    printf("Name=%s, Age=%d, Score=%.1f\n", s1.name, s1.age, s1.score);
    
  • 內存對齊

    • 結構體成員通常按自然對齊方式存放,字段之間可能插入“填充字節(Padding)”以保證訪問效率。

    • sizeof(struct) 可能 > 各成員大小之和。

面試常問:

  1. struct A { char c; int x; }struct B { int x; char c; } 誰更省空間,為什么?

  2. 如何傳遞結構體到函數?按值還是按引用?優缺點?

  3. 什么是匿名結構體,什么時候用?


2.2 聯合體(union

2.2.1 概念
  • 定義:聯合體的所有成員 共用同一塊內存,只要給其中一個成員賦值,就修改了這塊內存。

  • 語法

    union Data {int i;float f;char str[20];
    };
    
  • 用法

    union Data d;
    d.i = 100;
    printf("d.i=%d, d.f=%f\n", d.i, d.f);  // f 與 i 共享內存,值不確定
    
  • 大小

    • 聯合體的 sizeof 等于其最大成員的大小,再加上對齊需要的填充。

面試常問:

  1. 結構體和聯合體有什么區別?各自適用場景?

  2. 為什么聯合體可節省內存?舉例說明。

  3. 如何安全地在聯合體里存放二進制數據(如網絡協議報文)?


2.3 枚舉(enum

2.3.1 概念
  • 定義:枚舉是一組具名整型常量的集合,讓代碼更易讀。

  • 語法

    enum Weekday { MON = 1, TUE, WED, THU, FRI, SAT, SUN };
    
    • 如果不顯式賦值,默認從 0 開始自動 +1。

  • 用法

    enum Weekday today = WED;
    if (today == WED) { printf("It's Wednesday\n"); }
    
  • 底層本質:枚舉常量本質是整型 (C 默認 int)。

面試常問:

  1. 枚舉常量的底層類型是什么?可以指定底層類型嗎?

  2. 枚舉 vs #define 的區別?哪種更好?

  3. 如何把枚舉轉為字符串?有哪些常見技巧?

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

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

相關文章

【人工智能 | 項目開發】Python Flask實現本地AI大模型可視化界面

文末獲取項目源碼。 文章目錄 項目背景項目結構app.py(后端服務)index.html(前端界面)項目運行項目圖示項目源碼項目背景 隨著人工智能技術的快速發展,大語言模型在智能交互領域展現出巨大潛力。本項目基于 Qwen3-1.7B 模型,搭建一個輕量化的智能聊天助手,旨在為用戶提…

【設計模式】1.簡單工廠、工廠、抽象工廠模式

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 以下是 簡單工廠模式、工廠方法模式 和 抽象工廠模式 的 Python 實現與對比,結合代碼示例和實際應用場景說明: 1. 簡單工廠模式&a…

瀏覽器訪問 AWS ECS 上部署的 Docker 容器(監聽 80 端口)

? 一、ECS 服務配置 Dockerfile 確保監聽 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任務定義(Task Definition&…

01.SQL語言概述

SQL 語言概述 SQL (Structured Query Language)結構化査詢語言 1. 關系型數據庫的常見組件 數據庫: database 表的集合,物理上表現為一個目錄表: table,行: row 列: column索引: index視圖: view,虛擬的表存儲過程:…

C++學習-入門到精通【14】標準庫算法

C學習-入門到精通【14】標準庫算法 目錄 C學習-入門到精通【14】標準庫算法一、對迭代器的最低要求迭代器無效 二、算法1.fill、fill_n、generate和generate_n2.equal、mismatch和lexicographical_compare3.remove、remove_if、remove_copy和remove_copy_if4.replace、replace_…

Vue 項目實戰:三種方式實現列表→詳情頁表單數據保留與恢復

背景:在Vue項目中,實現列表頁跳轉詳情頁并保留表單數據,返回時恢復表單狀態。 核心功能: 保存緩存:點擊查詢按鈕時,表單數據保存恢復緩存:從詳情頁返回時,恢復表單數據清除緩存&…

iptables實驗

實驗一:搭建web服務,設置任何人能夠通過80端口訪問。 1.下載并啟用httpd服務器 dnf -y install httpd 開啟httpd服務器 systemctl start httpd 查看是否啟用 下載并啟用iptables,并關閉firewalld yum install iptable…

Razor編程RenderXXX相關方法大全

文章目錄 第一章:RenderXXX方法概述1.1 RenderXXX方法的作用與意義1.2 基本工作原理1.3 主要方法分類 第二章:部分視圖渲染方法2.1 Html.RenderPartial()2.2 Html.RenderAction()2.3 性能對比分析 第三章:視圖組件渲染方法3.1 Html.RenderCom…

Go 語言 range 關鍵字全面解析

Go 語言 range 關鍵字全面解析 range 是 Go 語言中用于迭代數據結構的關鍵字,支持多種數據類型的遍歷操作。它提供了一種簡潔、安全且高效的方式來處理集合類型的數據。 基本語法 for index, value : range collection {// 循環體 } 1. 數組/切片迭代 fruits :…

美化顯示LLDB調試的數據結構

前面的博文美化顯示GDB調試的數據結構介紹了如何美化顯示GDB中調試的數據結構,本文將還是以mupdf庫為例介紹如何美化顯示LLDB中調試的數據結構。 先看一下美化后的效果: 一、加載自定義腳本 與GDB類似,需要添加一個~/.lldbinit文件&#xf…

【Java學習筆記】日期類

日期類 第一代日期類:Date 引入包 import java.text.ParseException:日期轉換可能會拋出轉換異常 import java.text.SimpleDateFormat import java.util.Date 1. 基本介紹 Date:精確到毫秒,代表特定的瞬間 SimpleDateForma…

C++基礎進階:函數、內聯函數與Lambda函數詳解

引言 在C編程的旅程中,函數是構建復雜程序的基本單元。它們像樂高積木一樣,允許我們將代碼分解成更小、更易于管理的部分。今天,我們將深入探討C中的三種重要函數類型:普通函數、內聯函數以及Lambda函數。掌握它們,將…

從Node.js到React/Vue3:流式輸出技術的全棧實現指南

本文將從底層原理到工程實踐,完整解析如何使用Node.js后端結合React和Vue3前端實現流式輸出功能,涵蓋協議選擇、性能優化、錯誤處理等關鍵細節,并通過真實場景案例演示完整開發流程。 一、流式輸出的核心原理與協議選擇 1.1 流式傳輸的底層機…

AT2401C中科微2.4g芯片PA

作為無線通信系統的核心模塊,射頻前端芯片通過整合功率放大器(PA)、濾波器、開關和低噪聲放大器(LNA)等關鍵組件,成為保障通信質量、降低功耗及維持信號穩定的決定性因素。 AT2401C是一款面向2.4GHz無線通信…

Linux安裝jdk、tomcat

1、安裝jdk sudo yum install -y java-1.8.0-openjdk-devel碰到的問題:/var/run/yum.pid 已被鎖定 Another app is currently holding the yum lock; waiting for it to exit… https://blog.csdn.net/u013669912/article/details/131259156 參考&#…

在本地電腦中部署阿里 Qwen3 大模型及連接到 Elasticsearch

在今天的文章中,我將參考文章 “使用 Elastic 和 LM Studio 的 Herding Llama 3.1” 來部署 Qwen3 大模型。據測評,這是一個非常不錯的大模型。我們今天嘗試使用 LM Studio 來對它進行部署,并詳細描述如何結合 Elasticsearch 來對它進行使用。…

【設計模式】2.策略模式

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 商場收銀軟件為例 1. 基礎版 total 0def click_ok(price,num):tot price * numtotal totprint(合計:, total)增加打折 total 0def cli…

c++中的輸入輸出流(標準IO,文件IO,字符串IO)

目錄 &#xff08;1&#xff09;I/O概述 I/O分類 不同I/O的繼承關系 不同I/O對應的頭文件 &#xff08;2&#xff09;iostream 標準I/O流 iostream頭文件中的IO流對象 iostream頭文件中重載了<<和>> 緩沖區示意圖 標準輸入流 cin用法 cin&#xff1a;按空…

人工智能學習06-循環

人工智能學習概述—快手視頻 人工智能學習06-循環—快手視頻

【電路】阻抗匹配

&#x1f4dd; 阻抗匹配 一、什么是阻抗匹配&#xff1f; 阻抗匹配&#xff08;Impedance Matching&#xff09;是指在電子系統中&#xff0c;為了實現最大功率傳輸或最小信號反射&#xff0c;使信號源、傳輸線與負載之間的阻抗達到一種“匹配”狀態的技術。 研究對象&#x…