免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yyjjss
打印 上一主题 下一主题

今天去华为面试,遇到了一个题,大家看看 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2007-08-14 00:03 |只看该作者

我来说两句

首先说一下为什么华为的面试人员认为答案是 “123456789”和“9”,而不是大家所说的不能执行或者执行错误等。
因为华为的大部分开发部门都是基于vxworks开发的,而且都是使用的单进程非抢占式模式。这种模式下,编译器编出来的程序虽说有代码段、(初始化、非初始化)数据段的分别,但是是没有read only之类的保护。所以这个程序是可以运行并得到如上答案的。
华为的人很少有精通Unix、Linux的,至少出题的人没有考虑到这个题与系统类型、编译器关系很大。而大家一般都是在Unix、Linux、Windows上进行学习的,这些系统都是多进程,独立内存的,操作系统对应用程序做了很多保护,所以不是编译失败、就是运行失败。
其实华为的人就是想考一下字符串在内存中的存储、一般的对齐方式、strcpy以及printf。当然是指在vxworks下的情况,可惜大家不会这么理解。
楼主应该是到北研所IPOS部门面试的吧?呵呵!

论坛徽章:
0
62 [报告]
发表于 2007-08-14 00:15 |只看该作者
如果是针对vxworks(我没接触过),那么题目里面应该说明一下

如果是带操作系统的,代码段都可写,那恐怖了点吧

论坛徽章:
0
63 [报告]
发表于 2007-08-14 00:23 |只看该作者
难道他们认为大家都在用vxworks吗?
他们平常也应该玩玩别的系统,看看书或标准吧
真吓人呀

原帖由 yawn3000 于 2007-8-14 00:03 发表
首先说一下为什么华为的面试人员认为答案是 “123456789”和“9”,而不是大家所说的不能执行或者执行错误等。
因为华为的大部分开发部门都是基于vxworks开发的,而且都是使用的单进程非抢占式模式。这种模式下 ...

论坛徽章:
0
64 [报告]
发表于 2007-08-14 00:33 |只看该作者

回复 #24 JohnBull 的帖子

作为一个版主,不倡导大家进行技术方面的讨论,却主动根据未确定的、不明原因的消息来批评一个国内技术领先的公司。不觉得脸红吗?

论坛徽章:
0
65 [报告]
发表于 2007-08-14 08:19 |只看该作者

绝对是错的

无论什么情况,这个都是错误的。

反问一下:假设将来在华为工作,希望出现这种代码吗?

论坛徽章:
0
66 [报告]
发表于 2007-08-14 09:25 |只看该作者

回复

我在Debain下运行不起来,出现段错误,str1指针是指向常量的字符串“6789”的首地址空间,是在编译期间已经初始化的内存空间,str2则指向字符常量“123456789”,strcpy(str1,str2)拷贝当然出现错误

论坛徽章:
0
67 [报告]
发表于 2007-08-14 10:32 |只看该作者
Linux server 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:32:14 EDT 2005 i686 i686 i386 GNU/Linux


运行段错误

论坛徽章:
0
68 [报告]
发表于 2007-08-14 10:42 |只看该作者
这里有两个问题:

1.char * p="6789",定义的指针指向的是全局const区域,所以这部分是部门被重写的。。

所以,一般情况下都是定义为const char * const p ="6789"

具体的可以看一下这篇文章http://blog.csdn.net/eroswang/archive/2007/06/11/1647436.aspx

2.strcpy的问题啦。。溢出了。。改用strncpy比较好。。

[ 本帖最后由 scut_eros 于 2007-8-14 10:50 编辑 ]

论坛徽章:
0
69 [报告]
发表于 2007-08-14 10:42 |只看该作者
原帖由 spibit 于 2007-8-14 08:36 发表

技术无过,但是是人在做技术。
先学做人,后学技术。

“技术领先”就应该更加虚心的接受别人的批评。
对的就是对的,错的就是错的。
华为加班,很有名的。
我觉得华为更多的是看中国内人力资源便宜。
...


顶一下,说得好,先学做人,后学技术!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
70 [报告]
发表于 2007-08-14 10:49 |只看该作者
上面有人不是已经说了吗
华为用的是vxworks搞开发
这种系统允许修改常量所在的内存区域
这样的代码能用在华为的产品上能用

用惯了LINUX这种有完善内存管理和保护机制的系统, 还真的不能接受这样的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP