当前位置: 首页 > news >正文

面试题 整理

第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题 逗号运算符,和前置加加后置加加结合运算?

  1. c  
  2. #include <stdio.h>    
  3.     
  4. int main() {    
  5.     int a = 10, b = 20, c;    
  6.     c = (a++, b--, a + b);    
  7.     printf("a = %d, b = %d, c = %d\n", a, b, c);    
  8.     return 0;    
  9. }  
  10. //输出结果 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语言语句,交换两个整数变量的值,不准使用中间变量?

答:

通过加减法:

  1. a=a+b;  
  2. b=a-b;  
  3. a=a-b;  

通过异或来操作:

  1. a = a ^ b;    // 将a和b的异或结果赋值给a    
  2. b = a ^ b;    // 此时a是异或后的结果,再与原来的b异或就得到了原来的a的值,赋值给b    
  3. a = a ^ b;    // 此时b已经是原来的a的值,再与现在的a异或就得到了原来的b的值,赋值给a  

第9题:结构体大小计算?

计算原则:

1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处
2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。
对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。
- VS 中默认的值为 8
- Linux中 gcc 没有默认对⻬数,对⻬数就是成员⾃⾝的⼤⼩
3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的
整数倍。
4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构
体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。
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可以看出来,内存小的成员放前面可以有效节省内存浪费。

 第十题 联合体/共用体大小计算?

计算原则:

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题&#xff1a;常见数据类型大小 这边以64位计算机系统&#xff0c;环境而言。 类型 存储大小 值范围 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 课程内容 导入地址簿功能代码用户下单订单支付 功能实现&#xff1a;用户下单、订单支付 用户下单效果图&#xff1a; 订单支付效果图&#xff1a; 1. 导入地址簿功能代码&#xff08;单表crud&#xff09; 1.1 需求分析和设计 1.1.1 产品原型&#xff08…...

Java面试相关问题

一.MySql篇 1优化相关问题 1.1.MySql中如何定位慢查询&#xff1f; 慢查询的概念&#xff1a;在MySQL中&#xff0c;慢查询是指执行时间超过一定阈值的SQL语句。这个阈值是由long_query_time参数设定的&#xff0c;它的默认值是10秒1。也就是说&#xff0c;如果一条SQL语句的执…...

Linux Shell中的循环控制语句

Linux Shell中的循环控制语句 在编写Shell脚本时&#xff0c;循环是一种常用的控制结构&#xff0c;用于重复执行一系列命令。在Shell中&#xff0c;主要有三种循环控制语句&#xff1a;for循环&#xff0c;while循环&#xff0c;和until循环。 1. For循环 for循环是最常见的…...

proto3语言指南

Language Guide (proto3) 本指南介绍了如何使用 protocol buffer 语言来构建protocol buffer数据,包括.proto文件语法以及如何从.proto 文件生成数据访问类。它涵盖了proto3 版本的协议缓冲语言:有关proto2语法的信息,请参阅proto2语言指南。 文章目录 Language Guide (pro…...

解决后端传给前端的日期问题

解决方式&#xff1a; 1). 方式一 在属性上加上注解&#xff0c;对日期进行格式化 但这种方式&#xff0c;需要在每个时间属性上都要加上该注解&#xff0c;使用较麻烦&#xff0c;不能全局处理。 2). 方式二&#xff08;推荐 ) 在WebMvcConfiguration中扩展SpringMVC的消息转…...

MySQL中的索引失效情况介绍

MySQL中的索引是提高查询性能的重要工具。然而&#xff0c;在某些情况下&#xff0c;索引可能无法发挥作用&#xff0c;甚至导致查询性能下降。在本教程中&#xff0c;我们将探讨MySQL中常见的索引失效情况&#xff0c;以及它们的特点和简单的例子。 1. **索引失效的情况** …...

SpringBoot异常:类文件具有错误的版本 61.0, 应为 52.0的解决办法

问题&#xff1a; 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外贸独立站完整教程

现在做个网站不比从前了&#xff0c;搭建网站非常的简单&#xff0c;主要是由于开源的CMS建站系统的崛起&#xff0c;就算不懂编程写代码的人也能搭建一个自己的网站&#xff0c;这些CMS系统提供了丰富的主题模板和插件&#xff0c;使用户可以通过简单的拖放和配置操作来建立自…...

关于 闰年 的小知识,为什么这样判断闰年

闰年的规定&#xff1a; 知道了由来&#xff0c;我们就可以写程序来判断&#xff1a; #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&#xff1a;调整搜索速度”&#xff0c;我详细地描述了如何调整正常的 BM25 的搜索速度。在今天的文章里&#xff0c;我们来进一步探讨如何提高近似 kNN 的搜索速度。希望对广大的向量搜索开发者有一些启示。 Elasticsearch 支持近似 k 最近邻…...

UE5数字孪生系列笔记(二)

智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的&#xff0c;所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里&#xff0c;效果是从此处进行放大消散 添…...

基于vue实现bilibili网页

学校要求的实验设计,基于vue实现bilibili网页版,可实现以下功能 (1)基本的悬浮动画和页面渲染 (2)可实现登录和未登录的页面变化 (3)在登录页面的,实现密码判断,或者短信验证方式的倒数功能 (4)实现轮播图 (5)实现预览视频(GIF) (6)页面下拉到一定高度出现top栏以及右下角的返回…...

计算机二级(Python)真题讲解每日一题:《十字叉》

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬ ‪‬‪‬‪‬‪‬‪‬‮‬‪…...

基于正点原子潘多拉STM32L496开发板的简易示波器

一、前言 由于需要对ADC采样性能的评估&#xff0c;重点在于对原波形的拟合性能。 考虑到数据的直观性&#xff0c;本来计划采集后使用串口导出&#xff0c;并用图形做数据拟合&#xff0c;但是这样做的效率低下&#xff0c;不符合实时观察的需要&#xff0c;于是将开发板的屏幕…...

【Docker】apisix 容器化部署

APISIX环境标准软件基于Bitnami apisix 构建。当前版本为3.8.0 你可以通过轻云UC部署工具直接安装部署&#xff0c;也可以手动按如下文档操作&#xff0c;该项目已经全面开源&#xff0c;可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform qi…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的障碍物检测系统(深度学习代码+UI界面+训练数据集)

摘要&#xff1a;开发障碍物检测系统对于道路安全性具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个障碍物检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模型间的性能…...

从零开始学HCIA之SDN04

1、VXLAN数据封装 &#xff08;1&#xff09;Original L2 Frame&#xff0c;原始以太网报文&#xff0c;业务应用的以太网帧。 &#xff08;2&#xff09;VXLAN Header&#xff0c;VXLAN协议新定义的VXLAN头&#xff0c;长度为8字节。VXLAN ID&#xff08;VNI&#xff09;为2…...

GET 和 POST 有什么区别?

1.从缓存的角度&#xff0c;GET 请求会被浏览器主动缓存下来&#xff0c;留下历史记录&#xff0c;而 POST 默认不会。 2.从编码的角度&#xff0c;GET 只能进行 URL 编码&#xff0c;只能接收 ASCII 字符&#xff0c;而 POST 没有限制。 3.从参数的角度&#xff0c;GET 一般放…...

Qt学习--继承(并以分文件实现)

基类 & 派生类 一个类可以派生自多个类&#xff0c;这意味着&#xff0c;它可以从多个基类继承数据和函数。定义一个派生类&#xff0c;我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结&#xff1a;简单来说&#xff0c;父类有的&#xff0c;子…...

多目标优化模型MO-OBAM:在数据匿名化中权衡隐私保护与数据效用

1. 项目概述与核心挑战在金融风控、医疗研究和精准营销这些数据驱动的核心领域&#xff0c;我们每天都在面对一个看似无解的悖论&#xff1a;数据越详细、越原始&#xff0c;从中挖掘出的价值就越大&#xff0c;但随之而来的隐私泄露风险也呈指数级增长。我处理过不少项目&…...

Keil ULINK强制全片擦除与CRC校验实践

1. 问题现象与背景解析当使用Keil开发环境配合ULINK调试器对英飞凌C166系列微控制器进行程序烧录时&#xff0c;部分工程师会遇到一个看似奇怪的现象&#xff1a;明明在代码中设置了全片CRC校验逻辑&#xff0c;但实际运行时却出现校验失败。经过排查发现&#xff0c;ULINK默认…...

从《原神》到《黑神话》都在用的AI Agent中间件:轻量级推理框架v0.9.3内部测试版首次泄露(仅限前500名开发者)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI Agent游戏行业应用全景图 AI Agent 正在重塑游戏开发、运营与玩家体验的全生命周期。从智能NPC行为建模到实时动态世界生成&#xff0c;从自动化测试脚本到个性化内容推荐&#xff0c;AI Agent已不再局限于…...

相场模拟结合贝叶斯优化:高效探索电池枝晶抑制与快充的权衡设计

1. 项目概述&#xff1a;当相场模拟遇见贝叶斯优化在金属电池&#xff0c;尤其是锂金属电池的研发前线&#xff0c;我们这些工程师和科学家每天都在与一个“幽灵”作斗争——枝晶。这些在充电过程中从金属负极表面肆意生长的针状或苔藓状晶体&#xff0c;不仅是导致电池容量衰减…...

83、CAN FD物理层核心差异:更高速率与更灵活的位时序

CAN FD物理层核心差异:更高速率与更灵活的位时序 从一次现场总线崩溃说起 去年在给某新能源车企做BMS(电池管理系统)升级时,遇到一个让我熬夜到凌晨三点的怪问题。传统CAN总线跑500kbps,整车十几个节点通信稳如老狗。客户要求把电池包内部的状态数据(单体电压、温度、S…...

我的crontab脚本总是不执行?一份超全的Linux定时任务排错自查清单

我的crontab脚本总是不执行&#xff1f;一份超全的Linux定时任务排错自查清单 当你深夜收到服务器告警&#xff0c;发现关键备份任务没有按时执行时&#xff0c;那种头皮发麻的感觉每个运维人员都懂。crontab作为Linux系统最常用的定时任务工具&#xff0c;看似简单的配置背后…...

Arm调试中MEM-AP访问属性的配置与应用

1. 使用调试器启动带特定属性的MEM-AP访问在嵌入式系统调试过程中&#xff0c;我们经常需要通过调试器访问目标设备的内存。当涉及到安全内存区域或需要特殊访问权限时&#xff0c;理解如何配置Memory Access Port&#xff08;MEM-AP&#xff09;的属性就显得尤为重要。本文将详…...

【2026年阿里巴巴集团暑期实习- 5月23日-算法岗-第二题- 多约束条件下的元素匹配统计】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定三个长度为 nnn 的数组 { a1,a2,…,an}\{a_1, a_2, \dots, a_n\}{ a...

BERTopic与概念图理论在物理教育文本挖掘中的应用实践

1. 项目概述&#xff1a;当物理教育遇上文本挖掘作为一名长期关注教育数据挖掘的从业者&#xff0c;我常常思考一个问题&#xff1a;我们如何能“听见”学生在物理学习过程中的“思维声音”&#xff1f;传统的试卷分数、选择题对错&#xff0c;只能告诉我们结果&#xff0c;却无…...

别再只懂ls -l了!手把手教你用getfattr/setfattr玩转Linux文件隐藏属性

别再只懂ls -l了&#xff01;手把手教你用getfattr/setfattr玩转Linux文件隐藏属性 在Linux系统中&#xff0c;文件权限和属性管理是每个开发者和管理员的必修课。大多数人熟悉 ls -l 展示的基础权限&#xff0c;但很少有人深入探索文件系统中那些不为人知的"隐藏技能&q…...