华为od 面试八股文_Java_03_含答案

本文详细解答了华为OD面试中关于Java的常见问题,包括Java跨平台原理、触发FullGC的情况、String不可变的原因、对象分配规则、JVM调优命令、HashMap特性和线程安全问题、synchronized、volatile和CAS的区别以及ThreadLocal的使用。通过这些深入探讨,有助于理解Java内存管理、并发和性能优化的关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1:Java是如何实现跨平台的?

2:什么时候会触发FullGC ?

3:Java中的String 为什么不可变?

4:简述下java中的对象分配规则

5:调优命令你用过哪些?

6:HashMap 的长度为什么是 2 的幂次方?

7:HashMap 为什么线程不安全?

8:synchronized、volatile、CAS 区别?

9:ThreadLocal 用过吗?

10:HashMap和Hashtable有什么区别?


1:Java是如何实现跨平台的?

Java是通过JVM(Java虚拟机)实现跨平台的。

JVM可以理解成一个软件,不同的平台有不同的版本。我们编写的Java代码,编译后会生成.class 文件(字节码文件)。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码,通过JVM翻译成机器码之后才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。

只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。

因此,运行Java程序必须有JVM的支持,因为编译的结果不是机器码,必须要经过JVM的翻译才能执行。

2:什么时候会触发FullGC ?

除直接调用System.gc外,触发Full GC执行的情况有如下四种。

1.旧生代空间不足
旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足&

### 华为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、付费专栏及课程。

余额充值