今天的面试题目游戏公司的

bbbbxx1 2006-12-29 10:17:47
今天刚去的昱泉,那面试官特别强。我感觉他们不是在招我这种应届生,而是招游戏界的精英。这家有3条笔试题。我列出来大家看看:
1。请写出MemoryCopy(void *dest, void const *source, int count)要考虑内存地址重复问题。我卡在内存地址重复上- -! 有人知道请帮忙解答。
2。有2个unsigned变量是32位 a,b 相加后,超出unsigned类型。要求你写个函数实现相加并把结果高地址放入char *ch,低地址放入char *cl 。我转换long类型实现相加。面试官说不行,要考虑另外的方法。- -!不知道还有什么办法,大大门帮忙。
3。如下图所示:把该图存于int data[10][10]中,请用代码实现
1 2 3 4 5
22 21 20 19 6
23 24 25 18 7
14 15 16 17 8
13 12 11 10 9
...全文
1948 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
maomi01 2007-01-13
  • 打赏
  • 举报
回复
昨天俺也载了,俺那个兴冲冲的跑过去,结果被委婉拒绝了,苦
whatsblog 2007-01-07
  • 打赏
  • 举报
回复
mark
可西哥 2006-12-30
  • 打赏
  • 举报
回复
C++复习一下,呆会贴
「已注销」 2006-12-30
  • 打赏
  • 举报
回复
说来说去,这些都是停留在运用C/CPP上的,怎么样去从编译或汇编层去考虑,可能对一个纯软件的人来说有点神密。
「已注销」 2006-12-30
  • 打赏
  • 举报
回复
说句实话,这些真的都很基础,如果你是搞嵌入式的话,不是我吹牛,这些东西还真不太话下
bbbbxx1 2006-12-30
  • 打赏
  • 举报
回复
是的赋值。
当然不是让你一个一个赋过去。
寻路算法+递归实现吧?
argenCHN 2006-12-30
  • 打赏
  • 举报
回复
3。如下图所示:把该图存于int data[10][10]中,请用代码实现
???????????

什么意思??? 直接赋值??
mood8125 2006-12-30
  • 打赏
  • 举报
回复
mark
bbbbxx1 2006-12-30
  • 打赏
  • 举报
回复
谁把第3个算法写出来,我就结贴了。。
weixing979 2006-12-30
  • 打赏
  • 举报
回复
MemoryCopy(void *dest, void const *source, int count)
{
char * d = (char *)dest;
char * s = (char *)source;
if( d+count <= s || d >= s+count )
{
while(count-- > 0)
*d++ = *s++;
}

}


那个应该是source~source+count-1 和dest~dest+count-1之间都不能重复吧,MemoryCopy已经限定了source 为void const *,应该是希望那块内存不应该被改写

bbbbxx1 2006-12-30
  • 打赏
  • 举报
回复
第3题就是按那图的排序
存到data[10][10]数组里。。
bbbbxx1 2006-12-30
  • 打赏
  • 举报
回复
是的
-------------
|
|---------||
| |-----|||
| |---- |||
|-------- ||
-----------|
大概这样的图。。
意思到就可以了。
owsxo 2006-12-30
  • 打赏
  • 举报
回复
晕,有看了下,真的是说错了。
不好意思啊~~
^-^!
owsxo 2006-12-30
  • 打赏
  • 举报
回复
第三题的算法:
不知道对不对啊,先说说算法。简单的说就是设定一个简单的优先级--
right-->down-->left-->up.
void addData()
{
if right == 空 then
setdata
return;
end if
if down == 空 then
setdata
return
end if
if left == 空 then
setdata
return;
end if
if up === 空 then
setdata
return
end if
}
zhanghongqiao 2006-12-30
  • 打赏
  • 举报
回复
流星蝴蝶剑很不错啊!
大家有没有玩过,就是昱泉出的!
linhaiqiang 2006-12-30
  • 打赏
  • 举报
回复
牛啊
laiwusheng 2006-12-30
  • 打赏
  • 举报
回复
mark
skfox 2006-12-30
  • 打赏
  • 举报
回复
晕,楼上的真快,稍一犹豫,都到哪里了,我上面说的是针对

mlwu3(wml) ( ) 信誉:100 Blog 2006-12-30 09:18:48 得分: 0


1.
dest在source和source+size之间或者
source在dest和dest+size之间
就是有重合,在做拷贝之前判断一下,如果重合就应该退出了。
或者在逐字节拷贝的时候每次都看看目的地址是否包含在source和source+size之间,
如果是就报错退出

2.
假设运行的环境里数字是小端排列
void Do_Plus( unsigned long a, unsigned long b, char *ch, char *cl )
{
int i = 0;
unsigned long c;
unsigned char carrier = 0;

c = (a&0x0000ffff) + (b&0x0000ffff);
carrier = (c & 0x00010000) >> 16;
*((unsigned short *)cl) = (unsigned short)c;

c = (a>>16) + (b>>16);
carrier = (c & 0x00010000) >> 16;
*((unsigned short *)ch) = (unsigned short)c;
ch[2] = carrier;
}


skfox 2006-12-30
  • 打赏
  • 举报
回复
嗯,楼上的不错,不过
第二个c=那里
c = (a>>16) + (b>>16);
是不是要改为
c = (a>>16) + (b>>16) + carrier;
TryToday 2006-12-30
  • 打赏
  • 举报
回复
看样子3题理解的不对,但是楼主没有说清楚啊,到底已知的是什么呢,就是给的什么源数据呢,知道了才知道怎么处理啊。这题反正不难。
加载更多回复(48)

64,639

社区成员

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

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