一线互联网Java面经(阿里,远算,有赞,大疆,华为)已拿offer

博主分享了在阿里、远算、有赞、大疆、华为等公司的一线Java面试经历,涵盖了操作系统、网络、数据结构、并发编程等方面的问题,并强调了面试中深入理解基础知识的重要性。面试题目包括TCP连接的唯一性、HashMap的扩容、微服务架构挑战、Redis热点问题解决等,同时也提及了面试技巧,如如何应对不熟悉的题目和扩展讨论。

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

阿里中间件一面:

(在校招正式开始前走的非正式渠道,一面通过了 ,二面校招开始要录入系统,我拒绝了。)

40多分钟,以下顺序可能是乱的:

  • 自我介绍

  • 本科和研究生期间成绩

  • 散列表什么实现

  • 冲突了怎么解决

  • HashMap中扩容和缩容怎么做

  • dfs和bfs区别

  • TCP怎么保证连接的唯一性(答案: TCP的源端口、目的端口、以及IP层的源IP地址、目的IP地址四元组唯一的标识了一一个TCP连接)

  • TCP怎么断开连接(四次挥手)

  • 什么是进程上下文

  • 上下文中要保存哪些信息(憋住了不知道说啥,让我大胆猜,然而也没猜出什么)

  • 什么是物理地址、什么是逻辑地址

  • 逻辑地址怎么转换为物理地址

  • 什么是用户态、什么是内核态

  • 怎么找到链表中倒数第三个节点

  • 两个线程,怎么保证A线程对- -个变星写了之后B线程可以立即看到,有哪几种实现方式

  • 实现一下生产者和消费者模式

  • ArrayList和LinkedList区 别

  • 怎么判断对象可回收

  • 什么是根节点

  • 怼项目,问了好多问题

  • 看我写的有国防专利和国防科技报告,让我讲一-讲

  • 还有部分忘记了

  • 你有什么要问我的吗

总结:简历里写了熟悉操作系统和网络等计算机基础,然后他就问了挺多操作系统和网络的,可惜好几个都没答上来。我问你觉得我哪部分需要再提升,他说基础。

总结2 :为自己简历上写的每句话负责,否则被问出来了, 很尴尬。


 

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

余额充值