[问题] 关于几个面试的问题...

楼主: MarkHero (Mark)   2014-11-10 02:54:54
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
由于刚退伍,脑袋已经转不过来,题目一共有六题,
解完四题后,已经越来越满身冷汗....
之前实习的考试能写四题我已经很开心了,
但是这次面试考官给了点时间,所以想把他写得完整一点...
请教版上各位前辈给予指教,
小弟万分感谢!!!
1.
下面程式是想做什么判定?
bool test(int X)
{
return (!(X&(X-1)))
}
2. 优化下段程式,并解释理由:
// Optimze the following code in ANY directions.
// HINT: try more directions.
// Such as code generality to different compilers, memory access overhead,
// memory use, calculating overhead, code efficiency...etc.
#define WHITE 255
#deifne BLACK 0
#deinfe THRESHOLD 20
#define WINDOW_HEIGHT 5
#define BOOL int
#define TRUE 1
#define FALSE 0
BOOL funtionFromRight(int score, int width, byte * * image, int xi, int yi)
{
BOOL b;
int leftBound = 2;
for(b=xi-1; b > leftBound && b < width-2 ; b=b-1)
{
if(image[yi][b] == WHITE && image[yi][b+1] == BLACK)
{
int isVertical=0;
for(int c = WINDOW_HEIGHT*(-1); c <= WINDOW_HEIGHT ; c++)
{
isVertical+=image[yi+c][b_next];
isVertical+=image[yi+c][b];
}
if(isVertical <= THRESHOLD && score > 200)
return TRUE;
}
if(image[yi] [b] == BLACK)
break;
}
return FALSE;
}
BOOL funtionFromLeft(int score, int width, byte * * image, int xi, int yi)
{
BOOL b;
int leftBound = 2;
for(b=xi+1; b > leftBound && b < width-2 ; b=b+1)
{
if(image[yi][b] == WHITE && image[yi][b+1] == BLACK)
{
int isVertical=0;
for(int c = WINDOW_HEIGHT*(-1); c <= WINDOW_HEIGHT ; c++)
{
isVertical+=image[yi+c][b_next];
isVertical+=image[yi+c][b];
}
if(isVertical <= THRESHOLD && score > 200)
return TRUE;
}
if(image[yi][b] == BLACK)
break;
}
return FALSE;
}
小弟知道这样是不劳而获,但是请给年轻人一个机会吧<(_ _)>
当了一年的笨蛋,回过头来真的很多都忘光了....
前天收到考题,我已经在电脑前面坐了17个小时了....(包含厕所)
埋在里面这么久,明天就要交卷了...
所以在这边拜托各位前辈了.....
小弟愿奉上鸡排1份、COCO珍奶1杯或肯德基、麦当劳套餐一份作为答谢。
作者: freesamael (烧卖)   2014-11-10 03:25:00
作者: carylorrk (carylorrk)   2014-11-10 03:35:00
如果我是考官,我真不希望收到一个考卷是别人写的人更何况问题里面还一点自己意见也没有。没关系,我不是前辈,而且考官给你时间带回来写说不定就是让你问。虽然你很有礼貌,但是我还是要比较严厉的说,第一题光是复制贴上 google 就有答案了,第二题一看至少可以从 row-major order 来想,但是内文一点尝试的说明都没有,至少给我的观感的确不佳。
作者: flydragon198 (Richard)   2014-11-10 10:55:00
公司都让你带回家思考了,一定也知道你们会上网找答案,现在搜寻解答的能力也是一种考量
作者: shadow0326 (非议)   2014-11-10 11:13:00
搞不好楼下就是面试官
作者: dontblame (占卜师)   2014-11-10 13:27:00
我觉得上论坛或ptt问人找答案也是种能力。 而且很重要不过 谢礼....诚意有点不足 XD
作者: Killercat (杀人猫™)   2014-11-10 16:26:00
这不是机不机会的问题 我觉得你这样进去对你也是灾难第一题一看就知道应该要把int摊成二进制这个说真的没办法一看就知道的话 基础很堪虞啊 -_-这样好了,你第一题用4 5 6 7四个数字转成二进制然后看看结果(也用二进制)跟会不会true,把想法写出来我想这样大家也比较不会皱眉头,对吧?
作者: james1022jk (雁)   2014-11-10 16:34:00
第二题的参数b_next没看到宣告
作者: littleshan (我要加入剑道社!)   2014-11-10 18:22:00
第一题其实可能会 undefined behavior XD正确做法应该是用 uint32_t
作者: dirkc (3781615)   2014-11-10 19:51:00
哈,第一题我试了一下:(a>=0&&!(a%2)||a==1||a==(1<<31))原理是int的2's complement;如果没有编译器还不大敢确定呢不要轻易尝试交我的答案,除非理解这个很冷的笑点...第二题是申论题,要考思辨能力,解答就在注解中,往那些方向想祝你顺利;18小时不嫌多,不自己想出来过这关,大概进去更痛苦
作者: kazuto (光华系少年)   2014-11-10 21:18:00
第二大题提示还蛮明显的吧? 像是const化,改变判断流程仔细想想应该有很多点可以写,一点想法都没有实在有点....
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-11-10 23:29:00
很像国中时候写申论题的反应。

Links booklink

Contact Us: admin [ a t ] ucptt.com