首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大四还是常常在控制台上面写程序,面试时面试官问做过什么项目觉得没话说

2012-10-16 
大四还是常常在控制台下面写程序,面试时面试官问做过什么项目觉得没话说啊如题,先说一下我不是大学就那么

大四还是常常在控制台下面写程序,面试时面试官问做过什么项目觉得没话说啊
如题,先说一下我不是大学就那么混过去的那种,应该说那些知识掌握得还算可以的,不过大学几年我就一直学C/C++的语法,数据结构和算法以及操作系统、网络等基础知识,从没做过什么大型项目,尤其是GUI的那种,写得最复杂的程序也就写了一周不到,没有那种做了好几个月的,更没有那种和别人合作一起做的真正意义的项目,因此如果面试官问 你做了什么项目的时候,觉得完全没话说啊~~~

我写过一个小东西是关于差异化代码覆盖率的,就是指定两个目录,作为一个程序的新旧版本目录,然后比对两个目录下代码不同的部分,再根据新版本的覆盖率信息,计算提取出更改后的代码的覆盖情况。这程序也就写了一周不到,差不多是一半的LINUX SHELL和一半的C++,这能算一个项目么?

或者把那种用PHP写的XXX管理系统说一下?这种管理系统真心做得挺水的,就是数据库的增删查改,生成几个SQL语句执行一下而已,完全没有技术含量。。。。

别的关于那些基础技术知识的考察觉得都还好,不太担心,就担心这个问题不知道怎么答,求教一下,面试官问这个问题的时候怎么回答比较好呢?

附带一下我最近一段时间写的小程序,大家参考一下我的编码习惯和风格之类的,看看怎么样。。。

第一个程序是简单的集合的交集、并集、差集操作,就是打开两个文件读取里面的数据,如果按照数字来读就可以支持x,y的格式,提取x-y之间的数,或者按照字符串来读,完成操作然后输出

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <set>#include <algorithm>#include <iterator>#define MAXLINE 128#define PASTE(ARG)  set_##ARG(left.begin(),left.end(),right.begin(),right.end(),inserter(output,output.begin()))#define ARG_NOT_CORRECT 1#define INPUT_NOT_VAILD 2#define FILE_ISNOT_EXIST 4#define DIGIT_NOT_VAILD 8using namespace std;void help(){        cout << "Usage:setalgorithm infile_1 infile_2 style mode\n";        cout << "infile:file contains data in the set, only one digit or a continuous group digit each line.\n";        cout << "       you can get range from a to b by the way \"a,b\" in the digit mode\n";        cout << "       or treat data as normal string in the string mode\n";        cout << "style:fill this block with 'u' to get the union ,'i' to get the intersection , and 'd' to get the difference.\n";        cout << "mode:  's' to set string mode and 'd' to set digit mode\n";}void read_string_from_file(set<string> & data , FILE * fp){        data.clear();        char buffer[MAXLINE];        while(fgets(buffer , MAXLINE , fp))        {                buffer[strlen(buffer)-1] = '\0';                data.insert(string(buffer));        }}void read_digit_from_file(set<int> & data , FILE * fp){        data.clear();        char buffer[MAXLINE];        char * point;        while(fgets(buffer , MAXLINE , fp))        {            point = strchr(buffer,',');            if(NULL == point)            {                    data.insert(atoi(buffer));            }            else            {                    *point = '\0';                    int lowerbound = atoi(buffer);                    int upperbound = atoi(point+1);                    if(lowerbound > upperbound)                    {                            exit(DIGIT_NOT_VAILD);                    }                    while(lowerbound <= upperbound)                    {                            data.insert(lowerbound++);                    }            }        }}template <typename T>void travel_set(T & output){        typename T::iterator iter;        for(iter= output.begin() ; iter != output.end() ; ++iter)        {                cout << *iter << endl;        }}template <typename T>void getresult(T & left , T & right , T & output , char option){        switch(option)        {                case 'u':                {                        PASTE(union);                        break;                }                case 'i':                {                        PASTE(intersection);                        break;                }                case 'd':                {                        PASTE(difference);                        break;                }        }        travel_set(output);}void digit_algorithm(FILE * lfp , FILE * rfp , char option){        set<int> left , right , output;        read_digit_from_file(left , lfp);        read_digit_from_file(right , rfp);        getresult(left , right , output , option);}void string_algorithm(FILE * lfp , FILE * rfp , char option){        set<string> left , right , output;        read_string_from_file(left , lfp);        read_string_from_file(right , rfp);        getresult(left , right , output , option);}int main(int argc , char ** argv){        if(argc != 5)        {                help();                exit(ARG_NOT_CORRECT);        }        char option = argv[3][0];        if(option != 'u' && option != 'd' && option != 'i')        {                help();                exit(INPUT_NOT_VAILD);        }        char mode = argv[4][0];        if(mode != 's' && mode != 'd')        {                help();                exit(INPUT_NOT_VAILD);        }        FILE * lfp , * rfp;        if( (lfp = fopen(argv[1] , "r")) == NULL )        {                cerr << "can't open file:" << argv[1] << endl;                exit(FILE_ISNOT_EXIST);        }        if( (rfp = fopen(argv[2] , "r")) == NULL )        {                cerr << "can't open file:" << argv[2] << endl;                exit(FILE_ISNOT_EXIST);        }        if( mode == 's' )        {                string_algorithm(lfp , rfp , option);        }        else if( mode == 'd' )        {                digit_algorithm(lfp , rfp , option);        }        fclose(lfp);        fclose(rfp);        return 0;} 



第二个程序是最近玩数独的时候,觉得做不出来,所以写了一个用来解数独的算法,由于是写给自己用的,输入输出和排错之类的没太讲究,程序也很简单,思路就是回溯遍历:
C/C++ code
#include <stdio.h>#include <stdlib.h>#include <vector>using namespace std;struct Trip{    int _row , _col , _digit;};char _maintable[10][10];bool checkrow(int lineno , int digit){    digit += '0';    for(int iter = 1 ; iter != 10 ; ++iter)    {        if(_maintable[lineno][iter] == digit)        {            return false;        }    }    return true;}bool checkcol(int lineno , int digit){    digit += '0';    for(int iter = 1 ; iter != 10 ; ++iter)    {        if(_maintable[iter][lineno] == digit)        {            return false;        }    }    return true;}bool checkblock(int row , int col , int digit){    digit += '0';    int rowindex = (row-1)/3 * 3 + 1;    int colindex = (col-1)/3 * 3 + 1;    for(int r = rowindex ; r != rowindex + 3 ; ++r)    {        for(int c = colindex ; c != colindex + 3 ; ++c)        {            if(row == r && col == c)            {                continue;            }            if(_maintable[r][c] == digit)            {                return false;            }        }    }    return true;}inline bool checkvaild(int row , int col , int digit){    return checkrow(row , digit) && checkcol(col , digit) && checkblock(row , col ,digit);}void read_matrix(){    for(int row = 1 ; row != 10 ; ++row)    {        fflush(stdin);        for(int col = 1 ; col != 10 ; ++col)        {            scanf("%c",&_maintable[row][col]);        }    }}void count(vector<Trip> & data){    Trip temp;    for(int row = 1 ; row != 10 ; ++row)    {        for(int col = 1 ; col != 10 ; ++col)        {            if(_maintable[row][col] == '0')            {                temp._row = row;                temp._col = col;                temp._digit = 0;                data.push_back(temp);            }        }    }}void output(){    for(int row = 1 ; row != 10 ; ++row)    {        for(int col = 1 ;col != 10 ; ++col)        {            printf("%c ",_maintable[row][col]);        }        printf("\n");    }}void output_debug(vector<Trip> & data){    int n = data.size();    for(int iter = 0 ; iter != n ; ++iter)    {        printf("%d %d %d\n",data[iter]._row , data[iter]._col , data[iter]._digit);    }}bool travel(vector<Trip> & data){    int n = data.size();    int iter = 0 ;    int row , col , digit;    while(iter != n)    {        if(iter < 0)        {            return false;        }        row = data[iter]._row;        col = data[iter]._col;        digit = data[iter]._digit;            while(1)            {                digit++;                if(digit == 10)                {                    data[iter]._digit = 0;                    _maintable[row][col]='0';                    iter--;                    break;                }                if(checkvaild(row,col,digit))                {                    data[iter]._digit = digit;                    _maintable[row][col] = digit+'0';                    iter++;                    break;                }            }    }    return true;}bool finalcheck(){    int digit;    for(int iter = 1 ; iter != 10 ; ++iter)    {        digit = _maintable[iter][1];        if( ! checkvaild(iter , 1 ,digit) )        {            return false;        }    }    return true;}int main(){    vector<Trip> data;    bool is_vaild;    read_matrix();    count(data);    is_vaild = travel(data);    if(is_vaild)    {        if(finalcheck())        {            output();        }        else        {            printf("输入有误\n");        }    }    else    {        printf("无解\n");    }    system("pause");    return 0;} 



[解决办法]
应届生,哪来的经验,有经验说出来也被人鄙视,大牛除外
[解决办法]
楼主还是比较强的了
[解决办法]
写控制台程序不丢人啊,大型服务器程序不都是控制台程序。关键是你对操作系统、编译器、语言机理、常用数据结构这些有没有更多的理解,还有就是拿这些基础知识去解决一些实际的应用问题。比如你上面举了个集合操作的例子,光是操作那种简单而无实际代表性的数据应该很无聊吧,你可以试下用这个数据结构去解决一下图的连通区域标记这个问题,这在游戏地图寻路里是个必备的基础操作。
[解决办法]
应届生,能这样已经算好了。。
[解决办法]
>我写过一个小东西是关于差异化代码覆盖率的,就是指定两个目录,作为一个程序的新旧版本目录,然后比对两个目录下代码不同的部分,再根据新版本的覆盖率信息,计算提取出更改后的代码的覆盖情况。这程序也就写了一周不到,差不多是一半的LINUX SHELL和一半的C++,这能算一个项目么?

我觉得没问题。

>附带一下我最近一段时间写的小程序,大家参考一下我的编码习惯和风格之类的,看看怎么样。。。

目测可以了。真的到公司里肯定要被公司的代码风格所调教。你现在能写成现在这个样子,到时候适应新风格没问题的。
[解决办法]
LZ 能这样已经很好了!
[解决办法]
理论上来说,凡是GUI能完成的工作改用脚本都能完成,反之则不一定。
参考
http://www.autohotkey.com
http://www.nirsoft.net
另外楼主参考下面
C/C++ code
#include <algorithm>#include <iostream>#include <functional>#include <cstring>using namespace std;int main() {    char *Alphabet = "abcdefghijklmnopqrstuvwxyz" ;    char *Vowels   = "aeiou" ;    char *AlphaNum = "0123456789abcdef" ;    char result[45] ;    char *last ;    int lenA  = strlen(Alphabet) ;    int lenV  = strlen(Vowels  ) ;    int lenAN = strlen(AlphaNum) ;    cout << "Alphabet = " << Alphabet << endl ;    cout << "Vowels   = " << Vowels   << endl ;    cout << "AlphaNum = " << AlphaNum << endl ;    cout << "\nusing non-predicate versions" << endl ;    //non-predicate set_difference    last = set_difference(Alphabet, Alphabet+lenA,                          AlphaNum, AlphaNum+lenAN,                          result) ;    *last = 0 ;    cout << "set_difference(Alphabet, AlphaNum) =  " << result << endl ;    //non-predicate set_intersection    last = set_intersection(Alphabet, Alphabet+lenA,                            AlphaNum, AlphaNum+lenAN,                            result) ;    *last = 0 ;    cout << "set_intersection(Alphabet, AlphaNum) =  " << result << endl ;    //non-predicate set_symmetric_difference    last = set_symmetric_difference(Alphabet, Alphabet+lenA,                                    Vowels  , Vowels  +lenV,                                    result) ;    *last = 0 ;    cout << "set_symmetric_difference(Alphabet, Vowels) =  " << result << endl ;    //non-predicate set_union    last = set_union(Alphabet, Alphabet+lenA,                     AlphaNum, AlphaNum+lenAN,                     result) ;    *last = 0 ;    cout << "set_union(Alphabet, AlphaNum) =  " << result << endl ;    cout << "\nusing predicate versions" << endl ;    //predicate set_difference    last = set_difference(Alphabet, Alphabet+lenA,                          AlphaNum, AlphaNum+lenAN,                          result  , less<char>()) ;    *last = 0 ;    cout << "set_difference(Alphabet, AlphaNum) =  " << result << endl ;    //predicate set_intersection    last = set_intersection(Alphabet, Alphabet+lenA,                            AlphaNum, AlphaNum+lenAN,                            result  , less<char>()) ;    *last = 0 ;    cout << "set_intersection(Alphabet, AlphaNum) =  " << result << endl ;    //predicate set_symmetric_difference    last = set_symmetric_difference(Alphabet, Alphabet+lenA,                                    Vowels  , Vowels  +lenV,                                    result  , less<char>()) ;    *last = 0 ;    cout << "set_symmetric_difference(Alphabet, Vowels) =  " << result << endl ;    //predicate set_union    last = set_union(Alphabet, Alphabet+lenA,                     AlphaNum, AlphaNum+lenAN,                     result  , less<char>()) ;    *last = 0 ;    cout << "set_union(Alphabet, AlphaNum) =  " << result << endl ;    return 0 ;} 


[解决办法]
gui有什么好的,我前一阵用MFC用的快吐血了。。。。
[解决办法]
今年的就业就是这样,用人公司一个比一个挑,要是去年,他敢这样挑吗?
[解决办法]
应届生没项目很正常
[解决办法]
能做到楼主这样的应届生不多,楼主别太忧虑,你已经比别人有优势了

热点排行
Bad Request.