准备面试刷到的,链接里是原文和答案: (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. user-agent反反爬

    title: user-agent反反爬 author: 杨晓东 permalink: user-agent反反爬 date: 2021-10-02 11:27:04 categories: - 投篮 ...

  2. selenium用executeAsyncScript执行异步脚本调用callback使用方法

    executeAsyncScript的作用: 就是把异步的js过程变成java同步的形式,方便java程序及时的接收到同步数据 1.cmdriver.manage().timeouts().scrip ...

  3. 关于xtr的一些基础

    Q&A 如何找到QSEQ方式的xtt呢? 我们可以去版本的代码中寻找,具体位置在:(modem_proc/rf/rftarget_denali/mtp/xtt/etc/QSEQ/) 在QSEQ ...

  4. js实现大转盘抽奖(vue举例)

    在开发项目得时候遇到这样一个需求,在移动端项目有个支付抽奖页面,大概效果图如下: 简单介绍一下需求,点击抽奖按钮转盘转动,转盘里边黄色块块是个整张背景图,里边的商品是从接口获取得,包括奖品名称和图片, ...

  5. 如何利用fooview实现钉钉自动打卡

    我们平常遇到需要钉钉打卡的那种公司,经常要抢时间不敢晚起,有的公司还要扣钱,这样就很难受.本文教你一种行之有效的办法实现钉钉自动打卡. 有些人可能会用什么虚拟定位之类的工具,但是这种是很容易被钉钉发现 ...

  6. Docker之Nginx保姆级别安装

    Docker之Nginx保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redis.N ...

  7. 2022-05-30内部群每日三题-清辉PMP

    1.对于一个长期的基础设施项目,由于全球商业环境,项目经理必须获得风险最小的供应商.项目经理应该使用什么合同类型? A.固定总价合同(FFP) B.成本加固定费用合同(CPFF) C.总价加激励费用合 ...

  8. Qt5.6使用Qt自带虚拟键盘

    Qt自带虚拟键盘是5.7版本以上才有,要在Qt5.6上使用自带虚拟键盘需要先下载源码,再进行编译安装.上网查了一些资料都很有用. https://doc.qt.io/qt-5/qtvirtualkey ...

  9. 渗透H5棋牌游戏-棋牌游戏开发

    0x01 前言 本來不想发的,涉及太多利益了,這些棋牌游戏的源码最高能卖到几万.开发起来不比一个商场进程难. 最近又太忙了,沒时间去做代码审计的文章了,但一不小心又抢了个运气王... 0x02 开始 ...

  10. 图片在div中居中

    要将一张图片垂直和水平居中在一个 <div> 元素中,你可以使用以下 CSS 样式: div { display: flex; justify-content: center; align ...