为啥一说面试咋这么激动列

bluesky12312388 2011-07-03 11:47:25

看简历的时候为了不让浪费时间。随便想了个题目。

我:您可以选择不回答这个题目,或者说您说出大致思路就可以了。
(当然工作中是不可能写这种代码的。)

结果面了一天,可能是太紧张了吧,好像只有一个人考虑全面了。

题目:
环境: i386 32 Linux机器 c 语言(C99)

int *p =1000;
char a = p + 2;
a 等于多少?


其实大可不必纠结这些偏的问题,你可以直接回答说,工作中绝对不要写这样的代码,
其实这样的答案也是可以的。后来因为这个题,老大还批评了我,你这样的题目是招不到真正的人才的。
因我这边是初选,一般不是太差的,我都推荐给老大去面试了。

其实我想说面试的时候有个好的心态是非常重要的,对于这种细节问题回答出来更好,
回答不出来也代表不了什么。关键是要看你考虑问题的思路。

欢迎大家拍砖灌水。(PS:招聘职位是linux 后台server开发)
...全文
759 45 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinling4388 2011-07-11
  • 打赏
  • 举报
回复
面试总是这种根本不会这么写的题目
HBack 2011-07-11
  • 打赏
  • 举报
回复
我怎么就是没把标题和类容联系起来呢...........
I_code 2011-07-08
  • 打赏
  • 举报
回复
太难了。不懂。
changshuaia 2011-07-05
  • 打赏
  • 举报
回复
10001000 -16 怎么得的?
zhang422173651 2011-07-05
  • 打赏
  • 举报
回复
学习了....
bluesky12312388 2011-07-05
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 ljt3969636 的回复:]

....貌似和你遇上了,禁止继承那个答案满意否?
[/Quote]
兄弟不会吧,真是太巧了,私信聊,后来结果怎么样了?
ljt3969636 2011-07-05
  • 打赏
  • 举报
回复
....貌似和你遇上了,禁止继承那个答案满意否?
kingstarer 2011-07-04
  • 打赏
  • 举报
回复
1008转成二进制是00000000000000000000001111110000
如果按小端排列那应该是
11110000000000110000000000000000
赋值给char要截断 不过不知道怎么截断

是取前8位还是取后8位, 不知道标准有没有写?
bluesky12312388 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 cunsh 的回复:]

引用 32 楼 bluesky12312388 的回复:
哎,本意是提醒大家面试的时候注意心态。这些细节问题不必太在意。


哈哈. 楼主应该换位一下. 自己如果被面试这种题目是什么个心态.
[/Quote]
这个题目我被面试的时候做过。心态很好,除了最后一题算法题只说出了思路,
其它的题目应该没撒问题。
cunsh 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 bluesky12312388 的回复:]
哎,本意是提醒大家面试的时候注意心态。这些细节问题不必太在意。
[/Quote]

哈哈. 楼主应该换位一下. 自己如果被面试这种题目是什么个心态.
bluesky12312388 2011-07-04
  • 打赏
  • 举报
回复
哎,本意是提醒大家面试的时候注意心态。这些细节问题不必太在意。

bruceteen 2011-07-04
  • 打赏
  • 举报
回复
p + 2 等于 1008
char a = 1008; 按照C/C++标准,可能是240,可能是-16,这取决于你的编译器和编译器设置。
liuying_1001 2011-07-04
  • 打赏
  • 举报
回复
不知道怎么理解,真实代码中是不会出现这样的吧。。。。。。
赵4老师 2011-07-04
  • 打赏
  • 举报
回复
标准答案来了:
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编并单步执行一遍不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编并单步执行。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
tangyao5d 2011-07-04
  • 打赏
  • 举报
回复
学习学习..
luciferisnotsatan 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 bluesky12312388 的回复:]

引用 11 楼 we_sky2008 的回复:

还真不知道楼主想考别人什么?
是想考察截断还是只是想让别人学习这种代码风格?

说实在的,其实正式的笔试中是有这个题目的,而且基本上一样,
只不过改了一点点。

考查点:
对指针运算的深入理解
对变量表示范围的理解
对类型转换的理解
对变量在内存中二进制表示的理解
[/Quote]
这题貌似没考变量在内存中二进制表示。大小端在这里不用考虑的。如果是char *a 指向 p+2,那才要考虑4字节地址在内存里怎么放的。
javashare 2011-07-04
  • 打赏
  • 举报
回复
学习学习
luciferisnotsatan 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 babilife 的回复:]

结果是未知的。。。。这题出的确实有问题
[/Quote]
结果是知道的。

int *p =1000;
这是让 p 指向1000,即p为1000
char a = p + 2;
偏移两个int,不过lz没说int多大,假定为4,就是1008。然后转成16进制,截断,char类型,需要注意正负。这里是数值上的截断,不用考虑大小端。

但在c++里,会直接报错,类型无法转换。
至善者善之敌 2011-07-04
  • 打赏
  • 举报
回复
结果是未知的。。。。这题出的确实有问题
we_sky2008 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 bluesky12312388 的回复:]
引用 11 楼 we_sky2008 的回复:

还真不知道楼主想考别人什么?
是想考察截断还是只是想让别人学习这种代码风格?

说实在的,其实正式的笔试中是有这个题目的,而且基本上一样,
只不过改了一点点。

考查点:
对指针运算的深入理解
对变量表示范围的理解
对类型转换的理解
对变量在内存中二进制表示的理解
[/Quote]
呵呵,我记起来了
好像上次在哪看到了,当时还问楼主了呢
加载更多回复(22)

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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