字节跳动头条客户端实习面经(3轮技术面+一轮HR面)已OC
非常感谢牛客这个平台,通过在上面看一些大家分享的面经,也收获颇丰,所以就回馈一下牛客啦!
如果文章对您有一点帮助的话,希望您能点一下赞,您的点赞,是我前进的动力
技术面一面 时长 47 分钟(视频面试)
有些问题忘记了,记忆中就只有这些内容
- 自我介绍
- 项目有没有上线
- 项目难点
DialogFragment
内存泄漏的定位过程Leakcanary
的原理
Handler
介绍一下Handler
内存泄漏说一下- 说一下设计模式
- 手写单例
- 算法:112. 路径总和
技术面二面 时长 48 分钟(视频面试)
- 自我介绍
- 介绍一下项目
- 软件大概样式是怎样
- 首页是怎样做的
- 首页下拉刷新是怎么做的?(说了滑动冲突的处理)
view
事件分发机制怎样- 事件好几层,怎么知道是由哪个控件处理(说了根据触摸的位置啥的,不太了解对不对)
- 提到了责任链,内部链怎么分发的
- 怎么判断哪个
view
处理(根据return true/ false
)- 我们的事件有
action_move,action_down,action_cancel
,所有的事件都是一层一层往下分发吗(说了不一定,down
被拦截了,后续就收不到其他的事件了,然后提到了action_cancel
的机制)- 我听到你首页用了
recyclerView
,那他一般怎么用?- 提到了
adapter
adapter
用来干嘛?adapter
中有哪些是主要方法(说了bindView
,这块不太记得了,说项目中用到的是BRVAH
)- 提到了
ListView
- 为什么用
Rv
不用Lv
(说了1.强制实现viewHolder
(避免findViewById
) 2.缓存机制)Lv
二级缓存怎么判断这个View
是他要的?(答了postion,id
)- 然后问
id
指的是?(这里说忘记了)- 四级缓存是怎么找到
view
他要的?(说了itemType
)- 如果有相同的
itemType
怎么处理?(说了直接使用任意一个)- 如果四级缓存中找不到呢?(说了手动加载)
- 手动加载是哪里来的?(说了从布局
xml
中定义的itemtype
中拿的)xml
怎么关联到Rv
(加载代码inflate
的,不太了解)
- 堆内存和栈内存区别
- 5层网络协议包括哪些?
tcp
三次握手说一下equals
和==
区别hashmap
实现原理(说了基本结构,put
)get
是怎样实现的
智力题:
- 5升桶,3升桶,水无限,你给我装出4升水
技术面三面 时长 37 分钟(视频面试)
自我介绍
架构设计主要是什么
说一下你提到的依赖倒置
除了依赖倒置还有什么重要的原则(刚说完单一职责就被打断)
MVP注意事项(说了内存泄漏的处理)
内存泄漏的原理
怎么判断内存不能被释放
如何检测内存泄漏(说了线下用
LeakCanary
,线上用Memory profiler
,然后自己扯到DialogFragment
内存泄漏)打断,问
final
作用(说了修饰类,方法,变量,作用)非静态内部类引用外部类对象,需要
final
关键字吗?(说了应该用static
,转为静态内部类,防止内存泄漏)多线程使用过吗
说一下线程池的使用(刚说了构造方法实现)
核心线程数什么作用(说了线程池的运行流程)
核心线程数和最大线程数的设置(
IO
密集型和CPU
密集型,最大线程数的话,看系统支持的并发量)一个进程有多少个线程?(说了空间允许的范围内可以一直开辟)
实际上是多少?(说了
2g
分配的空间)为什么是2g(说了之前看过,具体原理不太清楚)
一个异步任务都开一个线程,还是多个任务开一个线程,你怎么决定开不开?(说了耗时的话就开,不太耗时不开,因为线程切换调度的话,存在一定的开销)
线程安全怎么保证?
syncronized
内部原理是什么(说了修饰静态方法和非静态方法,代码块)修饰静态方法和非静态方法,能够并发执行吗?(可以,因为他们锁的对象不一样,说到了死锁)
死锁的原理是什么?
出现死锁怎么排查(这个不太会,说了用
jvm
中的jstack
)追问怎么用?(说没用过,只是知道)
问我他的原理是什么?(不太知道,说看
traces.txt
,看堆栈)怎么安全停止一个线程(说了用
volatile
修饰变量,通过while
(变量),手动设置true false
)volatile
原理是什么?(说了java
内存模型啥的,修饰特性啥的)网络了解吗
tcp
优点(可靠性,面向连接)面向连接是什么?(说了计算机通信前建立连接)
面向连接和非面向连接的本质区别是什么?(乱答,不知道)
拥塞控制原理
http
与udp
区别(说了层数)http
请求流程
下面开始聊天了
- 反问:
HR 面(24分钟)
你是周一面的三面,这几天关于面试你是怎么考虑的?
周一面试完,周四周五才给你反馈,有考虑过面试不通过吗
我说周二就给我反馈了
面试感受如何?
你对面试做了什么准备
客户端基础知识方面的话,你是怎么复习和准备的?
有做一些刷题吗?
字节算法这块,难度怎么样
距离毕业还有一年半,你怎么规划这段时间
你们是信息安全专业?应该不是计算机专业的同学吧
你是什么时候考虑转开发
你是大一就打算做开发?还是说进到工作室后,受到师兄的影响才转开发?
介绍一下工作室
配合方式是怎样的?
说一下影响比较深的项目
主要是客户端做?还是前端后台都有?
这个项目你们老师也是怎样评价的?
团队协作有没有遇到比较难推进的时候?
你会主动去配合团队吗
自己学习或者工作,怎么安排时间?
工作的时间占你一天多少时间?
任务你是怎么管理
你的方法论挺好的,你提到的日程管理软件是哪个?
旁边人用哪几个词语评价你
你的优点缺点分别是什么?
有遇到压力特别大的时候吗?
你在学校成绩怎样
你对自己的未来的规划
什么时候能来?能来多久
学校课程怎样
反问