linux c/c++ 面試題目整理(一)

1虫几、求下面函數(shù)的返回值

int func(x)
{
    int countx = 0;
    while(x)
    {
        countx++;
        x = x&(x-1);
    }
    return countx;
}

問:假定x是9999辆脸,那么返回多少?
答:返回的是8啡氢,解題思路是將x轉(zhuǎn)化為二進制术裸,看含有多少個1,則就返回多少穗椅。

2、文件中有一組整數(shù)门坷,要求排序后輸出到另一個文件中

? ? ? ?如果數(shù)不多的情況下袍镀,可以直接將文件中所有整數(shù)讀到set<int>中,set類型會自動排好序苇羡,讀完后再將所有整數(shù)寫到另一個文件中去。
? ? ? ?而整數(shù)特別多內(nèi)存又不夠的情況下锦茁,可以分批讀叉存,每次讀一部分排好序?qū)懙揭粋€小文件中去,直到所有整數(shù)都讀取完成歼捏,這時每個小文件就都是排好序的了,然后將所有小文件中第一個數(shù)讀出來進行比較瓣履,選出最小的放到目標文件中去练俐,然后將該最小的數(shù)所在文件的下一個數(shù)讀取出來進行比較,這樣所有小文件都比完之后,目標文件中就是排好序的所有整數(shù)了浴韭。
? ? ? ?思路:這里采用的是大而化小脯宿,化整為零的手段。

3榴芳、使用遞歸將兩個有序鏈表合并為一個有序鏈表

? ? ? ?思路:理解遞歸,并定義好結(jié)束的條件

Node * Merge(Node *head1, Node* head2)
{
    if (head1 == NULL)
        return head2;
    if (head2 == NULL)
        return head1;
    Node* head = NULL;
    if (head1->data < head2->data)
    {
        head = head1;
        head->next = Merge(head1->next, head2);
    }
        else
    {
        head = head2;
        head->next = Merge(head1, head2->next);
    }
    return head;
}

4窟感、寫一個函數(shù)找出整數(shù)數(shù)組中第二大的數(shù)

const int minnumber = -32767;
int find_sec_max(int data[], int count)
{
    int maxnumber = data[0];
    int sec_max = minnumber;
    for( int i=1;I < count; i++)
    {
        if (data[i] > maxnumber)
        {
            sec_max = maxnumber;
            maxnumber = data[i];
        }
        else
        {
            if (data[i] > sec_max)
                sec_max = data[i];
        }
    }
    return sec_max;
}

思路:定義兩個變量一直保存最大的兩個整數(shù)

5柿祈、如何判斷一個單鏈表是否有環(huán)

struct node
{
    char val;
    node* next;
}
bool check(const node* head)
{
    if (head == NULL)
        return false;
    node* low = head,*fast = head->next;
    while(fast != NULL && fast->next != NULL)
    {
        low = low->next;
        fast = fast->next->next;
        if (low == fast)
        {
            return true;
        }
    }
    return false;
}

思路:第一個節(jié)點每次走一步哩至,第二個節(jié)點每次走兩步,即第一個節(jié)點走n步的時候卢佣,第二個節(jié)點走了2n步箭阶,如果是有環(huán)的鏈表,n和2n處必定是同一個節(jié)點仇参。

6、一個標準的strcpy函數(shù)

//strcpy的實現(xiàn):
char * strcpy(char* strDest, const char* strSrc)
{
    assert( (strDest != NULL) && (strSrc != NULL));
    char *address = strDest;
    while( (*strDest++ = *strSrc++) != ‘\0’);
    return address;
}

返回char*的原因:
返回strDest的原始值使得函數(shù)能夠支持鏈式表達式罩扇,增加了函數(shù)的附加值抓谴。同樣功能的函數(shù)寞缝,如果能合理地提高函數(shù)的可用性,自然就更加的理想荆陆。

7、嵌入式系統(tǒng)可能用到這樣的場景,即要求設(shè)置一絕對地址為0x67a9的整型變量的值為0xaa66棠枉,怎么設(shè)置泡挺?

int *ptr;
ptr = (int*)0x67a9;
*ptr = 0xaa66;

8、下面的代碼輸出是什么贱除?為什么?

void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b) > 6?puts(“>6”):puts(“<=6”);
}

結(jié)果是”>6”月幌,原因是當(dāng)表達式存在有符號類型和無符號類型時所有的操作對象都自動轉(zhuǎn)換為無符號類型悬蔽,因此-20變成一個非常大的整數(shù)與6相加,所以該表達式計算出的結(jié)果大于6.

9蝎困、strncpy和snprintf的正確用法

//strncpy的正確用法:
strncpy(dest,src,sizeof(dest)-1);
dest[strlen(dest)] = ‘\0’;
//snprintf的正確用法:
snprintf(dest, sizeof(dest)-1, “%s”, src);

總則:
1)snprintf的使用比strncpy簡潔
2)snprintf可以獲取被拷貝的字節(jié)數(shù)
3)二者都有性能問題录语,如果src長度遠大于dest钦无,用strncpy盖袭,否則用snprintf。

10鳄虱、printf中%5.3s,這樣的怎么看决记?

int main(void)
{
    printf(“%s, %5.3s\n”, “computer”, “computer”);
    return 0;
}

輸出:computer,com
? ? ? ?%5.3s 或者是 %5.3d 中小數(shù)點后面表示輸出的最大寬度倍踪,小數(shù)點前面的表示輸出的最小寬度;
? ? ? ?%5.3f則表示輸出場寬為9的浮點數(shù)建车, 其中小數(shù)位為3, 整數(shù)位為1潮罪, 小數(shù)點占一位, 不夠9位右對齊嫉到;
? ? ? ?默認都是右對齊, 若是%-7s則輸出左對齊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末孽锥,一起剝皮案震驚了整個濱河市细层,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌韵丑,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撵彻,死亡現(xiàn)場離奇詭異实牡,居然都是意外死亡陌僵,警方通過查閱死者的電腦和手機碗短,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門题涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纲堵,你說我怎么就攤上這事☆硗” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵正蛙,是天一觀的道長乒验。 經(jīng)常有香客問我,道長徊件,這世上最難降的妖魔是什么蒜危? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮部翘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘新思。我一直安慰自己赘风,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布荸哟。 她就那樣靜靜地躺著,像睡著了一般鞍历。 火紅的嫁衣襯著肌膚如雪肪虎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天刑枝,我揣著相機與錄音,去河邊找鬼仅讽。 笑死,一個胖子當(dāng)著我的面吹牛洁灵,可吹牛的內(nèi)容都是我干的掺出。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼双抽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牍汹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤慎菲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后露该,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡抑党,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年底靠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苛骨。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡苟呐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牵素,到底是詐尸還是另有隱情,我是刑警寧澤笆呆,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站俄精,受9級特大地震影響榕堰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逆屡,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望魏蔗。 院中可真熱鬧,春花似錦廓鞠、人聲如沸帚稠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馆衔。三九已至怨绣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篮撑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工赢笨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驮吱,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓左冬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拇砰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容