微信Android一面凉经(2024)
笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《微信Android一面凉经(2024)》。
面试职位: 微信-客户端开发工程师-基础功能(广州)
Android/iOS终端小程序、小游戏以及公众号、微信搜索、以及其他的创新业务的开发。
技术一面
- 面试形式:视频面试
- 面试时长: 110min(提问80min + 代码15min + 反问15min)
- 代码考核: 20.有效的括号
- 岗位地点: 广州
面试问题(80min)
- 自我介绍, 是否在职
- 哪些项目比较有亮点能体现你的个人能力的
- RN页面打开速度优化
- 改成RN的目的?
- 最终能媲美原生?
- 除了预载还做了什么, 能达到媲美原生?
- 如果不做视图预热, 这个页面打开过程中, 有哪些路径、节点是性能瓶颈?
- xx业务的自定义View逻辑比较复杂是吧?为什么不让这个View异步地去渲染, 拿到数据再加载出来?
- 视图预热包括几个阶段?总共做了几个事情?
- 视图预热场景深入的技术研究, 改造相关的技术难点?
- 怎么去做?
- 每个业务去做预热都需要知道你们的这个xx机制。有没有想过能力下沉, 在框架层做掉?让业务更少程度去感知这个事情
- 这个方案, 多了xx内存。第二个业务增大也会有xxM吗?
- 有没有想过在保持预热后快速打开页面的效果的同时再把内存降下来?
- 升级中有没有遇到什么困难?
- 你上面说的是事实, 针对这些问题, 你们做了什么?
- 页面内优化?
- 有没有不能batch的请求?
- 我这边体验下来, 你们app的这个页面在小米14Ultra上滑动卡顿, 触顶反弹会卡.这块有优化吗?
- RN基建有没有做相关的监控?
- RN没有首帧渲染的回调吗?
- 除了首帧还有其他吗?
- 内存占用怎么做的?什么时机拿内存数据?通过什么上报?
- 播放优化
- 做策略的依据?
- 经验值or有依据?
- 策略动态下发?
- 拉线上数据, 根据数据支持做方案?
- 音质提升方案从远端迁移到本地会不会导致音质降低?
- 迁移过程中涉及什么难的、深的技术?
代码考核(15min)
进阶: 以代码上线的标准要求自己, 将代码写好。包括但不限于: 命名规范、合理的约束、代码可读性、可维护性、拓展性等。
java
public class Main {
private static final List<Character> LEFT = List.of('(', '[', '{');
private static final List<Character> RIGHT = List.of(')', ']', '}');
public static boolean isValid(String str) {
final Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
final char ch = str.charAt(i);
if (LEFT.indexOf(ch) != -1) {
stack.push(ch);
} else {
if (stack.isEmpty() || ch != RIGHT.get(LEFT.indexOf(stack.pop()))) {
return false;
}
}
}
return stack.isEmpty();
}
public static void main(String[] args) {
System.out.println(isValid("()")); // true
System.out.println(isValid("{[()]}")); // true
System.out.println(isValid("(")); // false
System.out.println(isValid("{(]}")); // false
}
}
反问问题(15min)
岗位负责内容
业务: 小程序、小游戏、公众号、搜索。
技术:
- WebView(渲染小程序前端视图)、
- 小游戏(游戏引擎(unity、自研引擎)、移植游戏(比如: 仙剑)引擎性能调优)、广告(朋友圈、订阅号/服务号/公众号)。
- matchbrush渲染框架(广告动态化))
- 公众号(timeline、flutter、c++逻辑和UI跨平台)
不确定具体做哪一块, 根据招人情况和候选人意愿。
跨平台是这几年在主推的一些方案: - H5
- flutter
- 游戏引擎
- c/c++
- 小程序
招聘岗位候选人的要求, 技能专精或其他方面的考量?
对项目的技术要点是否有深刻的理解。除了做了,是不是会理解里面的逻辑。比如播放器可以理解得更加深入。
不局限自己做的事情, 需要了解产品层面, 或者技术更底层的, 或者合作方的东西。
这样可以更好cover整个项目, 可以考虑得更加周到。
对不同工龄的同学的要求不同。刚毕业、毕业1-2年、毕业3、4、5、6年。
技术深度+技术广度+工程能力
工程能力:
- 性能,
- 全程cover思考
- 做方案前周全考虑
- 落地怎么把代码写好
- 发布后怎么追踪数据
- 业务优化闭环
面试顺利的话, 多久会通知下一轮?
2-4天。
面试量比较大。很多简历, 面试压力也很大。偶尔可能会稍晚一点, 看下一位面试官安排。
是不是HC比较充足?
充足不代表会降低标准。整个团队都比较充足。
微信本来就是一个精兵模式, 不会招很多人。
目前微信只有5、6千人, 但是CDG(企业发展事业群)、其他事业群可能会有2-3w人
我们现在有需求, 所以会招多一点人。
能过我们这边OK, 不能过也可以更好地准备其他部门的面试。机会都很多。
今天表现还不错, 要有信心。
总结
- 据说WXG是腾讯所有BG里最难进的, 也可以考虑先进腾讯其他部门, 再内部转岗到WXG。据说这样会比直接社招轻松些 -> 《我是如何拿到微信 offer 的?》
- 面试问得非常细节, 面试官真的有在好好听你描述项目, 细致地询问你在项目每个阶段的思考和行动。
- 可以看到全程都在问项目经历, 但整体面试下来, 面试官并不是在考察你做的过往工作是否有价值, 还是在考察你的做事风格, 行为规范, 是否符合逻辑。
- 直接把面试官说的要求贴这里吧, 希望对想要加入微信的朋友们有所帮助:
- 技术深度+技术广度+工程能力
- 性能
- 全程cover思考
- 做方案前周全考虑
- 落地怎么把代码写好
- 发布后怎么追踪数据
- 业务优化闭环