某车企ASW面试笔试题

news2024/11/27 6:53:14

01--背景

去年由于工作岗位的动荡,于是面试了一家知名车企,上来进行了一番简单的介绍之后,被告知需要进入笔试环节,以往单位面试都是简单聊聊技术问题,比如对软件开发的流程或者使用的工具等待问题的交流,但是笔试的话一般是写代码的人这样要求多些,Simulink的笔试还真是头一家。对方直接开线上会议之后,需要我这边进行投屏,并把笔试题目发过来,限时一个小时完成,全程线上对方技术人员会观看你通过Simulink建模的直播。

02--题目

1.Implement the following logic use simulink

Input signal: A(single);

Oupt signal: B(uint8);
Control Logic:
1) Average filtering for Input signal A, Output the average of 10 cycle.
2) If A>30, then B=30; if A<25, then B=0;
If A>40, then B=50; if A<35, then B=30;
If A>50, then B=80; if A<45, then B=50;
3) Oupt signal B ,rate limitation, increase 3 and reduce 5 for one cyrcle.
4) Carry out unit test for item 2) ,and generate unit test report ( include 10 test cases at
least )

03--题目分析

当收到题目之后,发现只有一道题,一个小时岂不是绰绰有余,但是是纯英文的,先是通读了一番题目,乍一看,好像难度还不是很高,但是最后的事实结果发现一个小时还完成不了,前面有点想当然了。第1小问就是求输入信号10个周期的平均值,第2小问是求分段函数并加上回滞功能,第3小问是求斜率限制即rate limit,第4小问是求单元测试,并生成单元测试报告(包含至少10个测试用例)。

看起来是一道简单的题目,但是把软件开发流程简单过了一遍,要开发还要测试,就差没有生成代码了,那一刻我也发现没那么简单了,而且需要进行单元测试生成报告,之前我们工作中有专门的工具去干这种事,现在只能用Simulink自带的Simulink Test去做了,还好当时还会这个,不然第4小问直接接挂了。感兴趣的同学也可以自己试一试,看看1小时是否能够完成。

以下是我的解题,不见得完全正确,也不见得所用的模块是最好最简洁的,欢迎其他大佬提出更简洁的思路。

04--建模

1.求解器设置

首先新建了模型,并先按如下设置了求解器设置,题目没有指定采样时间,我就自行进行了设置

2.第1小问:当时能想到的最快的方式就是直接用10个delay去求10个周期的平均值,但是对于前面10个时刻的值都需要去被平均,不知道这点理解是否准确。并设置了信号A的数据类型为single

封装子系统

3.第2小问:主逻辑搭建

当时读到题目的时候发现这是一个简单的模型搭建,只需要用到滞环relay模块和Switch模块即可完成这个功能搭建,于是搭建如下:

以上需要设置好数据类型,A相关为single,B相关为uint8

relay的On 及 Off点的设置为50,45;40,35;30,25.

但是这样搭建看上去没问题,实际上如果去做单元测试就会发现问题,那就是滞回的On 及 Off点这个relay模块都是包含的,也就是说你搭建的模型是当A>=30,B=30,这和题目中If A>30, then B=30; 不一样,你多了一个“=”好。就像图中把这些点刨去了一样,而你没刨去,显然这样的建模不符合题目的要求。

接下来我们可以以这个模型进行仿真验证一下:

将该模块也以子系统封装起来,并用Signal Builder模块设计一组数据作为测试用例来验证,用示波器进行观测

由于Signal Builder默认数据类型为double,需要进行转换一下,不然会报错

Signal Builder内的测试用例设计为,一组从0到30,一组从0到34的数据,按照题目要求,结果应该为第一组数据对应结果为0,第二组数据对应结果为30

而示波器显示的结果2组都为30,证实了这样的建模不符合题目要求

那么既然自带的relay模块不行,接下来可以自己创建一个relay模块去解决这个问题 ,这样的话可以自行去设置判断的关系逻辑符号

relay模块的需求为,当输入信号大于On点时,输出置1,当输入信号小于Off点时,输出信号置0,在On 和Off点之间的输出值保持上一时刻的值。,那么relay模块可搭建如下:

那么上面的关系符可以进行设置了,去掉=号,将上面进行封装后替代relay模块,并设置常数On及Off点,再次进行验证仿真

