月初面一家外企的几道面试题求解 请各位不吝赐教

暖暖mm 2013-03-25 09:56:35
hi 各位大牛好,
这是我月初面一家外企的几道面试题 实在不会做 请各位不吝赐教 学妹谢谢大家了

1.1 使用C语言将一个1G字节的字符数组从头到尾全部设置为字符“A”,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近:

A 0.001秒 B 1秒 C 100秒 D 2小时

1.2 在某些极端要求性能的场合,我们需要对程序进行优化,关于优化,以下说法正确的是:

A 将程序整个用汇编语言改写会大大提高程序性能。

B 在优化前,可以先确定哪部分代码最为耗时,然后对这部分代码使用汇编语言编写。使用的汇编语句数目越少,程序就运转越快。

C 使用汇编语言虽然可能提高了程序性能,但是降低了程序的可移植性和可维护性 ,所以应该绝对避免。

D 适当调整汇编指令的顺序,可以缩短程序运行的时间

1.3对如下C语言程序在X86 PC上面运行时候的输出叙述正确的是:


char *f()

{

char X[512];

sprinf (X, "hello world");

return X+6;

}


main()

{

printf("%s", f());

}


A 程序可能崩溃,也可能输出hello world

B 程序可能崩溃,也可能输出hello

C 程序可能崩溃,也可能输出world

D程序一定崩溃

1.4. 双败淘汰赛和淘汰赛相仿,也是负者出局,但负一场后并未被淘汰,只是跌入负者组,在负者组再负者(即总共已负两场)才被淘汰。现在有10个人参加双败淘汰赛,假设我们取消最后的胜者组冠军VS负者组冠军的比赛,那么一共需要举行多少场比赛?

A. 16 B. 17 C. 18 D. 19 E. 20




1.5.加入某主机安装了2GB内存,在其上运行的某支持MMU的32位Linux发行版中,一共运行了X,Y,Z三个进程,下面关于三个内存使用程序的方式,哪个是可行的?

A. X,Y,Z的虚拟地址空间都映射到0~4G虚拟地址上

B. X在堆上分配总大小为1GB的空间,Y在堆上分配200MB,Z在堆上分配500MB,并且内存映射访问一个1GB的磁盘文件。

C . X在堆上分配1GB,Y在堆上分配800MB,Z在堆上分配400MB

D . 以上为访问方式都是可行的

1.6 .当你使用TCP协议进行编程时,下列问题哪个是必须由程序员考虑和处理的?

A . 乱序数据包的重发 B. 数据传输过程中的纠错

C. 网络拥塞处理 D . 发送数据的格式和应用层协议
...全文
8096 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_student_ 2013-04-05
  • 打赏
  • 举报
回复
引用 49 楼 pengjialaosan 的回复:
第三题试了一下。

为什么我用VC6就什么都不显示呢 帮忙解答一下啊
new_student_ 2013-04-05
  • 打赏
  • 举报
回复


引用 49 楼 pengjialaosan 的回复:
第三题试了一下。

我用VC6怎么啥都不显示呢 为啥呢
GoForSky 2013-04-04
  • 打赏
  • 举报
回复
2: D 3: C 4: C 考逻辑思维,10个人,必须淘汰9个人,而每个淘汰的人比2场,所以是2×9==18,小学数学逻辑题 5: D 6: D 程序员处理的就是应用层,其它要么是数据链检层,要么是IP层,要么是TCP
rickys2080 2013-04-03
  • 打赏
  • 举报
回复
引用 1 楼 kogou 的回复:
第1题,我来猜猜,应该是B 1G字节需要1G条指令,如4核2G的cpu,如1周期1条指令,需要0.25秒 再加上内存速度慢,所以最接近1秒
写个程序验证下
wkellypro 2013-04-03
  • 打赏
  • 举报
回复
引用 57 楼 u010151745 的回复:
引用 52 楼 wkellypro 的回复:引用 51 楼 wkellypro 的回复:3题这样应该是不正确的,在局部开辟的空间当函数返回时就可能销毁了,所以存在崩溃问题,但是x没有初始为0尼玛也输出不了world啊 把局部改为栈 数据是在栈上的,函数退出不销毁。
栈是由编译器自动分配和释放的,不释放的是堆
alan_woody 2013-04-03
  • 打赏
  • 举报
回复
引用 52 楼 wkellypro 的回复:
引用 51 楼 wkellypro 的回复:3题这样应该是不正确的,在局部开辟的空间当函数返回时就可能销毁了,所以存在崩溃问题,但是x没有初始为0尼玛也输出不了world啊 把局部改为栈
数据是在栈上的,函数退出不销毁。
alan_woody 2013-04-03
  • 打赏
  • 举报
