| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2828 人关注过本帖
标题:[经验]面试说话要注意!
只看楼主 加入收藏
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
 问题点数:0 回复次数:32 
[经验]面试说话要注意!

前天去金山笔试,出了4个题目。
考完以后出来,觉得比较简单的几个题目,似乎都做错了。
没抱什么希望的情况下,竟然叫我去面试,呵呵,结果仍旧是空欢喜一场!
我来说说题目吧,第一题就是一个简单的,MFC类库中的一个对象调用方法。
第二题,考察对指针变量,指针常量的sizeof,以及在类中字节对齐的知识点。
第三题,考察纠错能力。
第四题:
vector<int*>类型的变量,里面存储的是指针,他们需要我们手动来释放他们,比较麻烦,要求我们用SmartVector兼容vector,而且能够自己回收内存。
按道理,我认为似乎应该下面这样写,虽然考试的时候,我写错了格式,但是思路是:
应该要把指针类型弄个偏特化,毕竟不能对一个对象做delete吧。
现在改了下:
#include <iostream>
#include <vector>
using namespace std;

template<class T>
class SmartVector:public vector<T>
{
public:
SmartVector(){}
SmartVector(const SmartVector&s)
{
copy(s.begin(),s.end(),begin());
}
SmartVector& operator=(const SmartVector&s)
{
copy(s.begin(),s.end(),begin());
return *this;
}
};

template<class T>
class SmartVector<T*>:public vector<T*>
{
public:
SmartVector(){}
SmartVector(const SmartVector&s)
{
copy(s.begin(),s.end(),begin());
}
SmartVector& operator=(const SmartVector&s)
{
copy(s.begin(),s.end(),begin());
return *this;
}
~SmartVector()
{
while(size()!=0)
{
T* bk=back();
pop_back();
delete bk;
}
}
};
void func()
{
SmartVector<int*>svpi;
for(int i=0;i<5;i++)
{
int *p=new int;
svpi.push_back(p);
}
}
int main(int argc, char* argv[])
{
SmartVector<int>svi;
for(int i=0;i<5;i++)
svi.push_back(1);
func();
return 0;
}

呵呵。昨天面试也认识2个朋友,一个已经成功进入今天面试。他是这样写的
但是似乎是正确答案(他说他可能对了 ):
template<class T>
class SmartVector<T>:public vector<T>
{
public:
SmartVector(){}
~SmartVector()
{
while(size()!=0)
{
T bk=back();
pop_back();
delete bk;
}
}
};

不知道金山的答案如何哦。


到了面试的时候,说话完全没有套路,根本就没有向那些面试技巧什么的那样,专说自己擅长什么,而是把自己的学习经历说了下,还说了:才学半年多一点。

太诚实是错误的。一句话,对着面试官,要让他感觉你懂,所以尽量别说不知道。

搜索更多相关主题的帖子: 金山 内存 说话 经验 vector 
2006-10-27 11:40
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
顶一个

2006-10-27 11:47
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 

没必要 偏特化 ,不 是POD 类型才要偏特化...再说了,怎么可能会考 偏特化....那也太....


2006-10-27 12:59
majia775
Rank: 1
等 级:新手上路
威 望:2
帖 子:94
专家分:0
注 册:2006-9-11
收藏
得分:0 
才学半年多一点就可以去公司面试了,实在是强,汗``我都1年了,还停留在c++,类都没看完来,目前也在努力中,我不是做软件开发的,目标是游戏开发.

我不是随便的人,我随便起来不是人.... http://majia775.
2006-10-27 12:59
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
什么意思啊,为什么没必要啊?

谢谢3楼回答一下,那如果不是指针,析够函数怎么能够delete里面的东西呢?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 13:28
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
发现一个问题,我的VC6有bug.
VC6没完全支持standard c++.
上面的格式VC6编译不过去。
用这个
MinGW Developer Studio
编译的。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 13:41
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
谢谢版主提供的经验
指针变量,指针常量的sizeof结果都是4吧

好象都是考些语法的东西,没考数据结构和算法的

2006-10-27 13:44
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
哎,只是考基本功而已,就是看你掌握的怎么样。我还一直都以为bool是int的typedef呢?呵呵,主要是因为看BOOL是int 的typedef,所以也这样以为了。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 13:46
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 
以下是引用wfpb在2006-10-27 13:28:13的发言:
什么意思啊,为什么没必要啊?

谢谢3楼回答一下,那如果不是指针,析够函数怎么能够delete里面的东西呢?

因为他的类型T就是代表个指针类型的


2006-10-27 13:47
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
我想问下:
template<class T>
class SmartVector<T>:public vector<T>
{
public:
SmartVector(){}
~SmartVector()
{
while(size()!=0)
{
T bk=back();
pop_back();
delete bk;
}
}
};
void main()
{
SmartVector<int*>scpi;

SmartVector<int>sci;
for(int i=0;i<10;i++)
{
int n=i;
sci.push_back(n);
}
}
这可以吗?析构的时候没问题吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-10-27 13:52
快速回复:[经验]面试说话要注意!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018580 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved