1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 嵌入式软件开发——嵌入式软件工程师:就职的“门票”

嵌入式软件开发——嵌入式软件工程师:就职的“门票”

时间:2024-07-21 00:29:07

相关推荐

嵌入式软件开发——嵌入式软件工程师:就职的“门票”

原载http://zhouping62./120392067.html

这十年来我一直需要做面试工作,有些年会面试两三百人,少的年份也要面试一百来人。我的工作领域是手机的软件开发,面试的对象是嵌入式软件工程师。这篇短文是为想在“嵌入式软件开发”领域找工作的朋友写的。

作为面试人,我需要在短短的几十分钟的谈话后做出决定。要平衡的是两件事:一是不能漏掉适合于团队的优秀人才,二是需要把不适合(*注1)于团队的人才挡在门外。

对于“合适”与“不合适”,我是考察标准是什么呢?我们找的是专业人才,我会把技能放在首位。技能一般通过简单的测试来了解,判断具备必要的技能后,我会考察个人的追求是否与公司的近期目标匹配、个人能否做到实事求是、沟通合作能力以及应对逆境的能力。

这里只谈“技能”、我把“嵌入式软件开发”工程师的技能分两个方面考察:一是基本技能、二是专业技能。

如何考核基本技能呢?优秀的软件工程师需要具备许多许多基本技能,我重点考核三个方面:

1. C语言

2. 数据结构

3. 操作系统

对于驱动软件开发工程师,我还会考核几个简单的硬件知识。在我看来,这三个方面的技能是做嵌入式软件最起码的底线。这些方面扎实了,公司招进来才具备培训、培养他/她最起码的基础。我面试了接近二千人,录取率在百分之十五到二十之间。在拒录的朋友当中,有接近90%是因为这三个方面不理想,特别是C 语言。

我的标准严了、偏了吗?或许。试题用的是Nigel Jones《想成为嵌入式程序员应知道的0x10个基本问题》里的16道题、原封不动,再加上二个《数据结构》、二个《操作系统》方面的题目,还会问几个GSM协议的简单问题。不幸的是,很多自以为C语言很强的朋友都很少能够答对一半。

举个简单的例子,针对下面这道题:

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

我看到的答案千奇百怪,两个典型的错误答案是:

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

#define MIN(A,B) (A) <= (B) ? (A) : (B) /* 注2 */

写成后一种形式的朋友,有的甚至在嵌入式开发领域工作了五六年。这种类型的错误,编译器是查不出来的。这么一个问题埋在一个大的系统中,就可能出现某个问题。这个问题有时复现、有时不复现,通过测试来找问题的根源,可能一个星期、两个星期都找不到问题的根本原因。

我的结论是,不管是新毕业生还是有工作经验,许多朋友的C语言功底其实并不扎实。尽管许多公司都有自己的《代码规则》(Coding Rules),其实自己并没有用心去理解这些规则的所以然。

换位思考一下,如果我找进公司的人都是向上面的例子这样写代码的人,团队交付的代码中,会有多少炸弹,又要浪费多少测试力量呢?用这样一个例子,我想说明的是C语言、数据结构和操作系统这三项“基本技能”对于嵌入式软件开发工程师来讲十分重要,应该高度的重视。如果把嵌入式软件开发比作一个美丽的公园,那么这三项技能就是进入公园的“门票”。只有拿稳了这张门票,才能够得到入园的资格。

任何一项技能都是练出来的,对于刚毕业的本科生或者硕士生朋友,如果学校课程或者毕业课题中里安排用C语言开发的工作较少,出去应试之前,自己一定要做够充分的练习。我觉得一个较好的方法是把《数据结构》中讲到的所有算法,自己用C语言去实现一遍,要看到自己程序运行出正确的结果。还有一个比较偏门的方法是自己用ANSI C把常用的库函数亲手实现一遍。这样最起码能够把C语言掌握得好一些。当然,如果能够参与到某个开源软件的开发项目中去,就可能得到更加实际的锻炼机会。

今天聊的是基本技能。以后找时间聊专业技能。

注:

1.对于找工作来说,我的看法是:世界上没有不合格公司,也没有不合格的人才;适合于自己的公司就是合格/优秀的公司,适合于公司里那个团队的人才就是合格/优秀的人才。

2.试想用

d = MIN(a,b) / c ;

来调用这个宏时发生的结果。

参考:

1.Nigel Jones:《想成为嵌入式程序员应知道的0x10个基本问题》http://forum./FORUM_POST_1000039272_1200006385_0.HTM?click_from=ForumAlert

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。