作者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/cn.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