奔讯电子面试之基础题目恶心人还是人被题目恶心
今天无聊,去面试,多学点知识,不谈公司不谈环境不谈待遇,做完题,说领导开会,自知题做的一般,让等会,下午有别的面试,闪人了。回家把面试题目3分钟调试了下,我被恶心到了,我被自己水平吓到了,爷爷的,如果这么做题等于没学习。我还搞了5,6年,天天跑电脑前研究代码。
写此文,一则提供学习,二则提醒自己,再则表达下这公司程序员都是初级水平。
这公司面试题,全大概是自己公司程序员写的程序,全是输出什么。
第1题:
int _tmain(int argc, _TCHAR* argv[])
{
char *a = "hello";
char *b = "world";
char *c = (char*)malloc(strlen(a) + strlen(b));
strcpy(c,a);
strcat(c,b);
cout<<c<<endl;
int i = 0;
scanf("%d",&i);
return 0;
}
输出:helloworld
个人回答我答的是:输出helloworld烫烫之类 后面乱码,我刚才调试free(c)程序直接崩溃。
公司猜想:此公司程序员太爱惜电脑,一个字节都不舍得多分配。反正我就知道字符串没\0;
第2题:
int _tmain(int argc, _TCHAR* argv[])
{
char arr[10];
arr[0] = (char)0;
cout<<arr[0]<<endl;
int i = 0;
scanf("%d",&i);
return 0;
}
输出:空白
个人回答:随便给了个答案,如果字符转换itoa啥的,从来没这么干,这个真是我水平烂。
公司猜想:可能人家是做电子的,比较在乎ascii码啥的,可以理解。
第3题:
int _tmain(int argc, _TCHAR* argv[])
{
int i, j = 2;
for(i = 0; i < 3; i++)
if(j == i )
cout << "Right";
else
cout<< "Sally";
int b = 0;
scanf("%d",&b);
}
正确输出:SallySallyRight
正确解析:for循环没有大括号,执行了if也会执行else
个人回答:我以为for后面只执行到if, else都无法匹配,说了个编译错误,把自己水平服了。
公司猜想:我写程序for后面马上{},从来没想过这个问题,范围都不区分,让别人读这种垃圾代码。这个题恶心到了。
第4题:
int _tmain(int argc, _TCHAR* argv[])
{
int a = 5 , b = 2, c = 4;
if(a > c || b > c && a == b)
cout<<"Right";
else
cout<<"Error";
int i = 0;
scanf("%d",&i);
return 0;
}
正确输出:
Right
正确解析:第一条成立,后面||编译器不予考虑,需要的话上括号
个人回答:我说输出Error,我刚开始觉得第1个成立,后面就不判断了,后来想前2个或者1个,后面是个&&不成立。
公司猜想:大爷的,能不能上个(),一方面爷水平差,一方面这是什么狗屁程序,表达不出你意图的代码就是垃圾代码。这个再次恶心到自己,所以才写此文。
第5题:
#define H_COOKIE
const char* getdefcookie()
{
#if defined H_COOKIE
return "cookie";
#endif
}
int _tmain(int argc, _TCHAR* argv[])
{
const char* strabc=getdefcookie();
cout<<strabc<<endl;
int i = 0;
scanf("%d",&i);
return 0;
}
正确输出:cookie
个人回答,这个倒是答对了,但是常量都写在程序里,连个错误码定义都不会,什么烂代码。
再下来就是一个vector优化和一个map循环输出,代码一张纸,大概是打印问题,还是纸张问题,代码乱七八糟,我以为main函数都没结束,for分隔符都找不到。不提了。
声明:本不想提公司,但为了提高印象。我都被自己答的题目吓到了,我还配是程序员吗?反正也是打酱油。在没进入任何一家公司之前,什么公司对我都是无所谓,我不鄙视这公司,我严重鄙视这题目,也严重鄙视我自己。说实话,我真的写不出这种代码,所以我也不知道输出是啥。鄙视自己下,以此文。