|
发表于 2009-2-13 13:13:11
|
显示全部楼层
Post by 冰原子;1888536
最近刚刚升任嵌入式软件研发主管,急需招兵买马。
1、LINUX下的Socket套接字和Windows下的WinSock有什么共同点?
2、请编写一个标准Shell脚本testd,实现如下功能:
A、在Linux操作系统启动的时候,自动加载/mnt/test/test程序。
B、当test异常退出之后,自动重新启动。
C、当test程序重启次数超过100次,自动复位操作系统。
假设你所拥有的资源:
A、目标机器是一台具有标准shell的嵌入式计算机,CPU为ARM7 56MB,内存16MB,软件环境基于Linux2.6.11和BusyBox1.2构建。
B、当前已有11个用户进程在运行,占用了大部分的CPU时间和内存,你可使用的内存只有2MB左右,CPU时间由系统分派。
(本题满分20分,程序15分,注释5分。程序不能运行的0分,能够运行但有BUG的10分,能够正确无误的运行的15分。清楚编写注释的5分。)
本题是考查LINUX和嵌入式编程功底的,写出程序来的不少,但是95%以上的人竟无视我假设的资源,不知道在重启test程序的时候需要加上一个适当的掩饰时间,以便资源紧张的操作系统有时间回收资源。85%的人不知道写完testd之后,要在init里边加载这个脚本,才能实现启动时自动加载的功能。有人甚至在脚本开头使用bash作为脚本解析器,我已经清清楚楚说明了用“标准shell”!用sh不就完了吗?是习惯作祟吗?
程序员很重要的特质是要认真,注意细节,因为任何细节上的错误都可能造成全盘错误。“适当的掩饰时间”是你的原话,我不知道你想掩饰什么,也不知道程序退出有什么可掩饰的,也不知道前台运行的test完全退出之后还有什么必要掩饰。——如果后台运行的test通过你的消息或者信号打断,你会觉得这跟前台程序主动退出不同么?sleep(3)是一种常见做法,不过你真的明白这里面的真正目的?
既然你刚升任,我有几个建议:
1。象第一题这种废题没有必要出,我面试的大多数人根本没有写过windows程序,许多人平时全部以Linux为生,出这种题目很无聊。中国没有几家企业用WM或者CE开发,Win在中国的嵌入式市场中只占很小的份额。而单个小开发组中,我只需要一两个人接触过 socket 就够了。在200人的团队中,我需要的socket工程师不超过5个。
2。自己的题目绝对不能出错,自己写的程序范本更是不能被抓出小毛病。至于你的例子程序,你看看你的#!/写在了第几行?不知道那个语句仅仅在第一行才有效?其它的错误很多,请你自己慢慢研究,作为主管,一定要用“业界典范”的态度去写例子程序,否则员工更加不会认真写程序。
3。嵌入式系统从我们的理解来说就是定制系统,对于定制系统没有一定之规,因为每个系统都不同,企望每个人都符合你的开发模式不现实。你的程序从我们公司的角度来看有很多不良习惯,并且以前在我们的开发中也经常出现过。如果你是主管,你更要跳出来看看业界是怎么做的,吸取一下经验。引导一下大家用更高效率的方式去做事情。
——必须自己培养,很多时候是因为许多公司有自己的固有方法,并且顽固的相信只有自己的方法是最正确的,如果你不自己培训,你就没办法按照自己的方式做事情,而事实上,你永远无法保证你用的方法就是最正确最好的。 |
|