首页 > 其他分享 >华为技术岗位笔试&面试题-第四篇

华为技术岗位笔试&面试题-第四篇

时间:2024-11-26 15:34:44浏览次数:6  
标签:面试题 int memcpy strcpy 内存 第四篇 华为技术 分配 sprintf

说在前面

本篇文章是华为技术岗位笔试&面试题-第四篇

后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。
欢迎大家点赞关注转发

问题1:一个指针可以是 volatile 吗

可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个 buffer 的指针时,必须用 volatile 来修饰这个指针。
说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。

问题2:a 和&a 有什么区别

请写出以下代码的打印结果,主要目的是考察 a 和&a 的区别。

#include<stdio.h> 
void main( void ) 
{ 
 	int a[5]={1,2,3,4,5}; 
 	int *ptr=(int *)(&a+1); 
 	printf("%d,%d",*(a+1),*(ptr-1));  	
 	return; 
} 

输出结果:2,5。

注意:数组名 a 可以作数组的首地址,而&a 是数组的指针。

思考: 将原式的 int *ptr=(int *)(&a+1); 改为 int *ptr=(int *)(a+1);时输出结果将是什么呢?

问题3: 简述 C、C++程序编译的内存分配情况

C、C++中内存分配方式可以分为三种:

(1) 从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static 变量等。

(2) 在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

(3) 从堆上分配:
即动态内存分配。程序在运行的时候用 malloc 或 new 申请任意大小的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。

一个 C、C++程序编译时内存分为 5 大存储区:堆区、栈区、全局区、文字常量区、程序代码区。

问题4: 简述 strcpy、sprintf 与 memcpy 的区别

三者主要有以下不同之处:

(1) 操作对象不同,strcpy 的两个操作对象均为字符串,sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。

(2) 执行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。

(3) 实现功能不同,strcpy 主要实现字符串变量间的拷贝,sprintf 主要实现其他数据类型格式到字符串的转化,memcpy 主要是内存块间的拷贝。

说明:strcpy、sprintf 与 memcpy 都可以实现拷贝的功能,但是针对的对象不同,根据实际需求,来选择合适的函数实现拷贝功能。

标签:面试题,int,memcpy,strcpy,内存,第四篇,华为技术,分配,sprintf
From: https://www.cnblogs.com/autodriver/p/18570287

相关文章

  • springmvc核心点(面试题)
    一,什么是SpringMVC   SpringMVC是基于Java的实现了MVC设计模式的轻量级Web框架,通过把Model,View,Controller分离,将Web层进行职责解耦把复杂的Web应用分成逻辑清晰的几部分,简化开发,减少出错,方便开发人员之间的配合二,什么是MVCMVC主要的用途就是对组件之间进行隔离分层M:......
  • 极智嘉嵌入式面试题及参考答案
    对于交叉编译器的理解交叉编译器是一种在一个计算机平台上为另一个不同架构的计算机平台生成可执行代码的编译器。它在嵌入式系统开发中起着关键作用。从其必要性来看,嵌入式系统通常使用的处理器架构与我们日常使用的PC等通用计算机不同,如ARM、MIPS等。而我们开发嵌入......
  • 挑战1000道前端面试题之判断对象是否存在循环引用(15)
    循环引用循环引用是指两个或多个对象之间相互引用,形成一个闭环。这种引用关系会导致垃圾回收机制无法正常工作,因为这些对象始终被认为是“可达”的,即使它们不再被其他部分的代码使用。具体实现functionisCyclic(obj){letseenObjects=newWeakSet();function......
  • SpringAop--Java面试题
    目录Spring的事务隔离级别?Spring的事务传播行为?1>概念2>事务传播的配置什么是AoP?AoP与ooP有何区别?1>Aop的概念2>Aop和OOp的区别什么是连接点、切点和增强(或通知)?连接点切点增强什么是织入?有哪些织入方式?1>织入概念2>织入方式什么是切面?SpringAoP如何定义一个切面?1>切......
  • 高级java每日一道面试题-2024年11月23日-JVM篇-什么时候会出发FullGC?
    如果有遗漏,评论区告诉我进行补充面试官:什么时候会出发FullGC?我回答:在Java高级面试中,FullGC(全局垃圾回收)是一个重要的考点。FullGC是一种垃圾回收机制,用于回收整个堆内存中的所有的未使用的对象,包括年轻代(新生代)、老年代和永久代(元空间,Java8及以后)中的对象。Full......
  • 高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
    如果有遗漏,评论区告诉我进行补充面试官:说说对象分配规则?我回答:在Java高级面试中,对象分配规则是一个核心考点,它涉及到JVM的内存管理、对象的创建和初始化等多个方面。以下是对Java对象分配规则的详细解释:一、内存分配区域Java中的对象主要在堆(Heap)和栈(Stack)中分配......
  • 华为技术岗位笔试&面试题汇总-第三篇
    说在前面本篇文章是华为技术岗位笔试&面试题-第三篇后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。欢迎大家点赞关注转发问题1:量的声明和定义有什么区别为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以......
  • 字节跳动精选20道AI产品经理面试题,附上答案+详细解答,上岸AI产品经理岗就靠这篇了!
    分享20道字节跳动产品经理的面试题,产品经理的面试很多会跟项目强关联,比如面试电商产品经理,就要多聊电商的业务,所以我们选了一些比较通用的,面试题及我们的分析回答。0120道面试题(前10道)1)自我介绍。2)为什么做产品经理?3)这么多年的工作经验,你对产品经理有什么新的认知?4)你......
  • JVM常见面试题(四):垃圾回收
    文章目录前言堆区域划分GC分类空间分配担保查看JDK使用的垃圾回收器常见面试题一、对象什么时候可以被垃圾器回收1.1对象何时被垃圾器回收1.2如何定位垃圾/判断对象是否死亡1.2.1引用计数法1.2.2可达性分析算法1.3如何判断一个常量是废弃常量1.4如......
  • Java2024-高频面试题(附答案)
    *1、SpringCloud有哪些常用组件?分别是什么作用?答:Nacos,OpenFeign,Sentinel,Seata,RabbitMQ,GatewayNacos:服务注册中心,提供服务注册和发现功能OpenFeign:实现远程调用Sentinel:提供服务容错保护Seata:实现分布式事务管理RabbitMQ:实现异步通知Gateway:(API网关......