趣购彩登录

  • <tr id='WYmuyc'><strong id='WYmuyc'></strong><small id='WYmuyc'></small><button id='WYmuyc'></button><li id='WYmuyc'><noscript id='WYmuyc'><big id='WYmuyc'></big><dt id='WYmuyc'></dt></noscript></li></tr><ol id='WYmuyc'><option id='WYmuyc'><table id='WYmuyc'><blockquote id='WYmuyc'><tbody id='WYmuyc'></tbody></blockquote></table></option></ol><u id='WYmuyc'></u><kbd id='WYmuyc'><kbd id='WYmuyc'></kbd></kbd>

    <code id='WYmuyc'><strong id='WYmuyc'></strong></code>

    <fieldset id='WYmuyc'></fieldset>
          <span id='WYmuyc'></span>

              <ins id='WYmuyc'></ins>
              <acronym id='WYmuyc'><em id='WYmuyc'></em><td id='WYmuyc'><div id='WYmuyc'></div></td></acronym><address id='WYmuyc'><big id='WYmuyc'><big id='WYmuyc'></big><legend id='WYmuyc'></legend></big></address>

              <i id='WYmuyc'><div id='WYmuyc'><ins id='WYmuyc'></ins></div></i>
              <i id='WYmuyc'></i>
            1. <dl id='WYmuyc'></dl>
              1. <blockquote id='WYmuyc'><q id='WYmuyc'><noscript id='WYmuyc'></noscript><dt id='WYmuyc'></dt></q></blockquote><noframes id='WYmuyc'><i id='WYmuyc'></i>

                嵌入式软件开发常见面试题(嵌入式软件开发工程师面试题目)

                软件开发 1582
                本篇文章给大家谈谈嵌入式软件开发常见面试题,以及嵌入式软件开发工程师面试题目对应的知ξ识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文↑目录一览: 1、嵌入式软件工程师经典笔试▃题和面试题答案

                本篇文章给大家谈谈嵌入式软件开发常见面试题,以及嵌入式软件开发工程师面试题目对应的↙知识点,希望对各位有所帮助,不要忘了收藏本站喔。

                本文目录一】览:

                嵌入式软件工程师经典笔试题和面试题答案

                1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年》问题)

                #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

                我在这想看到几①件事情:

                1). #define 语法的基本知识(例如:不能以分号结束,括∩号的使用,等等)

                2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

                3). 意识到这☉个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。

                4). 如果你在你的表达▅式中用到UL(表示无符号长整型),那么你有了一个好的起点。

                记住,第一印象很重要。

                2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

                #define MIN(A,B) ((A) = (B) (A) : (B))

                这个测试是为下面的目的而设的:

                1). 标识#define在宏中应用的基本知识。这是很重要的,因为╱直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入〖式系统来说,为了能达∞到要求的性能,嵌入代码经常是必须的方法№。

                2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码⌒,了解这个用法是很重要的。

                3). 懂得在宏中小心地把⌒ 参数用括号括起来

                4). 我也用这个〇问题开始讨论宏的副作用,例如:当你写下面→的代码时会发生什么事?

                least = MIN(*p++, b);

                3. 预处理器标识#error的目的是▓什么?

                4. 嵌入式系统中经常要用到无限循环,你怎么样用→C编写死循环呢?

                这个问题用几个解决方案。我首选的方案是:

                while(1)

                {

                }

                一些程序员更喜欢如下方∏案:

                for(;;)

                {

                }

                这个实现方式让∑ 我为难,因为这个语法没有确切表达到底怎么回事。如果一▼个应试者给出

                这个作为方案Ψ,我将用这个作为一个机会去探究他们这样做的

                基本原理。如果他们的基本答案是:“我被教着这样做,但从没有想到过为什】么。”这会

                给我留下一个坏印象。

                第三个方案是用 goto

                Loop:

                ...

                goto Loop;

                应试者如给出上面的方︽案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他

                是一个㊣想进入新领域的BASIC/FORTRAN程序员。

                数据声明(Data declarations)

                5. 用变量a给出下面的定义

                a) 一个整型数(An integer)

                b) 一个指向整型数的指针(A pointer to an integer)

                c) 一个指向指针的的指针,它指向的指针是指♀向一个整型数(A pointer to a pointer

                to an integer)

                d) 一个有10个整型数的数组(An array of 10 integers)

                e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to

                integers)

                f) 一个指向有ξ 】10个整型数数组的指针(A pointer to an array of 10 integers)

                g) 一个指向函数的指针,该函数有一个整型参数并返回♀一个整型数(A pointer to a fu

                nction that takes an integer as an argument and returns an integer)

                h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型

                数( An array of ten pointers to functions that take an integer argument and r

                eturn an integer )

                答案是:

                a) int a; // An integer

                b) int *a; // A pointer to an integer

                c) int **a; // A pointer to a pointer to an integer

                d) int a[10]; // An array of 10 integers

                e) int *a[10]; // An array of 10 pointers to integers

                f) int (*a)[10]; // A pointer to an array of 10 integers

                g) int (*a)(int); // A pointer to a function a that takes an integer argument

                and returns an integer

                h) int (*a[10])(int); // An array of 10 pointers to functions that take an int

                eger argument and return an integer

                人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同◣意这种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。

                但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在被面试的这段时间里,我确定我知道这个问题的答案。应试者↓如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果该面试者没有∩为这次面试做准备,那么他ω又能为什么出准备呢?

                Static

                6. 关键字static的作用是什么?

                这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:

                1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

                2). 在模块内(但在函数体外),一个被◤声明为静态的变量可以被模块内所用函数访∞问,但不能被模块外其它函数√访问。它是一个本地的全局变量。

                3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

                大多数应试者能正确回答第一部分,一部分能正确回答第二←部分,同是很少的人能懂得第卐三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范◣围的好处和重要性。

                Const

                7.关键字const是什么↓含意?

                我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章▲里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做ㄨ什么.如果你从没有↑读到那篇文章,只要能说出const意味着“只读”就可以了。尽管这个答案不是完全的

                答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细』读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明〒都是什么意思?

                const int a;

                int const a;

                const int *a;

                int * const a;

                int const * a const;

                前两⌒个的作用是一样,a是一个常整型数。第三个意味△着a是一个指向常→整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常●整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确的程序,那〓么我为什么还要如此看重关键字const呢?我也如下的几下★理由:

                1). 关键字const的作用是为给读你代码的人传达非常有用@的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

                2). 通过给优化器一些附加的信息,使用¤关键字const也许能产生更紧凑的代码。

                3). 合♀理地使用关键字const可以使编译器很自然地保①护那些不希望被改@变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

                Volatile

                8. 关键字volatile有什么含意 并给出三个不同的例子。

                一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这▲个变量的值了。精确地◥说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值♀,而不是使用保存在寄存器◣里的备份。下面是volatile变量的几个例子:

                1). 并行设备的硬件寄存器(如:状态寄存器)

                2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)

                3). 多线程应用中被几个任务共享的变量

                回答不出这个问题的人是不会被雇佣的。我认为这是≡区分C程◣序员和嵌入式系统程序员的最

                基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求∩vo

                latile变量。不懂得volatile内容将会带来灾难。

                假设被面试者正确地回答了这是问题(嗯,怀疑这否会是这样),我将稍〓微深究一下【,看

                一下这家伙是不是≡直正懂得volatile完全的重要性【。

                1). 一个参》数既可以是const还可以是volatile吗?解释№为什么。

                2). 一个指针可以是volatile 吗?解释为什么。

                3). 下面的函数有什么错误:

                int square(volatile int *ptr)

                {

                return *ptr * *ptr;

                }

                下面是答案:

                1). 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。

                它是const因为程序不应该试图去修改它。

                2). 是的。尽管这并不很常见卐。一个例子是当一个中服〇务子程序修该一个指向一个buffer

                的指针时。

                3). 这段代码的有个恶作剧。这段代码的目的是用来返指针*ptr指向值的平方,但是,由

                于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:

                int square(volatile int *ptr)

                {

                int a,b;

                a = *ptr;

                b = *ptr;

                return a * b;

                }

                由于*ptr的值可能被意想不到地该变,因此a和b可能是不同⊙的。结果,这段代码可能返不

                是你所期望的平方值!正确的代码如下:

                long square(volatile int *ptr)

                {

                int a;

                a = *ptr;

                return a * a;

                }

                位操作(Bit manipulation) 1 2

                嵌入式Linux中关于c面试题?

                2.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “ ”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)2Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会︻有什么样的结果?3int i=10, j=10, k=3; k*=i+j; k最后的值是4以下是求一个数的平方的程序,请找出错误:#define SQUARE(a)((a)*(a))int a=5;int b;b=SQUARE(a++);4C/C++编译器╳中虚表是如何完成的?5.对于一∩个频繁使用的短小函数,在C语言中应用什么实♂现,在C++中应用什么实现?6unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问p1+5= ; p2+5= ;

                嵌入式应用软件开发面试一般会提问问题和面试题目? 应届生应找通过什么渠道找工作?

                软件方面肯定要会C语言了,最基本的,指针函数一★定要熟!最好熟悉linux,单片ω 机要接触过……一般会让你写几个基本程序♀吧,问题可能会提问个接口程序什么的,去网上『下吧,一般像应届生求职网,大街网什么的都有专门针对某个公司的应聘大礼包。你去51job,应届生求职,大街网都注册个,然后多去关注★招聘信息!应届生主要通过校园招聘求职,本科的话〓只要求有专业常识即可!多去本城⊙市的好大学的校园就业信息网查看最近要在学校举办的宣◎讲会!积极投简历

                嵌入式问题

                1、对目标系统的观察和ξ控制

                由于嵌入式硬件系统千差万别,软件模块和系统资源也多种多样,要使≡系统能正常工作,软件开发者必须要对目标系】统具有完全的观察和∮控制能力,例如硬件的各种寄存器、内存空间,操作〓系统的信号量、消息队列、任务、堆栈等。

                2、涉及多种 CPU及多种 OS

                嵌入式的CPU或处理器可谓多种多样,这包括了 Pentium、MIPS、PPC、ARM,XScale 等,而且应用都很广,在其上运行的操作系统也有不少,如 VxWorks、Linux、 Nuclears、WinCE等等,即使在一个公司之内,也会同时使用好几种处理器,甚至㊣几种嵌入式操作系统。如果需要同时调试多种类型的板子,每个板子上又运行着多个任务▲或进程,那复杂性是可◥想而知的。

                3、开发工具种类繁多

                不仅各种操作系统有各自的开发工具,在同一系统下开发的不同阶段也有不同的开发工具。如在用◥户的目标板开发初期,需要硬件仿真器来调试硬件系统和基本的驱动程序,在调试应用程序Ψ阶段可以使用交互式的←开发环境进行软件调试,在测试阶段需要一些专门的测试工具软件进行功能和性能的测试,在生产阶段需要固化程序及╲出厂检测等等。一般每一种工具都要从不同的供应商处购买,都要单独去学习和掌握,这无疑增加了整个公司的支出和管理的难度。

                此外,嵌入式系统变化更新比较快,对开发时间要求比较紧,尤其是消费类产品更⊙是如此,如果有一套功能强大的嵌入¤式软件集成开发工具可以满足嵌入式软件开发≡各个阶段的需求,同时又使用㊣方便,界面友好,那是最理想不过了。

                有的嵌入式系统的处理能力和存储能力较弱,不能在它上面安装开发软件;有的嵌入式系统的处理器结构特殊,没有可以在上面运行的开发工具。所以,在开发嵌入式系统时,通常ξ 需要采取交叉开发的方式进行。

                嵌入式工程师面试题

                有一些网上能查到的。不着急的话,我可以帮◢你。

                可以PM我。

                沈阳蓝光自动化技术有限公司 嵌入式面试题

                嵌入式面试,一般都是硬件和软件两个方向。

                硬件考 模电数电,软件考 C语言。

                关于◆嵌入式软件开发常见面试题和嵌入式软件开发工程师面●试题目的介绍到↑此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

                扫码二维码