六一儿童节倾情奉献,校内首发,CSDN再发,2011年冬季c/c++程序员找工作心得
我把2011年末2个月去的公司,遇到的问题整理出来,自己复习下,也供大家参考。其实没什么经验,也就是流水账。对部分公司我也发表了自己的观点,不过纯属自己的体会,给大家参考下。
所有的笔试题目都是部分的,我记录下的都是自己认为比较经典的,要么就是我不太会的,至于一些常考的,简单的不能再简单的,就没有必要记录了。
从2011年10月下旬开始找工作,先后经历了30家公司。Offer也拿了很多,但是都不是很给力,要么工资低,工资高的户口不给力,最后还在飘,打算明年春天再找找看,奔些大公司去。
重点推荐准备书籍:C语言(谭浩强)、c++面向对象程序设计(谭浩强)、数据结构(严蔚敏)、高质量c++/编程指南(林锐博士)、程序员面试宝典第三版(欧立奇)
其他推荐书籍:软件设计师教程(胡圣明)、vc++深入详解(孙鑫)、c++语言 习题与解答第三版(李春葆)、
废话少说进入正题……
2011年10月20 北京**天科公司
这家公司没有笔试,全是面试。先是一个HR面试,让我介绍下项目经验,问我户口问题;
后面是部门经理技术面试,和我谈了很久,介绍了下项目经验,一直给我说自己公司编程时员工是多么的不规范,我说推荐使用林瑞博士的高质量c++/编程指南,大约聊了30多分钟吧;
后面是人事经理面试,随便瞎聊了下,说让我回去等通知,说后面还有2个面试,结果我什么消息都没等到,杯具了…毕竟是第一次面试嘛!
2011年10月21 北京宝**软件技术服务公司
这家公司不解决户口,后来问到的,公司出的题量比较大,选择题不少,还有填空题,然后是程序题,但都比较基础。我做的也是的心应手,笔试做完后,是上机,我对此比较反感,不是反感上机,因为公司通知面试时间比较晚,我昨晚笔试题,等了很久前台MM来说再做下上机吧,这时候都差不多11点半了,说上机做一个小时,当时我就火了,老子早晨都没吃饭,过来笔试,还然不让吃中午饭了,不过我忍着做题,心不在焉的,随便选择了个实现strstr(),题目很多,选择2道。做的也不是很好,做完的时候都12点多了,跑前台去说,前台早没人了,后来等了会,一个人过来问我机试的情况,我说太晚了,早晨没吃饭,没心情做,后来就走了,走的时候我看到30道选择题我得分26分。这家公司给我的感觉就是很不好,一点也不人性化,反正我是不会去的。
部分笔试题:
1.Char *p =(char*)malloc(100)
Memset(p,1,100);
Strcpy(p,”hello”);
Char str[]=”hello”;
Cout<<sizeof(p)<<strlen(p)<<sizeof(str)<<strlen(str);
答案:4 5 6 5
2.Double dArray[2] = {3,9},*p,*q;
p=&dArrary[0];
q=p+1;
cout<<q-p<<(int)q-(int)p;
答案:1 8
分析:q-p的实际运算是:(q的地址-p的地址)/sizeof(double)
3.STL中以连续形式存储的是:向量(vector),双队列(deque)
分析:向量(vector)连续存储的元素
双队列(deque)连续存储的指向不同元素的指针所组成的数组
4.写出常见的5个设计模式
单例模式,观察者模式,工厂模式,责任链模式,策略模式….
5.随便写一个排序算法
2011年10月24 北京雷***科技有限公司
笔试题相当简单,就是林锐博士高质量c++/c编程指南最后一套题,没啥意思。
20 分钟搞定,答案我都会背了。公司没户口,没谈成。技术面试的时候那人一直问我些莫名其妙的问题,我实习的公司有多大,我们项目小组有几个人,我为什么离职,等等。晕,我之前是实习的,你问我为什么离职?
2011年10月24 中科***股份有限公司
应该是一个员工的面试,结果面试我没通过,面试过程是:介绍下项目经验,针对项目问了几个问题,最后出了一个选择题,做对了,但是没进入下一轮面试。
题目:判断ABCD四个表达式中值是否正确,若正确写出a的值。
int a=4;
A a+=(a++); 先计算a++,这时候a的值还是4,第二次运算时a=a+(a++)=5+4=9
B a+=(++a); 先计算++a,这时候a的值是5,第二次运算时a=a+(++a)=5+5=10
C (a++)+=a; 错误,左侧不是一个有效变量,不能赋值,可改为(++a)+=a;答案为10
D (++a)+=(a++); 先计算++a,a的值为5,然后再去计算a+=(a++),即5+6=11
2011年10月23 威**子北京总部 笔试地点:北航
威盛我没进入面试,杯具啊!
1.typedef struct s* tPS 与define dPS struct s* 哪个好?为什么?
这两种情况都的意图都是要定义dPS和tPS作为一个指向结构体s指针,typedef更好。
因为:dPS P1,P2; Tps P3,P4;
第一个扩展为struct s* P1,P2;定义P1为一个指向结构的指针,P2为一个实际的结构;
第二个扩展为struct s* P3,struct s* P4;正确定义了P3,P4两个指针。
2.myStruct *ptr;
myStruct myArray[10];
ptr=myArray;
下列哪个指向数组的第二个元素
A ++ ptr;
B ptr= ptr+sizeof(myArray);
C ptr= ptr+sizeof(myStruct);
D ptr= ptr+sizeof(str);
选择A ,B应该为ptr= ptr+10*sizeof(myArray)
3.int a[4][2];
int b=0,x;
int i,y;
for(i=0;i<4;i++)
for(y=0;y<2;y++)
a[i][j]=b++;
x=*(*(a+2)+1);
cout<<x;
答案:第三行第二列 7
4.int twofold(int iVal)
{return iVal*2;}
int main()
{int x,y;
y= twofold((x=3,x+2));
printf(“x=%i,y=%i\n”,x,y)
}
答案:x=3,y=10;逗号优先级最低
分析:逗号表达式先求解表达式1值,在求解表达式2的值;
例如:a=3*5,a*4;表达式的值为60;
(a=3*5,a*4),a+5;表达式的值为20,但是a的值为15.
5.x=5,y= -10,a=4,b=-2;
Z=x+++--y*b/a;
Cout<<z;
答案:z=10;
分析:Z = x++ + --y*b/a;
6.declare a pointer to an integer pointer
A int *ptr;
B int **ptr;
C int *&ptr;
D int &*ptr;
答案:明显选择B
7.编写strcat函数
8.选择排序
2011年10月23 信**信 笔试地点:北邮 应用软件C++工程师
面试官好像是在宣讲会上的那个技术总监,问了些问题,看到我简历上写有测试,让我把题目最后那个mommove测试下,要考虑下哪些情况?
笔试30分钟,题目不难,还有其他测试20分钟(逻辑推理)
1.class A
{
public:
void Fun(void)
{
cout<<"Fun of class A"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
A *p;
{
A a;
p = &a;
}
p->Fun();
return 0;
}
答案:Fun of class A
2. char str[] = "abcde中国";
cout << sizeof(str)<<endl;
答案:10,1个汉字占2个字节
3.Fun(int a)
{ Assert(a>=0);}
Fun(int a)
{ Assert(a++>=0);}
分析:Assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序。
使用Assert的缺点:频繁调用会极大影响程序性能,增加额外的开销。
用法总结与注意事项:
(1) 在函数开始处检查传入参数的合法性;
(2) 每个Assert只检查一个条件,因为同时检查多个条件时,如果断言失败,无法直观的判断是哪个条件失败;
(3) 不能使用改变环境的语句,因为Assert只在Debug下生效,如果这么做,会使程序正在运行时遇到问题。
错误:Assert(i++ <100)这是因为如果出错,比如执行前i=100,那么条件语句就不执行,那么i++这条命令就没有执行;
正确:Assert(i<100);i++;
4.软件代码编写规范
具体可参考林锐博士的高质量c++/c编程指南
5.STUDENT S与STUDENT *P区别
结构体和类的本质差不多的,就像定义一个类的一般实例变量,就会调用默认的构造函数对实例进行初始化,每一个成员都有自己的地址空间,但定义一个类的指针,如果没有new之前,只获得了一个存储该指针的32位地址,类还没有初始化,new之后跟上面一样。
定义一个结构体指针后,程序实际只是给指针本身分配了机器字长的空间,用来存储一个地址,如果全局变量或静态变量的话,默认初始化为0;
结构指针式用来存储你真正结构的地址的,而当你刚刚定义指针时,它是没有志向任何结构的,对于你定义的指针,它本身的内容实际为0;
而定义结构体变量就不一样了,如果你定义了一个结构变量,那它本身就分配了内存,当然它的内部变量也是分配内存的。
6.memove原型
2011年10月26北京**时代信息科技有限公司 (笔试+面试)
笔试题目比较多,面比较广,但是都不是很难。笔试完,技术主管面试,然后是副总面试。
Char str[]=”abc\0”
Sizeof(str); 答案:5 \0占一个空间
Char str1[]=”abc\0d\e”
Sizeof(str1); 答案:7 \0、\e各占一个空间
这家公司我感觉面试的很好,技术主管面完后还说我基础挺扎实的,还在黑板上给我讲了将近10分钟公司做什么的。副总面完后说有需要我们会联系你,结果我就杯具了。
2011年10月26 北京图**科技有限公司 (笔试+面试)
笔试题不太好做,具体不记得了,技术初面是个女的,就是针对你做的题在那里和你讨论,那天我做的很烂,不过人家还是给了我机会让我进了2面,下面是技术2面的题目
1. 单一模式:保证一个类仅有一个实例并且提供一个访问它的全局访问点。
2. static成员函数
3. 野指针产生的原因
4. 快速排序,时间、空间复杂度
这段时间也比较累,做题也心不在焉,技术面试的时候被鄙视的一塌糊涂,那时候连个选择排序都不会,只会冒泡。更不要说时间,空间复杂度了。
2011年11月2 北京**鑫公司 (笔试+面试)
公司是做图像处理,网上阅卷机的。笔试题目比较少,偏C语言点。考到了枚举,结构体
面试题目:
信号与信号量区别:信号与信号量是不同的,他们虽然都可以用来实现同步和互斥,但前者是使用信号处理器来完成的,后者是使用PV操作来实现的。
2011年11月3 北京**华夏科技有限责任公司 (笔试+面试)
笔试题目,比较杂,什么都考,网络方面我记得的就是考各个端口号。其他不记得了。
面试时间抽不开没去。
2011年11月3 中**洋 笔试+面试
笔试:题目很多,时间是3个小时,一般人在不到2个小时都交卷了。题目太多我记得不大清楚了,反正做的很垃圾。后来**把我的简历扔到了子公司**上洋,最后上洋发了offer。
技术面试的时候,感觉答的都还可以,后来简历被大洋扔到了子公司**上洋,最后在上洋面试2次,电话通知offer。
**上洋面试的时候是2次面试,都是技术面试,我感觉面试官很好,一个还是我学姐,二面的时候,我感觉老总很好,给的工资也很高,但是由