华为od 面试八股文_C语言_02_含答案

目录

1:static的用法(定义和用途)

2:struct、union的异同

3:malloc的底层实现

4:new/delete和malloc/free的区别

5:volatile关键字

(a)关于编译器优化

(b)volatile的引入

(c)哪些情况下使用volatile

6:typedef和define有什么区别?

(a)原理不同

(b)功能不同

(c)作用域不同

7:栈在C语言中有什么作用?

8:strcat、strncat、strcmp、strcpy哪些函数会导致内存溢出?如何改进?

9:大小端存储


1:static的用法(定义和用途)

static修饰局部变量:使其变为静态存储方式(静态数据区),函数执行完成之后不会被释放,而是继续保存在内存中;

static修饰全局变量:使其只在本文件内部有效,其他文件不可链接或引用该变量;

static修饰函数:静态函数,即函数只在本文件内部有效,对其他文件不可见;避免同名干扰,同时保护

2:struct、union的异同

  • struct中每个变量依次存储;union中,每个变量都是从偏移地址零开始存储,同一时刻只有一个成员存储于该地址

  • struct内存大小遵循结构对齐原则

    • 数据成员对齐规则:每个数据成员存储的起始位置要从该成员大小的整数倍开始

    • 数据成员包含结构体:结构体成员要从其内部最大元素对象的整数倍地址开始存储

    • 结构体总大小:其内部最大基本成员的整数倍,不足则要补齐

  • union内存大小为其最大成员的整数倍

### 华为OD面试常见问题及答案整理 #### 技术面试核心考点 华为OD面试的技术部分通常围绕算法、数据结构、操作系统、计算机网络、数据库等方面展开。以下是常见的技术面试问题及其解答: 1. **HTTP缓存机制** HTTP缓存主要用于优化GET请求的性能,通过减少不必要的网络交互来提升效率[^2]。 - 缓存分为两种:强缓存和协商缓存。 - 强缓存基于`Cache-Control`或`Expires`字段,在有效期内直接返回资源而无需再次访问服务器。 - 协商缓存依赖于`ETag`或`Last-Modified`字段,当本地缓存过期时,客户端向服务器发送验证请求,如果未更新,则返回状态码304。 2. **C语言中的常量指针与指针常量** C语言中使用`const`关键字可以增强程序的安全性和可读性[^3]。例如: ```c void printArray(const int *arr, int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); // arr[i] = 0; // 错误:不能修改数组内容 } } ``` 上述代码中,`const int *arr`表示指针指向的内容不可更改,从而防止意外的数据篡改。 3. **线程同步与互斥锁** 多线程环境下的资源共享可能导致竞态条件(Race Condition),因此需要引入互斥锁(Mutex Lock)或其他同步机制。以下是一个简单的例子: ```cpp #include <pthread.h> pthread_mutex_t mutex; int shared_variable = 0; void* increment(void* arg) { pthread_mutex_lock(&mutex); shared_variable++; pthread_mutex_unlock(&mutex); return NULL; } int main() { pthread_t thread1, thread2; pthread_mutex_init(&mutex, NULL); pthread_create(&thread1, NULL, increment, NULL); pthread_create(&thread2, NULL, increment, NULL); pthread_join(thread1, NULL); pthread_join(thread2, NULL); pthread_mutex_destroy(&mutex); return 0; } ``` #### 面试流程与应对技巧 华为OD面试一般包括简历筛选、在线笔试、技术面谈、综合评估等多个环节。针对不同阶段的特点,考生应采取相应的策略[^1]: - **简历撰写**:突出项目经验和技术能力,尤其是与目标岗位相关的技能点。 - **在线笔试**:注重时间管理,优先完成高分题目;熟悉LeetCode上的经典算法题型。 - **技术面谈**:提前复习基础知识,练习手写代码并解释逻辑过程。 - **综合评估**:展示团队协作能力和沟通表达水平。 #### 常见八股文知识点总结 除了具体的技术细节外,“八股文”也是华为OD面试的重要组成部分。它涵盖了广泛的基础理论知识,如TCP三次握手/四次挥手原理、MySQL索引设计原则等。下面列举几个典型主题及其简要说明: - TCP连接建立与释放过程中涉及的状态转换图; - 数据库事务ACID特性定义及其应用场景分析; - Redis作为内存级NoSQL存储解决方案的优势对比传统关系型DBMS。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值