-
先聊了聊为什么离开现在公司,毕竟现在这么火
-
我做的项目中的一些解决方案,组件化、字节码注入、包体积的极致优化
-
直播的架构设计
三面
设计一个上传日志的大小,涉及到,性能、文件大小、怎样压缩、时机、TopK 问题等聊了聊在字节跳动做的事情
总结
是一家创业公司,给的薪资还是挺不错的,但是由于是 996,没有加班工资,多出来的钱可能就是加班工资吧,后面听 hr 说公司正在打算取消 996
2
公司:探探
是通过脉脉上网红马映怡推荐的,马映怡之前在字节跳动,今年 4 月份到了探探,在脉脉找到了我,正好我有出去看看的意向,就约了时间去面试,探探的办公环境还是比较好的。
一面
-
OpenGL 一些知识,顶点着色器、片元着色器的工作原理,什么是 VBO(这个没想起来),以及 shader 的一些简单问题
-
View 的事件传递机制
-
包体积优化
-
JVM 相关知识,Dalvik 和 ART 的区别
-
组件化的实现方案
-
算法题,ViewGroup 的层级深度,转换为二叉树的层级深度
二面
-
二面面试官,比较注重思维,我理解为聪不聪明的意思,有点脑筋急转弯的意思,要求的最简单有效的方法。
-
RecyclerView 防止内存 OOM 的一道题,充分利用自身的缓存机制,可能我始终没理解问题所在,虽然给出解决方案,但是面试官不满意,太繁琐
-
讨论 LRUcache 的实现和时间复杂度
三面
cto 面试
-
聊了一下抖音发展的过程中我的角色,做过什么事情,有什么收益
-
在华为的一些经历,为什么离开华为
-
聊了一到算法题,查找两个字符串的交集和字符串 1 中有字符串 2 中没有的问题。
四面
这次主要是聊一下我将要做的工作,以及让其他面试官再次了解一下我,因为评级比较高,所以需要谨慎点。
总结
整体来说探探发展还是不错,尤其近两年要上市(和陌陌签了对赌协议),环境也不错,管三餐,加班不严重,双休,工资也给力,但是也是由于近两年要上市,所以要做的东西还是比较多和急,需要你有一定的能力。很尴尬的是在给我 offer 的第二周,探探就被 Android 市场下架了。
3
公司:猿题库
我是在 boss 投递的猿题库的 Android 开发岗位,结果 hr 小姐姐把我当成了 server 开发,先进来一位 server 的童鞋,让我写了一到算法题(二叉树的镜像),然后看看我的简历问我,是不是面试 android 的,我说是,她尴尬的说我是 server 面试官,然后赶紧与 hr 沟通,调整成为 Android。猿题库面试应该是有硬性的时间指标,应该是每一轮面试都要差不多 1 个小时,并且会出 1~2 道算法题。
一面
-
热修复,主要说了 ClassLoader 的方式和 Rubost 的插装方式,重点介绍了 Rubost 的原理。
-
实现直播礼物的一些技术选型,和播放带有 alpha 通道 MP4 的解决方案
-
怎么实现字节码注入
-
抖音组件的探索,SPI 到字节码注入,优缺点。
-
接下来就是两道算法题
-
1. String 字符串的数字相加
-
2. 使用三个线程顺序打印有序的数组
-
提问环节
二面
-
包体积优化:静态 Lint,Proguard,AndResGuard 和删除 R.java 中的所有字段,删除 access 方法,在 gradle 的 transform 阶段将压缩 png 和 jpeg,使用 google 开源的 redex 方案,每种方案的原理以及优缺点
-
MVVM-livedata 的实现原理
-
属性动画的原理,这里没看过,不太清楚
-
Kotlin 写一个 let 的扩展函数,大体写了一下代
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
码。
-
算法,可能是我写的太慢了,所以就只有一道
-
1. 给定一个有序的数组和目标数,找出与目标数最近接的 index,要求复杂度是 log(n)的时间复杂度
三面
-
三面就比较轻松了,面试官一直乐呵呵的,又问了一下 alpha 视频的解决方案,然后聊了聊为什么要离开这么火的项目,问了问我的经历之类的,最后写了两道算法题
-
二叉树的深度和广度,要求一次遍历给定一个二叉树和一个目标数,在二叉树中是否存在一条路径