字节面试记录

背景

飞书,客户端开发一面;之前有面过一次字节,但是那个时候完全没有安卓开发的经验,面试过程可以说是一塌糊涂

先自我介绍

讲了讲自己从毕业到现在做的工作;简单带过

问了我简历上第一条项目的详细经历

这块就按照项目的内容跟他介绍了,自我感觉想要介绍的东西很多,但是描述的时候可能有些着急,描述的有些乱,不知道面试官听完全没有

项目里面有提到JSAPI,面试官追问除了向WebView直接注入以外,还有什么情况下能实现JsBridge

没想到,回答了一个如何在安卓端执行Js脚本;面试官追问那反过来呢?还有没有别的方法?我说不知道了

问我在开发SDK的时候需要注意哪些点

结合自己的工作经历,回答了一个通用性。究其原因就是SDK要提供给很多业务使用,所以通用性就是产品力的保证。至于怎么实现通用性,我讲了一下了解底层知识的重要性,不能只在上层做封装,那样只会越封装功能越窄

面试官看到简历上有写优化混淆减少包体积,问我R8和Proguard有什么区别

如实回答这里没有深入看过。之前看安卓打包过程的时候简单了解了一下,但是过后就忘的一点印象没有了。令我十分不解的是面试官居然不问我怎么优化的体积,就问了这一个问题以后就继续往下走了

Dalvik和ART有什么区别

这个我之前在学习InstantRun的时候有注意到,Dalvik默认是不支持多dex的包运行的,而ART是支持的。面试官看起来对这里也不是很熟悉,或者说他问这个问题的时候没想考我这方面,有点疑惑地问我确认吗?我回答是的,这里我有认真看过(但是后来发现Dalvik其实不是完全不支持多dex,而是需要添加一个依赖才能让多dex的包运行在Dalvik上)。然后面试官继续问那是不是多dex的APK就无法运行在Dalvik上了,我回答是的。

项目是用Kotlin还是Java多?Kotlin有哪些好处?

大部分Kotlin;好处就是语法简单、空指针安全、协程方便

追问协程是如何实现的?

我只知道协程内部是依靠状态机实现的,但是具体怎么实现的不了解。。

算法题 力扣103 二叉树的锯齿形层序遍历 原题

这个题之前刷过,但是当时按照暴力解法过的。面试时候也只给出了暴力解法。

反问环节

1、问了面试官对我的评价

面试官只给出了正面评价,但是我想听的当然是负面评价!所以就换了种问法继续问他

2、问“如果我们一起共事的话,你希望我更具备哪些方面的能力”

面试官笑了笑,似乎理解我的意思了,然后跟我说基础知识要更具备一些

3、飞书目前的工作集中在哪些方面?

本来想问关于裁员的事情,但是感觉面试官可能不太愿意回答,所以就问了问飞书目前的工作重点;回答是大约一半工作量处理产品需求,另一半工作量优化之前快速迭代的时候遗留下来的问题(还技术债)