嵌入式面試筆試刷題(day10)

文章目錄

  • 前言
  • 一、數組和鏈表的區別
  • 二、什么是內存對齊
  • 三、IIC的時序
  • 四、static作用
  • 五、查看tty設備的方法
  • 六、查找指定文件命令
  • 七、三次握手和四次揮手
    • 1.三次握手
    • 2.四次揮手
  • 八、半關閉狀態
  • 九、字節流和數據報
  • 總結


前言

本篇文章繼續講解筆試和面試。

一、數組和鏈表的區別

1.內存:

數組使用連續的內存塊來存儲元素,每個元素在內存中占據固定大小的空間。這樣的存儲方式使得數組的訪問速度快,通過索引即可直接訪問任意位置的元素。

鏈表使用分散的內存塊來存儲元素,每個元素(節點)在內存中可以位于任意位置。每個節點包含了存儲數據的部分和指向下一個節點的指針。這種存儲方式使得插入和刪除操作更加靈活,但訪問元素需要遍歷整個鏈表。

2.性能:

數組的訪問速度快,通過索引可以直接訪問任意位置的元素,時間復雜度為 O(1)。但是在插入和刪除元素時,需要移動其他元素來保持連續性,導致時間復雜度為 O(n)。

鏈表在插入和刪除元素時,只需要修改指針的指向,所以插入和刪除的時間復雜度可以達到 O(1)。但是在訪問元素時,需要遍歷鏈表,時間復雜度為 O(n)。

3.操作復雜度:

數組的插入和刪除操作需要移動其他元素,因此操作復雜度較高。在插入和刪除元素的場景較多時,數組性能不如鏈表。

鏈表的插入和刪除操作只需要改變指針的指向,操作復雜度較低。在需要頻繁執行插入和刪除操作的場景中,鏈表更加適合。

數組適合于需要頻繁訪問元素的場景,而鏈表適用于需要頻繁插入和刪除元素的場景。

二、什么是內存對齊

內存對齊是指在存儲數據時,將數據按照一定規則放置在內存中的過程。

三、IIC的時序

1.開始信號(Start Signal):主設備發送一個低電平的信號,表示即將開始通信。

2.從設備地址(Device Address):主設備發送從設備的地址,主要用于指定與之通信的從設備。地址包括一個7位的從設備地址和讀/寫位。讀/寫位用于指示主設備是要進行讀操作還是寫操作。

3.應答信號(Acknowledge Signal):每次發送地址或數據后,發送方會釋放SDA線(串行數據線),然后接收方會發送應答位。如果接收到的正確數據,則發送一個低電平的應答(ACK)信號;如果接收到的數據有誤或不需要發送應答,則發送一個高電平的非應答(NACK)信號。

4.讀或寫操作(Read or Write Operation):主設備通過傳輸數據來完成讀或寫操作。在讀操作中,從設備向主設備發送數據;在寫操作中,主設備向從設備發送數據。

5.停止信號(Stop Signal):主設備發送一個高電平的停止信號,表示通信結束。

四、static作用

static關鍵字在C語言中可以用于靜態變量、靜態函數、靜態全局變量和靜態局部變量。它們的具體作用包括控制變量的生命周期、作用域以及對其他文件的可見性。

五、查看tty設備的方法

使用ls /dev/tty*
在這里插入圖片描述

六、查找指定文件命令

1.使用find命令:

find <路徑> -name <文件名>

<路徑>:指定要搜索的起始路徑。可以是根目錄 /,也可以是當前目錄 .,或者其他指定的目錄。
-name <文件名>:指定要查找的文件名。可以使用通配符進行模糊匹配,如 * 表示任意字符。

2.使用locate命令:

locate <文件名>

<文件名>:指定要查找的文件名。與find不同,locate命令使用基于數據庫的搜索,因此速度較快。

七、三次握手和四次揮手

1.三次握手

1.第一次握手(SYN):客戶端向服務器發送一個帶有 SYN(同步)標志的包,用于請求建立連接。發送方選擇一個初始的序列號(Sequence Number)作為起始值,并將 SYN 標志置為1。

2.第二次握手(SYN+ACK):服務器收到客戶端的 SYN 包后,確認收到,并向客戶端發送一個帶有 SYN 和 ACK(應答)標志的包。服務器也會為自己選取一個初始的序列號,并將客戶端的序列號加1作為確認號(Acknowledgment Number)。

3.第三次握手(ACK):客戶端收到服務器的 SYN+ACK 包后,向服務器發送一個帶有 ACK 標志的包作為確認。該包中的序列號被設置為收到的確認號加1。

在這里插入圖片描述

2.四次揮手

1.第一步(FIN1):
主動關閉連接的一方(稱為發起者)向對方發送一個帶有 FIN(Finish)標志的 TCP 報文段。
發起者不再發送數據,但仍可以接收對方發送的數據。

2.第二步(ACK1):
接收到 FIN 的一方(稱為被動關閉者)收到 FIN 報文后,向發起者發送一個確認應答(ACK)報文,確認已收到 FIN。
被動關閉者仍可以發送剩余數據,直到發送和接收緩沖區中的數據都被傳輸完成。

