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我也不清楚里面是如何实现的,但我却知道如何用,毕竟这些都是前人大师级写下了的,绝对可靠,古人云,前人栽树后人乘凉,如果不用,那要前人干嘛,你说呢?当然自己多懂些算法还是蛮好的,程序这本身是算法+数据结构构成的,是吧。

仅供参考,学习而已。

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