[問題] 關於幾個面試的問題...

作者: 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