秋招複習-C++( 一)

来源:https://www.cnblogs.com/chenwx-jay/archive/2018/07/22/chenwx_jay_Cplusplus.html
-Advertisement-
Play Games

博主是大三本科生,即將參加2019屆秋招,目前正在複習基礎知識,為了以後便於查找,故記錄在隨筆裡面,希望大家多多指教。 ...


Linux/Unix編程部分

1.進程間通信方式:信號,信號量,消息隊列,共用記憶體,套接字Socket

2.ipcs: Linux/Unix下的命令,可以用來查看當前系統中所使用的進程間通信方式的各種信息,可以通過不同的參數選項來進行查詢。

   ipcs -a  是預設的輸出信息 列印出當前系統中所有的進程間通信方式的信息
   ipcs -m  列印出使用共用記憶體進行進程間通信的信息
   ipcs -q   列印出使用消息隊列進行進程間通信的信息
   ipcs -s  列印出使用信號進行進程間通信的信息

3.ipcrm:Linux/Unix下的命令,可以用來移除進程間通信的載體,如共用記憶體段,信號集合和消息隊列等,該命令只有root管理員和ipc的創建者才可以成功使用。該命令執行之後會將與載體相關的數據一起移除。

4.ELF文件:Unix/Linux系統下的一種標準文件格式,可以分為目標文件、可執行文件、共用庫文件和核心轉移文件四種不同的類型,主要由ELF頭部、Program Header table、Section、Section Table組成,本質上是類Unix系統的標準二進位文件。

網路編程部分

1.connect發生阻塞,怎麼解決?

答:方法一是設置定時器,使connect進行定時等待,一旦超時就返回錯誤,方法二是選擇使用非阻塞模式,返回之後使用select判斷此時所處的狀態。

2.select判斷數據可讀,但是讀回來的人數據長度為0,為什麼?

答:某個套接字集合中沒有準備好,可能會select記憶體用FD_CLR清該位為0

3.keepalive是什麼?

答:TCP協議中用於檢測死連接的一種機制。當建立TCP連接的雙方長時間沒有數據傳輸而處於空閑狀態時,其中一方的主機會發出保持活動信號給另外一方,並等待應答。如果主機可達並且有回應,那麼認為對方主機還線上,連接繼續保持,反之,重覆多次發現都沒有報文返回,說明連接已經丟失,直接丟棄該連接。keepalive的探測報文發送間隔可以設置,具體可以參考這篇博客:https://blog.csdn.net/u010126059/article/details/50670801

演算法部分

1.排序:常用的排序演算法有多種,如快速排序、插入排序、基數排序等,各個演算法都有自己的優點和缺點,時間複雜度和空間複雜度也不同,在選用排序演算法時應該結合實際需求來選擇合適的演算法。

快速排序:平均時間複雜度為O(nlogn),最壞情況是O(n^2),當分割的元素選取不恰當時,就會出現最壞情況,此時左區間長度為0,右區間長度為n,一般採用三點中值演算法進行優化。

插入排序:平均時間複雜度為O(n^2),適合小數據量或者數據接近有序的排序

C++ STL中實現了一個sort函數,用於對具有線性表結構的容器中的數據進行排序,可以用於對vector或者數據進行排序,不能用於對list和slist進行排序,其底層實現機制運用了以上所說的快速排序和插入排序,源碼分析可以參考以下兩篇博客:

https://blog.csdn.net/u010902721/article/details/45868391和https://blog.csdn.net/u010902721/article/details/45869367(感謝這位大神的分享,基本將sort的實現機制都說到了)

C++部分

 1.值傳遞、指針傳遞和引用傳遞的區別

      值傳遞是傳遞變數的值,將實參的值拷貝一份給形式參數,在函數中形參的改變與實參沒有關係,因此在寫swap的demo程式時輸出結果並沒有發生交換,因為形式參數相當於局部變數,其值存放在棧區域,函數執行完畢退出棧會被銷毀。

      引用傳遞和指針傳遞本質上都是傳遞地址,實參和形參都是同一變數的地址,在函數中對形參的操作是對該地址對應的記憶體進行操作,因此測試swap的demo輸出結果會發生交換。

2.dynamic_cast

      全稱是動態類型轉換,是C++提供的一種運行時多態類型轉換的操作。dynamic_cast提供了類型安全檢查,是一種基於能力查詢(Capability Query)的轉換,所以在多態類型間進行轉換更提倡採用dynamic_cast。dynamic_cast只能用於多態類型的類型轉換,被轉換對象obj的類型T1必須是多態類型,即T1必須公有繼承自其它類,或者T1擁有虛函數(繼承或自定義)。若T1為非多態類型,使用dynamic_cast會報編譯錯誤。

       具體解析可以參考這篇博客:https://www.cnblogs.com/weidagang2046/archive/2010/04/10/1709226.html

       暫且分享到這裡,未完待續.............

                                                                                                                                2018-07-22   23:26:04  深圳

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 主要內容: 1.JVM中分為哪幾個區 2.每個區用來存放什麼,每個分區的作用 3.什麼時候創建的 4.是線程私有的還是多個線程共用的 ...
  • 題目描述 給定一個由 nnn 行數字組成的數字梯形如下圖所示。 梯形的第一行有 mmm 個數字。從梯形的頂部的 mmm 個數字開始,在每個數字處可以沿左下或右下方向移動,形成一條從梯形的頂至底的路徑。 分別遵守以下規則: 從梯形的頂至底的 mmm 條路徑互不相交; 從梯形的頂至底的 mmm 條路徑僅 ...
  • 本文內容: 文件操作 文件過濾器 首發日期:2018-07-23 文件操作: Java中對文件和目錄的操作,通常通過File類來操作。 File類有幾個構造函數,常用的是下麵三個: File(String pathname):根據路徑名創建一個對象 File(String parent, Strin ...
  • [TOC]#30、第三周-第02章節-Python3.5-上節內容回顧1.列表,元組操作2.字元串操作3.字典操作#31、第三周-第03章節-Python3.5-集合及其運算##集合運算list_1 = [1,2,3,2]print("list_1:",list_1)set_1 = set(list ...
  • 1. 學習計劃 1、圖片上傳 a) 圖片伺服器FastDFS b) 圖片上傳功能實現 2、富文本編輯器的使用KindEditor 3、商品添加功能完成 2. 圖片伺服器的安裝 1、存儲空間可擴展。 2、提供一個統一的訪問方式。 使用FastDFS,分散式文件系統。存儲空間可以橫向擴展,可以實現伺服器 ...
  • 1.java的動態驗證碼我這裡將介紹兩種方法: 一:根據java本身提供的一種驗證碼的寫法,這種呢只限於大家瞭解就可以了,因為java自帶的模式編寫的在實際開發中是沒有意義的,所以只供學習一下就可以了,待會講解的第二種呢就是我們需要掌握的一種模式了: 第一種的代碼如下: 上面的代碼呢寫的很詳細了,這 ...
  • 使用update()方法合併字典,對原有字典的修改並不會影響合併的字典,ChainMap類合併字典後,同樣支持多數字典操作,比如len(), values(), keys(), items()等,對合併字典的添加和刪除總是針對第一個字典,值的查找總是從第一個字典開始查找 ...
  • 今天主要講解一下,activiti 工作流的插件安裝,以及用代碼、配置文件的方式實現工作流所需要用的25張表。 這是activiti 官方文檔:https://www.activiti.org/userguide/index.html#eclipseDesignerInstallation ,有興趣 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...