夸克Android一面凉经(2024)

夸克Android一面凉经(2024)

夸克

笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《夸克Android一面凉经(2024)》。

面试职位: 智能信息-客户端开发工程师-夸克小说

技术一面

  • 面试形式:视频面试
  • 面试时长: 60min(提问55min + 反问5min)
  • 代码考核: 无
  • 岗位地点: 广州

面试问题(55min)

  • 自我介绍
  • RN页面打开速度优化
    • 为什么工程中使用ReactNative, 而不是选择其他跨端的方案?
    • 看中了跨端的能力还是只是为了免发版
    • 优化方案是否同步到iOS端?
    • RN的缺点?
    • RN底层还是用原生UI控件,那它慢是慢在哪里?
    • 怎么优化?
    • 所有的优化效果最有效果是什么措施?
    • 内置Bundle包对包体积的影响?
    • 除了Bundle体积, RN本身的体积是多大?
    • 你在用RN过程中有没有踩过什么坑?
    • RN本身是用原生的View去渲染的, 跨端一致性会不会有什么问题?比如在Android调好了, 在iOS上看上去样子不太对。
    • 有一些东西改完是两端都要测, 还是只测一端?
    • 这个是怎么接入到工程中使用?单独RN仓库打包进apk, 还是源码依赖到Android和iOS的主工程中?
    • 在真正上线后动态话能力用得多不多?
    • 动态能力的跨版本兼容性如何?之前发的一些App的旧版本, 后面升级了很多版本。会不会有一些重新打包出来的产物, 下发下去不兼容, 导致页面渲染会出问题?
    • 会升级RN的版本吗?
    • 切引擎是会有兼容的问题对吧? 不切引擎之前是不是也有兼容问题?
    • 下发的时候, 是针对不同的版本下发, 还是针对所有的版本下发?
    • 是否可以针对不用app版本下发不同的RNBundle版本?
    • 你们App的版本覆盖速度有多快?
    • 为什么选择针对所有App版本下发相同的RNBundle的方案?
  • 播放优化
    • 跟播放性能相关的?
    • 那你主要在里面做的是什么事情?
    • 为什么进程通信数据这么大, 超过了Binder通信上限,我理解应该是一个非常精简的数据集合?
    • 所以说是有一些极端情况。刚说到的共享内存, 共享fd, 这个大概是怎么样做到的?
    • 先把这些内存写到文件里面传过去, 还是写到什么地方传过去?
    • 存在内存的数据怎么让它可以生成一个fd?我们new了一个对象, 我们怎么用它变成一个fd可以引用它的东西, 然后传给另外一个进程?
    • 待传输的数据据是存在DVM的虚拟机里面, heap的内存嘛, 那它怎么又能调用到另外一个进程呢?它内存之间本来就是内存隔绝的。
  • Android基础
    • HandlerThread
      • HandlerThread用过吗?
      • 它和普通的new Thread()有什么区别?什么时候用HandlerThread, 什么时候用new Thread就可以了?
    • 线程池
      • 平常写异步操作的话, 是用new Thread()还是线程池去做?
      • 创建线程池的参数作用?
      • 线程池的参数是怎么配合起来使用的?他的流程是怎么样?
      • 我们要设计一个IO的线程池, 它的参数可以怎么设计?多个线程并发扫描文件。扫描文件, 统计行号。开一个线程池, 并发去读, 把数据加起来。
      • 参数设置上怎么考虑?最好给出个数值。比如设备CPU是8核。
      • 队列的容量大小怎么设计?有界or无界?
      • 文件的数量级非常大, 上层的业务可以控制它同时的并发量。
      • 如果是一个有界队列会怎么样?它一定会进拒绝策略吗?还是会怎么样?
      • 最大线程数的作用是什么?跟workqueue是什么关系?
    • equals和hashcode
      • 写JavaBean的时候, 什么时候需要重写equals和hashcode方法
      • 只是作为hMap中的value而不是key, 也需要复写吗?
      • hashCode默认是用什么生成的?
    • 多线程方面
      • 多线程并发, 数据安全要加锁, 常见的加锁方式有哪些?
      • synchronized修饰同步块和修饰普通方法有什么区别?
    • 网络
      • HTTP实现一个文件的分片下载, 客户端怎么跟服务端交互?大文件分成多段去下载, 客户端和服务端要发一些什么协议?

反问问题(5min)

夸克小说可以展开介绍一下吗?

夸克小说目前是在夸克app里面比较重要的业务。目前它在夸克里面是底部工具栏里有一个Tab, 第二个Tab就是小说。 小说里面有两种版权来源。一种是正版的, 自己购买的版权, 这种是跟书旗共用同一套版权。整个阿里里面有一个叫书旗小说。 另外一些没有版权的。就是普通网页,我们正常搜书会搜出来一些盗版网站, 我们会对这些盗版网站的页面做了一些去广告, 转码, 提升一些用户的阅读体验。

我了解到夸克是一个浏览器, 对吧。你说的小说的功能相当于是这个浏览器功能的一部分?它也是native实现的?

是浏览器。是一部分。是native实现的。

我应聘的这个岗位, 你们对候选有什么要求吗?需要加强哪方面的技能?比方在用什么新的技术, 或者跨端方案等等?

小说业务还是用Native原生开发比较多。有一些书架页面是用flutter写的。flutter页面后续会有其他同学去做, 不一定由这个岗位的候选人来做。 但native一定要会。我们还有一个加载本地小说的渲染引擎, 我们平常丢进去的一些epub,mobi,txt文件, 这些是要一个小说的阅读器的, 这个小说的阅读器使我们自研的。这一方面是用c++写的。所以对这块还是有一定的要求。主要还是Android原生的比较多。

除了技术技能这方面, 你们对候选人有软性素质上的要求?比如说资深程度, 职级?

目前职级不太限制。我们只是找到有热情的人, 然后加进来一起做事情。如果是P6进来我们会有P6适合的承担的责任, 他能胜任的任务分派给他。 P7的话也会招, 但是要求的话会更高, 他进来以后要承担的任务就会更P6的同学要求更高。不同层级的都会招, 只是进来以后我们对他的要求会不太一样。

P7是属于一个主力开发, 还不是带人的小组长这样的是吗?

P7是主力开发为多。

面试流程几轮?

共4轮。3轮技术+1轮HR。

总结

  • 这个岗位主要负责的是夸克小说的开发, 技术栈主要是Native, 有一部分flutter, 还有一个自研小说的阅读器(渲染引擎), 阅读器涉及C/C++开发。
  • p6p7都要, 但是p7也是大头兵, 只是要求更高。这也符合预期, 目前各家公司现状皆是如此, 对标p7职级的岗位也都是大头兵, 甚至还有不带人的P8。
  • 从面试问题来看, 项目经历和八股文各占一半。八股文以多线程、线程池、锁相关为主。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值