C++求職題

文章大部分內容轉載https://www.cnblogs.com/lanxuezaipiao/p/4127904.html

1.冒泡排序法:

如果有N個數字需要排序,那么需要進行(N-1)趟循環,第i趟循環需要對比的次數為(N-i)。所以可以用雙重循環,外層循環用于控制循環的趟數,內層循環用于控制每一趟循環的次數。

冒泡排序的優點:每進行一趟排序,就會少比較一次,因為每進行一趟排序都會找出一個較大值

冒泡排序法時間復雜度:

1).如果我們的數據正序,只需要走一趟即可完成排序。所需的比較次數C和記錄移動次數M均達到最小值,即:Cmin=n-1;Mmin=0;所以,冒泡排序最好的時間復雜度為O(n)。

2).如果很不幸我們的數據是反序的,則需要進行n-1趟排序。每趟排序要進行n-i次比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:冒泡排序的最壞時間復雜度為:O(n2)?。

綜上所述:冒泡排序總的平均時間復雜度為:O(n2)?。

雙重for循環實現冒泡排序法:

2.有1,2,…,n的無序數組,求排序算法,并且要求時間復雜度為O(n),空間復雜度O(1),使用交換,而且一次只能交換兩個數。

這個題的特點是,數字是連續的如果是從1到n,那么最終排好序的數字和下標之間只差1,

,

3. 易誤解:如果int a[5], 那么a與&a是等價的,因為兩者地址相同。

一定要注意a與&a是不一樣的,雖然兩者地址相同,但意義不一樣,&a是整個數組對象的首地址,而a是數組首地址,也就是a[0]的地址,a的類型是int[5],a[0]的類型是int,因此&a+1相當于a的地址值加上sizeof(int) * 5,也就是a[5],下一個對象的地址,已經越界了,而a+1相當于a的地址加上sizeof(int),即a[1]的地址。

4. 如何將一個小數分解成整數部分和小數部分?

采用庫函數double modf(double x,double *integer)

#include<stdio.h>
#include<math.h>
int main(){
? ? double x,fraction,integer;
? ? while(~scanf("%lf",&x)){
? ? ? ? fraction=modf(x,&integer);
? ? printf("整數部分=%lf\n",integer);
? ? printf("小數部分=%lf\n",fraction);
? ? }
? ? return 0;
}

5. 可作為函數重載判斷依據的有:參數個數、參數類型、參數的排列順序、const修飾符;

? ?不可以作為重載判斷依據的有:返回類型。

7. C的結構體和C++結構體的區別

(1)C的結構體內不允許有函數存在,C++允許有內部成員函數,且允許該函數是虛函數。所以C的結構體是沒有構造函數、析? ?構函數、和this指針的。??

(2)C的結構體對內部成員變量的訪問權限只能是public,而C++允許public,protected,private三種。

(3)C語言的結構體是不可以繼承的,C++的結構體是可以從其他的結構體或者類繼承過來的。

8. 如何在類中定義常量成員并為其初始化?

解答:只能在初始化列表里對const成員初始化,像下面這樣:

class CBook {
public:const double m_price;
類中的構造函數是為了初始化類中的成員變量的,一般的成員變量可以在構造函數內部進行初始化,但是對于常量成員
只可以在構造函數名后面,用初始化列表的形式進行初始化。CBook() :m_price(8.8) { }
};

9. 在定義類的成員函數時使用mutable關鍵字的作用是什么?

解答:當需要在const方法中修改對象的數據成員時,可以在數據成員前使用mutable關鍵字,防止出現編譯出錯。例子如下:

class CBook {
public:mutable double m_price; // 如果不加就會出錯CBook(double price) :m_price(price) { }double getPrice() const; // 定義const方法
};
double CBook::getPrice() const {m_price = 9.8;return m_price;
}

10.?拷貝構造函數在哪些情況下被調用?

(1)函數的參數為類對象且參數采用值傳遞方式;

(2)將類對象做為函數的返回值。

11.在C++中,如果確定了某一個構造函數的創建過程,在該構造函數中如果調用了其它重載的構造函數,它將不會執行其它構造函數的初始化列表部分代碼,而是執行函數體代碼,此時已經退化成普通函數了。例子說明如下:

class CBook {
public:double m_price;
這是一個構造函數CBook() {
///在這個無參的構造函數中調用了另外一個重載的構造函數,那么這個構造函數的初始化列表將不會執行。而是直接執行函數體。CBook(8.8);}
這個是一個重載的構造函數CBook(double price) : m_price(price) { }
};
int main() {CBook c;cout << c.m_price << endl; // 此時并不會輸出理想中的8.8
}

12. 靜態數據成員只能在全局區域進行初始化,而不能在類體中進行(構造函數中初始化也不行),且靜態數據成員不涉及對象,因此不受類訪問限定符的限制

class CBook {
public:static double m_price;
};
double CBook::m_price = 8.8;//只能在這里(全局區)進行初始化,不能在構造函數中進行初始化。

13.?重載++和–時是怎么區分前綴++和后綴++的?

例如當編譯器看到++a(先自增)時,它就調用operator++(a);

但當編譯器看到a++時,它就調用operator++(a, int)。即編譯器通過調用不同的函數區別這兩種形式這里的int 是一個占位符。

14.? C++的多態性分為靜態多態和動態多態。

靜態多態性:編譯期間確定具體執行哪一項操作,主要是通過函數重載和運算符重載來實現的;可以通過(參數數量,參數類型,參數的順序來重載)

動態多態性:運行時確定具體執行哪一項操作,主要是通過虛函數來實現的。

多態發生的條件:有繼承,有虛函數的重寫,有父類指針指向子類對象。

15. 虛函數原理考察

class A {
public:virtual void funa(); ///指針指向虛函數表virtual void funb();void func();  ///代碼區static void fund();全局區static int si;   全局區
private:int i;    棧區char c;   棧區
};

關于類占用的內存空間,有以下幾點需要注意:

(1)如果類中含有虛函數,則編譯器需要為類構建虛函數表,類中需要存儲一個指針指向這個虛函數表的首地址,注意不管有幾個虛函數,都只建立一張表,所有的虛函數地址都存在這張表里,類中只需要一個指針指向虛函數表首地址即可。

(2)類中的靜態成員是被類所有實例所共享的,它不計入sizeof計算的空間

(3)類中的普通函數或靜態普通函數都存儲在棧中,不計入sizeof計算的空間

(4)類成員采用字節對齊的方式分配空間

(5)類中的方法放在代碼區

(6)static或者字符串常量放在數據區或者是常量區

(7)類中的普通成員變量放在棧中

(8)通過new分配的變量存儲在堆區

C語言中的四區模型,棧區,堆區,代碼區,常量區或者全局區

答案:12(32位系統)或16(64位系統)

16.?虛繼承的作用是什么?

在多繼承中,子類可能同時擁有多個父類,如果這些父類還有相同的父類(祖先類),那么在子類中就會有多份祖先類。例如,類B和類C都繼承與類A,如果類D派生于B和C,那么類D中就會有兩份A。為了防止在多繼承中子類存在重復的父類情況,可以在父類繼承時使用虛函數,即在類B和類C繼承類A時使用virtual關鍵字。

17. 32位系統和64位系統各個數據類型所占的內存空間

類和結構體中一樣,有四字節補齊效果,如果計算的總共的字節數,除上4之后的余數不為0,那么最終的所占字節數為上面所做除法的商再加上4個字節。例如,計算的總字節數為15,那么最終的字節數是12+4=16個字節。

const關鍵字:

1)欲阻止一個變量被改變,可以使用const關鍵字。在定義該const變量時,通常需要對它進行初始化。因為以后就沒有機會再改變它了。

2)對指針來說,可以指定指針的本身為const,也可以指定指針所指向的數為const。或二者同時為const。

3)在一個函數的聲明中,const可以修飾形參,表明它是一個輸入參數。在函數內不能改變其值。

4)對于類的成員函數,若指定其為const類型。則表明其是一個常量函數。不能修改類的成員變量。

5)對于類的成員函數,有時候必須指定其返回值為const類型。以使得其返回值不為“左值”。

static關鍵字:

1)函數體內static變量的作用范圍為函數體。不同于auto變量。該變量的內存只被分配一次。因此其值在下次調用時仍維持上次的值。

