【面经】华为面经(Java开发)

【面经】华为面经(Java开发)

一面

介绍一下你熟悉的技术栈和项目
说一下你常用的集合(ArrayList,LinkedList,HashMap)他们之间的区别
说一下线程池的参数,为什么要设置一个maxsize,以及各个参数的情况,线程空闲机制等
说一下你用到哪些锁,以及区别
假如给你一个类,类里面有一个方法public synchronized void x(){},现在new 两个对象a,和b,我们用a.x和b.x,会不会出现抢占锁的情况
什么是重入锁,为什么称为重入,举个例。如果不是重入的会发生什么。
项目中的协议用的什么
重用的集合自定义排序是怎么用的
前台的请求,后台怎么处理和接受
http和https区别,有没有用过https
jvm是运行时区域
堆外内存,为什么需要堆外内存
你的优势
还有一些基础问题记不太清了
手撕一个代码leetcode72题

二面

将公司实习项目,架构和流程
具体分析流程,哪一步什么情况
http请求的格式,三部分分别有哪些内容,之间的分隔符是‘/r’还是‘/n’
你的项目使用了tomcat没有
tomcat是导入使用war包的,里面的xml文件是服务器读还是war读
springboot的请求,在进行数据库操作的当前的链接是什么样,是否会阻塞
有没有做过线程,创建线程的方式
你的优势
手撕一个代码,leetcode第415题
做一个数学题,有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层???

三面

自我介绍
介绍项目
dubbo介绍一下
dubbo架构图
dubbo是否是微服务
zookeeper的作用
zookeeper要不要做分发
负载均衡怎么做的
别人怎么评价你
你的优势
怎么评价华为,你印象中的华为
想在哪个城市

### 华为 OD Java 开发经验总结 #### 常见问题分类与解答 #### 1. **Java 基础** 常见的 Java 基础问题可能涉及类加载机制、集合框架以及基本语法特性。例如: - 类加载器的工作原理是什么?如何实现自定义类加载器? - ArrayList 和 LinkedList 的区别有哪些?[^1] ```java // 示例代码展示 ArrayList 和 LinkedList 的性能差异 import java.util.ArrayList; import java.util.LinkedList; public class ListPerformance { public static void main(String[] args) { long startTime, endTime; // 测试 ArrayList 插入性能 startTime = System.currentTimeMillis(); ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 0; i < 100000; i++) { arrayList.add(0, i); } endTime = System.currentTimeMillis(); System.out.println("ArrayList insert time: " + (endTime - startTime)); // 测试 LinkedList 插入性能 startTime = System.currentTimeMillis(); LinkedList<Integer> linkedList = new LinkedList<>(); for (int i = 0; i < 100000; i++) { linkedList.add(0, i); } endTime = System.currentTimeMillis(); System.out.println("LinkedList insert time: " + (endTime - startTime)); } } ``` #### 2. **Java 高级** Java 高级部分通常会考察线程、并发编程、内存模型等内容。 - 如何创建一个新的线程?Thread 和 Runnable 接口的区别是什么? - 线程池的核心参数有哪些?如何配置合理的线程池? ```java // 创建线程的两种方式示例 class MyRunnable implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName() + ": Running..."); } } public class ThreadExample { public static void main(String[] args) { // 使用 Thread 类 Thread thread1 = new Thread(() -> System.out.println(Thread.currentThread().getName())); thread1.start(); // 使用 Runnable 接口 Thread thread2 = new Thread(new MyRunnable()); thread2.start(); } } ``` 以上代码展示了通过继承 `Thread` 或实现 `Runnable` 来启动新线程的方式[^1]。 #### 3. **Java Web 框架** 对于 Spring Boot、Spring MVC 等框架的理解也是重点之一。 - Spring 中 Bean 的生命周期是怎样的? - AOP(向切编程)的实际应用场景有哪些? ```java // Spring AOP 切示例 @Aspect @Component public class LoggingAspect { @Before("execution(* com.example.service.*.*(..))") public void logMethodEntry(JoinPoint joinPoint) { System.out.println("Entering method: " + joinPoint.getSignature().toShortString()); } @AfterReturning(pointcut = "execution(* com.example.service.*.*(..))", returning = "result") public void logMethodExit(Object result) { System.out.println("Exiting with result: " + result.toString()); } } ``` 这段代码演示了如何利用 Spring AOP 实现方法调用的日志记录功能[^1]。 #### 4. **算法与数据结构** 虽然属于通用技能,但在实际项目中也非常重要。 - 经典排序算法的时间复杂度比较。 - 图遍历算法 DFS 和 BFS 的具体实现。 ```python # Python 实现图的广度优先搜索(BFS) from collections import deque def bfs(graph, start_node): visited = set() queue = deque([start_node]) while queue: node = queue.popleft() if node not in visited: visited.add(node) neighbors = graph[node] queue.extend(neighbors) return visited ``` 此代码片段实现了基于队列的广度优先搜索逻辑[^3]。 #### 5. **计算机网络与操作系统** 这部分可能会问到 HTTP 请求的过程或者 Linux 下进程调度策略等问题。 - TCP三次握手的具体过程及其作用为何? - 文件描述符的概念及在高并发场景下的优化手段。 --- ### 总结 针对华为 OD 试中的 Java 职位,建议候选人深入理解核心知识点并结合实践案例加以巩固。特别注意线上视频试环境带来的便利性和挑战性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值