2024热乎 上海车BU 华为od 面经

2024热乎 上海车BU 华为od 面经
最新回答
依旧殇心

2026-10-23 14:38:22

2024年上海华为车BU OD岗位面试经验总结如下,涵盖流程、题目及备考建议:

一、面试整体流程
  1. 简历筛选:1月3日通过筛选,进入面试环节。
  2. 资格面(1月8日):

    核心问题:职业空白期原因、离职原因、期望薪资、技术栈。

    特殊情况:因上半年参加过机试且成绩有效,无需重复考试。

  3. 技术一面(1月17日):

    时长:约30分钟(原预期1小时,因手撕代码较快结束)。

    流程:自我介绍→项目经历深挖→八股文→手撕算法。

  4. 技术二面(1月25日):

    波折:因系统问题延迟一周,面试体验佳,面试官互动性强。

    流程:八股文→手撕算法→Linux命令→OSI模型。

  5. 技术三面(加面,1月27日):

    原因:前两轮定级不一致,需加面。

    流程:手撕算法→操作系统→项目挑战→排序复杂度。

  6. 综合面(2月1日):

    时长:10分钟,纯聊天形式。

  7. Offer发放(2月21日):因春节假期延迟发放。
二、技术面核心题目与解析技术一面
  1. 项目问题:

    上一份工作的最大挑战及解决方案。

    关键点:需体现问题分析能力、技术深度及结果导向思维。

  2. 八股文:

    poll与epoll的区别:

    poll基于轮询,epoll基于事件驱动,支持海量连接。

    优化并发量的措施:

    示例:多线程/协程、连接池、异步IO、负载均衡。

  3. 手撕算法:

    最长不重复子串:

    思路:滑动窗口法,维护一个字符集合,动态调整窗口边界。

    代码示例(Python):

def length_of_longest_substring(s: str) -> int: char_set = set() left = 0 max_len = 0 for right in range(len(s)): while s[right] in char_set: char_set.remove(s[left]) left += 1 char_set.add(s[right]) max_len = max(max_len, right - left + 1) return max_len技术二面
  1. 八股文:

    int a[sizeof(unsigned long)]合法性:

    合法,sizeof在编译期计算,结果为常量。

    内存对齐题目:

    示例:计算结构体struct {char a; int b;}的大小(通常为8字节,因int需4字节对齐)。

    OSI七层模型:

    物理层→数据链路层→网络层→传输层→会话层→表示层→应用层。

  2. Linux命令:

    示例:top(系统监控)、netstat(网络状态)。

  3. 手撕算法:

    岛屿数量:

    思路:DFS/BFS遍历矩阵,标记访问过的节点。

    代码示例(Python):

def num_islands(grid): if not grid: return 0 rows, cols = len(grid), len(grid[0]) count = 0 def dfs(r, c): if r < 0 or r >= rows or c < 0 or c >= cols or grid[r][c] == '0': return grid[r][c] = '0' dfs(r+1, c) dfs(r-1, c) dfs(r, c+1) dfs(r, c-1) for r in range(rows): for c in range(cols): if grid[r][c] == '1': dfs(r, c) count += 1 return count技术三面(加面)
  1. 操作系统:

    虚拟内存与请求分页:

    虚拟内存通过分页机制实现内存隔离与扩展,请求分页按需加载页面。

  2. IO多路复用:

    示例:select/poll/epoll的适用场景与区别。

  3. 手撕算法:

    字符串插入消分最大值:

    题目:给定字符串(如"ABCCBCCC"),相邻重复字符可消去,得分=消去字符数。允许在任意位置插入A/B/C,求最大得分。

    思路:

    暴力法:遍历所有插入位置,计算得分后取最大值(时间复杂度高)。

    优化方向:动态规划或栈结构记录消分过程,但需处理插入后的状态变化。

    参考代码(栈实现消分逻辑):

def max_score(s: str) -> int: def calculate_score(s): stack = [] for char in s: if stack and stack[-1] == char: stack.pop() else: stack.append(char) return len(s) - len(stack) max_score = 0 for i in range(len(s) + 1): for c in ['A', 'B', 'C']: new_s = s[:i] + c + s[i:] current_score = calculate_score(new_s) if current_score > max_score: max_score = current_score return max_score三、备考建议
  1. 算法题库:

    参考博主题库(Java/Python/C++/JS/C语言):

    Java题库

    Python题库

    C++题库

    JS题库

    C语言题库

    手撕题库

    重点练习:滑动窗口、DFS/BFS、动态规划、栈/队列应用。

  2. 八股文:

    网络:TCP/IP、HTTP、IO多路复用。

    操作系统:进程/线程、虚拟内存、死锁。

    数据库:索引、事务、锁机制。

  3. 项目经验:

    准备2-3个项目案例,突出技术难点、解决方案及量化结果。

  4. 模拟面试:

    通过LeetCode周赛或与同伴模拟面试,提升代码熟练度与抗压能力。

四、注意事项
  1. 时间管理:手撕算法环节需严格控制时间,优先保证思路正确,再优化代码。
  2. 沟通技巧:遇到卡壳时,可向面试官说明思路,争取提示。
  3. 心态调整:加面不代表否定,可能是定级需要,保持专业态度。

图:华为车BU面试流程概览

通过系统准备与针对性练习,可显著提升通过率。祝面试顺利!