3.第三步(FIN2):
被動關閉者發送一個帶有 FIN 標志的報文段,表示它也希望關閉連接。
被動關閉者不再發送數據,但仍可以接收來自發起者的數據。

4.第四步(ACK2):
發起者接收到被動關閉者的 FIN 后,向被動關閉者發送一個確認應答,確認收到 FIN。
發起者等待一段時間,以確保對方收到確認應答。

在這里插入圖片描述

八、半關閉狀態

半關閉(Half-closed)狀態是指在 TCP 連接中,一方關閉了它的輸出流(發送數據),但仍然可以接收對方發送的數據。

九、字節流和數據報

字節流(TCP):

字節流是 TCP 中的傳輸方式,它將數據視為連續的字節流,沒有明確的消息邊界。
TCP 將數據劃分為一個個的字節,并以無結構的方式在連接上進行傳輸。
發送方將數據以字節流的形式發送給接收方,接收方接收到字節后按照順序重新組裝成完整的數據。
具有可靠性和順序性,TCP 通過序列號、確認號和重傳機制來保證數據的可靠性和正確的順序。

數據報(UDP):

數據報是 UDP 中的傳輸方式,它將數據視為獨立的數據包,每個數據包之間是獨立的。
UDP 將數據劃分為一個個固定大小的數據報(通常稱為 UDP 數據報或者 UDP 包)進行傳輸。
每個數據報都有自己的頭部信息,包括源端口、目標端口和長度等,用于標識和組裝數據。
數據報發送時不保證順序和可靠性,接收方無法確保接收到的數據報的順序和完整性。

總結

本篇文章就講解到這里。

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

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

相關文章

PHP 使用ThinkPHP實現電子郵件發送示例

文章目錄 首先我們需要設置我們的郵箱客戶端授權&#xff0c;獲取到授權碼找到我們的郵箱設置去賬號中找到這一堆服務&#xff0c;找到后開啟smtp服務開啟服務后管理服務 接下來需要去下載相應的第三方類庫(我這里使用的是PHPMailer)在thinkPHP中封裝一下郵件服務類實際調用效果…

Ajax_4(進階)同步異步+ 宏任務微任務 + Promise鏈 + async終極解決方案 +事件循環原理 + 綜合案例

Ajax(進階) 文章目錄 Ajax(進階)01-同步代碼和異步代碼什么是同步代碼&#xff1f;什么是異步代碼&#xff1f;代碼閱讀 02-回調函數地域概念缺點代碼示例 03-Promise鏈式調用概念細節好處代碼示例 04-Promise鏈式應用代碼示例 05-async函數和await概念代碼示例 06-async和awai…

Mysql 建索引規范

索引規范 今天在建線上表的時候&#xff0c;做了一個varchar的索引&#xff0c;運維說varchar的索引會占用很大的內存。 于是 上網搜了一下建索引規范 一、建表規約 【強制】&#xff08;1&#xff09; 存儲引擎必須使用InnoDB 解讀&#xff1a;InnoDB支持事物、行級鎖、并發…

數據結構—圖的應用

6.4圖的應用 概念回顧—生成樹 生成樹&#xff1a;所有頂點均由邊連接在一起&#xff0c;但不存在回路的圖。 一個圖可以有許多棵不同的生成樹、含有n個頂點 n-1 條邊的圖不一定是生成樹所有生成樹具有以下共同特點 生成樹的頂點個數與圖的頂點個數相同&#xff1b;生成樹是圖的…

如何運用小程序技術閉環運營鏈路?

如何通過線上小程序獲取用戶線索&#xff0c;提高企業抗風險能力&#xff0c;建立有效的營銷數字化系統一直是困擾每一個小程序開發者與運營者的問題。 當我們選擇使用小程序設計自己的運營流程時&#xff0c;從「推廣」到「轉化」&#xff0c;再到最終的「留存」都是運營過程…

ABeam×Startup丨德碩管理咨詢(深圳)創新研究團隊前往靈境至維·既明科技進行拜訪交流

近日&#xff0c;德碩管理咨詢&#xff08;深圳&#xff09;&#xff08;以下簡稱“ABeam-SZ”&#xff09;創新研究團隊一行前往靈境至維既明科技有限公司&#xff08;以下簡稱“靈境至維”&#xff09;進行拜訪交流&#xff0c;探討線上虛擬空間的商業模式。 現場合影 &…

前臺測試轉后臺優化歷險記,應屆生薪資8K逆襲,從此扶搖直上九萬里!

優橙教育每一期都會有不少從前臺測試轉到后臺的小伙伴應邀而來&#xff0c;其實每個人的經歷都是大致相同的&#xff0c;這時候肯定會有很多小伙伴問&#xff0c;為什么出來花錢出來參加培訓而不是在項目上轉呢&#xff1f; 或許是因為在項目上摸爬滾打太久了&#xff0c;吃不下…

Qt掃盲-QWidget理論使用總結

