嵌入式笔试题3

1.不能做switch()的参数类型是:

        switch()的参数不能为实行。其参数类型可以为char/short/int /long/bool/枚举类等。

2.C++中如何声明const void f(void)函数为c函数中的函数库?

        使用extern 关键字,extern "C" const void f(void).

3.const char*p 和 char *const p的区别?

        前者是可以改变值,不能改变地址;后着是可以改变地址,不能改变地址。

4.写出面向对象程序设计的优点:

        面向对象程序设计的特点是“抽象”“封装”“继承”“多态”四个基本特点。所以可以看出面向程序设计方法继承了结构化程序设计方法的优点,同时又比较有效的克服了结构化程序设计的弱点。

5.关键字volatile/inline有什么用?

        inline:一般用于定义内联函数,内联函数与一般函数区别是:①内联函数较短;②调用内联函数时直接把他嵌入到调用函数中即可。一般函数有保护堆栈的开销。(调用内联函数时会进行类型检查,宏定义没有类型检查)。

        volatile:用它定义的变量在程序编译阶段不做优化,每次都必须从内存中读取变量的值。

6.分别写出bool/int/float、指针类型变量a与0的比较

 7.为Type *s在堆中开辟分配空间

        首先考虑内存申请函数malloc/calloc等。

        Type *s = (Type *s)malloc(sizeof(Type));

8.动态特征是什么?

        在大多数情况下,程序的功能是在编译时就确定下来的,称之为静态特征。

        程序功能在运行时才确定下来称之为动态特征。(在语言层面上支持程序的可扩展性。)

9.全局变量可以定义在可被多个.c文件包含的头文件中,在头文件或不同的.c文件中用static来修饰同名全局变量。

10.二叉树的遍历。

        先序遍历(中左右)   中序遍历(左中右)   后序遍历(左右中)

        例;先序遍历:CEDBA     中序遍历:DEBAC    后序遍历:DABEC

        从后续节点可知树根为c。中序可知,根节点左边为左孩子,根节点右边为又孩子。所以没有左孩子,只有右孩子。根据(中序)DEBA和(后序)DABE,E为根节点,D为左节点,BA为右节点。中序遍历为BA,后序遍历AB,推出B是右子树的根节点。

11.进程间通讯方式有那些?

        答:管道、信号、信号量、消息队列、共享内存、套接字

12.以下代码输出内容?

        

#include <stdio.h>

union
{
    int i;
    int j;
}a;

int main()
{
    a.i = 5;
    a.j = 6;

    printf("%d",a.j);
    printf("%d",a.i);

    return 0;
}

13.数组的排序算法:

 冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、桶排序、基数排序  。

①冒泡排序:

思想: 从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。

相关代码:

#include <stdio.h>

int sort(int *arr,int len)
{	
	for(int i=0;i<len;i++)
	{
		for(int j=0;j<len-i;++j)
		{
			if(arr[j]>arr[j+1])
			{
				int n;
				n=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=n;
			}
		}
	}
	
	printf("排序后:\n");
	for(int i=0;i<len;i++)
	{
		printf("%d  ",arr[i]);
	}
	printf("\n");
	return 0;
}

int main()
{
	int arr[] = {1,22,45,4,32,5,3,56,2,98};
	int length = sizeof(arr)/sizeof(arr[0]);
	
	sort(arr,length);
	return 0;
}

14.下面的程序是否存在问题?如果有,请指出来:

void GetMemory(char **p,int num)
{
    *p = (char*)malloc(num);
    //问题一:没有判断是否申请成功;
}

void Test (void)
{
    char *str = NULL;
    GetMemory(&str,100);
    strcpy(str,"hello");
    printf(str);

    //问题二:没有进行free
}

15.在某32位操作系统下C++程序,请计算sizeof的值:

char str[] = "raysharp.cn";
char *p = str;
int n  = 10;

//请计算以下值
sizeof(str)     //答案:12
sizeof(p)       //答案:4
sizeof(n)       //答案:4


void Fun(char str[100])
{
    sizeof(str)  //答案:4
}


void *p = malloc(100);
sizeof(p)        //答案:4

16.写一个函数计算long变量中有多少个bit的值为1;

#include <stdio.h>

int  count_bits_1(int value)
	{
		int  count = 0,i = 0;
		
		for(i = 0; i < 32 ; i++)
		{
			if(value & 0x01)
			{
				count ++;
			}
			value >>= 1;
		}
		return count;
	}
	
int main()
{
	printf("%d\n",count_bits_1(7));
 
}

17.Linux有哪些内核同步方法?

  1,原子变量              2,加锁

18.用shell脚本,写一个简单的判断程序。判断变量a=0,显示"correct",a=1显示"incorrect";

#! /bin/bash

read -p "请输入0或1:" a

if[$a -eq 0]
then
        echo "correct"
fi

if [$a -eq 1]
then
        echo "incorrect"
fi

        echo "error"

19.用linux命令查找当前文件下的所有.c文档

        ls ./*.c

20.写出判断ABCD的四个表达式是否正确,若正确,写出经过表达式中a的值;

int a = 4;
a+=(a++)       答案:9
a+=(++a)       答案:10
(a++)+=a       答案:不对
(++a)+=(a++)   答案:11

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVTE是一家具有领先技术的嵌入式解决方案提供商。在CVTE的嵌入式笔试题中,通常会涉及一些基础的嵌入式知识和技能。 首先,嵌入式系统是指集成了微处理器芯片和专用硬件的系统,这些芯片和硬件用于执行特定的功能。嵌入式系统通常用于控制和监测其他设备或系统。 在CVTE的嵌入式笔试题中,可能会涉及以下问题: 1. 嵌入式系统的特点:需要了解嵌入式系统的特点,例如实时性、稳定性、功耗低、尺寸小等。 2. 嵌入式开发工具和环境:了解嵌入式开发工具和环境,例如编译器、调试器、仿真器等。 3. 嵌入式操作系统:熟悉一些常用的嵌入式操作系统,例如Linux、RTOS(Real-Time Operating System)等。 4. 单片机和微处理器的区别:了解单片机和微处理器的区别,例如单片机通常集成了内存、IO口、定时器等外围设备。 5. 嵌入式软件开发:了解嵌入式软件开发的流程和方法,例如需求分析、软件设计、调试等。 6. 嵌入式硬件设计:了解一些基本的嵌入式硬件设计知识,例如电路设计、PCB设计、信号处理等。 7. 嵌入式通信协议:了解一些常用的嵌入式通信协议,例如UART、SPI、I2C、CAN等。 总之,CVTE的嵌入式笔试题目旨在考察应聘者对嵌入式系统的基本理解和掌握程度。准备笔试时,需要针对上述问题对相关知识进行学习和复习,以便能够准确回答和解决嵌入式开发相关的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值