字节安卓客户端面经

一、字节一面 2021.3.28

(不是按顺序写的,最后一个是代码题)

1、自我介绍

2、项目介绍

3、围绕项目(这一块儿问了很久)

4、代码题,深度优先搜索 给你一个二叉树和一个目标值,判断是否有一条路径的各节点之和等于这个目标值

5、tcp、udp区别以及用处

6、Http常见的状态码

7、GET、POST区别

8、GSON

9、RecyclerView的使用,复用机制,四级缓存

10、ListView、RecyclerView的区别

11、事件分发机制

12、记不得了++

二、字节二面 2021.3.28

(一面结束五分钟进行二面)

面试内容围绕四部分进行

0、自我介绍+项目介绍

*1、代码题(第一部分) 动态规划题目,实在太菜,15分钟才写好 *

判断数组中是否存在长度为3的递增子序列 1 5 3 7 9 ture:179 579 379 137 都是 只需要判断是否存在就行

2、安卓知识,围绕View、事件监听、事件分发进行展开(其中依然会穿插项目内容提问)

3、java知识,其实就是问多线程,从synchronized到线程池,synchronized底层和线程池创建方法,然后就是谈了一下GC,四大引用这一块儿知识

4、场景实例(答的感觉有一点拉跨),给你一个需求,从客户端到服务端进行设计,期间问了一些多线程知识,比如原子类和一个CAS

最后就是问了我目前的一个面试情况,然后说感谢我的参加,也不知道是凉了还是啥,许愿三面or hr面。

三、字节三面 2021 . 3.31

(3.30下午通知第二天下午三面,及其紧张,看各类面经好多三面翻车的)

下面内容未按照顺序

1、自我介绍+项目介绍

2、recyclerView的缓存,以及其中的viewpool怎么实现的

3、http1.0和1.1的区别,现在主要用的什么版本,http的请求头,为什么要用http而不是直接用tcp这些底层的协议

4、存储方式有哪些

5、代码题 二分查找升序序列中的绝对值最小的数

6、进程和线程的区别

7、有用过什么图片框架嘛(想说glide来着,但是这块儿看的太少,没敢说。。)

8、反问

总结就是感觉答的很一般,有些问题说的不是很满意,就希望面试官放我一马了,孩子只想找个班上(立个flag,拿到offer倒立洗头hhhh)

#面经##字节跳动##安卓工程师#
全部评论
就等楼主你倒立洗头了,先给个直播间号
1 回复 分享
发布于 2021-03-31 17:43
点赞 回复 分享
发布于 2021-04-12 16:27
楼主方便说一下项目是什么吗
点赞 回复 分享
发布于 2021-04-12 14:05
拿到offer了吗
点赞 回复 分享
发布于 2021-04-09 15:41
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2021-04-05 20:28
等你三面面筋,我也准备了,看到好多gg的,怕得要死
点赞 回复 分享
发布于 2021-03-31 14:55
加油啊楼主,再来个三面面经。另外问一下,投递多久后给的回应
点赞 回复 分享
发布于 2021-03-31 14:41

相关推荐

拼多多一般多久出结果呢?一面感觉面的依托40分钟面完了。。感觉有点小寄整理一下一面的问题吧也学不进去。(1)门面模式,策略模式、模板方法 (因为项目写了!所以这么问的)门面:为复杂多子系统提供统一简洁接口,隐藏内部繁琐流程,降低调用复杂度,让外部只需一个入口就能使用整套功能。策略: 定义一系列可互换的算法策略,封装各自逻辑,运行时灵活切换算法,不修改原有业务代码,符合开闭原则。模板方法模式定义算法固定骨架流程,将步骤延迟到子类实现,不改变整体执行顺序,子类只重写具体细节,复用算法结构。(2)策略模式和工厂模式区别 (这个问题一直追问我!! 我只知道特别浅浅的东西)!!!工厂模式负责造对象,只关心怎么创建实例;策略模式负责用算法,运行时切换不同业务逻辑,工厂管创建,策略管行为。然后 追问 工厂模式不能做不同策略对象吗? 工厂造出策略对象,再交给策略模式去调度使用,二者分工完全不一样 然后又追问他们使用场景 多个同类对象,创建逻辑复杂多变,不想让业务代码直接 new 对象,统一封装创建,解耦对象生成与使用。 同一业务有多种算法 / 规则切换,比如支付方式、排序规则、优惠计算,运行时灵活替换业务逻辑。又追问 相同点是什么同时他们的区别是什么呢? 回答封装变化、都用到了多态,都降低了耦合、都符合开闭原则。不同点 一个创建对象一个选择对象怎么去干活的。第一个项目项目学到了说明一下 就随便说了一下简历上的东西 然后没有追问下面问rpc框架的东西了 因为简历有rpc。  自研 RPC 让我掌握TCP 粘包解决、动态代理、服务注册发现、负载均衡、SPI 扩展(3) 问怎么处理粘包!! 定消息头 + 长度域的私有协议,先读头获取长度,再按长度读体。(4) 为什么会有粘包的问题: TCP 是面向字节流的协议,没有消息边界,发送方批量发、接收方一次性读,就会出现多条数据粘在一起。(5) 问我tcp为什么是流式的?? 我直接蒙蔽了。。。我咋知道!!!TCP 是流式的,因为它的设计目标是提供一条可靠、有序、连续的字节管道,而不是独立数据包的传输服务。(6) 问我项目设计的 协议消息的格式是什么样子的 让我写道屏幕上 因为确实背了这里写出来了(7)问我 message length代表什么意思 message length 就是消息体的字节长度,告诉接收端要读多少字节才是一条完整消息,是解决 TCP 粘包半包的核心字段。(8)因为我使用的是recordParser去进行消息的处理然后面试官问我 没有被截取的部分怎么处理呢? 看了recordParser源码所以答出来了 没读完、不完整的字节,我会自动暂存在 Vert.x RecordParser 内部缓冲区里,不丢弃、不处理,等下一次数据到来继续拼接,直到凑够一整帧才交付(9)jdk动态代理是什么 !!(10)jdk动态代理底层是什么 运行时动态生成接口代理类字节码 → 加载进 JVM → 全部方法统一走 invoke () 反射调用 这里好像我当时说的怎么实现动态代理了因为我不知道底层所以当没听见。。。(11)红黑树和跳表的应用区别 redis?红黑树 范围查询慢 HashMap  跳表 插入 / 删除只改指针 范围查询极快(12)为什么空间复杂度都是O(N)(13)除了上面还有什么区别吗? 我又重复了一遍上面的回答。。。因为确实不知道了。。实现难度不同红黑树:极难,要处理旋转、变色、平衡,代码复杂易错。跳表:简单,只用随机层数 + 指针调整,代码短、易维护、易扩展。插入 / 删除稳定性不同红黑树:插入删除可能触发连锁旋转 / 变色,最坏会有O (logN) 次调整,高并发下有抖动。跳表:插入删除只修改前后指针,局部调整,无连锁反应,高并发更稳定。范围查询效率不同红黑树:范围查询要中序遍历,跳转多、缓存不友好,速度慢。跳表:直接在底层连续链表遍历,缓存命中率高,范围查询天生更快。并发场景支持不同红黑树:修改时影响路径多,加锁粒度大,并发性能差。跳表:操作局部化,加锁粒度小,更容易实现无锁 / 细粒度并发。缓存友好度不同红黑树:节点分散,CPU 缓存不友好。跳表:底层是连续链表,缓存命中率更高。(14) 又问他们读取的区别是什么呢?读取时会怎么样红黑树读取(查找)从根节点开始,不断左右跳转,走一条从根到叶子的路径节点在内存中不连续,CPU 缓存命中率低每次比较都可能缓存未命中,读取速度受影响范围查询需要中序遍历,跳转更多,更慢2. 跳表读取(查找)从最高层索引往下跳,快速缩小范围,最后落到底层有序链表底层是连续链表,内存局部性好CPU 缓存更友好,连续读取更快范围查询直接遍历底层链表,几乎无跳转,极快(15) 最后除了两道算法题1、是leetcode 面试150题里面的一个2、实现一个线程安全类 然后又add和remove操作!!都写出来!!42分钟差不多就面完了拼多多内推链接:https://careers.pddglobalhr.com/campus/intern?t=vSypT8yAuQ 内推码:vSypT8yAuQ
点赞 评论 收藏
分享
评论
6
54
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务