抖音直播校招Android一面(中等难度,51分钟)
春招第一次面试应该也是最后一次面试了。
投递了完之后好像被这个部门捞起来了,看到抖音这两个字就指知道希望不大了。
难度中等偏上,有点儿难搞。太久没背八股了,难受。
---------------------------------------------------------
开局自我介绍。
实习:
1、实习中最大的收获是什么?
2、实习有什么成果?
3、讲一下项目重构的思路。
4、了解路由吗?(还没学,GG)
Android:
8、Handler中的postDelayed()的实现原理?
12、事件分发机制详细到方法讲一下。
13、事件分发机制如何拦截一个事件?
14、事件分发机制拦截一个事件有几种情况?
15、如果你要实现一个存放很多很多图片的类似recyclerciew的情况,应该要考虑什么?(答的一般)
16、给定一个场景,有2个可以滑动的view,要求实现内部view滑动完以后再滑动外部的view,应该如何实现?(答得很不好)
Java:
1、讲一下对Java多态的理解。
2、讲一个你是使用过的多态的场景。
2、讲一下对泛型的理解。
3、为什么要有泛型。
4、泛型为什么要转为它的顶级父类?(答得不太好)
5、讲一下volatile和Synchronize的区别。
6、讲一下volatile的实现原理。
7、什么时候应该用volatile?什么时候应该用Synchronize?
8、讲一下JVM内存区域。
9、讲一下GC机制。(这里讲了很多,面试官表示满意)
计算机网络:
1、 TCP/UDP区别?
2、TCP是如何保证可靠的?(这里一时卡壳了,应该是检验和、序列号/确认应答、超时重传、最大消息长度、滑动窗口控制这一套,唉)
3、TCP断开连接的TIME-WAIT状态了解吗?
4、TIME-WAIT状态的作用是什么?
到这里大概花了35分钟,开始做题:
算法题:
简单二分找出现数字次数,做出来了,面试官表示没问题。
反问部分:
Q:本次表现怎么样,有什么需要提升?
A:Android基础还差点深度,其他的还可以。
听到这句还差点深度就有点难受,遂结束。
------------------------------------------------------------------------------------------------------
总结:
这次来说整体难度中等偏上一点点,对于Android的一些只是可能是我太菜了,有点难回答。
#字节跳动春招##春招##Android##校招##字节跳动##安卓工程师#
投递了完之后好像被这个部门捞起来了,看到抖音这两个字就指知道希望不大了。
难度中等偏上,有点儿难搞。太久没背八股了,难受。
---------------------------------------------------------
开局自我介绍。
实习:
1、实习中最大的收获是什么?
2、实习有什么成果?
3、讲一下项目重构的思路。
4、了解路由吗?(还没学,GG)
后来关于实习还零零碎碎聊了一点点,忘记了。
1、自定义View了解吗?讲一下自定义View的绘制流程。(开局不利,这部分一直没学好)
基本流程:
(1)onMesure():测量View 的宽高
(2)onLayout():确定View的位置。
(3)onDraw():真正绘制的流程。
2、onMeasue()方法的详细流程讲一下。
基本流程:
- mesure() :测量方法的入口,在此开始各种测量。
- onMeasure() :开始测量的真正流程,主要是通过getDea***tSize()以及传入的宽、高MesaureSpec来确定相关大小。确定大小够会调用set方法把大小进行保存。
- mesaureChildren():测量字View的入口,会遍历所有子View进行测量。若有子View才会调用,否则不会调用。
- measureChild():测量子View的开始逻辑,这里会执行自此新的measure逻辑。
5、进行相关的set方法进行保存。
3、onMeasure()方法的三种模式了解吗?(不了解gg)
复盘:
- EXACTLY(精确模式):精确模式,View需要一个精确值,这个值就是MeasureSpec当中的size,对应配置文件中的match_parent
- AT_MOST(固定尺寸):当前大小做出限制,当前View的大小就是最大的大小,对应Wrap_content。
- UNSPECIFIED:当前对大小没有限制,对应设置大小。
4、讲一下对四大组件中的Service的了解。
5、Service有几个生命周期?
分为两种情况讨论:
(1)使用bindService()方法调用Servie时:
- onCreate():开始创建
- onBindService():绑定Service
- onUnbindService():解绑Service
- onDestroy():杀死Service
(2)使用startService调用时:
onCreate():开始创建
onStartCommand():开始服务
onDestroy():销毁Service
6、Service的Bind和startService()有什么区别?(这个讲的不太好)
bindSerice后会回传一个Binder接口用户进行回调的数据通信,startServive的时候没有。
bindService因此更加适合用于有数据传输的情况下使用。
7、讲一下Handler机制。8、Handler中的postDelayed()的实现原理?
9、为什么Looper死循环不会ANR?
10、View.post跟Handler的post区别?View.post的原理?
View.post()也是用来更新UI操作和获取View的宽高的,跟Handler.post()的最大区别在于View.post可以保证在View的宽高生成之后进行调用,也就是在ViewRootImplemnt.performTraversals()之后调用。view.post()的底层使用的也是Handler.post()。
View.post()的原理是使用handler机制,将事件插入到MQ的最低端,同时由于Handler的同步屏障机制存在,View的绘制事件是最高级,因此能够保证保证post的事件在View绘制流程之后调用。
11、讲一下事件分发机制。12、事件分发机制详细到方法讲一下。
13、事件分发机制如何拦截一个事件?
14、事件分发机制拦截一个事件有几种情况?
15、如果你要实现一个存放很多很多图片的类似recyclerciew的情况,应该要考虑什么?(答的一般)
16、给定一个场景,有2个可以滑动的view,要求实现内部view滑动完以后再滑动外部的view,应该如何实现?(答得很不好)
Java:
1、讲一下对Java多态的理解。
2、讲一个你是使用过的多态的场景。
2、讲一下对泛型的理解。
3、为什么要有泛型。
4、泛型为什么要转为它的顶级父类?(答得不太好)
5、讲一下volatile和Synchronize的区别。
6、讲一下volatile的实现原理。
7、什么时候应该用volatile?什么时候应该用Synchronize?
8、讲一下JVM内存区域。
9、讲一下GC机制。(这里讲了很多,面试官表示满意)
计算机网络:
1、 TCP/UDP区别?
2、TCP是如何保证可靠的?(这里一时卡壳了,应该是检验和、序列号/确认应答、超时重传、最大消息长度、滑动窗口控制这一套,唉)
3、TCP断开连接的TIME-WAIT状态了解吗?
4、TIME-WAIT状态的作用是什么?
到这里大概花了35分钟,开始做题:
算法题:
简单二分找出现数字次数,做出来了,面试官表示没问题。
反问部分:
Q:本次表现怎么样,有什么需要提升?
A:Android基础还差点深度,其他的还可以。
听到这句还差点深度就有点难受,遂结束。
------------------------------------------------------------------------------------------------------
总结:
这次来说整体难度中等偏上一点点,对于Android的一些只是可能是我太菜了,有点难回答。
其余部分的知识还好,算法题也是网开一面,出了道比较简单的。
有没有二面都意义不大了,感觉进不去了。
唉,慢慢失去了信心。#字节跳动春招##春招##Android##校招##字节跳动##安卓工程师#