嵌入式开发er的C语言能力自测(面试)题---top 16
准备面试刷到的,链接里是原文和答案: (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的更多相关文章
- 应聘linux/ARM嵌入式开发岗位
**************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...
- 嵌入式开发中常见3个的C语言技巧
Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光 ...
- [嵌入式开发]Linux性能分析——上下文切换
一.从一个问题说起 相信很多人在玩手机还是PC时,都曾碰到过这样一种情况,安装的软件多了系统性能就变慢了,但是去查看CPU利用率一直都低于10%,内存也很充足.我在近期的开发工作中就碰到了类似的情况, ...
- ARM嵌入式开发板
iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M ...
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel
经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...
- 嵌入式开发平台-iTOP-4418开发板
详情转自:http://topeetboard.com S5P4418核心板可以无缝支持核心系统S5P6818,并保持底板设计不变,将兼顾更高端 的应用领域,为项目和产品提供更好的灵活性以及可伸缩性. ...
- zju(1)嵌入式开发环境构建
1. 实验目的 搭建嵌入式开发环境,安装ubntu,编译交叉工具链,安装配置tftp,nfs.用makefile 编译几个文件,在实验台上运行. 2. 实验内容 1) 安装ubuntu12.04 2) ...
- 专访Linux嵌入式开发韦东山操作系统图书作者--转
CSDN学院讲师韦东山:悦己之作,方能悦人 发表于2015-04-28 08:09| 6669次阅读| 来源CSDN| 24 条评论| 作者夏梦竹 专访Linux嵌入式开发韦东山操作系统图书作者 摘要 ...
- 嵌入式开发板iTOP4412学习开发板
网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...
- ARM-linux嵌入式开发平台搭建1
初学嵌入式开发,由于是自学,走了很多弯路,现总结一下嵌入式ARM-LINUX开发环境搭建步骤: 1.安装linux系统,由于初学,我选择fedora 14.安装的具体步骤就不详细说了. 2.安装NFS ...
随机推荐
- 把逗号分隔的String字符串转List<Integer>
把逗号分隔的String字符串转int集合 集合或数组转变为逗号分隔的字符串的几种方式 1.自己编码实现 2.org.apache.commons.lang3.StringUtils 3.String ...
- 【剑指Offer】【树】【双向链表】二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. A:二叉树中每个节点都有一个left指针指向左节点,一个right指针指向右节 ...
- python ddt file_data
# -*- coding: utf-8 -*-"""------------------------------------------------- File Name ...
- vue3 reactive值不更新
即上一个随笔里面的form表单数据定义的问题之后,又出现了另一个问题. 页面里面有一个数组: let ruleForm = reactive([ { name:'123456' } ]) 我要 ...
- echart地图引入路径问题
曾经echart某个地图整体引入,好多的引入的文件找不到,这是因为servlet在做jsp解析的时候路径变了,解决方案:先将本地返回的视图跳转一个本地的a.jsp页面,然后再从a.jsp页面跳转到引入 ...
- AgilePoin规则执行
我在写窗体规则时,明明默认值已经绑定,但是在页面加载时规则并没有起作用,导致改隐藏的没隐藏,该显示的不显示.找了半天,发现规则设置时可选择执行事件. 设置在页面加载时执行规则后,发现还是不能正确显隐组 ...
- ps如何正确擦除文字 如何正确用ps擦除文字
1.启动PS:新建文档,进入到软件操作界面中. 2.再把图片素材拖入到PS中.接下来,要把图片上的文字清除掉. 3.按L键,调出套索工具,接着,把文字给框选出来. 4.再按SHIFT+F5调出填充对话 ...
- 实验一-密码引擎-加密API实现与测试
实验一-密码引擎-加密API实现与测试 1 下载并查找GMT 0018-2012密码设备应用接口规范原始文档进行学习 (5分) 2 实现GMT 0018-2012密码设备应用接口规范的接口函数,至少实 ...
- Markdowm的下载方法
1打开百度搜索,输入TYPORA打开下载页面,根据自己的系统(我的是WINDOWS64位)点"DOWN"进行下载安装. 2安装好后回到桌面新建一个文件夹(Markdown学习),然 ...
- NodeJS增删改查的获取方法
get獲取方法 ctx.query post獲取方法 ctx.request.body delete ctx.request.body put ctx.query ctx.request.body