准备面试刷到的,链接里是原文和答案: (a-c-test-the-0x10-best-questions-for-would-be-embedded-programmers)

这里我先只给出问题,可以作为能力自测,然后再去原文看答案。

1. 使用#define,定义一个明示变量(原文为manifest constant,“简单的宏主要用来定义那些被Kernighan和Ritchie称为“明示常量”(manifest constant)的东西。”)来表示一年中有多少秒,不考虑闰年。

2. 写出标准的MIN宏。也就是说,这个宏接收两个变量参数且返回其中较小的一个。

3. 预处理指令#error的用途?

4. 无限循环经常出现在嵌入式系统中。在c中如何实现无限循环?

5. 使用一个变量a, 写出下面定义的表达式。

(a)一个整数

(b)一个指向整数的指针

(c)一个指针指向一个整数指针

(d)一个拥有十个整数的数组

(e)一个拥有十个整数指针的数组

(f)一个指针指向有十个整数的数组

(g)一个函数指针:该函数有一个整数参数且返回一个整数

(h)一个有十个函数指针的数组: 该函数有一个整数参数且返回一个整数

6. static关键字的用法(3种)

7. const关键字是什么意思?

 下列表达式(不完整)是什么意思?

1 const int a;
2
3 int const a;
4
5 const int *a;
6
7 int * const a;
8
9 int const * a const;

8. 关键字volatile是什么意思?给出他的三种不同用法。

(a)一个参数可以同时被定义为const和volatile嘛?解释下为什么。

(b)一个指针能被定义成volatile吗?解释下为什么。

(c)下面的函数有什么问题?

1 int square(volatile int *ptr) {
2
3   return *ptr * *ptr;
4
5 }

9. 嵌入式系统总是会要求使用者对变量或者寄存器进行位操作。给定一个整数变量a, 给出两部分代码。第一个置位a的第三比特。第二个清除a的第三比特。两种情况下,其他比特不能被改变。

10. 嵌入式系统经常需要编程人员访问内存的特定位置。在一个项目中,要求设置一个位于内存地址0x67a9的整数变量的值设为0xaa55。编译器为纯ANSI编译器。写出代码完成这个任务。

11. 中断是嵌入式系统中非常重要的部分。所以很多编译器厂商提供了标准c的扩展来支持中断。通常,这个新的关键字为“__interrupt”。下面的代码使用“__interrupt”定义了一个中断服务程序。给出你的评论。

1 __interrupt double compute_area(double radius) {
2
3   double area = PI * radius * radius;
4
5   printf("nArea = %f", area);
6
7   return area;
8
9 }

12. 下面程序的输出是什么?为什么?

1 void foo(void) {
2
3 unsigned int a = 6;
4
5 int b = -20;
6
7 (a + b > 6) ? puts("> 6") : puts("<= 6");
8
9 }

13.对于下面的代码你有什么评论?

1 unsigned int zero = 0;
2
3 unsigned int compzero = 0xffff; /*1's complement of zero */

14. 即使不是很常见,但是有些嵌入式系统会从堆(heap)动态申请内存。在嵌入式系统中动态申请内存有什么问题?

下面的代码会输出什么?为什么?

 1 char *ptr;
2
3 if ((ptr = (char *)malloc(0)) == NULL) {
4 puts(“Got a null pointer”);
5
6 }
7
8 else {
9 puts(“Got a valid pointer”);
10
11 }

15.

1 #define dPS  struct s *
2
3 typedef struct s * tPS;

哪一种方法你更偏爱?为什么?

16. 下面的代码合法吗?如果合法代码执行了什么?

1 int a = 5, b = 7, c;
2
3 c = a+++b;

嵌入式开发er的C语言能力自测(面试)题---top 16的更多相关文章

  1. 应聘linux/ARM嵌入式开发岗位

    **************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...

  2. 嵌入式开发中常见3个的C语言技巧

    Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光 ...

  3. [嵌入式开发]Linux性能分析——上下文切换

    一.从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足.我在近期的开发工作中就碰到了类似的情况, ...

  4. ARM嵌入式开发板

    iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M ...

  5. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  6. 嵌入式开发平台-iTOP-4418开发板

    详情转自:http://topeetboard.com S5P4418核心板可以无缝支持核心系统S5P6818,并保持底板设计不变,将兼顾更高端 的应用领域,为项目和产品提供更好的灵活性以及可伸缩性. ...

  7. zju(1)嵌入式开发环境构建

    1. 实验目的 搭建嵌入式开发环境,安装ubntu,编译交叉工具链,安装配置tftp,nfs.用makefile 编译几个文件,在实验台上运行. 2. 实验内容 1) 安装ubuntu12.04 2) ...

  8. 专访Linux嵌入式开发韦东山操作系统图书作者--转

    CSDN学院讲师韦东山:悦己之作,方能悦人 发表于2015-04-28 08:09| 6669次阅读| 来源CSDN| 24 条评论| 作者夏梦竹 专访Linux嵌入式开发韦东山操作系统图书作者 摘要 ...

  9. 嵌入式开发板iTOP4412学习开发板

    网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...

  10. ARM-linux嵌入式开发平台搭建1

    初学嵌入式开发,由于是自学,走了很多弯路,现总结一下嵌入式ARM-LINUX开发环境搭建步骤: 1.安装linux系统,由于初学,我选择fedora 14.安装的具体步骤就不详细说了. 2.安装NFS ...

随机推荐

  1. Android 删除已知路径的文件或文件夹

    转载:https://blog.csdn.net/qq_31939617/article/details/89414714[功能]delete(String delFile):删除文件或文件夹 del ...

  2. 自定义StringByteLength

    using HKElectric.ESafety.Utilities; using System.ComponentModel.DataAnnotations; namespace HKElectri ...

  3. 银河麒麟V10在线安装Postgresql步骤

    参考资料https://blog.csdn.net/u010430471/article/details/81663248 https://blog.csdn.net/qq_41619524/arti ...

  4. 使用elasticsearch-head修改一个索引的副本数

    一.背景 有一个很久以前设置的无副本索引放入了ES集群中,为了提升该索引的稳定性,需要添加一个副本 尝试curl方法失败以及因为es版本太旧(低于5.0.0)用不了kibana,并且用Python修改 ...

  5. Vulnhub:recon靶机

    kali:192.168.111.111 靶机:192.168.111.188 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  6. Python读取保存图像文件

    Python处理图像数据时通常需要对图像文件进行读取.保存等操作,因此将现有的方法归纳了一下. 1. PIL 依赖包:Pillow 安装:pip install Pillow 源码: 1 import ...

  7. Django中遇到的问题

    1.如右上角无Dj的 Django标识 解决方法1: 关闭Pycharm 重启创建项目,进入到Django的所在目录下 解决方法2: 方法3: 第一步: 第二步: 第三步: 第四步: 2.如下图:显示 ...

  8. 前端框架大比拼:2022年的Vue与React谁更胜一筹?

    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 18 天,点击查看活动详情 前端框架经历了十多年的争奇斗艳百花齐放,经历了 JSP.jQuery.Ember.Angular.R ...

  9. Flutter 登录与list列表demo

    import 'package:flutter/material.dart'; void main() => runApp(DemoApp()); class DemoApp extends S ...

  10. 有关谷歌下载PDF文件而不是直接打开预览的问题

    找了很多帖子,都不行, 解决方法把链接处理成blob文件再调用下载. 但是仍然不行,最终原因找到: 缺少了这一部创建,需要把二进制数据重新用 Blob对象申明下 let data = new Blob ...