游戏开发论坛

 找回密码
 立即注册
搜索
楼主: typ77

程序面试试题(节选)

[复制链接]

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
发表于 2006-11-16 16:29:00 | 显示全部楼层

Re:程序面试试题(节选)

回 neelkey,我的例子只是打个比方而已。不用死钻牛角尖吧。
的确,编译器会自动处理xxx * xxx * xxx 的情况,但是如果是这样呢。

#define xxx 300
void main(void)
{
int k = 200;
int x = k  * xxx * k * xxx * k * xxx;
}

编译器要怎么做?

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
发表于 2006-11-16 16:34:00 | 显示全部楼层

Re:程序面试试题(节选)

回typ77,匈牙利标记法只是针对变量,或者说,它只是命名法则中的一部份,而并不是一种命名法则。命名法则的定义更广,包括到类的声明、函数定义,这是更大的一个体系,不要搞混了。我现在虽然不使用匈牙利标记法,但是我的命名法则是按照《C++编码标准》里面来的(当然,只限C++)。

52

主题

637

帖子

1420

积分

金牌会员

Rank: 6Rank: 6

积分
1420
发表于 2006-11-16 16:37:00 | 显示全部楼层

Re:程序面试试题(节选)

#define c 100

void main()
{
        int x = c * 100;
        int y = c * 50;
}

这是它的反汇编码:


004105B0   push        ebp
004105B1   mov         ebp,esp
004105B3   sub         esp,48h
004105B6   push        ebx
004105B7   push        esi
004105B8   push        edi
004105B0   push        ebp
004105B1   mov         ebp,esp
004105B3   sub         esp,48h
004105B6   push        ebx
004105B7   push        esi
004105B8   push        edi
004105B9   lea         edi,[ebp-48h]
004105BC   mov         ecx,12h
004105C1   mov         eax,0CCCCCCCCh
004105C6   rep stos    dword ptr [edi]
004105C8   mov         dword ptr [ebp-4],2710h
004105CF   mov         dword ptr [ebp-8],1388h
004105D6   xor         eax,eax
004105D8   pop         edi
004105D9   pop         esi
004105DA   pop         ebx
004105DB   mov         esp,ebp
004105DD   pop         ebp
004105DE   ret

我很想请教一下,  为调用c而产生的存储空间在哪? 堆上?栈上? 哪呢?呵呵

int x = c * 100;
int y = c * 50; 这两条语句变成的就是这两条指令
仔细看看

004105C8   mov         dword ptr [ebp-4],2710h
004105CF   mov         dword ptr [ebp-8],1388h

你也知道要人家虚心,怎么不知道自己也虚心点

老大你看书超级不求甚解.我也不知道是不是翻译者的水平有问题. 老实跟你说,那句话的意思根本就不是你理解的那样.你不如随便找个c++论坛问问.

我不多说了,如果你是某公司的招聘者,考官,改卷官,这样的求知态度很容易误人子弟.我也没必要说服你, 假如你继续做这行, 肯定会继续进步,将来的某一天你自然会明白事实的真相是怎样的.

52

主题

637

帖子

1420

积分

金牌会员

Rank: 6Rank: 6

积分
1420
发表于 2006-11-16 16:43:00 | 显示全部楼层

Re: Re:程序面试试题(节选)

ddoq2008: Re:程序面试试题(节选)

每次调用#define都会给它分配一次空间
这倒是不知道,又学了招。
C++里面指出只为定义变量和小型函数时最...



我本来是论坛上常常喊打的那种看贴不回的那类来的

我是看见居然有人这么回了,所以我不得不回帖

20

主题

465

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
QQ
发表于 2006-11-16 16:46:00 | 显示全部楼层

Re:程序面试试题(节选)

我来说句吧,neelkey在xxx * xxx * xxx这点的观点上是正确的,如果是事先可以计算的常量,编译器通常会事先计算了(我之所以说是通常,因为编译器也是人开发的,可以开发出事先计算的,当然也可以开发事先不计算的,不过,至少微软的是会的)。
typ77也不要太狂了,虽然这里有很多没找到工作的人,但是总有一天他们也会找到的,不要以为自己工作了就高人一等,学无止境的。

1

主题

78

帖子

82

积分

注册会员

Rank: 2

积分
82
 楼主| 发表于 2006-11-16 16:48:00 | 显示全部楼层

Re: Re:程序面试试题(节选)

FlyMagic: Re:程序面试试题(节选)

我来说句吧,neelkey在xxx * xxx * xxx这点的观点上是正确的,如果是事先可以计算的常量,编译器通常会事先...

受教了~~我也是抛砖引玉而已!希望大家多多努力。。。谢谢FlyMagic的提醒

8

主题

310

帖子

311

积分

中级会员

Rank: 3Rank: 3

积分
311
QQ
发表于 2006-11-16 18:09:00 | 显示全部楼层

Re:程序面试试题(节选)

#define begin {
#define end }
int main()
begin
return 0;
end

5

主题

77

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2006-11-16 18:21:00 | 显示全部楼层

Re:程序面试试题(节选)

typ77真没有道德,游戏公司的面试题怎么可以刊登出来?
真没有道德,唉爱唉~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0

主题

202

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2006-11-16 22:51:00 | 显示全部楼层

Re: Re: Re:程序面试试题(节选)

typ77: Re: Re:程序面试试题(节选)


这个题目是靠算法的问题。如果连你认为这么简单的算法也不能写出来,到底是你水平问题还是出题人水平问题...


小弟才疏学浅,你写出来给大家看看?我何时说些不出来? 我是说如果写出来和98%的人写的一样,那还有什么考的意义?
你给老子写出来!看你钩子写成啥子批样子!
老子还就不信你可以写出o(1)或者o(lg n)的算法来! SB一个!假老练!计算机行业多有像你这样的卖弄者就完求了! 瓜麻批! [em21]

12

主题

217

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2006-11-16 22:55:00 | 显示全部楼层

Re:程序面试试题(节选)

?髡f在??化?r#define和const也有?^?e

#define PreDefine 0x10000001
const long lPreDefine = 10000001
指令流水?? 立即???a生?指令影?指令??效率,但是const?量?H?H是地址引用
很古老的??化理?,呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 22:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表