嵌入式软件面试题

时间:2024-10-02 06:45:46 嵌入式培训 我要投稿
  • 相关推荐

2017年嵌入式软件面试题

  嵌入式系统是当前最热门、最具发展前途的IT应用领域之一。那么关于嵌入式工程师考试你知道多少呢?下面跟yjbys小编一起来看看吧!

2017年嵌入式软件面试题

  1、请写出你所知道的C语言关键字。

  auto :声明自动变量

  switch :用于开关语句

  case:开关语句分支

  break:跳出当前循环

  default:开关语句中的“其它”分支

  continue:结束当前循环,开始下一轮循环

  goto:无条件跳转语句

  do :循环语句的循环体

  while :循环语句的循环条件

  if:条件语句

  else :条件语句否定分支(与 if 连用)

  enum :声明枚举类型

  union:声明共用数据类型

  extern:声明变量是在其它文件中声明

  for:一种循环语句

  register:声明寄存器变量

  return :子程序返回语句(可以带参数,也可不带参数)循环条件

  sizeof:计算数据类型长度

  static :声明静态变量

  struct:声明结构体变量或函数

  typedef:用以给数据类型取别名

  unsigned:声明无符号类型变量或函数

  void :声明函数无返回值或无参数,声明无类型指针

  volatile:说明变量在程序执行中可被隐含地改变

  short :声明短整型变量或函数

  signed:声明有符号类型变量或函数

  char :声明字符型变量或函数

  float:声明浮点型变量或函数

  int: 声明整型变量或函数

  long :声明长整型变量或函数

  const :声明只读变量

  double :声明双精度变量或函数

  2、IPv4把所有的IP地址分为A、B、C、D、E五类。请写出B类地址和C类地址的范围和掩码,D类地址的用途是什么?

  分类 前缀码 开始地址 结束地址 对应CIDR修饰 默认子网掩码

  A类地址 0 0.0.0.0 127.255.255.255 /8 255.0.0.0

  B类地址 10 128.0.0.0 191.255.255.255 /16 255.255.0.0

  C类地址 110 192.0.0.0 223.255.255.255 /24 255.255.255.0

  D类地址 (群播) 1110 224.0.0.0 239.255.255.255 /4 未定义

  E类地址 (保留) 1111 240.0.0.0 255.255.255.255 /4 未定义

  3、请简述在linux中多进程程序和多线程程序的区别。

  4、列出目前linux系统能支持的文件系统,列举常用的四个以上。

  Ext3 ext4 jffs2 yffs2 ubifs cramfs

  5、写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个?

  #define MIN(a, b) ( (a) <= (b) : (a) ? (b) )

  6、什么是MMU,MMU的作用?

  MMU是Memory Management Unit的缩写,负责虚拟地址到物理地址的转换,提供硬件机制的内存访问授权。

  7、关键字volatile有什么含义,并给出几个应用场合。

  1. 定义的变量应该是异变的,防止编译器优化,使得程序直接存取原始内存地址。

  2. 中断服务程序中修改的供其它程序检测的变量需要加volatile。

  3. 多任务环境下各任务间共享的标志应该加volatile。

  4. 存储器映射的硬件寄存器通常也要加voliate,因为每次对它的读写都可能有不同意义。

  5. 频繁地使用volatile很可能会增加代码尺寸和降低性能。

  8、双向链表操作题:

  /*节点定义*/

  typedef srruct node

  {

  struct node *next;

  struct node *previous;

  }NODE;

  /*链表定义*/

  typedef struct

  {

  NODE node;

  int count;

  } LIST;

  #define HEAD node.next

  #define TALL node.previous

  /*初始化一个链表*/

  void lstInit (LIST *pList)

  {

  pPlist->HEAD=NULL;

  pPlist->TALL=NULL;

  pPlist->count=0;

  }

  请编写函数把一个节点(pNode)插入链表pList中某个节点(pPrev)之后。

  9、请写出strcpy 和 memcpy 的区别

  1、strcpy和memcpy都是标准C库函数。

  2、strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。

  3、strcpy函数的原型是:char* strcpy(char* dest, const char* src);

  4、memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

  5、memcpy函数的原型是:void *memcpy( void *dest, const void *src, size_t count );

  strcpy和memcpy主要有以下3方面的区别。

  5.1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

  5.2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

  5.3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。

  6、实现原型:

  char *strcpy(char* strDest, const char* strSrc)

  {

  if((strDest == NULL) || (strSrc == NULL))

  return NULL;

  char* strDestCopy = strDest;

  while( ( *strDest++ = *strSrc++ ) != '/0' );

  return strDestCopy;

  }

  void *memcpy(void *dest, const void *src, size_t count)

  {

  char *tmp = dest;

  const char *s = src;

  while (count--)

  *tmp++ = *s++;

  return dest;

  }


【嵌入式软件面试题】相关文章:

嵌入式C语言面试题(附答案)03-17

嵌入式软件开发要学什么03-05

注释嵌入式软件的十大技巧03-19

嵌入式软件工程师认证03-03

2016年嵌入式工程师面试题及答案「精选」03-07

嵌入式系统软件开发技术概述03-21

2016最新公司嵌入式考试面试题库03-04

嵌入式软件工程师经典笔试题03-06

移植开源软件到嵌入式Linux系统技术攻略03-29