作者brianhsu (墳墓)
看板Soft_Job
標題Re: [請益] MTK 面試測驗請教
時間Wed Nov 18 09:26:14 2015
※ 引述《fanntone (我是胖子)》之銘言:
: ※ 引述《hanck ( )》之銘言:
: : 今兒個去MTK面試寫考卷看到兩題題目想跟大家請教一下
: : 1.
: : extern void func1(void);
: : extern void func2(void);
: : extern void func3(void);
: : extern void func4(void);
: : extern void func5(void);
: : void main(int n)
: : {
: : if n==1 execute func1;
: : if n==2 execute func2;
: : if n==3 execute func3;
: : if n==4 execute func4;
: : if n==5 execute func5;
: : }
: : 保證 n 一定是上面五個數字之一
: : 不能用if 和 switch case , 請用你認為最快的方法實作main
很久沒寫 C 了,不確定是不是最快的方法……
typedef void (*callback)(void);
int main(int argc, char ** args) {
int n = 1;
callback funcArray[6] = {NULL, func1, func2, func3, func4, func5};
funcArray[n]();
}
: : 2.
: : extern void func1(void);
: : extern void func2(void);
: : extern void func3(void);
: : extern void func4(void);
: : extern void func5(void);
: : void main(int n)
: : {
: : if n==33 execute func1;
: : if n==67 execute func2;
: : if n==324 execute func3;
: : if n==231 execute func4;
: : if n==687 execute func5;
: : }
: : 保證 n 一定是上面五個數字之一
: : 使用if, 請用你認為最快的方法實作main
: : 這兩題難度都是標記困難,所以我想第二題應該不會只是單純用if else
: : 而第一題無法下手......不知道有沒有高手指導一下
第二題在一定要用 if 的條件下,我還是覺得直接
if (n == 33) { .... } else if (n == 67) { .... } 最快耶?
因為一定要用 if,所以 if 指令 (JMP) 本身的 instruction cycle 可
以不計。
然後如果是用 == 的話,不是一個 CMP 的 CPU 指令就完事了嗎?相較之
下做其他運算不會更耗時嗎?
--
~
白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走,
'v'
Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚……
// \\
( 墳 墓 )
/( )\
但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】
^`~'^
http://brianhsu.moe 『那都是很好很好的,可我偏不喜歡。』
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.173.41
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1447809976.A.612.html
※ 編輯: brianhsu (61.228.173.41), 11/18/2015 09:37:21
※ 編輯: brianhsu (61.228.173.41), 11/18/2015 09:38:53
1F:推 gmd93: 受教了 11/18 09:40
2F:→ manlike: 但是他有說可以用 else 嗎? 11/18 09:54
3F:→ lovdkkkk: 不能用 else 的話可以用 return? 11/18 15:56