igt system pa 实习面试

被igt血虐,这些东西我真不知道答案,求知道的告诉告诉我:

今天去面试,进去了先做笔试题,题目不难,一些基本的,tcpudp协议区别,分层模型,strcpy实现,特大数据组,取第十大的

笔试完了进去面试,英文自我介绍,说一个最熟悉的项目。

之后,悲剧开始了:


1:问题,你写的strcpy有什么问题?写一个测试用例,怎么设计测试用例?

我写的strcpy:

char * strcpy(char* des,const char* src){
if(des==null||src=null)
 throw "invalid argument";
char* strdes = des;
while((des++=src++)!='\0');
return strcpy;

测试用例,输入,简单些一下,两个字符串分别是:

a:null b:null

a:null b:'abc'

a 'ab' b 'abc'

a'abc' b'ab'

总之就是这几类的,面试官说,不行,有问题,再想

后来提示说参数万一特别大怎么办?为什么要返回char*?

我不知道什么叫参数特别大,,,特别大复制啊会溢出嘛?


2:怎么确定某程序读写,瓶颈在硬盘上还是cpu或者内存上。

控制变量我想的是,让他们除了这个一样。这个上过学的都知道。。。具体的没做过所以不太会

提示,通过操作系统的过程去想,问操作系统怎么和硬件接触?

答:通过系统调用以及驱动程序的接口

问:对,再想.

答:不知道

答案,有一个system counter 之类的东西一直在记录这个。

这个真的不知道。。。


3:一个特大的数组,找出其中第十大的数

答:装入内存,不能装入那就分片,之后建堆,扔掉前9个堆顶。

问:如何扔掉?

答:可以把队顶随便找一个叶节点赋值之后调整堆。

问:如何分片?

答:按内存能的量

问:怎么知道第十大的在哪一个片里?

答:肯定不能直接判断出来,分片之后分别建堆,之后因为堆顶是该片最大,可以先取两层,片间比较,可以一定程度上减少次数。

问:堆是什么数据结构本质上?

答:(我懵了,堆本质不就是二叉树,父节点大于子节点的)说了之后它不满意

问:堆是排序二叉树

我囧。。。。

之后反正这个答案不满意。。。


4:简单的,两数相加,考虑所有情况,写测试用例

答,首先是重载不同方法,因为确定了是数字,所以无非几种类型,检测非法输入,数字太大什么的

问:(很明显这时候他不满意)

如何重载?数字太大了怎么办?

我:重载long double int 之类的,太大了截取,非法输入报错返回

问:(他的意思不让我返回错误,一定要加出来个东西,之后说如果比double还大怎么办,我也不知道,因为他要返回而不是输出,其实没有变量可以承接我觉得,又不能返回两个值,输出的话我想用字符串去分段加)

它说我没考虑到的有,在32位64位机器上的问题,这个之前的strcpy也有。(我不知道c语言怎么判断机器,只知道汇编的有这么个东西,具体忘记了)

后来他说输入两个字符串加怎么加,我说检测非法字符先,进制转换等等,字符串拆分之后加,拆成int 大小的,高位想加再加进位。

它不满意。。。笑着说你回去实现下试试吧。。。

然后我知道挂了。。。也没啥别的问题,说了一堆废话就走了。。。真心不懂啊。。。学的太烂了。。。

太晚了,明天再写,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值