面试题 整理
第1题:常见数据类型大小
这边以64位计算机系统,环境而言。
| 类型 | 存储大小 | 值范围 |
| char | 1 字节 | -128 到 127 或 0 到 255 |
| unsigned char | 1 字节 | 0 到 255 |
| signed char | 1 字节 | -128 到 127 |
| int | 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
| unsigned int | 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
| short | 2 字节 | -32,768 到 32,767 |
| unsigned short | 2 字节 | 0 到 65,535 |
| long | 8字节 | -2,147,483,648 到 2,147,483,647 |
| unsigned long | 8 字节 | 0 到 4,294,967,295 |
| float | 4字节 | 6位有效数字 |
| double | 8字节 | 15位有效数字 |
| Long double | 16字节 | 19位有效数字 |
| Bool | 1 bit | 常用 0和1表示真假 |
第2题 内存泄漏和内存溢出是什么?
(1)内存溢出:指程序申请内存时,没有足够的内存供申请者使用。或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错Out Of Memory,即所谓的内存溢出。
(2)内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间。一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
第3题 指针变量大小?
在C语言中,指针变量的大小是由其所在的系统和编译器决定的,并且通常与计算机系统的地址总线宽度有关。指针变量的大小表示的是它所能存储的内存地址的位数,而不是它所指向的数据的大小。
在大多数现代32位系统上,指针变量的大小通常是4字节(32位)。而在64位系统上,指针变量的大小通常是8字节(64位)。这是因为指针需要足够的空间来存储一个完整的内存地址。
第4题 逗号运算符,和前置加加后置加加结合运算?
- c
- #include <stdio.h>
- int main() {
- int a = 10, b = 20, c;
- c = (a++, b--, a + b);
- printf("a = %d, b = %d, c = %d\n", a, b, c);
- return 0;
- }
- //输出结果 a=11,b=19,c=30
逗号运算符会从左向右,依次计算然后保留,最后一个计算结果。
但是逗号运算符优先级没有,“=”赋值优先级高,所以一定要注意()
这题如果没有(),结果将完全不一样。
第5题.h头文件中的ifndef/define/endif的作用?
答:防止该头文件被重复引用。
第6题.用变量a给出下面的定义:
问题一:一个整型数
答案:int a;
问题二:一个指向整型数的指针
答案:int*a;
问题三:一个指向指针的的指针,它指向的指针是指向一 个整型数
答案:int**a;
问题四:一个有 10个整型数的数组
答案:int a[10];
问题五:一个有 10个指针的数组,该指针是指向-个整型数的
答案:int *a[10];
问题六:一个指向有10个整型数数组的指针
答案:int (*a)[10];
问题七:一个指向函数的指针,该函数有一个整型参数并返回一个整型数
答案:int (*a)(int );
问题八:一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一 个整
型数
答案:int(*a)[10](int)
问题九:int*(*a[10])(int*)是什么?
答案:int*(*a[10])(int*) 是一个相对复杂的C语言声明。为了理解这个声明,我们可以使用C语言的“右左法则”或“螺旋法则”来逐步解析它。
首先,我们来看整个声明的最右侧部分:int*。这表示一个指向int的指针。
然后,我们向左移动,看到(int*)。这表示一个函数,它接受一个int指针作为参数。
继续向左,我们看到*a[10]。这里,a是一个数组,包含10个元素。每个元素都是一个指针,指向之前提到的那种函数。
所以,int*(*a[10])(int*) 的意思是:a是一个包含10个元素的数组,每个元素都是一个指针,指向一个函数。这个函数接受一个int指针作为参数,并返回一个int指针。
第7题 预处理器 #define 使用?
问题1:用预处理指令#define声明一个常数, 用以表明1年中有多少秒(忽略闰年问题)
#defineSECONDS_ PER_ YEAR (60 * 60 * 24 * 365)UL
解答:
#define语法的基本知识(例如:不能以分号结束,括号的使用,等等)
懂得预处理器将为你计算常数表达式的值, 因此,直接写出你是如何计算一年中有多
少秒而不是计算出实际的值,是更清晰而没有代价的。
意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L告诉编译器
这个常数是的长整型数。
如果你在你的表达式中用到 UL (表示无符号长整型), 那么你有了一个好的起点。记
住,第一印象很重要.
问题2:用宏定义写一个三目运算符求最(大)小值?
答案:
// 宏定义求最大值
#define MAX(a, b) ((a) > (b) ? (a) : (b)) // 宏定义求最小值
#define MIN(a, b) ((a) < (b) ? (a) : (b))
记住宏定义只是词的替换,不具备安全类型检查。
第8题 请用三条C语言语句,交换两个整数变量的值,不准使用中间变量?
答:
通过加减法:
- a=a+b;
- b=a-b;
- a=a-b;
通过异或来操作:
- a = a ^ b; // 将a和b的异或结果赋值给a
- b = a ^ b; // 此时a是异或后的结果,再与原来的b异或就得到了原来的a的值,赋值给b
- a = a ^ b; // 此时b已经是原来的a的值,再与现在的a异或就得到了原来的b的值,赋值给a
第9题:结构体大小计算?
计算原则:
int main()
{//练习1 struct S1{char c1;int i;char c2;};printf("%d\n", sizeof(struct S1));//练习2 struct S2{char c1;char c2;int i;};printf("%d\n", sizeof(struct S2));//练习3 struct S3{double d;char c;int i;};printf("%d\n", sizeof(struct S3));//练习4-结构体嵌套问题 struct S4{char c1;struct S3 s3;double d;};printf("%d\n", sizeof(struct S4));return 0;
}
答案
S1:12字节;
S2: 8 字节;
S3:16 字节;
S4: 32字节;
由1和2可以看出来,内存小的成员放前面可以有效节省内存浪费。
第十题 联合体/共用体大小计算?
计算原则:
#include <stdio.h>
union Un1
{char c;int a;};
union Un2
{char c[5];int i;
};
union Un3
{short c[7];int i;
};
int main()
{//下⾯输出的结果是什么?printf("%d\n", sizeof(union Un1));printf("%d\n", sizeof(union Un2));printf("%d\n", sizeof(union Un3));return 0;
}
答案:Un1:4字节 Un2:8字节 Un3: 16字节
第十一题:常见存储类型?
知识补充:
数据完整的定义格式:
存储类型+特征类型+数据类型+变量名
存储类型:
特征类型:
数据类型:
变量名:
auto:
作用
static:
作用:
extern:
作用:
register:
作用:
const:只读
相关文章:
面试题 整理
第1题:常见数据类型大小 这边以64位计算机系统,环境而言。 类型 存储大小 值范围 char 1 字节 -128 到 127 或 0 到 255 unsigned char 1 字节 0 到 255 signed char 1 字节 -128 到 127 int 4 字节 -32,768 到 32,767 或 -2,147,483,648…...
苍穹外卖-day08:导入地址簿功能代码(单表crud)、用户下单(业务逻辑)、订单支付(业务逻辑,cpolar软件)
苍穹外卖-day08 课程内容 导入地址簿功能代码用户下单订单支付 功能实现:用户下单、订单支付 用户下单效果图: 订单支付效果图: 1. 导入地址簿功能代码(单表crud) 1.1 需求分析和设计 1.1.1 产品原型(…...
Java面试相关问题
一.MySql篇 1优化相关问题 1.1.MySql中如何定位慢查询? 慢查询的概念:在MySQL中,慢查询是指执行时间超过一定阈值的SQL语句。这个阈值是由long_query_time参数设定的,它的默认值是10秒1。也就是说,如果一条SQL语句的执…...
Linux Shell中的循环控制语句
Linux Shell中的循环控制语句 在编写Shell脚本时,循环是一种常用的控制结构,用于重复执行一系列命令。在Shell中,主要有三种循环控制语句:for循环,while循环,和until循环。 1. For循环 for循环是最常见的…...
proto3语言指南
Language Guide (proto3) 本指南介绍了如何使用 protocol buffer 语言来构建protocol buffer数据,包括.proto文件语法以及如何从.proto 文件生成数据访问类。它涵盖了proto3 版本的协议缓冲语言:有关proto2语法的信息,请参阅proto2语言指南。 文章目录 Language Guide (pro…...
解决后端传给前端的日期问题
解决方式: 1). 方式一 在属性上加上注解,对日期进行格式化 但这种方式,需要在每个时间属性上都要加上该注解,使用较麻烦,不能全局处理。 2). 方式二(推荐 ) 在WebMvcConfiguration中扩展SpringMVC的消息转…...
MySQL中的索引失效情况介绍
MySQL中的索引是提高查询性能的重要工具。然而,在某些情况下,索引可能无法发挥作用,甚至导致查询性能下降。在本教程中,我们将探讨MySQL中常见的索引失效情况,以及它们的特点和简单的例子。 1. **索引失效的情况** …...
SpringBoot异常:类文件具有错误的版本 61.0, 应为 52.0的解决办法
问题: java: 无法访问org.mybatis.spring.annotation.MapperScan 错误的类文件: /D:/Program Files/apache-maven-3.6.0/repository/org/mybatis/mybatis-spring/3.0.3/mybatis-spring-3.0.3.jar!/org/mybatis/spring/annotation/MapperScan.class 类文件具有错误的…...
Cloudways搭建WordPress外贸独立站完整教程
现在做个网站不比从前了,搭建网站非常的简单,主要是由于开源的CMS建站系统的崛起,就算不懂编程写代码的人也能搭建一个自己的网站,这些CMS系统提供了丰富的主题模板和插件,使用户可以通过简单的拖放和配置操作来建立自…...
关于 闰年 的小知识,为什么这样判断闰年
闰年的规定: 知道了由来,我们就可以写程序来判断: #include <stdio.h> int main() {int year, leap;scanf("%d",&year);if((year%4 0 && year%100 ! 0) || year%400 0)leap 1;else leap 0;if(leap) printf(…...
Elasticsearch:调整近似 kNN 搜索
在我之前的文章 “Elasticsearch:调整搜索速度”,我详细地描述了如何调整正常的 BM25 的搜索速度。在今天的文章里,我们来进一步探讨如何提高近似 kNN 的搜索速度。希望对广大的向量搜索开发者有一些启示。 Elasticsearch 支持近似 k 最近邻…...
UE5数字孪生系列笔记(二)
智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的,所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里,效果是从此处进行放大消散 添…...
基于vue实现bilibili网页
学校要求的实验设计,基于vue实现bilibili网页版,可实现以下功能 (1)基本的悬浮动画和页面渲染 (2)可实现登录和未登录的页面变化 (3)在登录页面的,实现密码判断,或者短信验证方式的倒数功能 (4)实现轮播图 (5)实现预览视频(GIF) (6)页面下拉到一定高度出现top栏以及右下角的返回…...
计算机二级(Python)真题讲解每日一题:《十字叉》
描述 …...
基于正点原子潘多拉STM32L496开发板的简易示波器
一、前言 由于需要对ADC采样性能的评估,重点在于对原波形的拟合性能。 考虑到数据的直观性,本来计划采集后使用串口导出,并用图形做数据拟合,但是这样做的效率低下,不符合实时观察的需要,于是将开发板的屏幕…...
【Docker】apisix 容器化部署
APISIX环境标准软件基于Bitnami apisix 构建。当前版本为3.8.0 你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform qi…...
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的障碍物检测系统(深度学习代码+UI界面+训练数据集)
摘要:开发障碍物检测系统对于道路安全性具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个障碍物检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5,展示了不同模型间的性能…...
从零开始学HCIA之SDN04
1、VXLAN数据封装 (1)Original L2 Frame,原始以太网报文,业务应用的以太网帧。 (2)VXLAN Header,VXLAN协议新定义的VXLAN头,长度为8字节。VXLAN ID(VNI)为2…...
GET 和 POST 有什么区别?
1.从缓存的角度,GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。 2.从编码的角度,GET 只能进行 URL 编码,只能接收 ASCII 字符,而 POST 没有限制。 3.从参数的角度,GET 一般放…...
Qt学习--继承(并以分文件实现)
基类 & 派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结:简单来说,父类有的,子…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
