- 相關(guān)推薦
C++好的面試題和不好的面試題
C++在中國有很大的市場需求,幾乎現(xiàn)在找工作,C++和Java還是最大的兩塊。從以
前別人面試我,到我現(xiàn)在面試別人,談不上什么面經(jīng),只能說我覺得的一些好的面試題
目,和一些不太好的面試題目。
不好的面試題:
[1] 虛函數(shù)如何實(shí)現(xiàn)的。 在i = 0; ++i++之后,就屬這道題最了。我被別人問過,
我也聽過我同事問這個問題。我只想說,這個題絕對不需要問。只要你不實(shí)現(xiàn)C++編
輯器,這道題對你沒有用。你只需要知道虛函數(shù),純虛函數(shù)是做什么用的,他們和普通
函數(shù)有什么區(qū)別,就足夠了;蛘哒f,什么時候你會用虛函數(shù),什么時候用純虛函數(shù)。
換個角度,為什么從來沒有人問Java的動態(tài)綁定如何實(shí)現(xiàn)的呢?
好的面試題
[1] (5星) C++程序進(jìn)入main函數(shù)之前,退出main函數(shù)之后會做些什么?
[2] (5星) 如何使用C++實(shí)現(xiàn)一個線程安全的singleton類,要求延遲初始化。如果這個
singleton類獲得了一種資源,
譬如socket,數(shù)據(jù)庫的connection,如何釋放呢? (這個題其實(shí)蠻難的)
[3] (5星) 你們在多線程環(huán)境中如何使用mutex。其實(shí)是要求考差對mutex進(jìn)行封裝,
初始化即獲得,并且析構(gòu)的時候unlock,以避免異常拋出的情況。
view plaincopy to clipboardprint?
class MutexHelper
{
public:
MutexHelper(TLock& lock):iLock(lock) { pthread_mutex_lock(&iLock); }
~MutexHelper() { ptrhead_mutex_unlock(&iLock); }
}
//TODO: disable assignment and cctor
privae:
pthread_mutex_t& iLock;
};
class Worker
{
public:
Worker() { pthread_mutex_init(&iLock, NULL); }
~Worker() { pthread_mutex_destroy(&iLock); }
public:
void FuncNeedSync();
private:
pthread_mutex_t iLock;
};
void Worker::FuncNeedSync()
{
MutexHelper helper(iLock);
//TODO: something;
}
class MutexHelper
{
public:
MutexHelper(TLock& lock):iLock(lock) { pthread_mutex_lock(&iLock); }
~MutexHelper() { ptrhead_mutex_unlock(&iLock); }
}
//TODO: disable assignment and cctor
privae:
pthread_mutex_t& iLock;
};
class Worker
{
public:
Worker() { pthread_mutex_init(&iLock, NULL); }
~Worker() { pthread_mutex_destroy(&iLock); }
public:
void FuncNeedSync();
private:
pthread_mutex_t iLock;
};
void Worker::FuncNeedSync()
{
MutexHelper helper(iLock);
//TODO: something;
}
[4] (5星) 實(shí)現(xiàn)一個itoa的函數(shù)。包括函數(shù)需要什么樣的參數(shù),返回值,為什么這么設(shè)
計(jì)。這道題可以看出一個人幾本的編程習(xí)慣和能力。并且可以要求對這個函數(shù)設(shè)計(jì)測試
用例。
[5] (4星) C++類的static變量是什么時候初始化的,函數(shù)的static變量是什么時候初始
化的?
[6] (4星) 我需要使用std::string rst來存放一個字符串拼接的結(jié)果,并且我知道這個結(jié)
果大概有4k,你會怎么來拼接。其實(shí)就是考察要reserve長度,然后呢,使用+=。
[7] (3星) 這個和算法有些關(guān)系。std::map的find函數(shù),一定是讀線程安全的嗎?就是
說如果你有一個std::map,已經(jīng)存好了內(nèi)容。然后有N個線程同時find它,但是沒有任
何線程會往里面添加?xùn)|西。這樣不加鎖訪問,是一定安全的嗎?答案是不是,有的實(shí)現(xiàn)
就不是。 為什么?這個題目很有意思,大家可以google一下。
【C++好的面試題和不好的面試題】相關(guān)文章:
經(jīng)典C/C++面試題07-11
華為C++/MFC面試題07-11
面試題與技巧07-12
華為面試題07-11
「MySQL」經(jīng)典面試題07-11
c面試題08-04
采購面試題07-11
面試題集錦07-11
Java面試題07-12
SQL面試題07-12