发信人: Alexw (心静自然凉), 信区: job
标 题: Re: 昨天凹凸电子的题目谁还记得啊
发信站: 饮水思源 (2004年12月09日22:02:14 星期四), 站内信件
1。费。。。数列的非递归实现
int fabonaci(int i)
{
if(i <= 1)
return 1;
else
return fabonaci(i-1) + fabonaci(i-2);
}
void swap(int& a, int& b)
{
a = (a =a^b ) ^ (b = a^b);
}
int fabonaci_no_rec(int index)
{
int first = 1;
int second = 1;
for(int i = 1; i < index ; i++)
{
first += second;
swap(first, second);
}
if(index == 0) return first;
return second;
}
2。const的作用
3。二叉树广度遍历
层次遍历,用一个队列实现。
先将根节点加入队列,然后进入while循环,条件为队列为空。
Get队列,将其子节点put队列
4。如何在32位机上实现128除法
5。软件测试的目的和方法
什么是软件测试
·软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程
,
所谓控制条件应包括正常条件与非正常条件。
·软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是“探测”,在“探测”中发现软件的毛病。
·软件测试贯穿于软件定义与开发的整个周期
,软件的需求规格说明书
,结构设计及程序编码,都属于软件测试的对象。
·软件测试包含白盒测试与黑盒测试,白盒测试是针对程序代码进行正确性检验的测试工作,黑盒测试独立于程序代码,从用户的角度,通过一定的测试步骤与测试案例,验证软件功能、
性能等指标能否满足实际应用需求的测试工作。
软件测试的目的
软件测试的目的是为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。一般来说软件测试应由独立的产品评测中心负责,严格按照软件测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。测试是为了证明程序有错,而不能保证程序没有错误。
凹凸电子软件笔试
(
发表时间
:2004-11-22 13:30:52 )
|
楼主
|
1.
Select ONE of the following projects to discuss:
a. Signal Filtering: You are given a sampled realtime waveform consisting of a sensor reading mixed with highly periodic impulses and high frequency noise.The desired output is the realtime filtered sensor signal with the impulses and noise removed, and a readout of the impulse period. The FFT may not be used.
b. Interrupt Processing.A headware register consisting of eight independent edge triggered latches is used to record external asynchronous interrupt requests. When any of the request bits are latched, a software interrupt is generated. The software may read the latch to see which interrupt(s) occurred. Writing a one to any latch bit will clear the latch. How does that software assure that no interrupt request is ever missed?
c. User Interface: a prototype MP3 player interface consisting of a playlist display and a few control buttons is given to you. How would you make the interface “skinnable”,with user selected graphics, options, and control button placement?
Each project description is incomplete. What questions would you ask to completely specify the project? What development tools would you prefer to use? What algorithm /data structures/design would you use?
2. What program(s) have you coded for you own enjoyment (not part of a school project,not for pay). What type of software project would you most enjoy working on?
3. Have you participated in a team programming project? What is the hardest part of programming as a team, as opposed to programming alone
发信人: dragonlong (龙的传银), 信区: Career
标 题: 凹凸电子的笔试题目-Linux Software Engineer
发信站: BBS 水木清华站 (Sat Oct 30 17:11:47 2004), 站内
1:一个函数如下
char *f()
{
char a[5];
char b[5];
a[0]='a';
a[1]='b';
a[2]='c';
a[3]='d';
a[4]='e';
strcpy(b,a);
return b;
}
请问:一:该函数中用a作为一个字符串是否存在问题?
二、该函数返回的b是否可用,为什么?
有问题,没有结束符
/0
不可用,局部变量
2:函数如下
void f()
{
char *a;
a=(char*)malloc(5);
strcpy(a,"abc");
a="cde";
free(a);
}
请问:该函数存在哪些问题?
a="cde"
使得
a
指向静态分配区的
cde
,然后用
free
的话会导致内存出错
Linux问题测试
3:从internet上得到一个Linux Kernel的软件包linux-2.4-20.tz请写出将其编译安装的过程。
Cp linux-2.4-20.tz /usr/src
Tar xvf linux-2.4-20.tz
Cd linux-2.4-20
Make memuconfig
Make dep;
Make bzImage;
Make modules;
Make modules_install;
Make install
4
:请问
802.1d
是什么协议的标准,它处在第几层?
生成树协议(
Spanning Tree
)定义在
IEEE 802.1D
中,是一种链路管理协议,它为网络提供路径冗余同时防止产生环路。为使以太网更好地工作,两个工作站之间只能有一条活动路径。网络环路的发生有多种原因,最常见的一种是有意生成的冗余
-
万一一个链路或交换机失败,会有另一个链路或交换机替代。
5:在Linux编程中若一个用户程序希望将一组数据传递给Kernel有几种方式?他们的优缺点是什么?
网络测试题目:
6:什么是基于状态的防火墙?
7:什么是伪UDP头,它的作用是什么?
8:如图所示的网络拓扑:
PC1
GW PC2
------
------------ ------
|
| | | | | | |
|
|<--------->| | | |<------->| |
------
------------ ------
192.168.3.2 192.168.3.1 192.168.4.1
192.168.4.2
请问如果欲使PC1顺利访问PC2,在PC1和PC2需要加入什么样
的路由,假设PC1和PC2采用的是Linux系统,请用命令的形式
写出这个路由的添加命令。
凹凸电子firmware/software engineer笔试题目(俺的处女笔试,赫赫)
1: 每个嵌入式系统都有只读存储器eprom之类的,请问rom中有些什么,如何布局
2: 请描叙bootloader的主要功能和执行流程
3: 简要分析嵌入式系统的体系结构
4: 列出linux文件系统的目录结构
5: 将变量a进行移位操作,首先设置a的第3位为1,然后清除a的第3位
6: void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
:程序崩溃。
因为
GetMemory
并不能传递动态内存,
Test
函数中的
str
一直都是
NULL
。
strcpy(str, "hello world");
将使程序崩溃。
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
:
可能是乱码。
因为
GetMemory
返回的是指向“栈内存”的指针,该指针的地址不是
NULL
,但其原现的内容已经被清除,新内容不可知。
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
(
1
)能够输出
hello
(
2
)内存泄漏
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:
答:篡改动态内存区的内容,后果难以预料,非常危险。
因为
free(str);
之后,
str
成为野指针,
if(str != NULL)
语句不起作用。
5.>c语言中静态链接库、动态链接库、共享链接库有何区别?
所谓
"
程序库
"
,简单说,就是包含了数据和执行码的文件。其不能单独执行,可以作为其它执行程序的一部分,来完成执行功能。库的存在,可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。
程序库可分三类:静态库,共享库和动态加载库。
静态库,是在执行程序运行前就已经加入到执行码中,在物理上成为执行程序的一部分;共享库,是在执行程序启动时加载到执行程序中,可以被多个执行程序共享使用。动态加载库,其实并不是一种真正的库类型,应该是一种库的使用技术,应用程序可以在运行过程中随时加载和使用库。
建议库开发人员创建共享库,比较明显的优势在于库是独立的,便于维护和更新;而静态库的更新比较麻烦,一般不做推荐。然而,它们又各有优点,后面会讲到。在
C++
编程中,要使用动态加载技术,需要参考文章
"C++ dlopen MINI-Howto"
。
2.
静态库
静态库可以认为是一些目标代码的集合。按照习惯,一般以
".a"
做为文件后缀名。使用
ar(archiver)
命令可以创建静态库。因为共享库有着更大的优势,静态库已经不被经常使用。但静态库使用简单,仍有使用的余地,并会一直存在。
静态库在应用程序生成时,可以不必再编译,节省再编译时间。但在编译器越来越快的今天,这一点似乎已不重要。如果其他开发人员要使用你的代码,而你又不想给其源码,提供静态库是一种选择。从理论上讲,应用程序使用了静态库,要比使用动态加载库速度快
1-5%,
但由于莫名的原因,实际上可能并非如此。由此看来,除了使用方便外,静态库可能并非一种好的选择。
6.>定义一个宏,实现两个字符串共享?
7.>实现循环双向链表,增加、删除、查找?
发信人: drunkalone (考研ed猪), 信区: Job
标 题: 凹凸的Firmware/Software Engineer的笔试题
发信站: 武汉白云黄鹤站 (2005
年10月14日21:35:08 星期五), 站内信件
1、嵌入式系统一般有ROM,问ROM里面一般存放什么东东,如何布局。
2、bootloader的主要功能和执行流程。
3、简要分析嵌入式系统的体系结构
4、linux文件系统的主要目录及其功能
5、两个比较简单的编程,已知整形数a,写两段代码,分别对其第三位置0和置1,
要求不能改变其他位。
Int C =1;
C = c << 3;
6、看函数写执行结果,关于str的,比较简单,精华区里面《基本的面试题目》好
像有类似的原题。:)
整体感觉比较简单,但前几个题目个人感觉太笼统,面试的时候问比较好。
发信人: leishui (永失吾爱), 信区: Job
标 题: o2 Firmware今天武大的试题
发信站: 武汉白云黄鹤站 (2005
年10月15日23:14:47 星期六), 站内信件
1. 一个嵌入式系统从软件的角度看通常可以分为哪几个层次?试解释之。
2. 请画出你熟悉的嵌入式系统物理内存映像(Memory Map)并作解释。
3. Linux Kernel的C代码入口函数是什么?试简述其功能。
4. 列举你熟悉的Gcc编译选项并作解释。
-h
-l
5. a)下面的代码输出是什么,为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b>6)?puts(">6"):puts("<=6");//puts为打印函数
}
>6,
都先转化成无符号整型
b)运行下面的函数会有什么结果?为什么?
void foo(void)
{
char string[10],str1[10];
int i;
for(i=0;i<10;i++)
{
str1[i] = 'a';
}
strcpy(string, str1);
printf("%s",string);
}
程序崩溃,没有结束符
6. 编写strcpy函数
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
a)不调用C++/C的字符串库函数,请写出函数strcpy。
b)strcpy能把strSrc的内容复制到strDest,为什么还要char* 类型的返回值?
char *strcpy(char *strDest, const char *strSrc)
{
While(*strDest++ = *
}
有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值
char str[20];
int length = strlen( strcpy(str, “Hello World”/DownloadFiles/a/2005-03-14/) );