运行后,示波器的结果:

更新之后的模型符合题目的需求,但是仔细的同学还会发现在满足A大于30时,不是直接从大于的那一时刻突变到30,而是延时了一个时刻从5.9s到6s的过程中从0-30,斜着上去的,因为求解器为0.1s,这个由采样导致问题实际上可以忽略不计的。

 接下来我想着还可以通过另外一个途径来搭建通用功能的模型,那就是Stateflow

搭建的模型如下:最需要注意的是各个状态之间执行的顺序,顺序不对那么整个设计就会背道而驰

把所有关系写出来后就是需要调整执行顺序了,A为某个值,但是同时满足了好几个条件,肯定是最大值为第一顺序,后面依次排开。执行顺序的设置为直接点击线条右键设置即可

将Stateflow设置好数据类型并进行封装起来

用刚刚的测试用例再进行测试一遍,并读取示波器结果:

可以看到,结果验证符合需求

4.第3小问:rate limit功能

输出信号B在单个周期,值增加时最大不能超过3,值减小时最大不能减小超过5,其余情况按原值输出

这个可以用系统自带的模块也可以自行进行搭建

先看自行搭建的模块

用当前时刻与上一时刻的差值如果在-5和3之间则原值输出,如果大于等于3,则由上一时刻的值加3,小于-5则由上一时刻的值减去5,模型搭建如下:

注意数据类型不能全部设置为uint8,涉及到负数

封装后,进行如下测试用例进行仿真

示波器结果:

放大后量斜率发现:

(23.99-8.99)/(6.7-6.2)=3

另外,可通过自带的rate limit模块进行

在设置斜率的时候要设置步长/采样时间

由于上升步长为3,采样时间为0.1,鼓上升斜率为3/0.1=30,下降则为-50

封装后进行测试

示波器结果一致

把所有子系统连起来用以下测试用例测试一遍:

示波器结果

 

5.第4小问

至于单元测试及报告等可以参考之前写的另一篇博文

这里就不再赘述了

Simulink模型的MIL单元测试_simulink单元测试-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算(a+b)/c的值

计算&#xff08;ab&#xff09;/c的值 C语言代码C语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定3个整数a、b、c&#xff0c;计算表达式(ab)/c的值&#xff0c;/是整除运算。 输入 输入仅一行&…

【在Linux世界中追寻伟大的One Piece】多线程(二)

目录 1 -> 分离线程 2 -> Linux线程互斥 2.1 -> 进程线程间的互斥相关背景概念 2.2 -> 互斥量mutex 2.3 -> 互斥量的接口 2.4 -> 互斥量实现原理探究 3 -> 可重入VS线程安全 3.1 -> 概念 3.2 -> 常见的线程不安全的情况 3.3 -> 常见的…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化&#xff1f; 重要性&#xff1a;★★ NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…

AIGC--AIGC与人机协作:新的创作模式

AIGC与人机协作&#xff1a;新的创作模式 引言 人工智能生成内容&#xff08;AIGC&#xff09;正在以惊人的速度渗透到创作的各个领域。从生成文本、音乐、到图像和视频&#xff0c;AIGC使得创作过程变得更加快捷和高效。然而&#xff0c;AIGC并非完全取代了人类的创作角色&am…

C++11特性(详解)

目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…

React中事件处理和合成事件:理解与使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

大数据新视界 -- 大数据大厂之 Hive 数据桶:优化聚合查询的有效手段(下)(10/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

基于FPGA的信号DM编解码实现,包含testbench和matlab对比仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1.编码器硬件结构 2.解码器硬件结构 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) FPGA测试结果如下&#xff1a; matlab对比仿真结果如下&#xff1a; 2.算法运行软…

鸿蒙中拍照上传与本地图片上传

