2017安联锐视嵌入式笔试题

2023-10-04 04:30

本文主要是介绍2017安联锐视嵌入式笔试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.全局变量和局部变量在内存中的区别

 

内存空间分布为

目录

1.全局变量和局部变量在内存中的区别

2.c++如何声明一个函数为c函数

3.const和define的区别

4.引用和对象的区别

5.写出你所知道的stL容器

6.构造函数的调用顺序

7.调用动态链接库的两种方式

8.类成员的重载,覆盖,隐藏的区别

9.列出linux和windows线程同步的方法

10.进程间通信的方式有哪些

11.数组下标越界

11.linux中有哪些内核同步方法

12.简述一下交叉编译器的作用

13.用shell脚本,编写一个简单的判断程序

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

15.简述boatloader ,kernel,filesystem3者之间的关系。


代码段,数据段,未初始化数据段,堆 栈。

全局变量在数据段,局部变量在栈内,随着子程序的运行结束被自动释放。

2.c++如何声明一个函数为c函数

前面加个extern "c"

#ifdef __cplusplus

extern "C"

{ #endif

int dofunc();

#ifdef __cplusplus }

#endif

第二种写法既能用c编译也可以用c库编译

3.const和define的区别

const有类型检查

cons定义的变量t在内存中的拷贝只有一份,而define定义的变量可能有很多份。

1.编译器处理方式不同

    提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高

4.引用和对象的区别

2.1本质: 引用是别名,指针是地址

2.2.1 从现象上看: 指针在运行时可以改变所指向的值,而引用一旦与某个对象绑定后就不再改变。意思是:指针可以被重新赋值以指向另一个对象,但是引用则总是在初始化时被指定的对象,以后不能改变,但是指向的内容可以改变。(下面是这个规则的理解)

程序为指针变量分配区域,而不为引用分配内存区域。因为引用生命时必须初始化,从而指向一个已经存在的对象,引用不能为空值

从编译角度上看

程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。这是使用指针不安全而使用引用安全的主要原因。从某种意义上来说引用可以被认为是不能改变的指针。
符号表是啥

符号表本质上是一种数据库,用来存储代码中的变量,函数调用等相关信息。该表以key-value 的方式存储数据。变量和函数的名字就用来对应表中的key部分,value部分包含一系列信息,例如变量的类型,所占据的字节长度,或是函数的返回值。

5.写出你所知道的stL容器

1.顺序容器

  • array
  • vector
  • deque
  • list
  • forward-list 

2.关联容器->红黑树实现

  • set
  • multiset
  • map
  • multimap

3.容器适配器->无序容器

hashmap

6.构造函数的调用顺序

基类构造函数、对象成员构造函数、派生类本身的构造函数  

7.调用动态链接库的两种方式

显式调用:使用LoadLibrary载入动态链接库、使用GetProcAddress获取某函数地址

隐式调用:可以使用#pragma comment(lib, “XX.lib”)的方式,也可以直接将XX.lib加入到工程中

8.类成员的重载,覆盖,隐藏的区别

重载:

1.相同的范围 2.函数名字相同 3.参数不同 4.virtual关键字可有可无

覆盖

1.覆盖是指派生类函数覆盖基类函数,2.函数名字相同 3.参数相同 4.基类函数必须有virtual关键字。

隐藏

1.隐藏是指派生类的成员函数与基类的成员函数同名,但是参数不同,导致基类函数将被隐藏。

2.如果派生类函数与基类函数同名 参数相同,基类成员函数没有关键字,那么基类函数也将被隐藏

9.列出linux和windows线程同步的方法

windows线程同步

1.关键代码区 ->每次只能有一个线程进入(静态变量和全局变量)

2.互斥mutex 每次只运行一个线程访问。

互斥锁环境下,线程挂了操作系统会通知其他线程,因为是在内核区

关键代码区情况下,线程挂了,其他线程也不知道,傻等,是在用户区,所以关键代码区的性能会高一点

3.信号量

计数器大于0,意味着被保护的对象可用,每次申请计数器就减一,释放就加一。信号量允许多个线程访问。

LINUX线程同步

1.互斥锁

2.条件变量

3.信号量->ipc和posix

下面给出条件变量的一些api

1.初始化条件变量

int pthread_cond_init(pthread cond_t*t,pthread_*cond_attr)

参数为条件变量值和条件变量属性

2.释放条件变量

int pthread_cond_destroy(cond)条件变量值

3.堵塞条件变量

int pthread_cond_wait(&cv,&mutex)

解锁互斥锁,将堵塞cv参数指向的条件变量。

怎么唤醒?

p_c_signal  p_c_boardcast

10.进程间通信的方式有哪些

内存通信,消息队列,管道通信(有名,无名),

11.数组下标越界

unsigned char[255],i;
for(int i=0;i<=255;i++)
{A[i]=i;
}//数组下标越界

1.首先要明白这个问题,unsigned char i是个无符号数,int i是有符号数,所以int i的最高位为符号位,所以u_char的范围是0-256也就是0到2的八次幂

一个32位的signed int类型整数表示的范围:-2^31~2^31-1

一个32位的unsigned int类型整数表示的范围: 0~2^32-1

一个8位的signed char类型整数表示的范围:-2^7~2^7-1

一个8位的unsigned char类型整数表示的范围: 0~2^8-1

所以当i=255是如果此时i再加1,它会等于等于0,所以会产生死循环

正确做法应该改为i<255

11.linux中有哪些内核同步方法

1.每cpu变量 每个cpu仅访问自己的每cpu变量

2.原子操作 原子操作就是不可中断的一个操作,不会被线程调度机制打断,运行期间不会有上下文切换 一个指令可以完成的,

3.优化和内存屏障 

4.自旋锁  锁住临界区 进入临界区需要获得自旋锁,离开需要释放自旋锁

5.读写自旋锁 分为读锁和写锁 读锁可以实现多个进程读同一数据,但不能写,写锁则仅有一个进程可以进入临界区去进行写操作。

6.顺序锁

7.信号量

信号量和自旋锁最大的差别是信号量中存在一个进程等待队列,未获取锁的进程将被放到等待队列中,主动切换进程,调用schedule(),让出cpu。

12.简述一下交叉编译器的作用

在该平台可以编译出可以在另一个平台上运行的程序

13.用shell脚本,编写一个简单的判断程序

#! /bin/bashif["$a"=1];then
echo "correct"
elif["$a"=0];then
echo "incorrent"
else
echo “default”
fi

这个写了个大概。。。

不知道对不对。

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

        find ./ ".c"

15.简述boatloader ,kernel,filesystem3者之间的关系。

1.linux按照3者现在的顺序进行启动 boatloader 是linux-kernel移植的基础,是在系统启动之后,kernel启动之前运行的第一段代码。

2.完成boatloader的移植后,就是kernel的移植。包括添加特定模块的驱动,正对具体要求对内核进行配置,

3.由kernel重新驱动文件系统。(最后一步挂载文件系统)

        

这篇关于2017安联锐视嵌入式笔试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1276

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

深入探索嵌入式 Linux

摘要:本文深入探究嵌入式 Linux。首先回顾其发展历程,从早期尝试到克服诸多困难逐渐成熟。接着阐述其体系结构,涵盖硬件、内核、文件系统和应用层。开发环境方面包括交叉编译工具链、调试工具和集成开发环境。在应用领域,广泛应用于消费电子、工业控制、汽车电子和智能家居等领域。关键技术有内核裁剪与优化、设备驱动程序开发、实时性增强和电源管理等。最后展望其未来发展趋势,如与物联网融合、人工智能应用、安全性与

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

嵌入式技术的核心技术有哪些?请详细列举并解释每项技术的主要功能和应用场景。

嵌入式技术的核心技术包括处理器技术、IC技术和设计/验证技术。 1. 处理器技术    通用处理器:这类处理器适用于不同类型的应用,其主要特征是存储程序和通用的数据路径,使其能够处理各种计算任务。例如,在智能家居中,通用处理器可以用于控制和管理家庭设备,如灯光、空调和安全系统。    单用途处理器:这些处理器执行特定程序,如JPEG编解码器,专门用于视频信息的压缩或解压。在数字相机中,单用途

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

两道笔试题

“char a='\72'”是什么意思? 这么理解:\为转义字符,\072转义为一个八进制数072,也就是十进制数的58买一送一,将转义字符对照表也一并贴给你吧:转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本