c++基礎知識,有現成的函數不用,非的自己設計算法,這不是坑爹嗎?

那天天氣不錯,小白(純屬虛構,也許是我,你猜,呵呵)興高采烈地去xx手機遊戲公司面試,帶上自己的學歷,簡歷,還有android 手機

手機除了便於聯繫貴公司之外,最重要的一點,手機上安裝有自己製作的遊戲作品demo,用於在面試的時候展示自己的成果。

坐公交。。。下車,走路,問路。。。

到了下午大概三四點中的時候,終於找到面試公司了,接待員是女的,倒水,登記很是客氣,禮貌,公司環境不錯,然後叫小白到公司到一個接待到地方

坐了下來,這時候,來了跟小白年紀相當,面試官吧,小白先介紹介紹自己,去年的項目經歷,還有今年的項目經歷

最後接着演示自己的小作品,,,不錯不錯,聊得都不錯,過一會,他說,我出去下,叫另一位同事過來,於是另一位面試過來,

小白將自己都項目經歷有重複了一遍,接着演示自己都作品,哎,你做的這些東西都是挺簡單的,以前的項目經歷做得也是相對簡單的,這時候小白心裏就嘀咕了

哎,你是大神又如何,別隻看表面就覺得挺簡單,有本事你來實現下。哎,這面試官最後說了下:你c++很牛是吧,你就寫個字符串比較吧,可以用庫函數,

於是小白,既然可以用庫函數是吧,心裏想,就霹靂霹靂,寫了一下代碼:

#include <stdio.h>

#include <iostream>

#include<string>

int  stringCompare(std::string a, std::string b)

{

          int res = strcmp(a.c_str(), b.c_str();

          return res;

}

int main()

{   

      int res = stringCompare("xxx", "bbbbb");

     if(res == 0)

     {std:: cout << "equal" << std::endl;}

     else if(res < 0)

     {

      std::cout << "less" << std::endl;

     }

     else

     {

     std::cout << "bigger" << std::endl;

    }

}

ok,兩三下搞定,其實小白也知道面試官的用意,其實面試官更多的是想考考小白的算法能力,基本功如何,這不行,你重新設計下吧。

這時候小白不高興了,說不是我不行,只是你說可以用哭函數的呀,何況現在什麼情況,還用這種方式來面試人,現成的東西不用,非得自己寫?

難道你不知到站在巨人的肩上看得更遠麼?。。。。。又相互說了一堆,最後小白直接問面試官,那就是沒機會了?面試官說,我要呈現的東西你不展現出來,我無法看到你

的實力如何?所以是沒機會了,面試雖然失敗,但小白,依然笑看春風,因爲小白,心中依然又個夢想。。。。

這裏暫且不討論小白和麪試官的對與錯。

如果是你,對於這個算法又如何設計的呢?看似簡單也確實簡單,因爲百度一下,都有,還有以前教科書上也有,好吧。

我寫下我的算法吧,也許不正確,也許,不夠精簡,都沒問題,至少動手了就好,呵呵,至於你的呢,不用百度,自己設計下,我也學習下。

#include <stdio.h>

#include <iostream>

using namespace std;


int stringCompare(const char *p1, const char *p2)

{


    int len1 = strlen(p1) / sizeof(char);

    int len2 = strlen(p2) / sizeof(char);


    int len = len1 <= len2 ? len1 : len2; // 得到字符串最長度最少值的

    int result  = 0;

    int i = 0;

    while (i  < len) {

        if (p1[i]  < p2[i])

        {

            result = -1;

            break;

        }

        else if(p1[i] > p2[i])

        {

            result = 1;

            break;

        }

        ++i;

    }

    

    if (i == len) {

        if (len1 < len2) {

            result = -1;

        }

        else if(len1 > len2)

        {

            result = 1;

        }

        else

        {

            result = 0;

        }

    }

    

    return result;

}

int main()

{

    const char *p1 = "qua";

    const char *p2 = "quan";   

    

    int res = stringCompare(p1, p2);

    if (res == 0) {

        cout << "equal" << endl;

    }

    else if (res < 0)

    {

        cout << "less" << endl;

    }

    else

    {

        cout << "bigger" << endl;

    }

    return 0;

}

在xcode上測過,至於以上小白和麪試官看法,我覺得作爲一個面試官不能單憑這麼一個糊弄的東西就能測出小白的能力,如果我遇到這麼的面試題我絕對走人,我覺得在互聯網競爭激烈的今天,效率永遠是第一位,我才懶得自己設計這算法,比如:STL我也不清楚裏面是如何實現的,但我卻知道如何用,畢竟這些都是前人大師級寫下了的,絕對可靠,古人云,前人栽樹後人乘涼,如果不用,那要前人幹嘛,你說呢?當然自己多懂些算法還是蠻好的,程序這本身是算法+數據結構構成的,是吧。

僅供參考,學習而已。

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