vivo AI 客户端(Android 方向)一面:全程聊项目
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- 你没有实习是吗?为什么?
- 针对简历上的项目问细节。
- 项目里遇到的难点是什么?
- 采用了哪些技术点?为什么用这个?你对它了解多少?
反问环节:① 入职后是从业务方面切入吗?② 这个岗位重视哪方面的能力?面试官回答:校招生更重要的是学习能力,语言是 Kotlin、Java、C++ 之类的。
《参考解析》
没有实习怎么答
这题几乎是「无实习」同学的必答题,面试官想确认的不是你有没有实习,而是你有没有在真实约束下做过完整的东西、以及你为什么没去。
- 先给事实和原因,不要绕:实验室不放人、在准备保研/考研、课业与毕设冲突、地域限制——都是合理答案。原帖作者憋了半天最后还是如实说了「实验室不放」,这比编一个更安全,因为后面的项目细节会露馅。
- 立刻补上替代证据:把话题转到「但我做了什么」。实验室横向项目、开源贡献、自研 App 上线到应用商店、参加过的比赛,都可以当实习用——关键是说清需求来源、你的角色、交付时间、有没有真实使用者。
- 主动承诺可实习时间:如果暑期能到岗,直接给时间;如果不能,说明你的毕设/论文安排,让对方能排期。
- 避免两种答法:一是抱怨导师/学校(负面情绪减分),二是含糊说「在忙其他事情」(听起来像没有产出)。
简历项目怎么经得住追问
顺着「业务背景 → 你的角色 → 技术方案 → 难点 → 结果」这条线准备,每个项目写成一页口述稿:
- 业务背景:App 是干什么的、给谁用、量级多大(DAU、接口 QPS、包体积)。
- 你的角色:独立开发还是负责某模块,代码量、提交数、有没有带人。
- 技术方案:架构分层(UI / 逻辑 / 数据)、关键库的选择(Compose vs View、Retrofit/OkHttp、Room、Hilt)。
- 难点:一定要有一个能讲十分钟的难点,最好带数据。
- 结果:上线没有、崩溃率、启动耗时、包体积、用户反馈。
面试官问「细节」时最常往下钻三处:数据是怎么从网络到界面的(线程切换、缓存策略)、异常情况怎么处理(断网、超时、重复请求)、有没有做性能优化(怎么测的、优化前后数字)。
技术选型题怎么答
「为什么用这个技术」的满分结构是四步:候选方案有哪些 → 约束条件是什么 → 为什么这个更合适 → 事后验证与代价。
以 Android 网络层为例:可选的 OkHttp + Retrofit、Ktor Client、原生 HttpURLConnection;约束是团队熟悉度、拦截器生态、与协程的配合、包体积;选 Retrofit 是因为接口声明式、拦截器统一处理鉴权和日志、和协程 suspend 配合成熟;代价是多一层反射/注解处理,启动时有初始化成本。最后补一句「如果重来,我会在 X 上换一种做法」,显得你是真做过而不是背文档。
Android 客户端校招该准备的知识面
面试官明确说了语言是 Kotlin、Java、C++,所以基础要覆盖:
- Kotlin:协程(
suspend、CoroutineScope、Dispatchers、结构化并发与取消传播)、Flow与背压、扩展函数、密封类、by lazy、内联函数与reified。 - Android 基础:四大组件与生命周期、
Activity启动模式、Handler/Looper/MessageQueue机制、Binder与跨进程、View绘制流程(measure/layout/draw)与事件分发。 - 性能:内存泄漏(LeakCanary、常见持有链)、卡顿(Choreographer、过度绘制)、启动优化(启动窗口、异步初始化、启动器框架)、包体积(R8、资源混淆、so 裁剪)。
- 现代化:Jetpack Compose(重组与稳定性、
remember/derivedStateOf)、Hilt、Room、WorkManager;有条件就补一点 JNI/C++ 基础,AI 客户端方向常涉及端侧推理与 native 库集成。 - AI 客户端方向的加分项:端侧模型推理框架(TFLite、NNAPI、MNN、llama.cpp)、模型量化与算子加速、流式输出与前后台切换时的状态保持。
反问环节问什么
原帖这两个反问很实用:**「入职后是从业务方面切入吗」确认的是工作内容,「这个岗位重视哪方面的能力」**拿到的是面试官对校招生的真实预期(学习能力 + 语言栈)。可以再补两个更落地的:团队现在做的是哪条产品线的端侧 AI、新人前三个月大概负责什么模块。这类问题既能让对方具体回答,也能帮你判断这个岗位是不是你要的。