免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: moonwhite999
打印 上一主题 下一主题

两道嵌入式面试题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-03-20 14:03 |只看该作者
之所以我觉得第一个想出这个问题的人应该觉得脸红,比如林锐吧。因为这个题目居然把两种语意完全 ...
cjaizss 发表于 2010-03-20 12:39


我看写书比写程序更难. 写书考虑到篇幅 , 限定范围 , 考虑主次 , 还要通俗易懂, 难啊.
如果林先生只是要阐述某种观点 , 他完全可以不用像律师那样加入很多限定词 .
反而是体理不到他的用意而把它拿出来无限解读,才是最应该脸红的.


考官可以不脸红 .
常在河边走 , 哪有不被bs的?
如果有幸遇到"cjaizss"斑这样的老手 , 被鄙视一下还是很划得来的.

实在被bs得不行 , 我建议考官把IQ分占的比例降低 , 把EQ分提高 , 侧重考察沟通交流能力也可以

论坛徽章:
0
22 [报告]
发表于 2010-03-20 14:41 |只看该作者
第一题,还是没怎么理解,感觉2种情况是一样的

condition ---> for   对于硬件 就是 mux + adder (add_logic + register)

for ---> condition 对于硬件 就是 adder(add_logic + mux + register)

感觉是一样的,不知道区别在什么地方?还请大家指教

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
23 [报告]
发表于 2010-03-20 17:26 |只看该作者
自己顶一个,第一题我也很想知道答案,望强者不吝赐教
第二题,面试的说我的做法不适用于嵌入式,我本就没 ...
moonwhite999 发表于 2010-03-19 22:23



我倒,这两种写法的逻辑功能不样,还能比较么?

论坛徽章:
0
24 [报告]
发表于 2010-03-20 20:34 |只看该作者
for(i=0;i
shang2010 发表于 2010-03-20 11:55



    这样的代码,强一点的编译器直接就把循环优化没了。

论坛徽章:
0
25 [报告]
发表于 2010-03-20 20:39 |只看该作者
我查到了"标准答案"了,优点:程序简洁
缺点:多执行了N-1 次逻辑判断,并且
打断了循环“流水线”作业,使 ...
老手 发表于 2010-03-20 12:14



    编译器只要做循环不变量的优化就应该能把这样的条件语句拿出循环外了,其实在里面还是外边也没什么大的区别。此外,条件判断在循环内部,对与有条件预测的处理器来说也不会对执行造成多大的性能影响。

论坛徽章:
0
26 [报告]
发表于 2010-03-20 20:48 |只看该作者
想了一下,题目出的是比较牵强:
第一种情况,在循环过程中,condition会变,也不好写成第二种形式;
第二 ...
doofy 发表于 2010-03-20 13:37



    如果从嵌入式的角度考虑的话,有可能发生这样的情况
for(i=1;i<N;i++)
    {
          SS1
           if(condition)
              DoSomeThing;
           else
              DoOtherThing;
          SS2
    }

如果SS1和SS2的代码量都比较大的话,为了优化代码性能而改写成
    if(condition)
    {
           for(i=1;i<N;i++){
               SS1
               DoSomeThing;
               SS2
           }
  
    }
    else
    {
          for(i=1;i<N;i++){
              SS1
              DoOtherThing;
              SS2
          }
    }
这样会大大怎讲代码的长度,鉴于嵌入式系统一般要考虑缩短代码长度,这种事情还是不要做的好。

论坛徽章:
0
27 [报告]
发表于 2010-03-20 21:02 |只看该作者
想听听"cjaizss"斑竹高见. 我还准备抄下来当考题呢
老手 发表于 2010-03-19 23:20



    一起抄一起抄^_^

论坛徽章:
0
28 [报告]
发表于 2010-03-20 21:39 |只看该作者
回复 26# jhzhu_snps


    能不能把判断拿到循环外由业务逻辑决定,试想下,如果在for()里改变了condition,还能拿到for外面去么?

论坛徽章:
0
29 [报告]
发表于 2010-03-20 21:58 |只看该作者
回复 1# moonwhite999


题1:
代码1:在N次循环中,如果condition为真,DoSomeThing, 否则DoOtherThing;
代码2:如果condition为真,DoSomeThing N次,否则DoOtherThing N次。

论坛徽章:
0
30 [报告]
发表于 2010-03-20 22:11 |只看该作者
第一题没啥意思

第二题
#include<stdio.h>
#include<string.h>

static char getfirst(const char *str, int len)
{
    int num[26] = {0};
    int order[26] = {0};
    int i = 0;
    int minorder = 26;

    for(i=0;i<len;i++)
    {
        num[str[i]-'a']++;
        order[str[i]-'a'] = i;
    }   
   
    for(i=0;i<26;i++)
    {
        if(num[i]==1)
        {   
            if(order[i] < minorder)
            {
                minorder = order[i];
            }
        }
    }
    if(minorder == 26)
    {
        return 0;
    }
    else
    {   
        return str[minorder];
    }  
}

int main()
{
    char *s="aasiosffsafgdggsfasaurefhkfhaa";
    printf("%c\n",getfirst(s, strlen(s)));   
    return 0;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP