三正科技笔试题
(15题,45分钟,闭卷)
一、( 8 分 )请问以下程序输出什么结果?
char *getStr(void) 。
{
char p[] = "hellow world"; return p;
}
void test(void)
{
char *str = NULL; str = getStr(); printf("%s", str);
}
不会正确输出,可能会段错误。
二、( 5 分 )test2 函数有问题吗?如果有, 请指出问题出在什么地方并给出正确答案。
void test2()
{
char string[10], str[10];
int i;
for(i = 0; i < 10; i++)
{
str[i] ='a';
}
strcpy(string, str);
}
for(i = 0; i < 9; i++)
……
Str[9] = ‘\0’
……
没有\0结尾会导致strcpy无法结束。
三、(5分)用预处理指令#define声明一个常数,用以表明一年中有多少秒。(忽略闰年问题)
#define SECONDS_PER_YEAR (365 * 24 * 60 * 60)
四、( 5分 )写一个“标准”宏MIN , 这个宏输入两个参数并返回较小的—个。
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
五、( 8分 )你怎么样用 C 编写死循环呢?
While(1)
六、( 10分 )用变量 a 给出下面的定义 :
1、一个整型数 ;int a;
2、一个指向整型数的指针 ;int *a;
3、一个指向指针的指针,它指向的指针是指向一个整型数;int **a;
4、一个有 10 个整型数的数组;int a[10];
5、一个有 10 个指针的数组,该指针是指向一个整型数的;int *a[10];
6、一个指向有 10 个整型数数组的指针;int (*a)[10];
7、一个指向函数的指针,该函数有一个整型数参数并返回一个整数;int (*a)(int);
8、一个有 10 个指针的数组 ,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。int (*a[10])(int);
七、( 5分 )关键字 static 的作用是什么?
Static意为静态变量,用于控制变量的作用域和生命周期,主要应用于变量和函数。
修饰外部变量或函数时可以限定当前变量的作用域为当前文件,在函数内部定义时会延长变量的生命周期。该变量只会在第一次进入作用域时被初始化,并且在整个程序的执行过程中保持其值。
八、( 10 分 )关键字 const 有什么含意?
const用于声明常量,即一旦初始化后就不能再被修改的变量。它可以应用于多种类型的数据,包括基本类型、指针和复合类型等。用于函数形参时可以确保函数不会修改其值,用于类中的函数时该函数不能修改类中的变量。
下面的声明都是什么意思?
1)const int a;
2)int const a;
3)const int *a;
4)int *const a;
5)int const *a const;
九、( 5 分 )下面的代码输出是什么?为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a - b > 6) ? puts(">6") : puts("<=6");
}
(a – b)是无符号数无论如何都是正数,而且非常大。所以>6
十、( 5 分 )动态分配内存可能发生的问题是什么?
内存泄漏:分配了内存但没有适时释放,导致程序占用的内存不断增加。
野指针:指向已经释放的内存的指针。使用野指针可能导致程序崩溃或未定义行为。
包括但不限于使用已释放的内存、重复释放同一内存块等。
内存越界:访问数组或其他数据结构时超出其实际大小,可能会破坏其他数据或导致程序崩溃。
分配失败:动态内存分配请求失败(如malloc返回NULL),而程序没有妥善处理这种情况。
内存碎片:多次分配与释放导致内存分割成小段,难以找到足够的连续内存空间来满足新的分配请求
十一、( 5 分 )volatile 这个关键字的作用是什么?
volatile 是易变的,volatile 的作用:
- 防止优化: 编译器在优化代码时可能会假设某些变量的值不会在两次访问之间发生变化。使用 volatile 关键字可以禁止这种优化,确保每次访问变量时都从内存中读取最新的值,而不是使用寄存器中缓存的值。
- 用于硬件交互: 在嵌入式系统或操作系统编程中,volatile 通常用于那些可能被硬件改变的变量,例如硬件寄存器、中断服务例程中的变量等。这样可以确保程序总是读取到最新的值。
- 应用于多线程环境: 在多线程环境中,volatile 可以用来标记那些可能被其他线程修改的变量。虽然 volatile 不能替代线程同步机制(如互斥锁),但它可以确保变量的可见性。
十二、( 8 分 )请写出下面的程序的输出结果 :
#include<stdio.h>
int main()
{
int a = 10, b, c, d;
b = a++;
c = ++a;
d=10*(++a);
printf(" b : %d ,c : %d , d :%d", b , c, d);
return 0;
}
b : 10 ,c : 12 , d :130
十三、(8分)进程之间进行通信的方式有几种,它们分别是什么?
管道,信号,消息队列,共享内存,信号量集,套接字等
十四、(5分)进程和线程的区别是什么?
进程是操作系统进行资源分配的基本单位,每个进程都有独立的内存空间和资源。进程之间的通信通常需要使用IPC机制。
线程是进程内的一个执行单元,同一进程内的线程共享资源。线程之间的通信相对简单,可以直接访问共享数据。创建和销毁线程的开销比进程小,上下文切换也更快。
十五、(8分)请列举四种位运算符,并说明它们一般用于什么地方。
算术运算符用于数学运算
关系运算符用于判断大小等
逻辑运算符用于与或非运算
位运算符用于二进制操作移位等等
相关文章:
三正科技笔试题
(15题,45分钟,闭卷) 一、( 8 分 )请问以下程序输出什么结果? char *getStr(void) 。 { char p[] "hellow world"; return p; } void test(void) { ch…...
Selective attention improves transformer详细解读
Selective attention improves transformer Google 2024.10.3 一句话:简单且无需额外参数的选择性注意力机制,通过选择性忽略不相关信息并进行上下文剪枝,在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。 论…...
git配置用户信息
在 Git 中配置用户信息,主要是设置你的用户名和电子邮件地址,这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤: 打开命令行工具。 设置你的用户名: git config --global user.name "你的名字"例如…...
【eNSP】路由基础与路由来源——静态路由实验
路由是数据包从源地址到目的地址的传输路径,静态路由是指网络管理员手动配置的路由条目,用于指定数据包从源地址到目的地址的固定路径。以下是关于静态路由的详细介绍。 一、路由的基础知识点 路由的定义: 路由是指在计算机网络中ÿ…...
Python Web 应用开发基础知识
Python Web 应用开发基础知识 引言 随着互联网的快速发展,Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言,已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识,包括常用框架、基…...
STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
GPIO_SetBits: 使用例: GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);意思是将GPIOA1和GPIOA2设为高电平 GPIO_SetBits(GPIOA, 0x0003);意思也是将GPIOA1和GPIOA2设为高电平 实际上当选中GPIOA时,它会按位遍历,在哪一位有1说…...
【Redis_Day4】内部编码和单线程模型
【Redis_Day4】内部编码和单线程模型 五大数据类型内部编码object encoding key1:查询key1对应值的内部编码 redis中的单线程模型 redis中的数据都是以键值对的方式存的,redis内部用哈希表组织这些键值对。 五大数据类型 站在用户角度, 在一…...
Vue模块化开发的理解
Vue模块化是指在Vue.js开发中,将代码按功能拆分成多个独立的模块,以提高代码的可维护性、可读性和复用性。以下是对Vue模块化的详细理解: 一、Vue模块化的实现方式 组件化开发: Vue组件是模块化的基本单元,每个组件封…...
在Ubuntu22.04上源码构建ROS noetic环境
Ubuntu22.04上源码构建ROS noetic 起因准备环境创建工作目录并下载源码安装编译依赖包安装ros_comm和rosconsole包的两个补丁并修改pluginlib包的CMakeLists的编译器版本编译安装ROS noetic和ros_test验证 起因 最近在研究VINS-Mono从ROS移植到ROS2,发现在编写feat…...
算法--解决二叉树遍历问题
第一 实现树的结构 class Node(): # 构造函数,初始化节点对象,包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点,默认为None self.rig…...
[刷题]入门1.矩阵转置
博客主页:算法歌者本篇专栏:[刷题]您的支持,是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接:洛谷-B2106-矩阵转置 2、基础 此题目主要考察二维数组的掌控能力。 3、思路 观察,可知&#…...
Flutter开发之flutter_local_notifications
flutter_local_notifications 消息通知 flutter_local_notifications地址 flutter_local_notifications: ^18.0.1class NotificationHelper {//工厂模式调用该类时,默认调用此方法,将实例对象返回出去static NotificationHelper? _instance null;sta…...
Gradle和maven
大家好,我是风筝 作为Java 开发者,你平时用 Maven 还是 Gradle? 我一直用的都是 Maven,但是前几天做了一个小项目,用的是 Gradle,因为项目创建出来默认就是用的 Gradle,而且功能足够简单&#x…...
RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)
文章目录 RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机(Exchanges)4.2 临时队列(Temporary Queues&am…...
服务器被挂马怎么办?——解决服务器被挂马的方法和步骤
服务器被挂马(即被植入恶意软件)是一个常见的网络安全问题,可能导致数据泄露、服务中断和经济损失。本文将详细介绍如何检测和清除服务器上的恶意软件,并提供实用的代码示例,帮助读者解决服务器被挂马的问题。 一、什…...
Qt 项目架构设计
在开发一个 Qt 项目时,合理的文件夹结构和清晰的构建流程是非常重要的。Qt 项目通常需要管理源代码、UI 文件、资源文件、构建脚本等。下面我会给出一个详细的文件夹结构示例,并解释每个部分的作用及如何设计 Makefile 或使用 Qt 的 qmake 来自动化构建过…...
Elasticsearch:管理和排除 Elasticsearch 内存故障
作者:来自 Elastic Stef Nestor 随着 Elastic Cloud 提供可观察性、安全性和搜索等解决方案,我们将使用 Elastic Cloud 的用户范围从完整的运营团队扩大到包括数据工程师、安全团队和顾问。作为 Elastic 支持代表,我很乐意与各种各样的用户和…...
高级java每日一道面试题-2024年11月07日-Redis篇-Redis有哪些功能?
如果有遗漏,评论区告诉我进行补充 面试官: Redis有哪些功能? 我回答: Redis 是一个开源的、基于键值对的 NoSQL 数据库,以其高性能、丰富的数据结构和多种功能而闻名。在高级 Java 面试中,了解 Redis 的核心功能和高级特性是非常重要的。以下是 Redi…...
实用且免费的 IP 地域查询 API 接口推荐
实用且免费的 IP 地域查询 API 接口推荐 在日常开发中,IP 地域查询是一个常见需求。最近无意间发现一个实用的 IP 地域查询 API,目前是免费的,未来是否收费尚不可知,但在当前情况下非常值得推荐。 API 地址示例: ht…...
STM32学习笔记----SPI协议
STM32的SPI(串行外设接口,Serial Peripheral Interface)是一种常见的同步串行通信协议,广泛应用于与传感器、显示屏、存储设备等外设的通信。SPI通过主从模式(Master/Slave)来实现数据交换,其中…...
DBNet++的ASF模块真的只是空间注意力吗?深入对比论文与官方代码的三种实现
DBNet的ASF模块:论文与代码的注意力机制差异深度解析 在文本检测领域,DBNet因其出色的性能和实时性成为工业界和学术界的热门选择。其核心创新之一——自适应尺度融合(ASF)模块,在论文中被描述为空间注意力机制&#x…...
【刚性 PINN 与时间自适应策略】第九章:综合案例实战:刚性化学反应动力学模拟
目录 9.1 问题描述与数据生成 9.1.1 Robertson 刚性化学反应模型构建 9.1.2 传统 PINN 的失败复现与诊断 第二部分:代码实现 9.1.1.1 三组分反应方程组及其刚性特征分析 9.1.1.2 基准解的生成(使用隐式求解器) 9.1.2.1 训练损失曲线与预测结果的偏差可视化 9.1.2.2 …...
为什么我的Flowbite样式不生效?Tailwind CSS配置避坑与Svelte项目优化技巧
为什么我的Flowbite样式不生效?Tailwind CSS配置避坑与Svelte项目优化技巧 在Svelte项目中集成Flowbite组件库时,开发者常会遇到样式不生效的问题。这通常不是Flowbite本身的缺陷,而是配置环节的疏漏或构建工具的特定行为导致的。本文将深入剖…...
用Verilog手搓一个IEEE754浮点加法器:从状态机设计到FPGA上板验证(附完整代码)
从零构建IEEE754浮点加法器:Verilog状态机设计与FPGA实战全解析 1. 浮点运算器的工程实现挑战 在数字信号处理和高性能计算领域,浮点运算器一直是核心组件。与整数运算不同,浮点数的特殊存储格式使得其运算过程复杂得多。IEEE754标准定义了浮…...
Python程序员转战Mojo的最后1公里:自动转换工具mojoify上线首周已修复89%语法迁移阻塞点(限时开源)
第一章:Mojo与Python混合编程全景概览Mojo 是一种为 AI 系统量身打造的现代系统编程语言,兼具 Python 的易用性与 C/Rust 的执行效率。它原生兼容 Python 生态,允许开发者在同一个项目中无缝调用 Python 模块、复用 NumPy/Torch 接口…...
ASCII码表深度解析:从基础到扩展的全面指南
1. ASCII码的前世今生:计算机世界的通用语言 第一次接触ASCII码是在大学计算机基础课上,教授用"65A"这个简单公式瞬间点燃了我的好奇心。这个看似简单的编码系统,实际上是现代数字通信的基石。ASCII(American Standard …...
【跟韩工学Ubuntu第9课】第9章 系统备份、恢复与迁移-005篇
文章目录 第9章 系统备份、恢复与迁移 Ubuntu Server 生产级系统管理(企业级完整版) 9.1 备份策略基础(企业级理论精讲) 9.1.1 企业备份核心价值观 9.1.2 企业级3-2-1备份黄金法则 9.1.3 全量备份(Full Backup) 定义 企业级优点 企业级缺点 企业适用场景 9.1.4 增量备份(…...
360周鸿祎:智能体技术破圈,引领产业全面重构与独角兽机遇
【导语:在2026中关村论坛年会全球独角兽企业大会上,360集团创始人周鸿祎围绕“龙虾”等新一代智能体技术,阐述其带来的产业变革机遇,涉及互联网、软件等多领域重构,有望催生大量独角兽企业。】智能体技术“破圈”&…...
如何解决OpenCode在开发大型项目时的“特性丢失”与“特性退化”问题?
你遇到的情况在大型项目中使用 AI 编程助手时非常典型。随着项目规模扩大,AI 生成的代码容易出现“特性退化”和“特性丢失”,核心原因在于上下文窗口有限、模型对项目全局理解不足、以及缺乏稳定的开发规范约束。针对 OpenCode 这类 AI 编程助手&#x…...
【智能汽车竞赛】从理论到实战:PID参数整定的艺术与避坑指南
1. PID控制:智能车竞赛的核心武器 第一次参加智能车比赛时,我看着自己的小车在赛道上蛇形走位的样子,简直像个醉汉。直到真正理解了PID控制,才明白原来让小车"听话"是门技术活。PID控制器就像给小车装了个智能大脑&…...