2)在模塊內的static全局變量可以被模塊內的所有函數訪問。但不能被模塊外的其他函數訪問。

3)在模塊內的static函數只可被這一模塊內的其它函數調用。這個函數的使用范圍被限制在聲明它的模塊內。

4)在類中的static成員變量屬于整個類所有,對類的所有對象只有一份復制。

5)在類中的static成員函數屬于整個類所有,這個函數不接受this指針,因而只能訪問類的static成員變量。

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

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

相關文章

Python-爬蟲-requests

簡介 #介紹&#xff1a;使用requests可以模擬瀏覽器的請求&#xff0c;比起之前用到的urllib&#xff0c;requests模塊的api更加便捷&#xff08;本質就是封裝了urllib3&#xff09;#注意&#xff1a;requests庫發送請求將網頁內容下載下來以后&#xff0c;并不會執行js代碼&am…

JS如何監聽動畫結束

場景描述 在使用JS控制動畫時一般需要在動畫結束后執行回調去進行DOM的相關操作&#xff0c;所以需要監聽動畫結束進行回調。JS提供了以下事件用于監聽動畫的結束&#xff0c;簡單總結學習下。 CSS3動畫監聽事件 transitionEnd事件 transitionEnd事件會在CSS transition動畫結束…

封裝一個ViewPager真正的實現圖片無限循環滾動帶導航點

效果圖&#xff1a; 大家在寫項目的過程中常常會碰到須要實現Viewpager里面載入幾張圖片來循環自己主動輪播的效果&#xff0c;假設不封裝一下的話代碼分散在activity里面會顯得非常亂。并且也不利于我們下次復用&#xff0c;所以這里我把viewpager的相關代碼抽取出來放在了一個…

畢業論文頁眉頁腳頁碼插入

用word這么多年&#xff0c;第一次完整的操作了一遍頁眉頁腳頁碼的插入過程&#xff0c;其實三者都要要求奇偶頁不同 1.頁面布局-》右下角箭頭-》版式-》奇偶頁不同 因為文章不同的部分需要插入不同的頁眉頁腳頁碼&#xff0c;所以要在不同的部分插入分解符斷開它們的連接 2、…

巴黎市中心降下2019年第一場雪

當地時間1月22日&#xff0c;法國巴黎市中心降下2019年第一場雪&#xff0c;氣溫也隨之下降&#xff0c;街上的行人和車輛均有所減少。中新社記者 李洋 攝一對情侶在埃菲爾鐵塔前合影留念。無家可歸者在長椅上睡覺。游客在盧浮宮前拍照。

Echarts實現隱藏x軸,y軸,刻度線,網格