回复
引用 12 楼 CKnightx 的回复:
第三题选D吧,char数组是作用域只在函数中,返回了char*,打印时候,肯定指向未知的地方。
这个指针在栈上。
meichen8050753 2013-04-03
  • 打赏
  • 举报
回复
引用 1 楼 kogou 的回复:
第1题,我来猜猜,应该是B 1G字节需要1G条指令,如4核2G的cpu,如1周期1条指令,需要0.25秒 再加上内存速度慢,所以最接近1秒
对数组的遍历一般只能利用到1核。。
wkellypro 2013-04-02
  • 打赏
  • 举报
回复
引用 51 楼 wkellypro 的回复:
3题这样应该是不正确的,在局部开辟的空间当函数返回时就可能销毁了,所以存在崩溃问题,但是x没有初始为0尼玛也输出不了world啊
把局部改为栈
wkellypro 2013-04-02
  • 打赏
  • 举报
回复
3题这样应该是不正确的,在局部开辟的空间当函数返回时就可能销毁了,所以存在崩溃问题,但是x没有初始为0尼玛也输出不了world啊
拾薪 2013-04-02
  • 打赏
  • 举报
回复
标记一下来看看答案
彭家老三 2013-04-02
  • 打赏
  • 举报
回复

第三题试了一下。
贪玩的老鼠 2013-04-02
  • 打赏
  • 举报
回复
1 选B 2. 选D (B,汇编越少,越快是错的,越多才越快) 3. 选C 4 c(9个人失败,每个人失败两次9*2) 5. d 6. d
l329958620 2013-04-02
  • 打赏
  • 举报
回复
妹子呀
贪玩的老鼠 2013-04-02
  • 打赏
  • 举报
回复
1.4 (即总共已负两场)人家题目都说了每个人要输两场才算输, 总共10个人,那就是9个人输,9个人*2=18,每一场比赛只有一个输的 那是不是18场比赛就可以决定冠军呵. //10个人 5场比赛 就分为负者组5人和胜者组5人,胜者组5人需进行4场 即可确定胜者组冠军 负责组9个人 需进行8场可确定负者组冠军 这样总共17场比赛 还有负者组冠军+胜者组冠军 PK 没算 答案是18
古尔德之锋 2013-03-30
  • 打赏
  • 举报
回复
围观~!!!
hoodlum1980 2013-03-30
  • 打赏
  • 举报
回复
1.3要崩溃的话还不至于,因为显然他没有达到越界写的程度。所以如果要达到崩溃效果,可以把stack上的有用信息(函数的返回地址)给写乱掉,那就崩溃了,比如对字符串拷贝一个非常长的字符串。他就会把返回地址给覆盖,这样的结果基本上必然会崩溃。
hoodlum1980 2013-03-30
  • 打赏
  • 举报
回复
引用 18 楼 zhangweijiqn 的回复:
1.2 D 1.3 题的 x+6是加的1个字节的地址呢,还是加的是512*6个自己的地址呢?这地好像以前有人提过。 1.6 中考察的应该是TCP协议所处的层次是在传输层,看着D像是正确答案,但是它已经涉及到了应用层,大家有没有想过是答案B或者其他呢?
1.6 是D,其他什么数据包之类的都是TCP这一层的协议可以保证的,不需要应用层关心。应用层面向的是数据流,主要关心的是通信协议的制定,即如何解释发送和接受的数据。
hoodlum1980 2013-03-30
  • 打赏
  • 举报
回复
关于1.3这题我来解释下吧,从这个题目来看,很大的可能是输出world。不会崩溃。 因为返回的作废的函数的stack frame里的地址,而这个地址是char[512], 512bytes距离当前的frame stack's top来说足够远(即使得这个字符串的数据保持相对的“安全”),所以它能输出“world”。 如果char【512】这个512比较小,很大可能是输出一个错误的字符串,未必崩溃,取决于栈上是不是有一个byte为0把这个字符串给截断。
落叶涟漪 2013-03-29
  • 打赏
  • 举报
回复
引用 14 楼 kang5264 的回复:
1.1,不是很明白,排除法推测一下应该是B 1.2,D选项没错误 1.3,应该是C 1.4,B,输两场淘汰一人,败者组冠军输一场,淘汰八人需要16场,一共17场.
第四题的思路真霸道。
加载更多回复(42)

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