面试过程
- 填写面试表(比较讨厌这个)
- 用200字写一个自我介绍,画一个房子,树和人(心理测试)
- 三个人面(一个认识,两个技术)
- 进程间大数据传输(内存共享)
Android系统架构(重点)
| 知识点 | 准备方向 |
|---|---|
| AMS | Activity管理、生命周期、任务栈 |
| WMS | 窗口管理、Surface、ViewRoot |
| PMS | 包安装流程、权限管理 |
| Binder | IPC机制原理、AIDL |
| FrameWork层 | 源码阅读,自定义系统服务 |
车载应用开发(核心)
- AVM(全景环视):四路摄像头拼接、鱼眼矫正、3D渲染
- 泊车(全景视图):轨迹线绘制、障碍物检测显示
- DMS(驾驶员监控):人脸检测、疲劳检测、注意力分析
车载特有知识
- Android Automotive OS 与 手机Android区别
- 车载系统启动流程
- CarService 架构
- 车载显示多屏方案
- HAL层与车载硬件交互
多媒体/视频流开发
| 框架 | 核心内容 |
|---|---|
| MediaPlayer | 状态机、底层流程、自定义封装 |
| OpenMAX | 组件模型、编解码流程、IL层 |
| GStreamer | Pipeline架构、插件机制、Element开发 |
| OpenGL ES | 纹理渲染、Shader编程、YUV处理 |
视频流相关
- RTSP/RTMP 协议原理
- H.264/H.265 编解码
- 硬编硬解(MediaCodec)
- 低延迟方案
- 音视频同步
通讯模块开发
TCP/UDP:
- Socket编程模型
- 粘包/拆包处理
- 心跳机制
- 断线重连策略
CAN信号:
- CAN总线协议基础
- 信号解析(DBC文件)
- Android与CAN通信(通过HAL/Socket CAN)
- 信号周期发送/接收
第三方库集成(Unity)
- Unity导出Android项目配置
- UnityPlayerActivity生命周期管理
- JNI桥接(Java ↔ C# 互调)
- Unity与原生UI层叠显示
- 内存管理与性能优化
- 热更新方案
架构设计与设计模式
常考设计模式
- ✅ 单例模式 —— 播放器管理、CAN管理
- ✅ 观察者模式 —— 信号监听、事件总线
- ✅ 工厂模式 —— 视频源创建、解码器选择
- ✅ 策略模式 —— 编解码策略切换
- ✅ 责任链模式 —— 视频帧处理流水线
- ✅ 代理模式 —— Binder代理、懒加载
架构能力体现
- 模块化架构设计(播放模块、通讯模块、UI模块)
- 接口抽象与解耦
- 插件化/组件化思想
SDK开发与优化(加分项)
SDK设计
- API设计原则(简洁、易用、向后兼容)
- 初始化流程设计
- 回调机制设计
- 版本管理策略
优化经验
- 🔧 启动优化:延迟加载、异步初始化
- 🔧 内存优化:图片缓存、对象池、内存泄漏排查
- 🔧 性能优化:帧率优化、CPU占用降低
- 🔧 包体积:资源压缩、动态加载
- 🔧 功耗优化:后台策略、唤醒优化
Java/C 语言基础
Java重点
- 集合框架(HashMap源码必问)
- 多线程与线程池
- 泛型与反射
- 内存模型与GC
- 异常处理
C语言重点
- 指针与内存管理
- 结构体与函数指针
- 内存泄漏排查(valgrind)
- 与Java的JNI交互
项目经验准备(STAR法则)
可能被问到的问题
🔥 简单题:
- Android四大组件生命周期
- Handler消息机制
- View绘制流程
🔥🔥 中等题:
- AMS启动Activity流程
- 视频从采集到显示的全流程
- TCP和UDP的区别及选择
🔥🔥🔥 难题:
- 如何实现毫秒级视频延迟?
- 多路视频流同时解码的性能优化?
- 车载系统中如何保证通信的实时性和可靠性?
- 如何设计一个可插拔的解码器架构?