QQ音乐Android一面凉经

最近面试了不少公司, 近期告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是QQ音乐Android一面凉经。

面试问题(40min)

  • 自我介绍
    • 工作经历, 重点讲能突出自己优势的经历或项目
    • 换工作的原因
  • 聊项目A(RN页面打开速度优化)
    • 简单说一下RN的实现,和客户端的交互原理和流程。
    • RN页面启动耗时久?主要的原因是什么?
    • 网络请求前置,前置的请求参数是怎么获得?
    • 仅网络请求前置的话, 启动速度还是会比native慢。还有其他优化吗?
    • 进入页面前进行预热可能造成不必要的资源消耗, 有没有统计过多少人会进入这个RN页? 有些用户可能不会点。
    • 工程内用RN的页面多不多?
    • 公司内RN的基建是否参与建设
  • 聊项目B(业务组件化)
    • xx业务的组件化讲一下, 具体做了什么?
    • 从主工程里抽出来的子仓库如何保留git记录?
    • 说下组件化模块化的优点。常说的就是"代码清晰,业务隔离"。面试官认为这两点是比较虚幻的。怎么个清晰法,怎么个解耦法其实是不好量化的。实际对业务上的帮助或其他方面的优点说说你的理解。
  • 聊项目C
    • 展开讲讲
  • 聊聊你擅长的领域(内存、页面打开耗时、App安装、so、线程、内存、网络、UI卡顿、ANR、Web等挑一个自己擅长的或有研究的讲讲)
    • 内存
      • 内存线程监控怎么做?线上问题排查思路。内存监控工具有哪些?检查内存泄漏的原理, 如何设定内存阈值。
      • LeakCanary的原理。它是怎么做到检测内存泄漏。如何实现?
      • LeakCanary过一段会去检测内存中的对象, 这个时机是怎么定的?
      • 内存中常用的几种引用?四大引用。软引用和弱引用的区别说一下
    • 线程
      • 在Activity/Fragment页面执行异步任务, 在任务执行前退出页面。那么这个过程中, 线程的执行过程以及内存的情况, 描述一下。比如内存泄漏, 这个线程会不会执行。会有什么样的问题。
      • 这种情况在业务中很容易出现, 你们在工程中是怎么规避的?比如有些任务我们是使用handler, 有些任务要我们做一些后台的处理。这样的情况又该怎么样处理呢?
      • 大多数开发者都会退出页面的时候去移除异步任务。但是每个地方都需要手写的话, 相对来说还是比较繁琐的。要是给你一个需求, 让你实现一个任务框架。要求不用手动地去移除, 但是退出页面的时候也不会去执行。你可以结合感知生命周期的组件去想想怎么实现这个东西。比如说我在用的时候我就知道什么时候该移除, 自动移除。我就只用管它怎么用就好了,我根本就不用考虑使用它会有什么问题。怎么实现?
      • kotlin协程
        • kotlin协程的原理大概说一下。它怎么做到写起来是同步的, 实际上是异步的。它是怎么做到的?
        • 协程出现问题不好排查, 不像线程链路比较简单, 协程包装的层级比较多。针对协程问题排查, 你们有什么提效手段?
  • 你们工程中kotlin的版本升级到多少?kotlin版本升级过程中遇到过什么问题, 怎么解决的?

反问问题(10min)

当前招聘的Android岗位之后会负责什么内容?

缺的业务比较多, 并不明确, 看候选人个人偏好和团队配置情况。目前有以下方向: 游戏化, RN相关、歌单等。

为什么没有问Java/Android基础、操作系统、计算机网络相关的, 也没有代码考核(算法题), 为什么只问项目经历?

1 基础是可以背的, 并不能体现出候选人的优势

2 其实我们面的方式也不一定能体现出一个人真实的能力, 有可能有些人就发挥不出来

3 我们这边还有一些面试官喜欢面算法, 不同的倾向吧

4 我这边更希望能体现出候选人擅长的地方

面试会有几轮? 每一轮面试实际考察的内容应该不一样吧?

至少4-5轮。

我们对社招同学, 看重经验会多一些。有经验就面经验。没有经验就面一些基础能力。能力是可以迁移的。即使你在一个地方深入做了很多东西, 换了一个地方, 它可能是没什么用的。很多业务其实是没法直接复用的。即使说是性能优化, 换了一个项目它有些东西可能就完全用不到了。但是你在做这个东西中的一些思考, 是可以迁移的。 "做这个东西怎么做, 怎么去思考做好"这个是可以迁移的。

招聘的岗位是需要一个什么职级的?

7、8、9都可

相关推荐
500了6 小时前
Kotlin基本知识
android·开发语言·kotlin
人工智能的苟富贵7 小时前
Android Debug Bridge(ADB)完全指南
android·adb
小雨cc5566ru12 小时前
uniapp+Android面向网络学习的时间管理工具软件 微信小程序
android·微信小程序·uni-app
bianshaopeng13 小时前
android 原生加载pdf
android·pdf
hhzz13 小时前
Linux Shell编程快速入门以及案例(Linux一键批量启动、停止、重启Jar包Shell脚本)
android·linux·jar
火红的小辣椒14 小时前
XSS基础
android·web安全
勿问东西16 小时前
【Android】设备操作
android
五味香16 小时前
C++学习,信号处理
android·c语言·开发语言·c++·学习·算法·信号处理
图王大胜18 小时前
Android Framework AMS(01)AMS启动及相关初始化1-4
android·framework·ams·systemserver
工程师老罗20 小时前
Android Button “No speakable text present” 问题解决
android