"yAxis": [{//就是一月份這個顯示為一個線段&#xff0c;而不是數軸那種一個點點"show" : true,"boundaryGap": true,"type": "category","name": "時間","data": ["1月", "2…

Ubuntu16.04 + Matlab2018+ desktop creation

https://blog.csdn.net/m0_37601622/article/details/82731879 https://blog.csdn.net/l18092482025/article/details/78906436 The second blog teaches you how to download a matlab.png when there is no matlab.png in /usr/share/applications/.

Atom插件主題推薦

注意事項 主題和插件這方面,比 Sublime Text 人性化多了..一些比較用心的作者增加了二度設置功能。 何為二度設置,就是不用手寫代碼修改配置文件&#xff0c;點點鼠標&#xff0c;填填輸入框就能生效&#xff0c;主題以 isotope-ui 這個做例子介紹,看圖&#xff1a; 進入二度設…

印尼發生洪災和山體滑坡 致多人死亡數千人撤離

當地時間1月23日&#xff0c;印尼南蘇拉威西省望加錫居民受洪水影像&#xff0c;用竹筏運送摩托車。近日&#xff0c;印尼南蘇拉威西省暴雨連連&#xff0c;造成洪災和山體滑坡。目前&#xff0c;暴雨引發的洪災和山體滑坡至少已造成8人死亡&#xff0c;數千人被迫撤離家園。。…

Django學習筆記第三篇--關于響應返回

一、返回簡單類型&#xff1a; 1 #1、返回簡單字符串 2 #from django.http import HttpResponse 3 return HttpResponse("return string") 4 #2、返回json 5 return HttpResponse(json.dumps(response_data),content_type"application/json") 二、返回文…

HTTP響應狀態碼

1XX:代表提示信息 2XX:代表成功信息 3XX:代表重定向 4XX:代表客戶端錯誤信息 5XX:代表服務器錯誤 信息 500:500 錯誤是服務器內部錯誤 ,而且是程序上錯誤 為多,可能是你的用戶權限的問題導致,或者是數據庫連接出現了錯誤. 501:服務器501服務器501錯誤是服務器是否具有請求功能.…

pycharm中無法import已經安裝的ros中的庫

使用pycharm寫python程序&#xff0c;無法import 已經安裝的ros包&#xff0c;并提示ImportError: No module named sensor_msgs.msg 解決方法如下 1. pycharm->file->settings->project:csvfile->project interpreter-> 點擊右側下三角選擇 show all 2. 在彈…

tcp/ip知識點的總結

知識點搜集于網絡&#xff0c;在加上自己的總結&#xff0c;還有很多不全&#xff0c;希望大家多提意見&#xff0c;共享學習&#xff01; 一、TCP/IP是什么&#xff1f; TCP/IP是一個協議族&#xff0c;而不是單獨的協議。包括arp、ip、icmp、tcp、udp、http、ftp等協議 二、T…

搜索引擎ElasticSearchV5.4.2系列一之ES介紹

相關博文&#xff1a; 搜索引擎ElasticSearchV5.4.2系列一之ES介紹 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2kibanaV5.4.2x-packV5.4.2安裝 搜索引擎ElasticSearchV5.4.2系列三之ES使用 Elasticsearch 是一個開源的搜索引擎&#xff0c;建立在一個全文搜索引擎…

[譯] 前端組件設計原則

原文地址&#xff1a;Front end component design principles 原文作者&#xff1a;Andrew Dinihan 文中示例代碼&#xff1a;傳送門 限于個人能力&#xff0c;如有錯漏之處&#xff0c;煩請不吝賜教。 前言 我在最近的工作中開始使用 Vue 進行開發&#xff0c;但是我在上一家公…

imu_utils標定imu問題解決

在編譯過程中遇到的一些問題可以參照這個女生的文章 https://blog.csdn.net/fang794735225/article/details/92804030 下面是imu_utils的主頁&#xff0c;可以下載代碼&#xff0c;也有使用步驟 https://github.com/gaowenliang/imu_utils 我下載了imu_utils主頁最后面提供…

術語-服務:PaaS

ylbtech-術語-服務&#xff1a;PaaSPaaS是Platform-as-a-Service的縮寫&#xff0c;意思是平臺即服務。 把服務器平臺作為一種服務提供的商業模式。通過網絡進行程序提供的服務稱之為SaaS(Software as a Service)&#xff0c;而云計算時代相應的服務器平臺或者開發環境作為服務…

PostgreSQL安裝和簡單配置

PostgreSQL安裝與使用 目錄 依賴包的安裝源碼編譯和安裝初始化數據庫集簇簡單配置依賴包安裝 PostgreSQL源碼安裝依賴以下四個軟件包 readline zlib flex bison 在Ubuntu中可是應用以下命令直接進行安裝&#xff1a; sudo apt-get install libreadline6 libreadline6-dev zlib1…

1.App瘦身經驗總結

為什么apk越來越大&#xff1f; 1.項目不斷發展&#xff0c;功能越多&#xff0c;代碼量增加的同時&#xff0c;資源文件也在不斷的增多2.app支持的主流dpi越來越多&#xff0c;如ldpi、mdpi、hdpi、xh xxh xxxh等等&#xff0c;間接導致資源增多3.引入的第三方sdk或開源庫越來…

研究相機和IMU坐標系變換

剛開始錄制的數據時沒有考慮相機和IMU之間的坐標變換&#xff0c;但是后來發現跟蹤效果不好&#xff0c;去查驗imu數據時&#xff0c;發現&#xff0c;我采集保存的imu數據格式沒有和euroc數據集中的imu數據保存格式統一&#xff0c;所以需要研究的是在euroc用于數據采集的設備…