三七互娛2018筆試題
三七互娛,一個小時,十個簡答題,也許是想用時間先刷掉一批人吧。
一、指標和引用的區別?
(1)指標可以不初始化,引用必須初始化。
(2)指標可以改變其指向,引用一經引用,無法改變。
(3)指標有二級指標,引用沒有二級引用(C++11標準除外)。
(4)sizeof一個指標,32位機器下為4位元組,sizeof一個引用,求的是引用物件的位元組數。
指標和引用在彙編上都是一樣的,都是在棧上開闢一塊記憶體,用於存放指向物件的地址。只不過是引用直接將引用物件的地址放入暫存器中,而指標則是先將自己的地址放進去,取得指向物件的地址。
二、單鏈表的逆置?
typedef struct Node{
int data;
struct Node *next;
}Node,*List;
void ListRevers(List head)
{
assert(head!= NULL);
if(head==NULL || head->next==NULL)
{
return ;
}
Node *p = head->next;
Node *q;
head->next = NULL;
while(p != NULL)
{
q = p->next;
p->next = head->next;
head->next = p;
p = q;
}
}
三、記憶體分配的方式有幾種?
靜態儲存區 棧 堆 的記憶體分配
1,從靜態儲存區域分配記憶體。程式編譯的時候記憶體已經分配好了,並且在程式的整個執行期間都存在,例如全域性變數。
2,在棧上建立。在執行函式時,函式內區域性變數的儲存單元可以在棧上建立,函式結束時這些儲存單元自動被釋放。
處理器的指定集中有關於棧記憶體的分配運算,因此效率比較高,但是分配的記憶體容量有限。
3,在堆上分配記憶體,亦稱動態記憶體分配,程式在執行的時候用malloc函式或new運算子申請任意大小的記憶體,程式設計師
要用free函式或delete運算子釋放記憶體。動態記憶體使用非常靈活,但問題也很多。
四、STL中的容器有哪些,他們的特徵?
順序容器:vector,list,deque
關聯容器:set,multiset,map,multimap
容器介面卡:queue,stack
vector的底層是一個動態開闢的可變長的陣列,他的記憶體是連續的。定義一個vector,在32位機器,VS下,棧上的大小為20位元組,五個指標。bool型別的話為24位元組。它所指向的堆上vector陣列的初始大小為0,每次呈二倍增長方式,VS其實不為2。他適合查詢和以及尾插,尾刪資料。
list的底層是一個帶頭結點的雙鏈表,他預設開闢一個頭結點。可以使用splice方法,將一個連結串列上資料切下來鏈到另一個連結串列上。
deque底層是一個動態開闢的二維陣列,預設開闢的大小為,int size = 4096 > sizeof(Ty) ? 4096/sizoef(Ty) : 1。
五、20個人輪流報數,數到3的人出局,求出局的序列?
void fun()
{
vector<int> ve(20,0);
int num = 0;
while(num < 20)
{
for(int i = 0; i < 20; ++i)
{
if(ve[i] == 0)
num++;
if(num == 3)
{
ve[i] = 1;
num = 0;
cout<<i<<" ";
}
}
}
cout<<endl;
}
六、寫出String類的構造,拷貝構造,賦值,解構函式?
class String
{
public:
String(const char *str)
{
if(str == NULL)
{
m_data = new char[1];
m_data = '\0';
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str.m_data);
}
}
String(const String &it)
{
m_data = new char[strlen(it.m_data) + 1];
strcpy(m_data,it.m_data);
}
~String()
{
delete []m_data;
m_data = NULL;
}
String &operator=(const String &it)
{
if(this == &it)
{
return *this;
}
delete []m_data;
m_data = new char[strlen(it.m_data) + 1];
strcpy(m_data,it.m_data);
return *this;
}
private:
char *m_data;
};
其次還有一道資料庫的題印象頗深,剩餘的題就沒有什麼了。