面試題目

    1. 拷貝構(gòu)造函數(shù)通常用于
  • 當(dāng)用類的一個對象去初始化該類的另一個對象(或引用)時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)實現(xiàn)拷貝賦值

  • 若函數(shù)的形參為類對象,調(diào)用函數(shù)時,實參賦值給形參,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)

  • 當(dāng)函數(shù)的返回值是類對象時,系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)

    1. 必須使用的情況
      如果在類中沒有定義拷貝構(gòu)造函數(shù),編譯器會自行定義一個。如果類帶有指針變量,并有動態(tài)內(nèi)存分配,則它必須有一個拷貝構(gòu)造函數(shù)
     Line::Line(const Line &obj){  // &obj是對象line的一個引用,用這個對象的引用來初始化另一個對象
        cout << "調(diào)用拷貝構(gòu)造函數(shù),并為指針ptr分配內(nèi)存" << endl;
        ptr = new int;
        *ptr = *obj.ptr;  // 拷貝值
    }
    1. 防止默認(rèn)拷貝的發(fā)生 私有化
  • 4.一邊遍歷一邊刪除vector

  #include <iostream>
#include <vector>
using namespace std;
int main()
{ 
   vector<int> v;
   for(int i = 0; i < 10; i++){
       v.push_back(i);
   }
   auto it = v.begin();
   while(it != v.end()){
       if(*it == 1){
           it = v.erase(it);
       }
       else it++;
   }
   for(int i = 0; i < v.size(); i++){
       cout << v[i] << endl;
   }
   return 0;
}
    1. 單例模式的實現(xiàn)
      構(gòu)造函數(shù)私有化 加一個公有函數(shù) getinstance 加鎖
    1. vector 隨機(jī)訪問時間復(fù)雜度 O(1) 插入刪除 O(n)
      list 隨機(jī)訪問時間復(fù)雜度 O(n) 插入刪除 O(1)
    1. 哈希表的原理
      其基本原理是:使用一個下標(biāo)范圍比較大的數(shù)組來存儲元素??梢栽O(shè)計一個函數(shù)(哈希函數(shù),也叫散列函數(shù)),使得每個元素的關(guān)鍵字都與一個函數(shù)值(即數(shù)組下標(biāo),hash值)相對應(yīng),于是用這個數(shù)組單元來存儲這個元素;也可以簡單的理解為,按照關(guān)鍵字為每一個元素“分類”,然后將這個元素存儲在相應(yīng)“類”所對應(yīng)的地方,稱為桶。
      但是,這不能夠保證每個元素的關(guān)鍵字與函數(shù)值是一一對應(yīng)的,因此極有可能出現(xiàn)對不不同的元素,卻計算出相同的函數(shù)值,這樣就產(chǎn)生了“沖突”。換句話說,就是把不同的元素分在了相同的“類”中??偟膩碚f,“直接定址”和“解決沖突”是哈希表的兩大特點
    1. 多線程下,信號槽分別在什么線程中執(zhí)行,如何控制

可以通過connect的第五個參數(shù)進(jìn)行控制信號槽執(zhí)行時所在的線程

connect有幾種連接方式,直接連接和隊列連接、自動連接

直接連接:信號槽在信號發(fā)出者所在的線程中執(zhí)行

隊列連接:信號在信號發(fā)出者所在的線程中執(zhí)行,槽函數(shù)在信號接收者所在的線程中執(zhí)行

自動連接:多線程時為隊列連接函數(shù),單線程時為直接連接函數(shù)

    1. 運(yùn)行某些耗時操作如果界面程序很卡 ,你會怎么優(yōu)化
      數(shù)據(jù)庫相關(guān)的工作、寫磁盤,網(wǎng)絡(luò)連接
    1. qt哪幾種創(chuàng)建線程的方式
      繼承QThread run
      繼承object MoveThread
    1. 線程同步的方式
      互斥鎖 條件變量 讀寫鎖 信號量
  • 12.線程間共享的資源有
    共享的資源有

a. 堆 由于堆是在進(jìn)程空間中開辟出來的,所以它是理所當(dāng)然地被共享的;因此new出來的都是共享的(16位平臺上分全局堆和局部堆,局部堆是獨(dú)享的)

b. 全局變量 它是與具體某一函數(shù)無關(guān)的,所以也與特定線程無關(guān);因此也是共享的

c. 靜態(tài)變量 雖然對于局部變量來說,它在代碼中是“放”在某一函數(shù)中的,但是其存放位置和全局變量一樣,存于堆中開辟的.bss和.data段,是共享的

d. 文件等公用資源 這個是共享的,使用這些公共資源的線程必須同步。Win32 提供了幾種同步資源的方式,包括信號、臨界區(qū)、事件和互斥體。

獨(dú)享的資源有

a. 棧 棧是獨(dú)享的

b. 寄存器

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,621評論 1 32
  • Objective-C是一門動態(tài)的語言 ① 什么是動態(tài)語言? 動態(tài)語言,是指程序在運(yùn)行時可以改變其結(jié)構(gòu):新的函數(shù)可...
    小李龍彪閱讀 418評論 0 0
  • C++: 多態(tài): 多態(tài)性都有哪些?(靜態(tài)和動態(tài),然后分別敘述了一下虛函數(shù)和函數(shù)重載) c語言和c++有什么區(qū)別?(...
    Buyun0閱讀 462評論 0 0
  • 計算機(jī)網(wǎng)絡(luò) HTTP1.0和HTTP1.1的主要區(qū)別長連接和流水線 TCP和UDP的區(qū)別 三次握手,兩次可以嗎 3...
    鬼谷神奇閱讀 947評論 0 5
  • 設(shè)計模式是什么? 你知道哪些設(shè)計模式,并簡要敘述? 設(shè)計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型的...
    sumrain_cloud閱讀 369評論 0 1

友情鏈接更多精彩內(nèi)容