QWidget理論使用總結 一、概述二、頂層 控件 和子 控件三、復合控件四、自定義控件和繪制五、大小提示和大小策略六、事件七、一組函數和屬性八、QWidget樣式表九、透明度和雙緩沖十、創建半透明窗口 一、概述 widget 是用戶界面的最小單位&#xff1a;它從window系統接收鼠標…

Jsoup爬取簡單信息

1. 豆瓣圖書最受關注 1.1 創建SpringBoot項目或者Maven項目 1.2 引入jsoup <dependency><!-- jsoup HTML parser library https://jsoup.org/ --><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.15.3<…

Qt應用開發(基礎篇)——堆棧窗口 QStackedWidget

一、前言 QStackedWidget繼承于QFrame&#xff0c;QFrame繼承于QWidget&#xff0c;是Qt常用的堆棧窗口部件。 框架類QFrame介紹 QStackedWidget堆棧窗口&#xff0c;根據下標切換&#xff0c;一次顯示一個小部件&#xff0c;常用于應用界面切換、圖片輪詢播放等場景。 二、QSt…

用Java調用C#的WebService接口

這是一個用Java調用C#版程序的例子,廢話不多說,上代碼: C#接口代碼: using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Services.Description;[WebService(Namespace = " http://www.ta…

如何在Springboot項目中讀取zip壓縮包并且把文件導出成zip壓縮包

文章目錄 設想場景實現流程小結 設想場景 為方便老師錄入大量學生圖片信息&#xff0c;在添加照片時&#xff0c;學生的相關資料以身份證號碼圖片描述命名如 &#xff08;1231231234567一寸照片.jpg&#xff09; &#xff08;1231231234567身份證正面照片.jpg&#xff09; &am…

中小企業體育代言:探索費用策略與實際操作

隨著體育市場的不斷擴大和企業品牌的不斷提升&#xff0c;中小型企業正逐漸將目光投向了體育明星代言&#xff0c;希望通過這一策略來提升品牌知名度、美譽度&#xff0c;進而吸引目標消費者的注意力并提升銷售量。然而&#xff0c;中小型企業請體育明星代言的費用究竟是多少呢…

docker 離線模式-部署容器

有網絡的情況下下載需要的鏡像 比如(下面以tomcat為例子&#xff0c;其他鏡像類似) docker pull tomcat打包鏡像文件到本地 docker save tomcat -o tomcat.tar將tomcat.tar 上傳到內網服務器&#xff08;無外網環境&#xff09; 導入鏡像 docker load -i tomcat.tar創建容器…

element-ui的el-dialog,簡單的封裝。

el-dialog是使用率很高的組件 使用el-dialog很多都是按照文檔的例子&#xff0c;用一個變量控制是否顯示&#xff0c;再來一個變量控制標題。 如果我這個對話框多個地方使用的話還要創建多個變量&#xff0c;甚至關閉之后還要清空一些變量&#xff0c;應該可以簡化一點。我寫…

Windows Hyper-V Ubuntu 22.04 LTS安裝

文章目錄 Ubuntu準備Hyper-V啟用虛擬化支持services.msc 打開服務列表&#xff0c;關注Hyper-V服務是否啟動打開管理器創建虛擬機 啟動備份 Ubuntu 下載Ubuntu-Desktop&#xff0c;這是個iso文件。 準備 20GB以上的磁盤空間&#xff0c;ubuntu安裝后的虛擬磁盤文件超過15GB一…

C/C++test兩步完成CMake項目靜態分析

您可能一直在靜態分析中使用CMake。但您是否嘗試過將Parasoft C/Ctest與CMake一起使用嗎&#xff1f;以下是如何使用C/Ctest在基于CMake的項目中運行靜態分析的詳細說明。 CMake是用于構建、測試和打包軟件的最流行的工具之一。Parasoft C/Ctest通過簡化構建管理過程&#xff…

【Minecraft】Fabric Mod開發完整流程1 - 環境配置與第一個物品

前言 Fabric 是 Minecraft 一款非官方的模組 API,與 Forge mod 不同。它以輕量級和高性能為設計目標,專注于支持新版本的 Minecraft。 Fabric 和 Forge 在各自的加載編譯流程上差別很大&#xff0c;所以你很難看見有同時支持二者的 mod&#xff0c;除非做了兼容性處理 Fabri…

【Java筆記】對象存儲服務MinIO

1 MinIO簡介 MinIO基于Apache License v2.0開源協議的對象存儲服務&#xff0c;可以做為云存儲的解決方案用來保存海量的圖片&#xff0c;視頻&#xff0c;文檔。由于采用Golang實現&#xff0c;服務端可以工作在Windows,Linux, OS X和FreeBSD上。配置簡單&#xff0c;基本是復…

mac-右鍵-用VSCode打開

1.點擊訪達&#xff0c;搜索自動操作 2.選擇快速操作 3.執行shell腳本 替換代碼如下&#xff1a; for f in "$" doopen -a "Visual Studio Code" "$f" donecommand s保存會出現一個彈框&#xff0c;保存為“用VSCode打開” 5.使用