技術面試(4)-在校生應聘實習生

杭州赤霄科技的
1、如何判斷一段程序是由C語言編寫的還是C++編寫的
看頭文件,#include 是C++,#include <stdio.h>是C
看有沒有出現類
C++是面向對象的,C語言是面向過程的,觀察程序是不是分爲幾個簡單的過程來判斷

#ifdef __cplusplus
printf("c++\n");
#else
printf("c\n");
#endif
這個程序加在源文件中能夠判斷(百度的)

2、如果在申請內存是沒有足夠大的內存,malloc和new將返回NULL,宣告內存申請失敗,如何處理內存耗盡
(1)判斷指針是否爲NULL,如果是則馬上用return語句終止本函數。
(2)判斷指針是否爲NULL,如果是則馬上用exit(1)終止整個程序的運行。
(3)爲new和malloc設置異常處理函數。

3、const char* p
char const p
char
const p
上面三種的區別
(1)const char* p 是說指向的內容爲const類型不可修改
(2)與(1)相同
(3)p這個指針爲const類型不可變

4、用C++寫個程序,如何判斷系統是32位還是16位的,不能用sizeof()函數
本來sizeof(int)就可以求出,但是題目要求不能用,就只能求

#include <iostream>
using namespace std;
int main()
{
	int a = ~0;
	if(a > 65535)
		cout<<"32 bit"<<endl;
	else
		cout<<"16 bit"<<endl;
	return 0;
}

5、多態類的虛函數表是Compile-Time,還是Run-Time時建立的

Compile-Time

6、三個float:a,b,c 問值(a+b)+c==(b+a)+c (a+b)+c==(a+c)+b是否成立?

兩者都不行。在比較float或double時,不能簡單地比較。由於計算誤差,相等的概率很低。應判斷兩數之差是否落在區間(-e,e)內。這個e應比浮點數的精度大一個數量級。

7、爲什麼需要使用堆,使用堆空間的原因
直到運行時才知道一個對象需要多少內存空間;不知道對象的生存期到底有多長。

8、當一個類A 中沒有生命任何成員變量與成員函數,這時sizeof(A)的值是多少,如果不是零,請解釋一下
sizeof(A)的值爲1,編譯器不允許一個類的大小爲0,會爲它分配1字節的內存。試想,若,不這樣做,那2個類A的實例在內存中將會無法區分。
一個空類對象的大小是1byte。這是被編譯器安插進去的一個字節,這樣就使得這個空類的兩個實例得以在內存中配置獨一無二的地址。

9、C++中爲什麼要用模板類

1:可用來創建動態增加或減少的數據結構
2:它與某種特定類型無關,因此代碼可重複使用
3:它在編譯時檢查數據類型而不是運行時檢查數據類型,保證了類型的安全
4:它是平臺無關的,具有很好的移植性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章