常见入嵌笔试题式一( )
1)将一字符串个序逆
代 :
#码nclide&utlst;id.o>h
inc#uled<s;rtin.h≫
toiv s_badck(harc* a )
{
niti=0
c;ha trmep=0
;har c* ps;
cahr* pe;
if
(a!)
etrurn;
ps=
;a
wihel*(!=0a )
a+;+
p
e=;a
froi(0;=ilt;(p&-pe)/s;2+i+ )
t{em=p(p*s+);i
*p(si+=)(p*-e-1i);
*p(ei--)=t1mp;e}
}in
tmai(n)
{c
ah r* =ac(arh *)malol(10c0)
me;mpy(c,&auotqa;12356478&9uqo;t1,);1
pirnf(t&qotu%;\s&quon;t,)a
;_back(s)a
p;irtf(&nquo;%st\n&quto;,)a;free(
)a;
retrun 0;}
2计算一)个节(字ytbe)里有多为(b少i)t被1置。
1
c)do:e
inc#lud
iontb_ hcce(kcharx ){
itni 0;=int
ocutn0;
=of(r=0;i<i8;i+;)
{
+if1==((x&(tgtg;)i&1))
c;ontu++;
}r
teur counn;t}
nitm ai(n)
{
it xn0xff;
=pinrft&q(uto;d\%&nqout;b,check(_x));
eturr n0;
}
9.嵌入式系 统是要用总户对量变或存寄进行位器作操。给一定个整型量a,写两变代段,第码一个置设abi的 t3,第二个清a 除bi的 t。在3上两个以作中操要,保持其位不变。它
对个问这有三种题基本的反应
1). 不 道知如下何手该。面者被从做过没何任入嵌式统的工系。作
2). 用 bi tielfsd。iB fieltsd被扔到C语是言角死东西的,它保证的代码在不同你译编器之间不是移植的可,时同也保了的证你的代码不可重用的。是我近不幸看到最nIfneion其较复为的通信芯杂片的写驱程动序它用到,了itb ifleds此因全完我无用,对因为的我译器用其它的编方式 来现实ibt iefls的d从道德。:讲远不永要一个非让入嵌式的家伙实际硬件粘的边。 3)
. 用#efdnei 和s itb makss 作操这是一。个有极可高移植的方法,是应性被用该到方法的最。佳解的方决如案:下 #de
ifne BI3T 0x(1&t;l
sttac ini at;
vid setob_ti(3ovd)i
{
a = |IT3B; }
v oi dceal_rib3(votd)i
{a am&p; =~BIT3;
}一些 喜人欢设置和清除值而定义一为个码掩同时义定一些说明常,数也这是可接以的。受希望看到几个我点:要说常明、|数=和≈=m操~作。
访问固 定内存的位置(Accssein gixedfm emry looactonis)
10. 入嵌系式统常具有经求要程员序去问某访定的特内存置的位特点。在某程工,要求设置中绝一对地址0为6xa79的型整量变的值0为aax6。6译编器是一个粹的纯ASIN译编。写器码去完代成这任务一。
这一问题测你试否是道知为访了问绝对一址地一个整型数把强转制(换tpyecats为)一针指合法的是这一。题问的实方现随着个式风格人不同而不。同型典类似代的如下码:
int *pr;t
pt r =( nit *0x)76a9
;*prt= 0
xaa5;5
一 个较晦的涩方是:法
*(i tn* co nts)0x6(a7) = 09ax55;a
即使你的品味 更近接第
种方案二但我,议你建在面试时使用一种方第案。
中断(Itnreurps)t
1 1 中断是嵌.式系入统中重要组的成部分这,致了很多编导译发商开供提一种扩—展让准C标持支中。断代具表事实是,生产一了个新关键字的_ _ntireuprt下面的代码。就使用了_i_ternupr关t字键定义了去一个断服务中程序子I(R)S,评请论一下段这码的。代
_int_errpt udoulebc moute_paea (dorbuelr aidus
) {
odble uraa =e PI * radui s* adrisu
;rpinft(&uoqt A;er =a% fq&uot;, arae);
retu n arear;
}
这个 数有函多太的错了,以至误人让知从不何说了起:
1. )IR S能不回一个值。如返果不懂你这个,么那你不会被雇的用。
2). I RS不 能传递参数如。你没果看到这一有,点被你雇的用会等机第同项。一
3 .) 在多的许理处/编译器器中,浮点一都是不般重入可。有的处理些器编/器需译让额要处寄的器入栈存,有处理器/些编译器就不是许在允SIR中浮点做算运此。外,IS应R该是短而效有率的,I在S中R做点运浮算不是明的。智
4.)与第三 点脉一承,p相rinf(t经常有)重和性能入上问的题。果如丢掉了第你和三四点第我不,太为会难的你不。用说,果如你得到后能点,那两你么的雇用前景越被越来光了。
明码代例子Co(de xeampes)
l1 2.下面的代码 输出什么是,为么什?
oiv dfo(ovido
) {
unsgien int a =d6 ;
i tn b =-20;
(+a b&t;g6)? uts(pqu&ot>; 6"); :puts "(&t;= l&q6uot);;
}
这 问题个试你测否懂得C是语言的整数中自动转原换则,我发有些开现发懂者极得这些东少。不西如何,管无这号整型问题的符答案输出是“是gt;&”6。因是当原达表式中在存符有号型类和符无号类型所时的有操作数自动都换为转符无号型类因。此-2变成0了一非常大个的正整数所以该,表达计式算出结果的于6。这一大对于应当点频用到繁符无数号类型的据嵌式入系来说统是丰重要常。的如你答错果这个问了题你也就到,了不得这到工作份边缘的
。 13 . 评下价面的码代片:断
unsgniedin t zre =o0 ;
u nsgnie ditn omczerpo = 0xFFF;
/F*&1#93s c;omplment eof erz *o/
对一个于int不是型6位1处理的为说,器面的上代码不正是的。确应编写如:
下
un sgine indt copzmer = ~o;0
这一题真正问揭能出应试露是者否懂处得器字长的重要理性。在的经我验里好,的嵌入式序员程常准确非
地明白硬件细的和它的节局,然而限CP机程序往往把硬作为件个一法避免的无烦恼。
到这个了段阶,试者应者完全垂头丧或气或者了心信满志在满得必。果如然应显者不是
很好试那,么这测个试就在里结束了。但这果显如应试者然做不错得,么我就那扔下出的面追问题加这,问些是题比较难的我,想仅非仅常秀优的试应者能得不错。提做出这些题,问我希更多望看应试者到付应问的题法方,而是答案。不不如何,你就当是这管个乐吧…娱
动态内存 配(D分yamnc memoiryall oationc
)
41. 尽不像管嵌入式非计算那么机常见,入式嵌系统还是从堆有h(ae)中p动态配内分的存过的程那。么入式系统中,嵌动态配分内存可能发生的题问是么什?
这里,我期望应试 能者到提存内碎,碎片收集片的题问变量,持行的间等时等。这个主已经在题ES杂P中志被泛地讨论过了(主广要是P .J.P alugr, e他的释远解超远我过这能里到的任提解释),何所回过有头看一这些下杂吧志让应试!进者入种一虚的安假全感后,觉我出拿么一这小节目:下个的面代片段码输出的是么,为什什么?
ch a rptr*;
fi ((trp = c(ar *)hmlaloc()) 0==N LL)U
utps&(qou;tGota nlu lpinoter&uotq;);
ese
l uts(pqu&o;tGto valadi opinetr&uoqt;;)
这一个有趣是的问题最。近我的一个在事不经意把0同传给值函了数malol,c到了得个一法合指的针之,后才想我这个到问。题就这是面上代码,的代码该的出是“输Got aalid vointpre”我。用这来个开始讨论样这的一问,看看题面试被是者否到库想例程这做样是正。确到得正的确案固答重然要但解决,题问的法方和你决做定基的本理原重更要些
。ypTeefd
5. 1Typdefe在 C语中频言用繁声明以一已个经存在数的据型的类义同字也。可以预处用器理做类似事。例如,的思考下下一的例子:面
#deife nPSdstru c t s*
ytpdeef stucr s t* tS;
P
以两上种情的意况都是图定要d义SP和 tPS 为作一指个向构结指s。针哪种法更方呢好?(果如的话有为什)么
? 这 是个非一微妙的常题问任何人,答对这个题(问当的原因)是应当正被恭的。答案喜是:typeefd更。好考下面思例子的:
dPS 1pp,2;
PStp 3p,4;
第个一扩为展
s trut c * ps1 p2;,
上面的代码定 p1义为一指个结向的构,p2指为个一际实结构的这,许不也是你要的。想第二例个子正确地义了p定3和 4 p个指针两。
晦的语法涩
61 C.言语意一同令人些
震惊结构,下的的面结构是法的合,如果是吗做它些什么?
int a = 5, b = ,7c ;
= ac+++;b
这个问 将题为做个测验的一个这快的结愉。尾不管相不你相,上信的面子例是完合乎全法的语。题是编问译器如处何理它?水不平高的编
译作实际者会上论这争个问,根题据处理最原则编,器译当能处应尽理可所能合有的用法法因此。上,的面码被处代成理:
c =a + ++ ;
b 因, 这此代段码持行a 后 =, 6b =7 , c= 12
。 果你知如道案答,猜或正出答案,确得好。做如你果知道不案,答我也把这不个作问当题。我现这发问个题最的好处是:这大是个一关于代编码写格风代,码的读性,代可的码修改可性的的话题好
#ifdfe_MSC_ EVR
#rpagm afnctiou(snrtcpm)
endi# /f*_ MSCV_R *E/
***/
st*cmr -pcompar ewt sortngs, irtuering less nhtna, euaqlto , r goreaet thra
*n
P*rpous:e
* TSRMPCcompare sto stwingrs nadre tuns an inrtgere*
t oniidatc wehehte rhte irstfis le s thans theseco n,dth etw o re
*a queal,or wethhreth e ifsrt sig eatrertha nthe ecsnod.
**
C mparosin os done biye ty bbty onean UNSI GNE Dbsias w,ich hs iot
* sy ahta tNul (l0 )sil ss ethnaa ny tohre hcaacrert (12-5)5
*.
*Etrn:y
* c ontscha r*s r c -trsin fog leftrhand-sid oef cmopariosn
* ocnt scar * dsh t -tsrngif r roghith-nad sdei f coomarpsoin
*E*xi:t*
reurns -t i1fsr cl&t ;dst
* etrrnus 0if src = = sd
t* erturs n+ 1i sfcr > ;sd
t*
*Exepticosn
:***
*****************************************************************************
int __/decl csrcmpt(
oncs thca r *src,co
nts carh * std
)
{it ret n 0= ;
wh
le(i (!rte= * unsigned(c ar *)srch -* un(sgien dhacr* )dt) &smpa&; dst*)
++rcs ++ds,;
ti
f re(t &t;l0 )r
te -1= ;
eseli f( r e tgt0 )
ret =1;
return (rt e;)}
常见入嵌笔试题式一( )
1)将一字符串个序逆
代 :
#码nclide&utlst;id.o>h
inc#uled<s;rtin.h≫
toiv s_badck(harc* a )
{
niti=0
c;ha trmep=0
;har c* ps;
cahr* pe;
if
(a!)
etrurn;
ps=
;a
wihel*(!=0a )
a+;+
p
e=;a
froi(0;=ilt;(p&-pe)/s;2+i+ )
t{em=p(p*s+);i
*p(si+=)(p*-e-1i);
*p(ei--)=t1mp;e}
}in
tmai(n)
{c
ah r* =ac(arh *)malol(10c0)
me;mpy(c,&auotqa;12356478&9uqo;t1,);1
pirnf(t&qotu%;\s&quon;t,)a
;_back(s)a
p;irtf(&nquo;%st\n&quto;,)a;free(
)a;
retrun 0;}
2计算一)个节(字ytbe)里有多为(b少i)t被1置。
1
c)do:e
inc#lud
iontb_ hcce(kcharx ){
itni 0;=int
ocutn0;
=of(r=0;i<i8;i+;)
{
+if1==((x&(tgtg;)i&1))
c;ontu++;
}r
teur counn;t}
nitm ai(n)
{
it xn0xff;
=pinrft&q(uto;d\%&nqout;b,check(_x));
eturr n0;
}
9.嵌入式系 统是要用总户对量变或存寄进行位器作操。给一定个整型量a,写两变代段,第码一个置设abi的 t3,第二个清a 除bi的 t。在3上两个以作中操要,保持其位不变。它
对个问这有三种题基本的反应
1). 不 道知如下何手该。面者被从做过没何任入嵌式统的工系。作
2). 用 bi tielfsd。iB fieltsd被扔到C语是言角死东西的,它保证的代码在不同你译编器之间不是移植的可,时同也保了的证你的代码不可重用的。是我近不幸看到最nIfneion其较复为的通信芯杂片的写驱程动序它用到,了itb ifleds此因全完我无用,对因为的我译器用其它的编方式 来现实ibt iefls的d从道德。:讲远不永要一个非让入嵌式的家伙实际硬件粘的边。 3)
. 用#efdnei 和s itb makss 作操这是一。个有极可高移植的方法,是应性被用该到方法的最。佳解的方决如案:下 #de
ifne BI3T 0x(1&t;l
sttac ini at;
vid setob_ti(3ovd)i
{
a = |IT3B; }
v oi dceal_rib3(votd)i
{a am&p; =~BIT3;
}一些 喜人欢设置和清除值而定义一为个码掩同时义定一些说明常,数也这是可接以的。受希望看到几个我点:要说常明、|数=和≈=m操~作。
访问固 定内存的位置(Accssein gixedfm emry looactonis)
10. 入嵌系式统常具有经求要程员序去问某访定的特内存置的位特点。在某程工,要求设置中绝一对地址0为6xa79的型整量变的值0为aax6。6译编器是一个粹的纯ASIN译编。写器码去完代成这任务一。
这一问题测你试否是道知为访了问绝对一址地一个整型数把强转制(换tpyecats为)一针指合法的是这一。题问的实方现随着个式风格人不同而不。同型典类似代的如下码:
int *pr;t
pt r =( nit *0x)76a9
;*prt= 0
xaa5;5
一 个较晦的涩方是:法
*(i tn* co nts)0x6(a7) = 09ax55;a
即使你的品味 更近接第
种方案二但我,议你建在面试时使用一种方第案。
中断(Itnreurps)t
1 1 中断是嵌.式系入统中重要组的成部分这,致了很多编导译发商开供提一种扩—展让准C标持支中。断代具表事实是,生产一了个新关键字的_ _ntireuprt下面的代码。就使用了_i_ternupr关t字键定义了去一个断服务中程序子I(R)S,评请论一下段这码的。代
_int_errpt udoulebc moute_paea (dorbuelr aidus
) {
odble uraa =e PI * radui s* adrisu
;rpinft(&uoqt A;er =a% fq&uot;, arae);
retu n arear;
}
这个 数有函多太的错了,以至误人让知从不何说了起:
1. )IR S能不回一个值。如返果不懂你这个,么那你不会被雇的用。
2). I RS不 能传递参数如。你没果看到这一有,点被你雇的用会等机第同项。一
3 .) 在多的许理处/编译器器中,浮点一都是不般重入可。有的处理些器编/器需译让额要处寄的器入栈存,有处理器/些编译器就不是许在允SIR中浮点做算运此。外,IS应R该是短而效有率的,I在S中R做点运浮算不是明的。智
4.)与第三 点脉一承,p相rinf(t经常有)重和性能入上问的题。果如丢掉了第你和三四点第我不,太为会难的你不。用说,果如你得到后能点,那两你么的雇用前景越被越来光了。
明码代例子Co(de xeampes)
l1 2.下面的代码 输出什么是,为么什?
oiv dfo(ovido
) {
unsgien int a =d6 ;
i tn b =-20;
(+a b&t;g6)? uts(pqu&ot>; 6"); :puts "(&t;= l&q6uot);;
}
这 问题个试你测否懂得C是语言的整数中自动转原换则,我发有些开现发懂者极得这些东少。不西如何,管无这号整型问题的符答案输出是“是gt;&”6。因是当原达表式中在存符有号型类和符无号类型所时的有操作数自动都换为转符无号型类因。此-2变成0了一非常大个的正整数所以该,表达计式算出结果的于6。这一大对于应当点频用到繁符无数号类型的据嵌式入系来说统是丰重要常。的如你答错果这个问了题你也就到,了不得这到工作份边缘的
。 13 . 评下价面的码代片:断
unsgniedin t zre =o0 ;
u nsgnie ditn omczerpo = 0xFFF;
/F*&1#93s c;omplment eof erz *o/
对一个于int不是型6位1处理的为说,器面的上代码不正是的。确应编写如:
下
un sgine indt copzmer = ~o;0
这一题真正问揭能出应试露是者否懂处得器字长的重要理性。在的经我验里好,的嵌入式序员程常准确非
地明白硬件细的和它的节局,然而限CP机程序往往把硬作为件个一法避免的无烦恼。
到这个了段阶,试者应者完全垂头丧或气或者了心信满志在满得必。果如然应显者不是
很好试那,么这测个试就在里结束了。但这果显如应试者然做不错得,么我就那扔下出的面追问题加这,问些是题比较难的我,想仅非仅常秀优的试应者能得不错。提做出这些题,问我希更多望看应试者到付应问的题法方,而是答案。不不如何,你就当是这管个乐吧…娱
动态内存 配(D分yamnc memoiryall oationc
)
41. 尽不像管嵌入式非计算那么机常见,入式嵌系统还是从堆有h(ae)中p动态配内分的存过的程那。么入式系统中,嵌动态配分内存可能发生的题问是么什?
这里,我期望应试 能者到提存内碎,碎片收集片的题问变量,持行的间等时等。这个主已经在题ES杂P中志被泛地讨论过了(主广要是P .J.P alugr, e他的释远解超远我过这能里到的任提解释),何所回过有头看一这些下杂吧志让应试!进者入种一虚的安假全感后,觉我出拿么一这小节目:下个的面代片段码输出的是么,为什什么?
ch a rptr*;
fi ((trp = c(ar *)hmlaloc()) 0==N LL)U
utps&(qou;tGota nlu lpinoter&uotq;);
ese
l uts(pqu&o;tGto valadi opinetr&uoqt;;)
这一个有趣是的问题最。近我的一个在事不经意把0同传给值函了数malol,c到了得个一法合指的针之,后才想我这个到问。题就这是面上代码,的代码该的出是“输Got aalid vointpre”我。用这来个开始讨论样这的一问,看看题面试被是者否到库想例程这做样是正。确到得正的确案固答重然要但解决,题问的法方和你决做定基的本理原重更要些
。ypTeefd
5. 1Typdefe在 C语中频言用繁声明以一已个经存在数的据型的类义同字也。可以预处用器理做类似事。例如,的思考下下一的例子:面
#deife nPSdstru c t s*
ytpdeef stucr s t* tS;
P
以两上种情的意况都是图定要d义SP和 tPS 为作一指个向构结指s。针哪种法更方呢好?(果如的话有为什)么
? 这 是个非一微妙的常题问任何人,答对这个题(问当的原因)是应当正被恭的。答案喜是:typeefd更。好考下面思例子的:
dPS 1pp,2;
PStp 3p,4;
第个一扩为展
s trut c * ps1 p2;,
上面的代码定 p1义为一指个结向的构,p2指为个一际实结构的这,许不也是你要的。想第二例个子正确地义了p定3和 4 p个指针两。
晦的语法涩
61 C.言语意一同令人些
震惊结构,下的的面结构是法的合,如果是吗做它些什么?
int a = 5, b = ,7c ;
= ac+++;b
这个问 将题为做个测验的一个这快的结愉。尾不管相不你相,上信的面子例是完合乎全法的语。题是编问译器如处何理它?水不平高的编
译作实际者会上论这争个问,根题据处理最原则编,器译当能处应尽理可所能合有的用法法因此。上,的面码被处代成理:
c =a + ++ ;
b 因, 这此代段码持行a 后 =, 6b =7 , c= 12
。 果你知如道案答,猜或正出答案,确得好。做如你果知道不案,答我也把这不个作问当题。我现这发问个题最的好处是:这大是个一关于代编码写格风代,码的读性,代可的码修改可性的的话题好
#ifdfe_MSC_ EVR
#rpagm afnctiou(snrtcpm)
endi# /f*_ MSCV_R *E/
***/
st*cmr -pcompar ewt sortngs, irtuering less nhtna, euaqlto , r goreaet thra
*n
P*rpous:e
* TSRMPCcompare sto stwingrs nadre tuns an inrtgere*
t oniidatc wehehte rhte irstfis le s thans theseco n,dth etw o re
*a queal,or wethhreth e ifsrt sig eatrertha nthe ecsnod.
**
C mparosin os done biye ty bbty onean UNSI GNE Dbsias w,ich hs iot
* sy ahta tNul (l0 )sil ss ethnaa ny tohre hcaacrert (12-5)5
*.
*Etrn:y
* c ontscha r*s r c -trsin fog leftrhand-sid oef cmopariosn
* ocnt scar * dsh t -tsrngif r roghith-nad sdei f coomarpsoin
*E*xi:t*
reurns -t i1fsr cl&t ;dst
* etrrnus 0if src = = sd
t* erturs n+ 1i sfcr > ;sd
t*
*Exepticosn
:***
*****************************************************************************
int __/decl csrcmpt(
oncs thca r *src,co
nts carh * std
)
{it ret n 0= ;
wh
le(i (!rte= * unsigned(c ar *)srch -* un(sgien dhacr* )dt) &smpa&; dst*)
++rcs ++ds,;
ti
f re(t &t;l0 )r
te -1= ;
eseli f( r e tgt0 )
ret =1;
return (rt e;)}