1.首页ui import { picker } from kit.CoreFileKit; import fs from ohos.file.fs; import request from ohos.request; import { promptAction } from kit.ArkUI; import { cameraCapture } from ./utils/CameraUtils; import { common } from kit.AbilityKit; import { Imag…

【算法】连通块问题(C/C++)

目录 连通块问题 解决思路 步骤&#xff1a; 初始化&#xff1a; DFS函数&#xff1a; 复杂度分析 代码实现&#xff08;C&#xff09; 题目链接&#xff1a;2060. 奶牛选美 - AcWing题库 解题思路&#xff1a; AC代码&#xff1a; 题目链接&#xff1a;687. 扫雷 -…

人工智能 实验2 jupyter notebook平台 打印出分类器的正确率

实验2 jupyter notebook平台 【实验目的】掌握jupyter notebook平台的使用方法 【实验内容】上传文件到jupyter notebook平台&#xff0c;学会编辑运行ipynb文件 【实验要求】写明实验步骤&#xff0c;必要时补充截图 安装Anaconda。 2、 将BreadCancer.zip上传到jupyter no…

【贪心算法第五弹——300.最长递增子序列】

目录 1.题目解析 题目来源 测试用例 2.算法原理 3.实战代码 代码解析 注意本题还有一种动态规划的解决方法&#xff0c;贪心的方法就是从动态规划的方法总结而来&#xff0c;各位可以移步博主的另一篇博客先了解一下&#xff1a;动态规划-子序列问题——300.长递增子序列…

Spring Boot——统一功能处理

1. 拦截器 拦截器主要用来拦截用户的请求&#xff0c;在指定方法前后&#xff0c;根据业务需要执行设定好的代码&#xff0c;也就是提前定义一些逻辑&#xff0c;在用户的请求响应前后执行&#xff0c;也可以在用户请求前阻止其执行&#xff0c;例如登录操作&#xff0c;只有登…

【2024】前端学习笔记19-ref和reactive使用

学习笔记 1.ref2.reactive3.总结 1.ref ref是 Vue 3 中用来创建响应式引用的一个函数&#xff0c;通常用于基本数据类型&#xff08;如字符串、数字、布尔值等&#xff09;或对象/数组的单一值。 ref特点&#xff1a; ref 可以用来创建单个响应式对象对于 ref 包裹的值&…

javaweb-day01-html和css初识

html:超文本标记语言 CSS&#xff1a;层叠样式表 1.html实现新浪新闻页面 1.1 标题排版 效果图&#xff1a; 1.2 标题颜色样式 1.3 标签内颜色样式 1.4设置超链接 1.5 正文排版 1.6 页面布局–盒子 &#xff08;1&#xff09;盒子模型 &#xff08;2&#xff09;页面布局…

3mf 格式详解,javascript加载导出3mf文件示例

3MF 格式详解 3MF&#xff08;3D Manufacturing Format&#xff09;是一种开放标准的文件格式&#xff0c;专门用于三维制造和打印。3MF 格式旨在解决 STL 格式的局限性&#xff0c;提供更丰富和灵活的数据表示。3MF 文件是一种 ZIP 文件&#xff0c;其中包含了描述三维模型的…

音视频流媒体直播/点播系统EasyDSS互联网视频云平台介绍

随着互联网技术的飞速发展&#xff0c;音视频流媒体直播已成为现代社会信息传递与娱乐消费的重要组成部分。在这样的背景下&#xff0c;EasyDSS互联网视频云平台应运而生&#xff0c;它以高效、稳定、便捷的特性&#xff0c;为音视频流媒体直播领域带来了全新的解决方案。 1、产…

c++:面向对象三大特性--继承

面向对象三大特性--继承 一、继承的概念及定义&#xff08;一&#xff09;概念&#xff08;二&#xff09;继承格式1、继承方式2、格式写法3、派生类继承后访问方式的变化 &#xff08;三&#xff09;普通类继承&#xff08;四&#xff09;类模板继承 二、基类和派生类的转换&a…

【Linux学习】【Ubuntu入门】2-5 shell脚本入门

1.shell脚本就是将连续执行的命令携程一个文件 2.第一个shell脚本写法 shell脚本是个纯文本文件&#xff0c;命令从上而下&#xff0c;一行一行开始执行&#xff0c;其扩展名为.sh&#xff0c;shell脚本第一行一定要为&#xff1a;#!/bin/bash&#xff0c;表示使用bash。echo…

Jmeter中的测试片段和非测试原件

1&#xff09;测试片段 1--测试片段 功能特点 重用性&#xff1a;将常用的测试元素组合成一个测试片段&#xff0c;便于在多个线程组中重用。模块化&#xff1a;提高测试计划的模块化程度&#xff0c;使测试计划更易于管理和维护。灵活性&#xff1a;可以通过模块控制器灵活地…